【发布时间】:2013-04-17 09:50:14
【问题描述】:
我正在从事一个涉及收集动态表单数据的项目。这些表单是用户定义的(想想surveymonkey),因此无法为它们定义固定的模式。将为这些表格检索问题/答案方面的数据,然后将其存储到数据库中。报告/搜索此答案(过滤和聚合)至关重要。有两种可行的方法。
使用 SQL 数据库并将每个字段数据存储为单独的行。然后通过 SQL 完成报告/搜索。我担心这会导致报告的复杂连接。
使用像 MongoDB 这样的 NoSQL 数据库。这似乎非常适合存储动态数据,因为它是无模式的。但是,我不确定它的报告功能有多好。
目标用户学习 sql 似乎比定义 map/reduce 查询更容易。在 mongoDB 上构建用于报告/搜索的 UI 是多么容易。
简单的事情,例如 - 给出一组特定答案的用户列表。一段时间内有多少这样的用户等?
谢谢, 讲义
【问题讨论】:
-
除非我误解了您的目标,否则您的问题部分涵盖在这里:stackoverflow.com/questions/7996949/…。
-
构建 UI 有多容易?您没有提到 UI 平台、您的技能等。我建议您也阅读有关 MongoDbs 地图缩减功能的更多信息。它不是为临时查询而设计的
-
@WiredPrairie - 我现在更关心报道。我可以使用现有的表单生成工具,或者自己手写一些简单的 html 生成,就像一个简单的 UI 应该做的那样。我使用过 CouchDB map reduce 并假设 mongodb 是相似的。除此之外,我还想知道 mongo dbs 的报告能力,或者它是否有一些用于查询的 DSL。您能否详细说明我的“它不是为临时查询而设计的”。谢谢
-
你看过聚合框架吗?您是否阅读过两者的文档?我认为 MapReduce 擅长于用户“现在”不等待结果的场景。当您的问题的细节如此之少并且提出的问题如此广泛时,要提供帮助就更加困难了。
-
@WiredPrairie - 如果问题过于宽泛,我深表歉意。我对 MongoDB 没有任何经验,也没有阅读文档。我刚刚开始研究它和其他可能性作为解决方案。我对 map-reduce 的理解源于 CouchDB,它在报告方面不是很有效。我在一些博客上读到 Mongo 已被有效地用于报告,并想知道在这种情况下它与 SQL 相比如何从那些有这两种经验的人那里得到。我会按照你的建议研究聚合框架。
标签: sql mongodb report data-capture nosql