对于这个特定的设计(调查),我应该使用 SQL 还是 NoSQL?

Sea*_*een 5 nosql oracle database-design

构建一个小型 Web 应用程序以创建带有默认问题和响应列表的满意度调查。该应用程序适用于一小部分人(最多 5,000 人),并在工作订单完成后发送调查问卷。

鉴于小尺寸和相对简单的要求,我想我可以使用 SQL 或 NoSQL 解决方案(我可以轻松访问两者)。

实体类型

  • 调查模板(可能是其中的 3 个)
  • 问题(每个调查模板多个问题)
  • 问题类型(自由形式、特定选择答案等)
  • 调查回复(对特定调查模板上的问题的回复)

查询/报告需求

  • 显示个别调查的答复
  • 按某些方面显示一系列调查的汇总答复
    • 工单#(每个工单进行多项调查)
    • 工单的日期范围
    • 执行工作的组

变化/增长需求

  • 调查模板、模板问题和可能的响应可能会在任何给定时间发生变化(由客户决定并不断发展)
    • 可以想象在必要时创建一个新模板,但在适用的情况下不必这样做会很棒。
  • 无需担心存储方面的增长。这是目前正在使用(设计糟糕的)Access DB 完成的,因此我们在这里不讨论任何主要内容。

其他需求

  • 如果响应低于某个阈值(例如 3 分或低于 5 分),结构应该能够满足需要更多信息/注释的要求

堆栈注意事项

  • 这是在 Microsoft ASP.NET 堆栈(MVC4、WebAPI 等)上构建的

个人喜好/想法

  • 一段时间以来,我一直想更多地使用 NoSQL 数据库
  • 我更熟悉 SQL 数据库,但对于这样的事情,它似乎有很多架构和服务器开销
  • RavenDB 和 CouchDB 都因此吸引了我
    • Raven 更是如此,因为它构建得非常好,可以与 .NET 和通过 HTTP 一起使用,但我不确定许可是否可行。
    • 也会考虑 MongoDB,但我认为直接的 JSON 文档可能比 BSON 更容易使用
  • 使用 NoSQL 解决方案(尤其是 RavenDB),在某种程度上,我的对象成为我的模式,因为我将它们持久化到数据存储中。我必须首先在 SQL Server 中构建该结构(除非我使用实体框架)。这是否为 NoSQL 带来了优势,还是考虑到了 EF 之类的东西?

对您的想法感兴趣并提供任何有助于某人做出客观决定的信息。

Ali*_*ghi 5

通常,由于大规模且不需要 100% 的 ACID 合规性,实施了 No-SQL 解决方案。通过 GFS、Hadoop、Mongo、Basho RIAK 等解决方案,将数据展平并对其进行反规范化以提高性能对于让我们达到今天的水平至关重要。

您的案例不会尖叫 No-SQL,如果有的话,您可能会更好地使用 MS SQL 服务器,因为您使用的是 ASP.NET 堆栈,并且 MS SQL Server 通过 CLR、powershell 为 ASP.NET 提供了许多功能(它也可以调用 .Net 对象)并且与 IIS 一起玩得很好(我假设你也会在 IIS 上托管它)。这听起来也可以使用 SQL Server 2012 Express 从而节省许可成本。

MS SQL Server 还可以让您轻松地在不相关的表中“连接”数据,以防您提出新想法,以及更难实施的 No-SQL 解决方案。

但实际上,查看您的要求以及您将使用它的目的。你可以走任何一条路。如果它让您更高兴使用 No-SQL 解决方案并让您感到满意,那就太棒了!去吧!最终结果可能无关紧要,但要严格回答这个问题,这对于具有您描述的使用模式的 .Net 应用程序更好,我个人会使用 SQL 2012 Express。

我很想知道别人是怎么想的!