Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 基于.NET文档的数据库(ECM)的NoSQL DB_Asp.net_Mongodb_Database Design_Couchdb_Nosql - Fatal编程技术网

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

Asp.net 基于.NET文档的数据库(ECM)的NoSQL DB,asp.net,mongodb,database-design,couchdb,nosql,Asp.net,Mongodb,Database Design,Couchdb,Nosql,我正在编写一个基本的多租户SaaS ECM解决方案。每个客户端都有自己的数据库/数据存储实例,但.Net应用程序是单个实例。文档几乎是只读的(即TIFF或PDF的图像存档) 到目前为止,我一直在使用MSSQL,但后来我开始认为这在NoSQL数据库中可能是可行的(例如MongoDB、CouchDB)。基本前提是它存储文档,每个文档都有自己的特定索引。每个租户可以有多种文档类型 e、 g.一个租户可能有一个发票类型,该类型具有客户ID、发票编号和发票日期。另一个租户可能有一个申请表,其中包含成员编号

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

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

e、 g.一个租户可能有一个发票类型,该类型具有客户ID、发票编号和发票日期。另一个租户可能有一个申请表,其中包含成员编号、申请编号、成员名称和申请日期

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

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

然而,NoSQL DB可能会使这变得简单得多,因为我不需要担心文档的非规范化。然而,我只是担心文档周围的其余数据。我们针对文档存储“操作历史记录”。这将跟踪视图、是否有人从系统内通过电子邮件发送文档以及其他“未来”功能(例如传真)

我们可以控制文档加载过程,因此我们可以按照在文档存储中获取数据所需的方式操作数据(例如,分配唯一ID)。用户不会在他们自己的文档中添加内容,因此我们不需要担心ACID遵从性,因为文档是相对静态的

所以,我想我的问题是:

  • NoSQL DB适合吗
  • MongoDB是Asp.Net的最佳选择吗(我看过Raven和Velocity,但它们还是测试版)
  • 我可以为每个文档存储一个键,然后使用该键将操作历史记录存储在MSSQL数据库中吗?我不需要进行连接,如果一个人对文档单击“查看历史记录”,就可以了
  • 两者之间的性能比较如何(NoSQL DB与非规范化的“文档”表)
对于单个租户,每个月的新文档数量将高达200000份。我目前的SQL DB扩展计划包括在达到某些阈值时将SQL DB移动到集群中,然后检查分区和索引结构。

回答:

  • 对于面向文档的部分,以及可能整个过程,nosql解决方案应该可以很好地工作
  • 我曾经使用过mongodb,也听说过它的优点,我可能会首先推荐它用于.net项目
  • 对于面向文档的部分,与sql数据库相比,性能应该是优异的。对于较小的规模,它应该是等效的,但以后扩展的能力将是一个巨大的好处
    几乎每个人都告诉我,一旦开始在数据库中创建动态生成的字段,就应该转到NoSQL数据库。。另外,请注意,您不必事事使用NoSQL,您可以始终使用混合解决方案。他们混合解决方案是我的计划。我只是对人们对性能、维护以及如何将混合解决方案链接在一起的想法感兴趣(例如,在加载文档时分配一个任意文档ID字段,然后在SQL表中使用这个ID字段?或者我是否应该依赖NOSQL生成的键。我不理解这些要求。你对它的意思是什么“基本前提是它存储文档,每个文档都有自己的特定索引”?我们谈论的是自由文本索引还是元数据索引?或者你说的“索引”是指“元数据”?抱歉没有那么清楚。这是元数据(例如,发票文档将有一个发票号元数据)。用户搜索的是这些元数据,它们在不同的客户端之间变化。例如,一个客户端可能具有发票文档类型,而另一个客户端将具有应用程序表单文档类型。您可以使用MongoDB gridfs存储文件,也可以添加元数据。由您定义哪种元数据。我不确定是否您可以在该元数据上创建索引。我想您可以,但我从未尝试过。请看,我将尝试。