本页简要介绍了 PGAdapter。如需了解如何启动 PGAdapter,请参阅启动 PGAdapter。
PGAdapter 是一个边车代理,支持
PostgreSQL 页面。它与应用在同一台机器上运行,并在 localhost 上公开支持 PostgreSQL 线协议的端点。它可以将 PostgreSQL
线路协议转换为 Spanner 线路协议 gRPC。使用此代理
本地运行时,PostgreSQL 客户端(例如 psql
)可以连接到
PostgreSQL-dialect 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
,并且对于除以下数据库角色之外的数据库角色
public
,spanner.databaseRoles.use
权限。授予的权限
数据库角色决定了连接的应用可以执行的操作
效果。如果您未指定数据库角色,则
向 IAM 授予的权限
主账号。如需执行 DDL 语句,主账号必须具有
spanner.databases.updateDdl
权限。
如需了解详情,请参阅精细访问权限控制简介和 使用 IAM 进行访问权限控制。
后续步骤
- 启动 PGAdapter
- 详细了解 PGAdapter GitHub 代码库。
- 详细了解 PostgreSQL 驱动程序和 ORM,查看 PGAdapter 支持的 PostgreSQL 驱动程序和 ORM 表格。