(3)分离表架构
分离表架构即所有用户共享相同的数据库实例,但每个用户独享由一系列数据库表组成的Schema。
相对于共享表架构和分离数据库架构而言,分离表架构是一种折中的方案,在这种架构下,实现数据的分离和灾备比共享表架构容易,而硬件成本比分离数据库架构低廉。
这3种架构根据软件系统客户如何使用数据库实例和数据库表进行划分。如果所有的软件系统客户共享使用相同的数据库实例和相同的数据库表(可以通过类似于租户ID字段来区分数据的从属)则为共享表架构;如果每个软件系统客户单独拥有自己的数据库实例则为分离数据库架构;如果软件系统客户共享相同的数据实例,但是每个客户单独拥有自己的由一系列数据库表组成的表结构,则为分离表架构。
3种架构的优缺点比较如表5-1所示。
表5-1 3种架构优缺点比较
上述3种架构都有其优缺点,所以在设计云系统时,系统架构师需要进行全面的分析和考量,综合各方面的因素以选择合适的多租户架构。有一些选择方法可供参考,例如,系统服务的客户数量越多,则越适合使用共享表的架构;对数据隔离性和安全性要求越高,则越适合使用分离数据库的架构。而在超大型的云系统中,一般都会采用复合型的多租户架构,以平衡系统成本和性能,这其中Salesforce.com便是一个典型的案例。Salesforce.com最初搭建于共享表架构,但是随着新客户的不断签入,单纯的共享表架构已经很难满足日益增长的性能要求,Salesforce.com逐步开始在不同的物理区域搭建分布式系统。在全局上,Salesforce.com以类似于分离数据库的架构运行,在单个区域内,系统则仍然按照共享表架构运行。