共用方式為


分區化模型

適用於: Azure Cosmos DB for PostgreSQL (由 PostgreSQL 的超大規模 (Citus) 資料庫延伸模組提供)

分區化是一種技術,用於資料庫系統和分散式運算,以水準分割跨多部伺服器或節點的資料。 它牽涉到將大型資料庫或資料集分成較小、易於管理的部分,稱為分區。 分區包含資料的子集,而分區會組成完整的資料集。

Azure Cosmos DB for PostgreSQL 提供兩種類型的資料分區化,即資料列型和結構描述型。 每個選項都有它自己的分區化取捨,可讓您選擇最符合您應用程式需求的方法。

資料列型的分區化

Azure Cosmos DB for PostgreSQL 分區資料表的傳統方式是單一資料庫,共用結構描述模型,也稱為資料列型分區化,租使用者會共存為相同資料表中的資料列。 租用戶是藉由定義散發資料行來決定,以水平方式分割資料表。

資料列型分區化最具硬體效率的方式。 租用戶會密集封裝並分散在叢集中的節點之間。 不過,此方法需要確定架構中的所有資料表都有散發資料行,而且應用程式中的所有查詢都會依它進行篩選。 資料列型分區化在 IoT 工作負載中大放異彩,並達到硬體使用的最佳邊界。

優點:

  • 最佳效能
  • 每個節點的最佳租用戶密度

缺點:

  • 需要結構描述修改
  • 需要應用程式查詢修改
  • 所有租用戶都必須共用相同的結構描述

結構描述型的分區化

Azure Cosmos DB for PostgreSQL 的 Citus 12.0 可用,結構描述型分區化是共用資料庫、個別結構描述模型,結構描述會成為資料庫中的邏輯分區。 多租使用者應用程式可以使用每個租用戶的結構描述,輕鬆地沿著租用戶維度進行分區。 不需要查詢變更,而且應用程式只需要輕微修改,就能在切換租用戶時設定適當的 search_path。 結構描述型分區化是微服務的理想解決方案,對於部署無法進行資料列型分區化所需變更的應用程式,ISV 而言也是理想的解決方案。

優點:

  • 租用戶可以有異質結構描述
  • 無需結構描述修改
  • 無需應用程式查詢修改
  • 結構描述型分區化與資料列型分區化相比,SQL 的相容性更好

缺點:

  • 相較於資料列型分區化,每個節點的租用戶較少

分區化取捨

結構描述型的分區化 資料列型的分區化
多租用戶模型 每個租用戶個別的結構描述 具有租用戶識別碼資料行的共用資料表
Citus 版本 12.0 或以上 所有版本
相較於 vanilla PostgreSQL 的額外步驟 沒有,僅設定變更 在每個資料表上使用 create_distributed_table 以散發和收集租用戶識別碼的資料表
租用戶的數目 1-10k 1-1 M+
資料模型需求 分散式結構描述之間沒有外部索引鍵 需要在每個資料表中包含租使用者識別碼資料行 (散發資料行,也稱為分區化索引鍵),以及主索引鍵、外部索引鍵
單一節點查詢的 SQL 需求 每個查詢使用單一分散式結構描述 聯結和 WHERE 子句應包含 tenant_id 資料行
平行跨租用戶查詢 No Yes
每個租用戶的資料表定義 No
存取控制 結構描述權限 結構描述權限
在租用戶之間共用資料 是,使用參考資料表 (在不同的結構描述中) 是,使用參考資料表
租用戶進行分區隔離 依定義,每個租用戶都有自己的分區群組 可透過 isolate_tenant_to_new_shard,為特定租用戶識別碼提供自己的分區群組