PGAdapter 概览

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

PGAdapter 是一个边车代理,支持 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 代理。
  • Sidecar 代理。作为 Sidecar 代理的典型用法是在 Kubernetes 集群中。
  • 进程中。Java 应用代码可以使用提供的 JAR 文件 创建并启动 PGAdapter 实例。

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

使用 PGAdapter 授权

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

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

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

后续步骤