多租户设计的三种模式
多租户设计是做SaaS必不可少的一环,也是SaaS产品经理面临的第一关考验,而其中对于数据隔离的方案选择,对很多产品经理来说都是两眼一摸瞎,今天我们就来聊聊多租户设计的几种数据隔离方案,跟大家说说如何来做选择!
一、了解多租户
多租户是SaaS领域为了实现用一套系统或程序应用,却服务多个企业用户并确保各个企业用户之间的数据隔离,而采用了一种技术架构方案,简单点说多租户是一种软件架构技术。详细了解的话,多租户就是在同一个服务器下运行单个应用实例,为多个用户提供服务,同时做到把用户之间的数据分割开来,也就是A用户使用应用的时候,看到的数据都是自身相关的,不会因为使用同一个服务器下的应用,而看到了B用户C用户的数据。
二、数据隔离方案
数据隔离方案是多租户设计的基础
目前市面上常见的数据隔离方案主要有以下三种
1.独立数据库
即一个租户一个数据库,这种方案的数据隔离性最好,也最安全,租户之间的数据彼此互不干扰,也有一定的数据拓展性,但购买安装和维护数据库的成本很高
2.共享数据库
独立schema,即所有租户共享一个数据库,但模式分开简要理解,可以说一个租户一个表,这种方案也能提供一定程度的数据隔离,但一旦数据库出现故障,则会影响到所有的租户
而且因为是多schema,会存在跨租户统计的麻烦。
3.共享数据表
即所有租户的数据都存储在同一个数据库的同样数据表中,仅通过租户ID进行区分,这种方案的成本是最低的,但相对而言隔离性也是最低的,而且对开发和数据备份和恢复的难度都很高
三、选择原则
目前市面上三种数据隔离方案各有优劣,每个企业对于自身产品应该选择哪种方案
可以参考以下几点原则
1.租户性质和数量
产品经理在带领团队调研规划产品之初,要先明确产品以后要支持多少租户,如果只有几百个租户且又是高进制租户,或者租户对数据隔离性要求很高,那可以选择独立数据库的方案,如果服务的租户有上万在隔离性要求不高的情况下,可以考虑选择共享数据表的方式。除了租户数量之外,产品经理还可以粗略计算下,每个租户可能使用的空间大小,同时访问系统的同租户下用户数量,评估租户是否有数据备份和恢复的需求等,来进行方案选择。
2.成本
隔离性越好成本就越高
3.安全
隔离性越好安全程度就越高
4.技术储备
隔离性越差,对于技术实现的要求就越高,需要有更加有经验有能力的开发人员,对于多租户的数据隔离方案选择,其实说到底是需要产品经理,根据产品的用户性质和用户群体大小,用户对安全性的需求程度等,进行综合的评估判断并做出合理的选择。