我考慮的MongoDB爲我的下一個大項目,但我有一對夫婦的關注。特別是,我該如何做報告?如何使用MongoDB進行報告?
我的理解是,我不能做同種聯接和聚集我通常會在關係數據庫中做。我想到的報告涉及從嚴格標準彙總來自不同「表格」的大量數據。
這是在MongoDB中容易可行的,或者它會是一個大傷腦筋?
我考慮的MongoDB爲我的下一個大項目,但我有一對夫婦的關注。特別是,我該如何做報告?如何使用MongoDB進行報告?
我的理解是,我不能做同種聯接和聚集我通常會在關係數據庫中做。我想到的報告涉及從嚴格標準彙總來自不同「表格」的大量數據。
這是在MongoDB中容易可行的,或者它會是一個大傷腦筋?
似乎像JasperReports和Pentaho這樣的開源工具可以連接到MongoDB,如果你想跳轉到NoSQL的船隻,但沒有跳到NoSQL的船隻,你可以使用ODBC或OLE DB驅動程序,如Simba's one,然後利用任何普通的SQL報告工具像DBxtra
一般來說,不要僅僅因爲你想在生產環境中嘗試新的東西而使用mongodb:那會給你帶來很多麻煩。有一個關於何時使用一個偉大的職位#1:https://stackoverflow.com/a/1477354/1248724
有關報告: Map-Reduce,特別是增量備份會幫助你很多,但你不能把MongoDB的關係數據庫。它只是不是一個。 例如查詢子文檔瘋狂。 MongoDB的Aggregation-Framework在大多數情況下做的很好,但相比於SQL也有其侷限性。
MongoDB報告變得更容易,因爲它具有提供可連接到報告軟件的api的聚合框架。這裏是一篇文章,提供了關於MongoDB報告和可視化的細節http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/
據我所知,沒有簡單的方法來執行連接,聚合等,就像在Mongo的關係數據庫中一樣。您可以使用不同的外部分析工具。在我的公司,我們使用Sisense並通過ODBC驅動程序將它連接到MongoDB,這使我們可以在我們的數據上使用類似於SQL的功能,並且效果很好。但是,我不知道在MongoDB中本地執行此操作的方式。
雖然Pentaho的和的JasperSoft和其他傳統的報表解決方案,有辦法泵數據出來的MongoDB,有明確的分析和設計有關MongoDB的數據報告中去除兩項新的解決方案:
因爲這兩個都在MongoDB之上運行(與其他方法相比,將數據抽出並將其標準化以便在Mondrian中進行報告或其他事情),對於MongoDB報告來說,它們更容易和更自然。另一方面,因爲數據並未加載到全內存多維數據集中(例如),如果您嘗試實時執行復雜的報告生成,則報告體驗可能會受到影響。
免責聲明:我是SlamData項目的貢獻者,儘管我與JSON Studio沒有任何關係。
如果您使用.NET,使用DexExpress報告輕鬆編寫報告。 它適用於MongoDb .NET驅動程序,只有一個限制,您必須爲您在數據中使用的每個聚合提供強類型。 您可以在主應用程序數據庫提供程序中使用所有類型,所以它不會很令人頭疼。 如果您的MongoDB集合類似於SQL數據表,則可以使用ODBC驅動程序,這種方式非常有限,但您可以使用任何與ODBC連接一起工作的報告服務。 我寧願先使用:「DevExpress」XtraReports。
你是否與DexExpress有關聯? – mpen
不,從未屬於。我只是將他們的組件用於Windows和Web .NET –
@EugeneBosikov,你如何將報告綁定到數據源?任何良好的文件入門?謝謝 –
預集合和增量MR幫助非常詳盡:http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/ – Sammaye
@Sammaye:這種「預集合」聽起來像它需要一個巨大的預謀。在我的項目開始階段,我不知道將會有什麼報告出現,這意味着我將不得不編寫一個腳本來「重新構建」這些聚合文檔,然後返回並重構幾乎所有內容讓他們保持最新狀態,並祈禱我沒有錯過任何東西。這如何管理? – mpen
如果相關,這些報告並不一定是最新的,並且不需要在心跳期間運行。也許30秒產生,在〜24小時內準確是合理的。 – mpen