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 SQL estándar de Google y se ofrecen prácticas recomendadas para adoptar y usar la interfaz de PostgreSQL.

La interfaz de PostgreSQL permite que las capacidades de Spanner (completamente administrado, escalamiento ilimitado, 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 central del dialecto SQL de PostgreSQL, la compatibilidad con la herramienta de línea de comandos NoSQL, clientes de lenguajes nativos y la integración con herramientas de Google existentes, como Dataflow. A diferencia de otros servicios que administran instancias de la base de datos de PostgreSQL real, Spanner usa una sintaxis compatible con PostgreSQL para exponer sus capacidades de escalamiento horizontal existentes. Esto proporciona conocimientos a los desarrolladores y portabilidad para las aplicaciones, pero no compatibilidad 100% con PostgreSQL. Las aplicaciones existentes que dependen de las funciones de PostgreSQL, como los procedimientos almacenados, los activadores, las extensiones o los niveles de aislamiento configurables, deberán ejecutarse en Spanner. Sin embargo, la sintaxis de SQL que admite Spanner es PostgreSQL equivalente de forma semántica, lo que significa que los esquemas y las consultas escritos en la interfaz de PostgreSQL se pueden transferir fácilmente a otro entorno de PostgreSQL.

La interfaz de PostgreSQL es compatible con la sintaxis común de PostgreSQL SQL, incluidas las consultas, las funciones y los operadores. Además, admite muchos tipos de datos, sintaxis de DDL y vistas de esquemas de información. Las aplicaciones pueden conectarse a una base de datos de Spanner habilitada para la interfaz de PostgreSQL con clientes nativos de Spanner o PGAdapter, un proxy liviano que implementa el protocolo de transferencia de PostgreSQL abierto. Inicialmente, el objetivo es admitir la compatibilidad con el protocolo de cable para usarla 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 API y las herramientas de Spanner existentes, como la CLI de gcloud. 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 dialecto de la interfaz de PostgreSQL y SQL estándar de Google. Debido a que comparten el mismo motor de base de datos distribuido subyacente, ambos dialectos de base de datos tienen la misma escalabilidad, coherencia, rendimiento y características de seguridad.

Componentes de la interfaz de PostgreSQL

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

Compatibilidad con el dialecto SQL de PostgreSQL

La interfaz de PostgreSQL proporciona un subconjunto del dialecto SQL de PostgreSQL, incluidos DQL, DML y DDL, junto con extensiones para admitir la funcionalidad de Spanner, como las tablas intercaladas y las sugerencias de consulta. Para obtener información detallada sobre la compatibilidad con el lenguaje PostgreSQL de Spanner, consulta El lenguaje PostgreSQL en Cloud Spanner.

Asistencia al cliente de PostgreSQL

Los desarrolladores pueden conectar sus aplicaciones a una base de datos de la interfaz de PostgreSQL mediante clientes nativos de código abierto de Spanner para entornos de Java, Go, Python, Node.js, Ruby, PHP, C# y C++. Aún no se admiten los controladores de PostgreSQL y los ORM que no sean de Spanner.

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

Elige entre SQL estándar de Google y PostgreSQL

Cuando creas una base de datos de Spanner, puedes elegir entre los dialectos SQL estándar de Google 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 a fin de usar SQL estándar de Google o PostgreSQL para una aplicación o un proyecto determinados debe 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 almacenamiento distribuido y procesamiento de consultas. Por lo tanto, comparten características de rendimiento, escalabilidad, coherencia y disponibilidad.
  • Ambas expresan la funcionalidad de la base de datos de Spanner a través de un subconjunto de sus respectivas construcciones de lenguaje estándar (por ejemplo, ANSI 2001 y el estándar de código abierto PostgreSQL de facto para el otro), con extensiones adicionales para admitir la funcionalidad de Spanner, como las tablas intercaladas y la sugerencia de consultas.
  • En ambos casos, se usan las interfaces de administración de Spanner: Google Cloud Console, la CLI de gcloud y las bibliotecas cliente de Spanner para la automatización de DevOps.
  • Para ambas, debe usar las interfaces de desarrollo de aplicaciones de Spanner: las bibliotecas cliente de Spanner, las API de REST y las API de RPC.
  • En ambos casos, se usan los esquemas del sistema INFORMATION_SCHEMA y SPANNER_SYS de Spanner para consultar metadatos y estadísticas de la base de datos.

La versión actual de la interfaz PostgreSQL aún no alcanza la paridad total entre los dialectos SQL estándar de Google y PostgreSQL. Sin embargo, a largo plazo, debes determinar si debes usar PostgreSQL o SQL estándar de Google 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.

  • Elija SQL estándar de Google:

    • Si el equipo de desarrollo está familiarizado con Google Standard SQL, ya sea desde la experiencia anterior de Spanner o mediante otras bases de datos de Google Cloud, como BigQuery, que también admiten SQL estándar de Google.
    • Si tu organización está estandarizando el uso del SQL estándar de Google o su estándar ANSI 2011 subyacente.

Para obtener más información, consulta Paridad de dialectos entre SQL estándar de Google y PostgreSQL.

Prácticas recomendadas para usar la interfaz de PostgreSQL

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

  • Usa Google Cloud Console o la CLI de Google Cloud para crear tu base de datos de PostgreSQL en una instancia de Spanner. (Puedes crear bases de datos de PostgreSQL y SQL estándar de Google en la misma instancia).

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

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

¿Qué sigue?