Azure 上的許多多租用戶解決方案會使用開放原始碼關係資料庫管理系統 適用於 PostgreSQL 的 Azure 資料庫。 本文說明適用於 PostgreSQL 的 Azure 資料庫功能,當您使用多租用戶系統時,這些功能很有用。 本文也包含如何在多租用戶解決方案中使用適用於 PostgreSQL 的 Azure 資料庫的指引和範例連結。
部署模式
下列部署模式適用於適用於 PostgreSQL 的 Azure 資料庫,且適合與多租用戶應用程式搭配使用:
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器是大部分不需要 Azure Cosmos DB for PostgreSQL 所提供高延展性的多租用戶部署的好選擇。
具有彈性叢集的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器 (預覽) 可在 受控服務內提供水平調整。 它適用於需要從少數租用戶擴展到大量租用戶的多租用戶應用程式。 此功能為預覽版,不建議用於生產環境。 不過,您可以開始評估它以供未來的實作使用。
適用於 PostgreSQL 的 Azure Cosmos DB 是 Azure 受控資料庫服務,專為需要高層級規模的解決方案而設計,例如多租用戶應用程式。 此服務是 Azure Cosmos DB 產品系列的一部分。
注意
適用於 PostgreSQL 的 Azure 資料庫單一伺服器位於淘汰路徑上,並 排定在 2025 年 3 月 28 日之前淘汰。 不建議用於新的多租用戶工作負載。
支援多租用戶的適用於 PostgreSQL 的 Azure 資料庫功能
當您使用適用於 PostgreSQL 的 Azure 資料庫來建置多租用戶應用程式時,下列功能可以增強您的解決方案。
注意
某些功能僅適用於特定 部署模式。 下列指引說明哪些功能可供使用。
資料列層級安全性
資料列層級安全性對於使用共用資料表時強制執行租用戶層級隔離很有用。 在 PostgreSQL 中,您可以將 資料列安全性原則 套用至資料表,以限制租用戶對資料列的存取,以實作資料列層級安全性。
在資料表上實作資料列層級安全性可能會影響效能。 您可能需要在已啟用資料列層級安全性的資料表上建立其他索引,以確保效能不會受到影響。 當您使用數據列層級安全性時,請務必使用效能測試技術來驗證工作負載是否符合基準效能需求。
如需詳細資訊,請參閱 保護適用於 PostgreSQL 的 Azure 資料庫伺服器。
使用分片進行水平擴展
分片 模式 可讓您在多個資料庫或資料庫伺服器之間擴展工作負載。
需要高階規模的解決方案可以使用適用於PostgreSQL的 Azure Cosmos DB。 此部署模式允許跨多個伺服器或節點對租戶進行水平分片。 在多租用戶資料庫中使用 分散式資料表 ,以確保租用戶的所有資料都儲存在相同的節點上。 這種方法提高了查詢效能。
注意
2022 年 10 月,適用於 PostgreSQL 的 Azure 資料庫超大規模資料庫 (Citus) 已重新命名為 Azure Cosmos DB for PostgreSQL,並移至 Azure Cosmos DB 系列產品。
如需詳細資訊,請參閱下列文章:
彈性叢集 (預覽)
彈性叢集是適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的功能。 它們在單一受管服務中提供水平擴展功能。 此部署選項會針對需要向外延展功能的多租使用者工作負載使用分散式數據表功能。
在多租用戶解決方案中,彈性叢集可跨多個節點進行租用戶資料分區。 您可以依租用戶識別碼散發資料表,以確保租用戶資料共置在特定節點上。 此方法可以改善租用戶特定查詢的查詢效能。
注意
彈性叢集處於預覽狀態,且僅適用於適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
如需詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的彈性叢集 (預覽版)。
連線池化
Postgres 會針對連線使用以進程為基礎的模型。 此模型讓維護大量閑置連線的效率不佳。 某些多租戶架構需要許多作用中連線,這會對 Postgres 伺服器的效能產生負面影響。
透過 PgBouncer 的連線集區預設會安裝在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中。
如需詳細資訊,請參閱下列文章:
- 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的 PgBouncer
- 適用於 PostgreSQL 的 Azure Cosmos DB 中的連線共用
- 安裝和設定 Azure PostgreSQL 資料庫的 PgBouncer 連線池代理的步驟
Microsoft Entra 驗證
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援使用 Microsoft Entra ID 進行連線驗證。 這項功能可讓多租用戶環境中的應用程式工作負載使用租用戶特定的服務主體或受控識別來向資料庫進行驗證。 資料庫存取的範圍可以限定為個別租用戶。 藉由結合Microsoft Entra ID 驗證與租使用者特定的 數據列安全策略,您可以降低應用程式從多租用戶資料庫中存取另一個租用戶數據的風險。
如需詳細資訊,請參閱下列文章:
Azure 機密運算 (預覽版)
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器透過信任的執行環境 (TEE) 支援 Azure 機密運算,為使用中的資料提供硬體型保護。 這項功能可保護租用戶數據不受作系統、Hypervisor 或其他應用程式未經授權的存取。
對於處理敏感資料的多租用戶解決方案,機密運算會在處理期間提供硬體層級的資料保護。 當租用戶有嚴格的資料保護需求或法規合規性需求,或當您需要確保應用程式提供者無法存取租用戶資料時,請使用機密運算。
注意
機密運算目前處於預覽階段,需要特定的虛擬機器 SKU。
如需詳細資訊,請參閱適用於 Azure Database for PostgreSQL 的 Azure 機密運算 (預覽版)。
加密
儲存在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的資料預設會使用 Microsoft 受控金鑰進行待用加密,但您也可以使用客戶自控金鑰 (CMK) 來允許租用戶指定自己的加密金鑰。
當您使用 CMK 時,您可以提供儲存在 Azure 金鑰保存庫中的自己的加密金鑰。 在多租用戶環境中,此方法可讓您對不同的租用戶使用不同的加密金鑰,即使其資料儲存在相同的資料庫伺服器中也一樣。 這項功能也可讓租用戶控制自己的加密金鑰。 如果租用戶選擇停用其帳戶,刪除相關聯的金鑰可確保無法再存取其資料。
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援 CMK 的 自動金鑰版本更新 。 此功能會在 Key Vault 中輪替之後自動更新為新的金鑰版本,而且不需要手動金鑰版本管理。 在法規合規性需要一般密鑰輪替的多租用戶環境中,此自動化可減少手動作工作,並維護數據保護,而不會中斷服務。
如需詳細資訊,請參閱下列文章:
參與者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- 丹尼爾·斯科特-倫斯福德 |合作夥伴解決方案架構師、數據與 AI
其他投稿人:
- John Downs |Azure 模式和實務的主要軟體工程師
- Arsen Vladimirskiy | 主任客戶工程師,FastTrack for Azure
- 保羅·伯波 | FastTrack 獨立軟體供應商 Azure 的首席客戶工程師
- 阿薩夫·弗蘭克爾 |資深工程師/數據架構師、適用於ISV和初創公司的 Azure FastTrack
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。