0

我正在从事一个涉及收集动态表单数据的项目。这些表单是用户定义的(想想surveymonkey),因此无法为它们定义固定的模式。将为这些表格检索问题/答案方面的数据,然后将其存储到数据库中。报告/搜索此答案(过滤和聚合)至关重要。有两种可行的方法。

  1. 使用 SQL 数据库并将每个字段数据存储为单独的行。然后通过 SQL 完成报告/搜索。我担心这会导致复杂的报告连接。

  2. 使用像 MongoDB 这样的 NoSQL 数据库。这似乎非常适合存储动态数据,因为它是无模式的。但是,我不确定它的报告功能有多好。

目标用户学习 sql 似乎比定义 map/reduce 查询更容易。在 mongoDB 上构建用于报告/搜索的 UI 是多么容易。

简单的事情,例如 - 给出一组特定答案的用户列表。一段时间内有多少这样的用户等?

谢谢, 普吉

4

1 回答 1

1

评论中已经提到过,但我会重申,您应该查看 Mongo 的 map/reduce 报告功能聚合框架。

在 Couch 和 Mongo 中完成 map/reduce 后,我可以说它们非常相似。对于不熟悉它的开发人员来说,这绝对是一个入门障碍,但是一旦您获得了一些工作示例,这还不算太糟糕。

考虑一下 Mongo 可以将 map/reduce 作业输出到集合中,我发现这非常有用。这意味着您可以安排作业并定期运行它们,然后输出到您可以报告的地方。创建一个框架让开发人员编写简单的 Javascript map 和 reduce 函数,然后将它们插入以按计划运行并不难。

对于来自 SQL 的开发人员来说,聚合框架更容易理解。仍然是一个学习曲线,但不如 map/reduce 差。它更适合临时报告查询,并且在 Couch 中没有可比性。

您也许可以制作一个映射到聚合框架的报告 UI,但我不会尝试为 map/reduce 查询做类似的事情。

于 2013-04-17T17:24:46.143 回答