【问题标题】:Database approach to use for Dynamic Form Data Collection which is suitable for good Reports and Searching用于动态表单数据收集的数据库方法,适用于良好的报告和搜索
【发布时间】:2013-04-17 09:50:14
【问题描述】:

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

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

  2. 使用像 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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2011-03-05
    • 2016-11-14
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多