En esta página se ofrece una descripción general de PGAdapter. Para saber cómo iniciar PGAdapter, consulta Iniciar PGAdapter.
PGAdapter es un proxy sidecar, una pequeña aplicación que se ejecuta junto con tu aplicación principal para admitir las comunicaciones entre la
interfaz de PostgreSQL para Spanner y Spanner.
En el caso de las aplicaciones Java, incluso puedes vincular PGAdapter a la aplicación directamente sin tener que ejecutarlo en un proceso independiente. PGAdapter se ha diseñado para ejecutarse en la misma máquina que la aplicación y expone un endpoint en localhost que admite el protocolo de conexión de PostgreSQL. Traduce el protocolo de conexión de PostgreSQL al protocolo de conexión de Spanner, gRPC. Con este proxy ejecutándose de forma local, un cliente de PostgreSQL, como psql
, puede conectarse a una base de datos de Spanner con dialecto PostgreSQL.
PGAdapter añade, como máximo, 0,2 ms de latencia adicional. La interfaz de PostgreSQL tiene los mismos niveles de latencia que GoogleSQL.
En el siguiente diagrama se muestra cómo se conecta psql
a Spanner a través de PGAdapter.
PGAdapter admite los modos de consulta básicos y ampliados, así como cualquier tipo de datos que admita la interfaz PostgreSQL para Spanner.
Entornos de ejecución de PGAdapter
Puedes ejecutar PGAdapter con uno de los siguientes métodos:
- Independiente: PGAdapter se proporciona como un archivo JAR y se ejecuta de forma independiente en la JVM.
- Docker. PGAdapter también se empaqueta como una imagen Docker.
- Cloud Run: PGAdapter se puede desplegar como un proxy sidecar en Cloud Run.
- Proxy de sidecar: un uso habitual de un proxy de sidecar es en un clúster de Kubernetes.
- En proceso: el código de tu aplicación Java puede usar el archivo JAR proporcionado para crear e iniciar una instancia de PGAdapter.
Para obtener información sobre estos métodos, consulta Iniciar PGAdapter.
Autorización con PGAdapter
PGAdapter determina la cuenta de servicio u otra entidad de gestión de identidades y accesos (IAM) que se va a usar para la conexión examinando las credenciales que especifiques al iniciarlo. Los permisos de gestión de identidades y accesos concedidos a esa entidad principal determinan los permisos que tiene la aplicación de conexión en la base de datos.
Cuando se usa el control de acceso pormenorizado, puedes especificar un rol de base de datos al iniciar PGAdapter. Si especifica un rol de base de datos, PGAdapter usa un control de acceso pormenorizado cuando envía solicitudes de consultas e instrucciones DML. Para ello, se necesita el permiso de gestión de identidades y accesos spanner.databases.useRoleBasedAccess
y, en el caso de los roles de base de datos que no sean public
, el permiso spanner.databaseRoles.use
. Los privilegios concedidos al rol de la base de datos determinan las operaciones que puede realizar la aplicación conectada. Si no especifica un rol de base de datos, se usarán los permisos a nivel de base de datos que se hayan concedido a la entidad de IAM. Para ejecutar instrucciones DDL, la entidad debe tener el permiso spanner.databases.updateDdl
.
Para obtener más información, consulta Información sobre el control de acceso granular y Control de acceso con IAM.
Siguientes pasos
- Iniciar PGAdapter
- Consulta más información sobre el repositorio de GitHub de PGAdapter.
- Consulta más información sobre los controladores y ORMs de PostgreSQL en una tabla de controladores y ORMs de PostgreSQL que admite PGAdapter.