问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

多租户 SaaS 数据库租户模式

创作时间:
作者:
@小白创作中心

多租户 SaaS 数据库租户模式

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/azure/azure-sql/database/saas-tenancy-app-design-patterns?view=azuresql

在设计多租户SaaS应用程序时,选择合适的租户模型至关重要。本文详细介绍了各种租户模型,包括独立单租户应用、每个租户各有数据库的多租户应用、包含多租户数据库的多租户应用、分片多租户数据库的多租户应用以及混合分片多租户数据库模型。每种模型都有其特点和适用场景,可以帮助开发者根据具体需求做出最佳选择。

在软件即服务(SaaS)模型中,公司不会销售软件的许可证,而是让每个客户支付租金以使用SaaS应用程序组件并存储数据。租户模型决定了如何将每个租户的数据映射到存储。选择合适的租户模型对应用程序的设计和管理至关重要。

A. SaaS概念和术语

在SaaS模型中,每个客户成为租户,需要支付租金以访问应用程序组件并存储数据。租户模型主要分为以下几种:

  • 单租户:每个数据库仅存储来自一个租户的数据。
  • 多租户:每个数据库存储来自多个独立租户的数据,使用保护数据隐私的机制。
  • 混合租户模式:结合了单租户和多租户的特点。

B. 如何选择适当的租户模型

选择租户模型时需要考虑以下因素:

  • 可伸缩性:包括租户数量、每个租户的存储量、总存储量和工作负载。
  • 租户隔离:数据隔离和性能(一个租户的工作负载是否影响其他租户)。
  • 每个租户的成本:数据库成本。
  • 开发复杂性:包括架构更改和查询更改。
  • 操作复杂性:包括监视和管理性能、架构管理、还原租户和灾难恢复。
  • 可自定义性:支持租户特定或租户类特定的架构自定义。

C. 包含单租户数据库的独立单租户应用

在这种模型中,针对每个租户重复安装整个应用程序一次。每个应用实例是独立的,只包含一个租户的数据。每个租户数据库都部署为单一数据库,提供最佳的数据库隔离性。但是,这种模型的成本较高,因为需要为每个数据库分配足够的资源。

D. 采用“每个租户各有数据库”模型的多租户应用

这种模型使用包含许多数据库的多租户应用程序,每个数据库都是单租户数据库。可以通过为每个节点添加更多资源来纵向扩展应用程序层,或者通过添加更多节点来横向扩展应用。这种模型可以使用弹性池来经济高效地共享资源。

E. 包含多租户数据库的多租户应用

在这种模型中,多个租户的数据存储在一个数据库中。架构必须包含租户标识符列,以选择性地检索特定租户的数据。虽然成本较低,但会丧失租户隔离性,增加遇到干扰性邻居的风险。

F. 包含单个多租户数据库的多租户应用

最简单的多租户数据库模式使用单一数据库来托管所有租户的数据。虽然纵向扩展可能足够使用,但最终会受到规模限制。管理操作(如时间点还原)可能变得非常缓慢。

G. 包含分片多租户数据库的多租户应用

这种模型通过在多个数据库或分片之间分布租户数据来实现几乎无限的规模。虽然增加了设计和操作管理的复杂性,但可以生成更易于管理的小型数据库。

H. 混合分片多租户数据库模型

在混合模型中,所有数据库在其架构中包含租户标识符,可以存储多个租户,并且可以分片。这种模型可以根据租户的资源需求灵活调整。

I. 租户模型的比较

下表汇总了主要租户模型之间的差异:

度量
独立应用
每个租户各有数据库
分片多租户
缩放
中(1-100 s)
高(1-100,000 s)
无限制(1-1,000,000s)
租户隔离
低;任何单租户(即独自在 MT 数据库中的租户)除外。
每个租户的数据库成本
高;大小根据峰值而定。
低;使用池。
最低,适用于 MT 数据库中的小租户。
性能监视和管理
仅限每租户
聚合 + 每租户
聚合;不过,对于单租户,将应用“仅限每租户”模式。
开发复杂性
中等;受分片影响。
操作复杂性
低到高。 单个操作较简单,大规模操作较复杂。
低到中等。 模式可以解决大规模操作的复杂性。
低到高。 单个租户的管理比较复杂。

本文详细介绍了各种租户模型的特点和适用场景,帮助开发者根据具体需求做出最佳选择。对于从事或对SaaS应用开发感兴趣的读者,这篇文章具有很高的参考价值。

本文原文来自Microsoft Azure官方技术文档

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号