2017-07-04 22 views
0

我有一个报告框架来构建和生成报告(表格格式报告)。截至目前,我用来编写SQL查询,并用它从Oracle获取数据。现在我遇到了一个有趣的挑战,其中一半数据来自Oracle,其余数据来自MongoDB,基于Oracle数据输出。从Oracle获取的表格格式数据将有一个额外的列,其中将包含从MongoDB获取数据的密钥。有了这个,我将有两组数据,一组来自Oracle数据,另一组来自MongoDB。基于一个公共列,我需要合并两个表数据并生成一个数据集来生成报告。加入Oracle表格数据与MongoDB集合

我可以在java代码中编写合并两个表的逻辑(比如2D数组格式的数据)。但是我并没有从自己的角度来做这件事,而是想利用一些RDBMS内存数据概念。例如,H2数据库,我可以在内存中快速创建两个表并执行H2查询来合并两个表。或者,我相信,Oracle中可能还有一些东西像全局临时表等。有人可能会建议更好的方法将Oracle表数据与MongoDB集合结合使用。

回答

0

我想你可以尝试使用Kafka和Spark Streaming来解决这个问题。假设你的数据是事务性的,你可以创建一个Kafka代理并创建一个主题。然后更改您要保存到Oracle和MongoDB的现有服务。创建2个Kafka生产者(一个用于Oracle,另一个用于Mongo)将数据作为流写入Kafka主题。然后创建一个消费者组以接收来自Kafka的流。然后,您可以使用Spark群集(您可以查看适用于Kafka的Spark Streaming API)并将结果保存到MongoDB(使用来自MongoDB的Spark连接器2)或任何其他分布式数据库。然后,您可以对存储在MongoDB中的结果进行数据可视化/报告。

+0

感谢Vamsi的回复。但考虑到目前的用例,我认为我们不需要这个解决方案,因为它需要基础架构和更多的努力来实现。此外,我们正在尝试仅对配置数据进行报告,因此数据量会减少。我正在寻找更多的选项/工具,它可以提供我的包装在Oracle/mongoDB上,我可以有查询,并从两个地方获取数据。在上面的答案中,https://drill.apache.org/看起来类似。但我还需要探索它。但是再次非常感谢您提供的这个解决方案。可能会是未来。 –

0

另一个建议是使用apache drill。 https://drill.apache.org

你可以使用mongo和JDBC钻头,然后你可以将oracle表和mongo集合在一起。

+0

感谢您的评论。让我探索这个选项,看看它是否适合我们的解决方案。 –