PGAdapter 概览

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

PGAdapter 是一个边车代理,支持 Spanner 的 PostgreSQL 页面。它与应用在同一机器上运行,并在 localhost 上公开支持 PostgreSQL 有线协议的端点。它将 PostgreSQL 有线协议转换为 Spanner 有线协议 gRPC。此代理在本地运行后,PostgreSQL 客户端(如 psql)可以连接到 PostgreSQL-dialect 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 进行访问权限控制

后续步骤