本页简要介绍了 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。
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 进行访问权限控制。
后续步骤
- 启动 PGAdapter
- 详细了解 PGAdapter GitHub 代码库。
- 详细了解 PostgreSQL 驱动程序和 ORM 查看 PGAdapter 提供的 PostgreSQL 驱动程序和 ORM 表 支持。