Interfaz de PostgreSQL para Spanner

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

La interfaz de PostgreSQL permite acceder a las funciones de Spanner (escalamiento ilimitado, administración completa, coherencia sólida, alto rendimiento y hasta un 99.999% de disponibilidad global) desde el ecosistema de código abierto de PostgreSQL. Incluye un subconjunto básico Dialecto SQL de PostgreSQL, compatibilidad con la herramienta de línea de comandos psql, nativo lenguajes de programación, además de 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 una sintaxis compatible con PostgreSQL para exponer sus funciones de escalamiento existentes. Esto brinda familiaridad a los desarrolladores y la portabilidad de las aplicaciones, pero no es 100% compatible con PostgreSQL. Aplicaciones existentes que dependen de funciones de PostgreSQL, como almacenamiento procedimientos, activadores, extensiones o niveles de aislamiento configurables requerirán que reelaboración para ejecutarse en Spanner. Sin embargo, la sintaxis de SQL que admite Spanner es semánticamente equivalente a PostgreSQL, lo que significa que los esquemas y las consultas escritos en la interfaz de PostgreSQL se pueden portar fácilmente a otro entorno de PostgreSQL.

La interfaz de PostgreSQL admite la sintaxis SQL común de PostgreSQL, incluidas las consultas, las funciones y los operadores. Además, admite muchos tipos de datos, sintaxis 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 ligero que implementa el protocolo de red abierto de PostgreSQL. Inicialmente, la compatibilidad con el protocolo de conexión está diseñada para usarse 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 con 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 tiempo. Una instancia de Spanner puede contener GoogleSQL y Bases de datos de dialecto de la interfaz 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 funciones principales: compatibilidad con el dialecto SQL de PostgreSQL y asistencia para clientes conectarse a bases de datos de interfaz de PostgreSQLz habilitada.

Compatibilidad con el dialecto SQL de PostgreSQL

La interfaz de PostgreSQL proporciona un subconjunto de los Dialecto SQL de PostgreSQL, que incluye DQL, DML y DDL, junto con extensiones para admitir funciones de Spanner, como tablas y sugerencias de consultas. Para obtener información detallada sobre las APIs de Spanner Compatibilidad con lenguajes PostgreSQL, 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 con código abierto Clientes de Spanner para 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 para ejecutar consultas, explorar metadatos y la carga de datos, algo común en muchos entornos de PostgreSQL. La compatibilidad con psql está habilitada por PGAdapter, un proxy ligero que traduce el protocolo de cable de PostgreSQL a la interfaz interfaz de gRPC integrada, que administra las conexiones y la autenticación de IAM por ti. Para para obtener más información, consulta Descripción general de PGAdapter.

El 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 de PostgreSQL y ORM.

Elige entre GoogleSQL y PostgreSQL

Cuando creas una base de datos de Spanner, puedes elegir entre 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 para elegir usar GoogleSQL o PostgreSQL para una aplicación o proyecto dado deben ser las necesidades y los objetivos comerciales, no SQL lenguaje compatible con las funciones de Spanner. Los dialectos del lenguaje SQL son pares que comparten las mismas características con respecto a Spanner atributos:

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

La interfaz actual de PostgreSQL no alcanza paridad entre los dialectos GoogleSQL y PostgreSQL. Sin embargo, a largo plazo, deberás determinar si usarás 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 estandarizó o está estandarizando el uso de PostgreSQL.

  • Elige GoogleSQL:

    • Si el equipo de desarrollo está familiarizado con GoogleSQL, ya sea por su experiencia previa con 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 forma eficaz, Google recomienda lo siguiente: tú:

  • 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 las aplicaciones que acceden a tu base de datos.

  • Usa la herramienta de línea de comandos psql a través del proxy de 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?