多租户saas 架构_SaaS 数据库架构选择

本文探讨了多租户SaaS应用的数据库架构选择,包括数据库级、Schema级和行级隔离的优缺点。作者在考虑将单用户系统SaaS化时,选择了行级隔离,认为这更适合面向小B业务,因为存在更多的跨租户数据共享需求,并认为个人为中心的数据组织是未来趋势。文章引用了相关参考资料并分享了个人见解。
摘要由CSDN通过智能技术生成

多租户数据库架构

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

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

ceeb8566ac352f359722a7d6464f9c4e.png

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

常见的多租户数据隔离方案有以下三种:

1. 数据库级:每个租户独享一个数据库实例,它提供了最强的隔离度,租户的数据彼此物理不可见,备份、恢复都很灵活,系统升级复杂;

88a9b98071d5d7671b89259297a06de9.png

2. Schema 级:将每个租户关联到同一个数据库的不同 Schema,租户间数据彼此逻辑不可见,上层应用程序的实现和独立数据库一样简单,但备份、恢复、系统升级稍显复杂;

eec3f6deec1b07f09e8597276b8d3c2a.png

3. 行级:租户数据在数据表级别实现共享,它提供了最低的成本,但引入了额外的编程复杂性(程序的数据访问需要用 tenant_id 来区分不同租户),备份、恢复也更复杂,但是系统升级简单些。

1fe0781d4946129644cf18e71031f044.png

如何选择

借用

https://blog.arkency.com/comparison-of-approaches-to-multitenancy-in-rails-apps

总结的。

场景建议
大量的租户考虑行级
大量低价值租户(废弃账号或者免费试用)考虑行级
少量的高价值租户schema 级更可行
对数据隔离高要求(保证租户间数据不泄露)考虑 schema 级
因为合规的原因,客户要求更多的数据隔离?考虑 schema 级甚至数据库级
使用托管的云数据库如果想使用 schema 级,确认云平台支持
将已有的单用户系统升级到多租户系统schema 级更容易快速实现
全新项目行级更可行
租户间有大量共享数据schema 级可以,但是行级是更安全的赌注

我的项目及选择

研究 SaaS 数据库架构的原因是,我想将一个开发到一半的单用户系统 SaaS 化。前一段刚把数据库从 MySQL 迁移到了 PostgreSQL,选择 schema 级应该是最简单的。

但是我最终选择了行级。因为我的系统面向小 B,其实是有更多的跨租户数据共享需求的。

一些新的 SaaS 软件,比如钉钉和石墨,他们的设计逻辑是先后个人后有企业,个人天然是跨企业的,所以,数据是围绕个人来组织而不是企业。我觉得这是未来的趋势,尤其是面向小 B 的系统。

所以,如果你在开发面向小 B 的系统,我建议你把人单拿出来考虑,而不是像原来的系统那样,先有企业,然后企业下面有用户。一个人如果属于多个企业的话,有多个账号。

如果是转化一个已经开发完成的系统,我会选择 schema 级吧。

参考资料

  • 数据层的多租户浅谈 (https://www.ibm.com/developerworks/cn/java/j-lo-dataMultitenant/index.html)

  • Comparison of approaches to multitenancy in Rails apps    (https://blog.arkency.com/comparison-of-approaches-to-multitenancy-in-rails-apps/)

  • Three Database Architectures for a Multi-Tenant Rails-Based SaaS App     (https://rubygarage.org/blog/three-database-architectures-for-a-multi-tenant-rails-based-saas-app)

-------------- END --------------

38f7a8fe505ba1596fbb46d38ae2f9ac.png        ac242b242edb76b55a7397e53233099e.png

请关注公众号或加个人微信号

不定时获取关于科技新知的文章

请放心,不会推送垃圾信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值