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