PGAdapter 會將 PostgreSQL 連線協定轉換為 Spanner gRPC 協定。您可以將 PostgreSQL 應用程式和驅動程式連線至 Spanner PostgreSQL 介面,以存取 Spanner PostgreSQL 介面資料庫,且延遲時間極短。
如要瞭解如何啟動 PGAdapter,請參閱「啟動 PGAdapter」。
您可以將 PGAdapter 當做 Sidecar Proxy,與主要應用程式並行執行;如果是 Java 應用程式,則可以直接在應用程式 JVM 中執行。PGAdapter 會在 localhost 上公開支援 PostgreSQL 連線通訊協定的端點,讓 psql 等工具連線至 Spanner。
PGAdapter 最多會增加 0.2 毫秒的延遲時間。PostgreSQL 介面與 GoogleSQL 維持相同的延遲程度。
下圖顯示 psql 如何透過 PGAdapter 連線至 Spanner。
PGAdapter 支援基本和擴充查詢模式,以及 Spanner PostgreSQL 介面支援的任何資料類型。
支援的驅動程式和 ORM
PGAdapter 支援標準 PostgreSQL 驅動程式、ORM 和用戶端工具,包括:
- 指令列工具:
psql(11 至 14 版) 和 JetBrains IDE (例如 DataGrip)。 - Java/JVM:JDBC (42.x 以上版本)、R2DBC、Hibernate 和 Spring Data JPA。
- Go:
pgx(4.15 以上版本) 和gorm。 - Python:
psycopg2、psycopg3、SQLAlchemy和 Python ADBC。 - Node.js:
node-postgres、Knex.js、Sequelize.js、Prisma和Drizzle。 - 其他語言:
npgsql(.NET) 和PDO_PGSQL(PHP)。
如需完整的相容性矩陣,請參閱 PostgreSQL 驅動程式和 ORM。
PGAdapter 執行環境
您可以透過下列任一方法執行 PGAdapter:
- 獨立:PGAdapter 以 JAR 檔案形式提供,並在 JVM 中獨立執行。
- Docker。PGAdapter 也會封裝為 Docker 映像檔。
- Cloud Run:PGAdapter 可部署為 Cloud Run 上的 Sidecar Proxy。
- Sidecar Proxy:Sidecar Proxy 的典型用途是在 Kubernetes 叢集中。
- 程序內:您的 Java 應用程式程式碼可以使用提供的 JAR 檔案,建立及啟動 PGAdapter 執行個體。
如要瞭解這些方法的詳細資訊,請參閱「啟動 PGAdapter」。
使用 PGAdapter 授權
PGAdapter 會檢查您啟動 Proxy 時指定的憑證,判斷連線的服務帳戶或其他身分與存取權管理 (IAM) 主體。授予該主體的 IAM 權限會決定允許的資料庫作業。
使用精細存取控管時,請在啟動 PGAdapter 時指定資料庫角色。PGAdapter 會在傳送查詢和 DML 陳述式時使用精細的存取控管,這需要 IAM spanner.databases.useRoleBasedAccess 權限。如要使用 public 以外的資料庫角色,主體也需要 spanner.databaseRoles.use 權限。授予資料庫角色的權限會決定連線應用程式可執行的作業。如果未指定資料庫角色,系統會套用授予 IAM 主體的權限。如要執行 DDL 陳述式,主體必須具備 spanner.databases.updateDdl 權限。
詳情請參閱「關於精細的存取控管」和「使用 IAM 控管存取權」。
後續步驟
- 啟動 PGAdapter
- 進一步瞭解 PGAdapter GitHub 存放區。
- 如要查看 PGAdapter 支援的 PostgreSQL 驅動程式和 ORM 表格,請參閱這篇文章。