我正在考虑将 MongoDB 用于我的下一个大项目,但我有几个担忧。特别是,我该如何进行报告?
我的理解是,我无法执行通常在关系数据库中执行的相同类型的连接和聚合。我想到的报告涉及以严格的标准汇总来自不同“表”的大量数据。
这在 MongoDB 中很容易实现吗,还是会让人头疼?
虽然 Pentaho 和 Jaspersoft 以及其他遗留报告解决方案有办法从 MongoDB 中提取数据,但有两种较新的解决方案专门设计用于分析和报告 MongoDB 数据:
因为这两种方法都在 MongoDB 之上运行(相对于其他方法,即抽取数据并将其标准化以在 Mondrian 或其他方式中报告),它们对于 MongoDB 报告来说更容易、更自然。另一方面,由于数据没有加载到全内存多维数据集中(例如),如果您尝试实时生成复杂的报告,报告体验可能会受到影响。
免责声明:我是 SlamData 项目的贡献者,尽管我与 JSON Studio 没有任何关系。
一般来说,不要仅仅因为你想在生产环境中尝试一些新的东西而使用 mongodb:这会给你带来很多麻烦。关于何时使用它有一篇很棒的 Stackoverflow 帖子:https ://stackoverflow.com/a/1477354/1248724
关于报告: Map-Reduce,尤其是增量的,会对您有很大帮助,但您不能将 mongoDB 视为关系数据库。它只是不是一个。例如查询子文档的疯狂。mongoDB Aggregation-Framework在大多数情况下会做得很好,但与 SQL 相比有其局限性。
如果您使用的是 .NET,使用 DexExpress 报告可以轻松编写报告。它适用于 MongoDb .NET 驱动程序,只有一个限制,您必须为您在数据中使用的每个聚合具有强类型。您可以从主应用程序数据库提供程序中使用的所有类型,所以这不会是一个大麻烦。如果您的 MongoDB 集合类似于 SQL 数据表,则可以使用 ODBC 驱动程序,这种方式非常有限,但您可以使用任何与 ODBC 连接一起使用的报告服务。我更喜欢首先使用:“DevExpress”XtraReports。
MongoDB 报告变得更容易,因为它具有聚合框架,该框架提供了一个可以连接到报告软件的 api。这是一篇提供有关 MongoDB 报告和可视化的详细信息的文章http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/
据我所知,没有简单的方法可以像在 Mongo 的关系数据库中那样执行连接、聚合等。您可以为此使用不同的外部分析工具。在我的公司,我们使用Sisense并通过 ODBC 驱动程序将其连接到 MongoDB,这使我们可以在数据上使用类似 SQL 的功能,并且效果很好。但是,我不知道在 MongoDB 中本地执行此操作的方法。