多租户(数据层的多租户)架构相关资料

多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是:java

在一台服务器上运行单个应用实例,它为多个租户提供服务。数据库

在SaaS实施过程当中,有一个显著的考量点,就是如何对应用数据进行设计,以支持多租户,而这种设计的思路,是要在数据的共享、安全隔离和性能间取得平衡。安全

主流的方案是:服务器

  1. 独立数据库
  2. 共享数据库、独立 Schema
  3. 共享数据库、共享 Schema、共享数据表


比较简单的作法是,分客户,在业务层使用tenantid来区分客户。架构


详情参考:http://www.ibm.com/developerworks/cn/java/j-lo-dataMultitenant/ide

文中提到的第二种模式,共享database,scheme分离,就是一种多租户的解决方案:全部的租户共享一个数据库实例,可是他们拥有独立的 Schema 或 Catalog,使用hibernate.multiTenancy 相关属性,指定了 ConnectionProvider,即 Hibernate 须要知道如何以租户特有的方式获取数据链接,根据 tenantIdentifier 得到相应的链接。性能

如此,客户的DBA,也能够自行经过租户ID来进行数据库的管理,他只能管理属于这个租户的数据。其余租户数据,逻辑不可见spa