我正在编写一个基本的多租户SaaS ECM解决方案。每个客户端都有自己的数据库/数据存储实例,但.Net应用程序是单实例。这些文件几乎是只读的(即tiff或PDF的图像档案)
到目前为止,我已经使用过MSSQL,但后来开始认为这在NoSQL DB中可行(例如MongoDB,CouchDB)。基本前提是它存储文档,每个文档都有自己的特定索引。每个租户可以有多种文档类型。
e.g。一个租户可能有发票类型,其中包含客户ID,发票编号和发票日期。另一个租户可能有一个申请表,其中包含会员编号,申请编号,会员姓名和申请日期。
到目前为止,我已经使用了Sharepoint(使用?)使用的旧方法,并创建了一个包含int_field_1,int_field_2,date_field_1,date_field_2等的文档表。然后,我有一个“映射”表,存储客户特定的索引名称以及将映射到的数据库字段。由于文档量的原因,我已经避免了数据库中的键值对模型。
这样,我们可以在一个表中支持多种文档类型,并从中获得相当高的性能,并允许自定义文档类型搜索(即用户选择文档类型,然后它们会显示一个列表搜索字段)。
但是,NoSQL DB可能会使这更简单,因为我不需要担心文档的非规范化。但是,我刚刚关注文档的其他数据。我们存储针对该文档的“行动历史”。这可以跟踪视图,无论是否有人通过电子邮件从系统内部发送文档,以及其他“未来”功能(例如传真)。
我们可以控制文档加载过程,因此我们可以操作数据,但需要将其放入文档存储中(例如,分配唯一ID)。用户不会添加他们自己的文档,因此我们不需要担心ACID合规性,因为文档是相对静态的。
所以,我猜我的问题:
单个租户每月最多可获得200,000个新文档。我当前使用SQL DB进行扩展计划涉及在达到特定阈值时将SQL DB移动到集群中,然后查看分区和索引结构。
答案 0 :(得分:2)
答案: