PGAdapter 概览

本页面简要介绍了 PGAdapter。如需了解如何启动 PGAdapter,请参阅启动 PGAdapter

PGAdapter 是一种边车代理,支持 适用于 Spanner 的 PostgreSQL 页面。它与应用在同一台机器上运行,并在支持 PostgreSQL 线路协议的 localhost 上公开一个端点。它将 PostgreSQL 有线协议转换为 Spanner 有线协议 (gRPC)。通过在本地运行此代理,PostgreSQL 客户端(例如 psql)可以连接到 PostgreSQL 方言 Spanner 数据库。

下图显示了 psql 如何通过 PGAdapter 连接到 Spanner。

psql 通过 PGAdapter 连接到 Spanner

PGAdapter 支持简单查询模式和扩展查询模式,并且支持 Spanner 的 PostgreSQL 页面支持的任何数据类型。

PGAdapter 执行环境

您可以使用以下方法之一运行 PGAdapter:

  • 独立。PGAdapter 以 JAR 文件的形式提供,并在 JVM 中独立运行。
  • Docker。PGAdapter 还会打包为 Docker 映像。
  • Cloud Run。PGAdapter 可部署为 Cloud Run 上的边车代理。
  • Sidecar 代理。作为边车代理的一个典型用途是在 Kubernetes 集群中。
  • 进行中。您的 Java 应用代码可以使用提供的 JAR 文件来创建和启动 PGAdapter 实例。

如需详细了解这些方法,请参阅启动 PGAdapter

使用 PGAdapter 授权

PGAdapter 检查您在启动它时指定的凭据,以确定要用于连接的服务帐号或其他 Identity and Access Management (IAM) 主帐号。授予该主帐号的 IAM 权限决定了连接应用对数据库拥有的权限。

使用精细访问权限控制时,您可以选择在启动 PGAdapter 时指定数据库角色。如果您指定数据库角色,则 PGAdapter 在发送查询和 DML 语句请求时会使用精细的访问权限控制。这需要 IAM 权限 spanner.databases.useRoleBasedAccess,对于 public 以外的数据库角色,还需要 spanner.databaseRoles.use 权限。授予数据库角色的权限决定了建立连接的应用可以执行的操作。如果您未指定数据库角色,则系统会使用授予 IAM 主帐号的数据库级权限。如需执行 DDL 语句,主帐号必须具有 spanner.databases.updateDdl 权限。

如需了解详情,请参阅精细访问权限控制简介使用 IAM 进行访问权限控制

后续步骤