PGAdapter 簡介

本頁面提供 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。

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 控管存取權」。

後續步驟