2017-07-04 57 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

感謝您的評論。讓我探索這個選項,看看它是否適合我們的解決方案。 –