Interfaz de PostgreSQL para Spanner

En esta página, se describe la interfaz de PostgreSQL para Spanner y sus componentes. Se proporciona orientación para elegir entre PostgreSQL y GoogleSQL y se ofrecen prácticas recomendadas para adoptar y usar la interfaz de PostgreSQL.

La interfaz de PostgreSQL permite que se pueda acceder a las funciones de Spanner (completamente administrado, escalamiento ilimitado, coherencia sólida, alto rendimiento y disponibilidad global de hasta un 99.999%) desde el ecosistema de PostgreSQL de código abierto. Incluye un subconjunto central del dialecto SQL de PostgreSQL, la compatibilidad con la herramienta de línea de comandos psql, los clientes de lenguaje nativo y la integración en herramientas de Google existentes, como Dataflow. A diferencia de otros servicios que administran instancias reales de la base de datos de PostgreSQL, Spanner usa una sintaxis compatible con PostgreSQL para exponer sus capacidades existentes de escalamiento horizontal. Esto proporciona familiaridad a los desarrolladores y portabilidad para las aplicaciones, pero no es una compatibilidad total con PostgreSQL. Las aplicaciones existentes que dependen de las funciones de PostgreSQL, como procedimientos almacenados, activadores, extensiones o niveles de aislamiento configurables, requerirán reelaboración para ejecutarse en Spanner. Sin embargo, la sintaxis de SQL que admite Spanner es PostgreSQL equivalente semánticamente, lo que significa que los esquemas y las consultas escritos en la interfaz de PostgreSQL se pueden portar con facilidad a otro entorno de PostgreSQL.

La interfaz de PostgreSQL es compatible con la sintaxis común de SQL de PostgreSQL, incluidas las consultas, las funciones y los operadores. Además, admite muchos tipos de datos, sintaxis de DDL y vistas de esquema de información. Las aplicaciones pueden conectarse a una base de datos de Spanner habilitada para la interfaz de PostgreSQL mediante clientes nativos de Spanner o PGAdapter, un proxy ligero que implementa el protocolo de cable abierto de PostgreSQL. Inicialmente, se espera que la compatibilidad con el protocolo de conexión se use con la herramienta de línea de comandos psql.

Los administradores aprovisionan, administran y supervisan las bases de datos habilitadas para la interfaz de PostgreSQL mediante la consola, las APIs y las herramientas existentes de Spanner, como gcloud CLI. La interfaz de PostgreSQL se configura por base de datos en el momento de la creación. Una instancia de Spanner puede contener bases de datos de dialectos de las interfaces de GoogleSQL y PostgreSQL. Debido a que comparten el mismo motor de base de datos distribuido subyacente, ambos dialectos de la base de datos tienen las mismas características de escalabilidad, coherencia, rendimiento y seguridad.

Componentes de la interfaz de PostgreSQL

La interfaz de PostgreSQL consta de dos funciones principales: compatibilidad con el dialecto SQL de PostgreSQL y asistencia para clientes que se conectan a bases de datos de PostgreSQL habilitadas para la interfaz.

Compatibilidad con el dialecto SQL de PostgreSQL

La interfaz de PostgreSQL proporciona un subconjunto del dialecto SQL de PostgreSQL, que incluye DQL, DML y DDL, junto con extensiones para admitir funciones de Spanner como tablas intercaladas y sugerencias de consultas. Si deseas obtener información detallada sobre la compatibilidad con el lenguaje PostgreSQL de Spanner, consulta El lenguaje PostgreSQL en Spanner.

Asistencia para clientes de PostgreSQL

Los desarrolladores pueden conectar sus aplicaciones a una base de datos de la interfaz de PostgreSQL mediante clientes de Spanner de código abierto para entornos de Java, Go, Python, Node.js, Ruby, PHP, C# y C++. También pueden usar el controlador JDBC de Spanner y el controlador para el paquete database/sql de Go.

La interfaz de PostgreSQL también es compatible con la herramienta de línea de comandos de psql. psql es un entorno interactivo para ejecutar consultas, explorar metadatos y cargar datos, y es común en muchos entornos de PostgreSQL. PGAdapter, un proxy ligero que habilita la compatibilidad con psql, traduce el protocolo de cable de PostgreSQL en la interfaz gRPC integrada de Spanner, administra las conexiones y la autenticación de IAM por ti. Para obtener más información, consulta la Descripción general de PGAdapter.

El controlador de JDBC de PostgreSQL y el controlador de pgx de PostgreSQL también son compatibles con PGAdapter. Para obtener una lista completa de los controladores de PostgreSQL compatibles, consulta Controladores y ORM de PostgreSQL.

Elige entre GoogleSQL y PostgreSQL

Cuando creas una base de datos de Spanner, puedes elegir entre los dialectos GoogleSQL y PostgreSQL. El dialecto determina la sintaxis y la semántica de las consultas y los tipos de datos que usan tus aplicaciones, además de cómo se conectan a la base de datos.

El factor decisivo para elegir usar GoogleSQL o PostgreSQL en una aplicación o proyecto determinado debería ser la necesidad y los objetivos comerciales, no la compatibilidad con el lenguaje SQL para las características de Spanner. Los dialectos del lenguaje SQL son pares que comparten las mismas características con respecto a las características de Spanner:

  • Ambos se implementan sobre la misma base de procesamiento de consultas y almacenamiento distribuido. Comparten características de rendimiento, escalabilidad, coherencia y disponibilidad.
  • Ambas expresan las funciones de Spanner a través de un subconjunto de sus respectivas construcciones de lenguaje estándar (ANSI 2001, el estándar PostgreSQL de facto de código abierto para el otro), con extensiones agregadas para admitir funciones de Spanner como tablas intercaladas y sugerencias de consultas.
  • En ambos, debes usar las interfaces de administración de Spanner: la consola de Google Cloud, gcloud CLI y las bibliotecas cliente de Spanner para la automatización de DevOps.
  • Para ambos, debes usar las interfaces de desarrollo de aplicaciones de Spanner: las bibliotecas cliente de Spanner y las APIs de REST y RPC.
  • En ambos, debes usar los esquemas de sistema INFORMATION_SCHEMA y SPANNER_SYS de Spanner para consultar metadatos y estadísticas de la base de datos.

La interfaz de PostgreSQL actual no alcanza la paridad total entre los dialectos GoogleSQL y PostgreSQL. Sin embargo, a largo plazo, debes determinar si usar PostgreSQL o GoogleSQL para una aplicación o proyecto determinado de la siguiente manera:

  • Elige PostgreSQL si el equipo de desarrollo está familiarizado con el ecosistema de PostgreSQL de código abierto o si tu organización tiene o está estandarizando el uso de PostgreSQL.

  • Elige GoogleSQL:

    • Si el equipo de desarrollo está familiarizado con GoogleSQL, ya sea por su experiencia anterior en Spanner o por trabajar con otras bases de datos de Google Cloud, como BigQuery, que también admiten GoogleSQL
    • Si tu organización está estandarizando el uso de GoogleSQL o su estándar ANSI 2011 subyacente,

Para obtener más información, consulta Paridad de dialectos entre GoogleSQL y PostgreSQL.

Prácticas recomendadas para usar la interfaz de PostgreSQL

Para usar la interfaz de PostgreSQL de manera eficaz, Google recomienda lo siguiente:

  • Usa la consola de Google Cloud o Google Cloud CLI para crear tu base de datos de PostgreSQL en una instancia de Spanner. Puedes crear bases de datos de PostgreSQL y GoogleSQL en la misma instancia.

  • Usa las bibliotecas cliente de Spanner para conectar aplicaciones que acceden a tu base de datos.

  • Usa la herramienta de línea de comandos psql a través del proxy PGAdapter para trabajar de forma interactiva con tu base de datos. Como alternativa, puedes usar la página Spanner Studio de la consola de Google Cloud.

¿Qué sigue?