Interfaz de PostgreSQL

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

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

La interfaz de PostgreSQL admite la sintaxis común de SQL de PostgreSQL, incluidas las consultas, las funciones y los operadores. Además, admite muchos tipos de datos, sintaxis DDL y vistas del 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 liviano que implementa el protocolo abierto de cable de PostgreSQL. Inicialmente, la compatibilidad con el protocolo de conexión está pensada para su uso con la herramienta de línea de comandos de 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 su creación. Una instancia de Spanner puede contener bases de datos de dialectos de la interfaz de GoogleSQL y de PostgreSQL. Debido a que comparten el mismo motor de base de datos distribuido subyacente, ambos dialectos de 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 capacidades principales: compatibilidad con el dialecto SQL de PostgreSQL y compatibilidad con los 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 la funcionalidad de Spanner, como las tablas intercaladas y la optimización de consultas. Para obtener información detallada sobre la compatibilidad del lenguaje PostgreSQL de Spanner, consulta El lenguaje PostgreSQL en Cloud Spanner.

Asistencia para clientes de PostgreSQL

Los desarrolladores pueden conectar sus aplicaciones a una base de datos de 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 de código abierto 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 que permite ejecutar consultas, explorar metadatos y cargar datos, algo común en muchos entornos de PostgreSQL. PGAdapter habilita la compatibilidad con psql, un proxy ligero que convierte el protocolo de conexión de PostgreSQL en la interfaz gRPC nativa de Spanner, la administración de conexiones y la autenticación de IAM por ti. Para obtener más información, consulta Acerca de PGAdapter.

Los controladores controlador JDBC de PostgreSQL y controlador 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 de GoogleSQL y PostgreSQL. El dialecto determina la sintaxis y la semántica de las consultas y los tipos de datos que usan tus aplicaciones, así como la forma en que se conectan a la base de datos.

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

  • Ambas se implementan sobre la misma base de procesamiento de consultas y almacenamiento distribuido. Por lo tanto, comparten características de rendimiento, escalabilidad, coherencia y disponibilidad.
  • Ambos expresan la funcionalidad de la base de datos de Spanner a través de un subconjunto de sus respectivas construcciones de lenguaje estándar (el ANSI 2001 para uno y el estándar de código abierto PostgreSQL de facto para el otro), con extensiones agregadas para admitir la funcionalidad de Spanner, como las tablas intercaladas y la optimización de consultas.
  • Para ambos, usa 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, usa las interfaces de desarrollo de aplicaciones de Spanner: las bibliotecas cliente de Spanner, las APIs de REST y de RPC.
  • Para ambos, usa los esquemas de sistema INFORMATION_SCHEMA y SPANNER_SYS de Spanner a fin de consultar metadatos y estadísticas de la base de datos.

La versión actual de la interfaz de PostgreSQL aún no alcanza la paridad completa entre los dialectos de 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 ya tiene o está estandarizando el uso de PostgreSQL.

  • Elige GoogleSQL:

    • Si el equipo de desarrollo está familiarizado con GoogleSQL, ya sea desde la experiencia pasada en Spanner o mediante el trabajo 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 dialecto entre GoogleSQL y PostgreSQL.

Prácticas recomendadas para usar la interfaz de PostgreSQL

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

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

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

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

¿Qué sigue?