一个会员管理系统,提供给很多单位使用,每个单位有一个单位账号,每个单位的员工还可以注册本人的登录账号。每个单位在自己的账号中可以设置一些信息,比如会员价格、商品名称、员工操作权限……等,。
那,对于这个系统的提供商来说,当然会面对很多使用单位,我的问题是:
1、面对这么多单位,不会是每个单位创建一个数据库吧。
2、如果是创建一个数据库,那么比如商品名称表,是不是全部单位的商品名称都放在一张表里面,还有比如权限设置表,各个单位对于自己员工的操作权限设置,都放在数据库中一张权限设置表里面吗?每个单位面对的客户更是成千上万,所有单位的所有客户都放在一张表中吗?

解决方案 »

  1.   

    考虑因素(原文见https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns):可扩展性:
     - 租户数。
     - 单独存储(每个单位创建一个数据库)。
     - 汇总存储(共用一个数据库)。
     - 工作量。租户隔离:
     - 数据隔离和性能(一个租户的工作量是否会影响其他人,租户的操作是否会误入其他租户)。租户成本:
     - 数据库成本。开发复杂度:
     - 更改架构。
     - 对查询的更改(模式所需)。操作复杂度:
     - 监视和管理性能。
     - 模式管理。
     - 恢复租户。
     - 灾难恢复。可定制性:
     - 易于支持特定于承租人或特定于承租人类别的架构自定义。
      

  2.   

    我打算使用独立数据库的模式,不知道行不行。租用一个云主机,在服务器上安装SQL Server 2008,每一个租户创建一个独立数据库。这样行不行。
    这样的话,我想问一下,在SQL Server 2008上面最多能创建多少个数据库啊 ?
      

  3.   

    SQL Server 的最大容量规范