

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# PostgreSQL 集區模型
<a name="pool"></a>

集區模型的實作方式是佈建單一 PostgreSQL 執行個體 (Amazon RDS 或 Aurora)，並使用[資料列層級安全性 (RLS)](https://aws.amazon.com/blogs/database/multi-tenant-data-isolation-with-postgresql-row-level-security/) 來維護租戶資料隔離。RLS 政策會限制`SELECT`查詢傳回資料表中的哪些資料列`UPDATE`，或哪些資料列會受到 `INSERT`、 和 `DELETE`命令的影響。集區模型會將所有租用戶資料集中在單一 PostgreSQL 結構描述中，因此更符合成本效益，且需要較少的操作開銷才能維護。監控此解決方案也會因為其集中化而更加簡單。不過，在集區模型中監控租戶特定的影響，通常需要在應用程式中進行一些額外的檢測。這是因為 PostgreSQL 預設不知道哪個租用戶正在耗用資源。租戶加入已簡化，因為不需要新的基礎設施。這種靈活性可讓您更輕鬆地完成快速且自動化的租戶加入工作流程。

 ![\[SaaS PostgreSQL pool model\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/saas-multitenant-managed-postgresql/images/saas-postgresql-pool.png) 

雖然集區模型通常更具成本效益且更容易管理，但確實有一些缺點。在集區模型中，無法完全消除雜訊鄰近現象。不過，透過確保 PostgreSQL 執行個體上提供適當的資源，以及使用策略來減少 PostgreSQL 中的負載，例如將查詢卸載至僅供讀取複本或卸載至 Amazon ElastiCache，可以緩解此問題。有效的監控也在回應租戶效能隔離問題方面扮演重要角色，因為應用程式檢測可以記錄和監控租戶特定的活動。最後，某些 SaaS 客戶可能找不到 RLS 提供的邏輯分隔足夠，並可能要求額外的隔離措施。