asp.net - NoSQL DB for .NET 基于文档的数据库 (ECM)

标签 asp.net mongodb database-design couchdb nosql

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

7年前关闭。




Improve this question




我正在编写一个基本的 Multi-Tenancy SaaS ECM 解决方案。每个客户端都有自己的数据库/数据存储实例,但 .Net 应用程序是单个实例。这些文档几乎是只读的(即 tiff 或 PDF 的图像存档)

到目前为止,我一直在使用 MSSQL,但后来开始认为这在 NoSQL DB(例如 MongoDB、CouchDB)中可能是可行的。基本前提是它存储文档,每个文档都有自己的特定索引。每个租户可以有多种文档类型。

例如一个租户可能有一个发票类型,其中包含客户 ID、发票编号和发票日期。另一个租户可能有一份申请表,其中包含成员编号、申请编号、成员姓名和申请日期。

到目前为止,我已经使用了 Sharepoint(使用?)使用的旧方法,并创建了一个包含 int_field_1、int_field_2、date_field_1、date_field_2 等的文档表。然后,我有了一个存储客户的“映射”表特定的索引名称,以及将映射到的数据库字段。由于文档量的原因,我避免了数据库中的键值对模型。

这样,我们可以在一个表中支持多种文档类型,并从中获得相当高的性能,并允许自定义文档类型搜索(即用户选择一种文档类型,然后他们会看到一个搜索字段列表) .

但是,NoSQL DB 可能会使这变得更简单,因为我不需要担心对文档进行非规范化。但是,我只是担心文档周围的其余数据。我们针对文档存储“ Action 历史”。这会跟踪 View 、是否有人从系统内通过电子邮件发送文档,以及其他“ future ”功能(例如传真)。

我们可以控制文档加载过程,因此我们可以操作数据,但需要将其放入文档存储中(例如分配唯一 ID)。用户不会添加自己的文档,因此我们不必担心 ACID 合规性,因为文档是相对静态的。

所以,我想我的问题是:

  • 是否适合 NoSQL DB
  • MongoDB 是 Asp.Net 的最佳选择吗(我看到了 Raven 和 Velocity,但它们仍然是测试版)
  • 我可以为每个文档存储一个键,然后使用这个键将操作历史记录存储在 MSSQL DB 中吗?我不需要加入,如果一个人点击文档的“查看历史记录”。
  • 两者之间的性能比较(NoSQL DB 与非规范化的“文档”表)

  • 单个租户每月最多可处理 200,000 个新文档。我当前的 SQL DB 扩展计划涉及在达到特定阈值时将 SQL DB 移动到集群中,然后查看分区和索引结构。

    最佳答案

    回答:

  • 对于面向文档的部分,可能对于整个事情,nosql 解决方案应该可以正常工作。
  • 我玩过并听说过关于 mongodb 的好消息,并且可能会首先推荐它用于 .net 项目。
  • 对于面向文档的部分,性能应该比sql数据库优秀。对于较小的规模,它应该是等价的,但是以后横向扩展的能力将是一个巨大的好处。
  • 关于asp.net - NoSQL DB for .NET 基于文档的数据库 (ECM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671423/

    相关文章:

    php - 将复选框值存储在 MySQL 数据库中,然后检索它们是否已设置……最好的方法是什么?

    c# - 如何从 HttpWebRequest 中的 DropDownList 中进行选择

    asp.net - 服务器控制与用户控制

    java - 从集合中以数组形式返回值

    node.js - Mongoose 文本搜索不返回结果

    android - SQLite:getCount() 或 DatabaseUtils?

    php - Google+ 圈子数据库逻辑

    jquery - 如何使用jquery更改类名?

    c# - 无法加载类型 ASP.ViewSwitcher

    php - 在 Phalcon 中生成导航栏