你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

多租户和 Azure Database for PostgreSQL

Azure 上的许多多租户解决方案使用开源关系数据库管理系统 Azure Database for PostgreSQL。 本文介绍了在使用多租户系统时非常有用的 Azure Database for PostgreSQL 功能。 本文还提供有关如何在多租户解决方案中使用 Azure Database for PostgreSQL 的指导和示例的链接。

部署模式

对于 Azure Database for PostgreSQL,有两种部署模式适用于多租户应用程序:

  • Azure Database for PostgreSQL 灵活服务器 - 对于不需要 Azure Cosmos DB for PostgreSQL 提供的高可伸缩性的大多数多租户部署来说,这是一个不错的选择。
  • Azure Cosmos DB for PostgreSQL - Azure 托管数据库服务,专为需要高级别缩放的解决方案而设计,通常包括多租户应用程序。 此服务是 Azure Cosmos DB 产品系列的一部分。

注意

Azure Database for PostgreSQL - 单一服务器即将停用,计划于 2025 年 3 月 28 日之前停用。 不建议将它用于新的多租户工作负载。

支持多租户的 Azure Database for PostgreSQL 的功能

使用 Azure Database for PostgresSQL 生成多租户应用程序时,可以使用多种功能来增强解决方案。

注意

某些功能仅在特定的部署模式中可用。 以下指南中指出了这些功能。

行级别安全性

使用共享表时,行级别安全性可用于强制实施租户级别隔离。 在 PostgreSQL 中,通过将行安全策略应用于表来按租户限制对行的访问,从而实现行级别安全性。

在表上实现行级安全性时,可能会对性能造成轻微影响。 因此,可能需要在启用了行级安全性的表上创建额外的索引,以确保性能不受影响。 建议在启用行级安全性时,使用性能测试技术来验证工作负载荷是否满足基线性能要求。

详细信息:

使用分片进行水平缩放

使用分片模式可以跨多个数据库或数据库服务器缩放工作负载。

需要极高级别缩放的解决方案可以使用 Azure Cosmos DB for PostgreSQL。 此部署模式支持跨多个服务器(节点)对租户进行水平分片。 通过在多租户数据库中使用分布式表,可以确保租户的所有数据都存储在同一节点上,从而提高查询性能。

注意

自 2022 年 10 月起,Azure Database for PostgreSQL 超大规模 (Citus) 已更名为 Azure Cosmos DB for PostgreSQL,并移入 Cosmos DB 产品系列中

详细信息:

连接池

Postgres 使用基于进程的模型进行连接。 这种模型使得维护大量空闲连接的效率低下。 某些多租户体系结构需要大量的活动连接,这将对 Postgres 服务器的性能产生负面影响。

默认情况下,通过 PgBouncer 的连接池安装在 Azure Database for PostgreSQL 灵活服务器中。

详细信息:

Microsoft Entra 身份验证

Azure Database for PostgreSQL 灵活服务器支持使用 Microsoft Entra ID 对连接进行身份验证。 此功能使多租户环境中的应用程序工作负载能够通过使用租户特定的服务主体或托管标识对数据库进行身份验证,这意味着数据库访问权限可以限定为单个租户。 通过将Microsoft Entra ID 身份验证与特定于租户的行安全策略相结合,可以降低应用程序从多租户数据库中访问另一租户数据的风险。 详细信息:

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

首席作者:

其他参与者:

若要查看非公开领英个人资料,请登录领英。

后续步骤

查看多租户的存储和数据方法