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