我有一个报告框架来构建和生成报告(表格格式报告)。截至目前,我曾经写过SQL查询,用于从Oracle获取数据。现在我遇到了一个有趣的挑战,其中一半数据来自Oracle,其余数据来自MongoDB,基于Oracle数据的输出。从Oracle获取的表格格式数据将有一个额外的列,其中包含从MongoDB获取数据的密钥。有了这个,我将以表格格式设置两个数据集,一个来自Oracle数据,另一个来自MongoDB。基于一个公共列,我需要合并两个表数据并生成一个数据集来生成报告。
我可以在java代码中编写逻辑来合并两个表(比如2D数组格式的数据)。但我不是自己做这个,而是想利用一些RDBMS内存中的数据概念。例如,H2数据库,我可以在内存中创建两个表并执行H2查询以合并两个表。或者,我相信,Oracle中可能存在类似全局临时表等的问题。有人可以建议使用MongoDB集合加入oracle表数据的更好方法。
答案 0 :(得分:1)
我认为你可以尝试使用Kafka和Spark Streaming来解决这个问题。假设您的数据是事务性的,您可以创建一个Kafka代理并创建一个主题。然后更改要保存到Oracle和MongoDB的现有服务。创建2个Kafka生成器(一个用于Oracle,另一个用于Mongo)将数据作为流写入Kafka主题。然后创建一个消费者组以接收来自Kafka的流。然后,您可以使用Spark集群聚合实时流(您可以查看适用于Kafka的Spark Streaming API 1)并将结果保存回MongoDB(使用MongoDB中的Spark Connector 2)或任何其他分布数据库。然后,您可以对存储在MongoDB中的结果进行数据可视化/报告。
答案 1 :(得分:1)
另一个建议是使用apache drill。 https://drill.apache.org
您可以使用mongo和JDBC钻取,然后您可以将oracle表和mongo集合一起加入。