多租户SAAS应用程序的数据库设计和ORM

时间:2016-06-17 13:02:55

标签: azure-sql-database multi-tenant saas

我正在设计一个多租户SAAS企业云应用程序。每个租户必须能够根据自己的需要自定义UI和工作流.Tenant可以向UI添加他想要的任意数量的字段。

我们正在为每个租户使用单个数据库意味着只有一个租户数据驻留在一个数据库中。根据我计划的当前设计,我将限制租户在UI中具有最大字段数,因此我可以保留表设计常量(列数)。该表将具有varchar列和列名称为Column1,Column2等.Tenant数据将存储在此表中。列和数据类型的实际名称将存储在映射表中。

数据库是SQL Azure,ORM是实体框架。当配置租户时,数据库详细信息将存储在主数据库中,然后应用程序将重定向到特定于租户的数据库。我已选择此设计来保留实体框架作为一个多租户应用程序而通用,并且所有租户都将具有相同的表结构,因此不需要动态重新生成EF上下文。只有一个dbcontext可用于连接所有客户端。我经过大量的reaseach。

现在的问题是因为所有字段都是使用聚合函数的varchar,索引,排序等会对性能产生巨大的影响。

目前我们正处于架构阶段,因此我们可以灵活地改变设计,或者更改技术并转向NOSQL。

请建议是否有更好的选择,或者这是正确的方法。

我所评论的少数文章之一是  https://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tde

1 个答案:

答案 0 :(得分:1)

要使用SQL Azure数据库实现多租户方案,您可以使用弹性数据库池轻松管理每个租户的数据库。 Here是一个很好的文档,可以使用SQL Azure管理多租户SaaS应用程序。