SaaS & 多租户场景下数据库的逻辑架构设计
大约 2 分钟
SaaS & 多租户场景下数据库的逻辑架构设计
前言
如果在正常的多租户的应用中,你想要去使用分布式数据库,那么你会考虑哪些重要需求呢?
答案不言而喻:性能、安全性、可管理性,可扩展性。这四个需求无非是所有的多租户应用中的共通需求且重要。
为什么?
基本原则:
性能保证:不跨数据库操作,避免跨节点操作。
安全性:用户之间隔离性。
可管理性:支持应用的灵活性,业务调整,数据迁移,备份恢复。
可扩展性:支持业务弹性扩容。
Klustron 在 SaaS 中的逻辑架构
Klustron 作为云原生分布式数据库,非常适合用在SaaS的应用场景中,下图是某 SaaS 软件服务上采用 Klustron 的逻辑架构。 
设计该逻辑架构的主要环节如下:
为每个客户创建一个数据库用户和数据库 schema, 数据库用户是应用程序连接数据库的用户名,该用户具有访问对应数据库 schema的权限 (案例中数据库用户 SCH1 和数据库 schema SCH1 是一个组合, 用户 SCH2 和数据库 schema SCH2 是另一个业务用户的组合),这样设计保证不同用户之间的隔离性。
数据库集群内,为每个应用创建一个数据库,保证同一个应用使用同一个数据库,每个数据库内创建不同的schema服务不同的客户。
为每个 schema 设计表,业务表分为三类:普通表、分片表、复制表。数据量小于 10k 行的表不做分片,此类表固定存储在某一个存储 SD 里。所有的大表根据数据量及查询的场景,选择基于(范围、列表、hash 值或相关表参考字段)分片,将频繁使用到的数据量非常小的表创建为复制表, 在存储集群的每个节点上都存储一份拷贝。
结论
正因为 Klustron 的独特架构,使得 Klustron 在 SaaS 应用构建中可以起到很好的作用,俩者是非常契合的。
