PGAdapter 概览

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

PGAdapter 是一个 Sidecar 代理,是一个与您的主应用一起运行的小型应用,用于支持 适用于 Spanner 的 PostgreSQL 接口与 Spanner 之间的通信。对于 Java 应用,您甚至可以直接将 PGAdapter 关联到应用,而无需在单独的进程中运行它。PGAdapter 旨在与应用在同一台机器上运行,并在 localhost 上公开支持 PostgreSQL 线协议的端点。它会将 PostgreSQL 传输协议转换为 Spanner 传输协议 gRPC。在本地运行此代理后,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 可作为 Sidecar 代理部署在 Cloud Run 上。
  • 边车代理:作为边车代理的典型用途是在 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 进行访问权限控制

后续步骤