如何使用MongoDB进行报告?

How to do reporting with MongoDB?

我正在考虑将MongoDB用于我的下一个大项目,但我有几个问题。 特别是,我该如何报道?

我的理解是,我不能在关系数据库中进行相同类型的连接和聚合。 我想到的报告涉及使用严格的标准汇总来自不同"表"的大量数据。

这在MongoDB中是否容易实现,还是会让人头疼?


虽然Pentaho和Jaspersoft以及其他传统报告解决方案都有从MongoDB中抽取数据的方法,但有两种新的解决方案专门用于MongoDB数据的分析和报告:

  • JSON Studio。这是一个商业解决方案,可让您直观地构建聚合管道并将其连接到图表。
  • SlamData。这是一个开源解决方案,允许您通过GUI界面或API直接在MongoDB(包括JOIN,GROUP BY,HAVING等)上运行SQL查询。该项目的当前版本具有数据可视化功能,允许您在MongoDB应用程序中创建和嵌入报告仪表板。

因为这两个方法都运行在MongoDB之上(相对于其他方法,即将数据抽出并将其规范化以便在Mondrian中报告等),它们对于MongoDB报告来说更容易和更自然。另一方面,因为数据未加载到所有内存多维数据集(例如),如果您尝试实时执行复杂的报表生成,则报表体验会受到影响。

免责声明:我是SlamData项目的贡献者,尽管我与JSON Studio没有任何关系。


似乎像JasperReports和Pentaho这样的开源工具可以连接到MongoDB,如果你想跳转到NoSQL船但没有跳到NoSQL船,你可以使用像Simba那样的ODBC或OLE DB驱动程序,然后使用任何正常的SQL报告工具,如DBxtra


如果您使用的是.NET,则可以使用DexExpress报告轻松编写报告。
它适用于MongoDb .NET驱动程序,只有一个限制,您必须为数据中使用的每个聚合提供强类型。
您可以从主应用程序数据库提供程序中使用的所有类型,因此它不会是一个很大的问题。
如果您的MongoDB集合与SQL数据表类似,则可以使用ODBC驱动程序,这种方式非常有限,但您可以使用任何与ODBC连接一起使用的报表服务。
我更喜欢先使用:"DevExpress"XtraReports。


通常不要仅仅因为你想在生产环境中尝试新东西而使用mongodb:这会给你带来很多麻烦。关于何时使用它有一个很棒的Stackoverflow帖子:https://stackoverflow.com/a/1477354/1248724

关于报告:
Map-Reduce,尤其是增量版本将对你有所帮助,但你不能将mongoDB视为关系数据库。它不是一个。
例如,查询子文档疯狂。
mongoDB Aggregation-Framework在大多数情况下都会运行良好,但与SQL相比有其局限性。


据我所知,没有简单的方法来执行连接,聚合等,就像在Mongo的关系数据库中一样。您可以使用不同的外部分析工具。在我的公司,我们使用Sisense并通过ODBC驱动程序将其连接到MongoDB,这使我们可以在数据上使用类似SQL的功能,并且它运行良好。但是,我不知道在MongoDB中本地执行此操作的方法。


不确定您是否可以在MongoDB中完成所有报告并且有足够的响应时间。因此,您可以在MongoDB上添加一个工具用于此目的。例如,icCube现在支持MongoDB用于此类用途。提取整个数据集是没有意义的,但大多数时候报告和分析的数据只代表整体的一小部分,连接内存中的OLAP工具进行报告和分析是有意义的。


MongoDB报告变得更容易,因为它具有聚合框架,该框架提供可以连接到报告软件的API。这篇文章提供了有关MongoDB报告和可视化的详细信息http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/