本頁面提供 PGAdapter 的總覽。如要瞭解如何啟動 PGAdapter,請參閱「啟動 PGAdapter」。
PGAdapter 是附屬 Proxy,也就是與主要應用程式一同執行的小型應用程式,可支援
Spanner 適用的 PostgreSQL 介面與 Spanner 之間的通訊。對於 Java 應用程式,您甚至可以直接將 PGAdapter 連結至應用程式,而無須在個別程序中執行。PGAdapter 的設計目的是在應用程式所在的電腦上執行,並在本機上公開支援 PostgreSQL 線路通訊協定的端點。它會將 PostgreSQL 線路通訊協定轉譯為 Spanner 線路通訊協定 gRPC。當這個 Proxy 在本機上執行時,psql
等 PostgreSQL 用戶端就能連線至 PostgreSQL 方言 Spanner 資料庫。
PGAdapter 最多會增加 0.2 毫秒的延遲時間。PostgreSQL 介面的延遲程度與 GoogleSQL 相同。
下圖顯示 psql
如何透過 PGAdapter 連線至 Spanner。
PGAdapter 支援基本和進階查詢模式,並支援 Spanner 適用的 PostgreSQL 介面支援的任何資料類型。
PGAdapter 執行環境
您可以使用下列任一方法執行 PGAdapter:
- 獨立:PGAdapter 會以 JAR 檔案形式提供,並在 JVM 中獨立執行。
- Docker。PGAdapter 也已封裝為 Docker 映像檔。
- Cloud Run:PGAdapter 可部署為 Cloud Run 上的邊車 Proxy。
- Sidecar Proxy:一般用途是做為 Kubernetes 叢集中的 Sidecar Proxy。
- 程序內:Java 應用程式程式碼可使用提供的 JAR 檔案建立及啟動 PGAdapter 例項。
如要進一步瞭解這些方法,請參閱「啟動 PGAdapter」。
使用 PGAdapter 進行授權
PGAdapter 會檢查您在啟動時指定的憑證,藉此判斷要用於連線的服務帳戶或其他身分與存取權管理 (IAM) 主體。系統會根據授予該主體的 IAM 權限,決定連線應用程式在資料庫中的權限。
使用精細存取權控管功能時,您可以選擇在啟動 PGAdapter 時指定資料庫角色。如果您指定資料庫角色,PGAdapter 在傳送查詢和 DML 陳述式的要求時,就會使用精細的存取控管機制。這需要具備 spanner.databases.useRoleBasedAccess
的 IAM 權限,如果是 public
以外的資料庫角色,還需要具備 spanner.databaseRoles.use
權限。授予資料庫角色的權限會決定連線應用程式可執行的作業。如果您未指定資料庫角色,系統會使用授予 IAM 主體的資料庫層級權限。如要執行 DDL 陳述式,實體必須具備 spanner.databases.updateDdl
權限。
詳情請參閱「關於精細存取權控管機制」和「使用 IAM 控管存取權」。
後續步驟
- 啟動 PGAdapter
- 進一步瞭解 PGAdapter GitHub 存放區。
- 進一步瞭解 PostgreSQL 驅動程式和 ORM,並查看 PGAdapter 支援的 PostgreSQL 驅動程式和 ORM 表格。