PGAdapter 概览

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

PGAdapter 是一个边车代理,是一个运行 以及您的主应用程序,以支持 之间的通信 PostgreSQL 页面和 Spanner。 对于 Java 应用,您甚至可以直接将 PGAdapter 关联到应用,而无需在单独的进程中运行它。PGAdapter 现为 与应用在同一机器上运行,并提供 本地主机(支持 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 部署为边车代理 。
  • 边车代理:边车代理在 Kubernetes 中 集群。
  • 进程内:Java 应用代码可以使用提供的 JAR 文件 创建并启动 PGAdapter 实例。

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

使用 PGAdapter 进行授权

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

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

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

后续步骤