2013-01-11 57 views
25

我考慮的MongoDB爲我的下一個大項目,但我有一對夫婦的關注。特別是,我該如何做報告?如何使用MongoDB進行報告?

我的理解是,我不能做同種聯接和聚集我通常會在關係數據庫中做。我想到的報告涉及從嚴格標準彙總來自不同「表格」的大量數據。

這是在MongoDB中容易可行的,或者它會是一個大傷腦筋?

+0

預集合和增量MR幫助非常詳盡:http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/ – Sammaye

+0

@Sammaye:這種「預集合」聽起來像它需要一個巨大的預謀。在我的項目開始階段,我不知道將會有什麼報告出現,這意味着我將不得不編寫一個腳本來「重新構建」這些聚合文檔,然後返回並重構幾乎所有內容讓他們保持最新狀態,並祈禱我沒有錯過任何東西。這如何管理? – mpen

+0

如果相關,這些報告並不一定是最新的,並且不需要在心跳期間運行。也許30秒產生,在〜24小時內準確是合理的。 – mpen

回答

4

似乎像JasperReports和Pentaho這樣的開源工具可以連接到MongoDB,如果你想跳轉到NoSQL的船隻,但沒有跳到NoSQL的船隻,你可以使用ODBC或OLE DB驅動程序,如Simba's one,然後利用任何普通的SQL報告工具像DBxtra

1

不知道你可以在MongoDB中完成所有的報告加上有足夠的響應時間。所以你可以在MongoDB之上添加一個工具。例如,icCube現在支持MongoDB這種用法。提取整套數據是沒有意義的,但大多數時間報告和分析的數據僅佔整個數據的一小部分,因此連接用於報告和分析的內存OLAP工具是有意義的。

2

一般來說,不要僅僅因爲你想在生產環境中嘗試新的東西而使用mongodb:那會給你帶來很多麻煩。有一個關於何時使用一個偉大的職位#1:https://stackoverflow.com/a/1477354/1248724

有關報告: Map-Reduce,特別是增量備份會幫助你很多,但你不能把MongoDB的關係數據庫。它只是不是一個。 例如查詢子文檔瘋狂。 MongoDB的Aggregation-Framework在大多數情況下做的很好,但相比於SQL也有其侷限性。

1

據我所知,沒有簡單的方法來執行連接,聚合等,就像在Mongo的關係數據庫中一樣。您可以使用不同的外部分析工具。在我的公司,我們使用Sisense並通過ODBC驅動程序將它連接到MongoDB,這使我們可以在我們的數據上使用類似於SQL的功能,並且效果很好。但是,我不知道在MongoDB中本地執行此操作的方式。

17

雖然Pentaho的和的JasperSoft和其他傳統的報表解決方案,有辦法泵數據出來的MongoDB,有明確的分析和設計有關MongoDB的數據報告中去除兩項新的解決方案:

  • JSON Studio。這是一個商業解決方案,可讓您直觀地構建聚合流水線並將它們連接到圖表。
  • SlamData。這是一個開放源碼解決方案,可讓您通過GUI界面或API直接在MongoDB上運行SQL查詢(包括JOIN,GROUP BY,HAVING等)。該項目的當前版本包含數據可視化功能,並允許您創建報告儀表板並將其嵌入到MongoDB應用程序中。

因爲這兩個都在MongoDB之上運行(與其他方法相比,將數據抽出並將其標準化以便在Mondrian中進行報告或其他事情),對於MongoDB報告來說,它們更容易和更自然。另一方面,因爲數據並未加載到全內存多維數據集中(例如),如果您嘗試實時執行復雜的報告生成,則報告體驗可能會受到影響。

免責聲明:我是SlamData項目的貢獻者,儘管我與JSON Studio沒有任何關係。

2

如果您使用.NET,使用DexExpress報告輕鬆編寫報告。 它適用於MongoDb .NET驅動程序,只有一個限制,您必須爲您在數據中使用的每個聚合提供強類型。 您可以在主應用程序數據庫提供程序中使用所有類型,所以它不會很令人頭疼。 如果您的MongoDB集合類似於SQL數據表,則可以使用ODBC驅動程序,這種方式非常有限,但您可以使用任何與ODBC連接一起工作的報告服務。 我寧願先使用:「DevExpress」XtraReports。

+0

你是否與DexExpress有關聯? – mpen

+0

不,從未屬於。我只是將他們的組件用於Windows和Web .NET –

+0

@EugeneBosikov,你如何將報告綁定到數據源?任何良好的文件入門?謝謝 –