PostgreSQL-Schnittstelle für Spanner

Auf dieser Seite werden die PostgreSQL-Schnittstelle für Spanner und ihre Komponenten beschrieben. Er hilft bei der Auswahl zwischen PostgreSQL und GoogleSQL und enthält Best Practices für die Einführung und Verwendung der PostgreSQL-Schnittstelle.

Die PostgreSQL-Schnittstelle macht die Funktionen von Spanner – vollständig verwaltet, unbegrenzt skalierbar, strikte Konsistenz, hohe Leistung und bis zu 99, 999% globale Verfügbarkeit – über das Open-Source-PostgreSQL-System zugänglich. Sie umfasst eine zentrale Teilmenge des PostgreSQL SQL-Dialekts, Unterstützung für das psql-Befehlszeilentool, Clients in der Muttersprache und die Integration in vorhandene Google-Tools wie Dataflow. Im Gegensatz zu anderen Diensten, die tatsächliche PostgreSQL-Datenbankinstanzen verwalten, verwendet Spanner die PostgreSQL-kompatible Syntax, um vorhandene Funktionen zur horizontalen Skalierung verfügbar zu machen. Dies bietet Entwicklern Vertrautheit und Portabilität für Anwendungen, aber keine 100% ige PostgreSQL-Kompatibilität. Vorhandene Anwendungen, die auf PostgreSQL-Features wie gespeicherte Prozeduren, Trigger, Erweiterungen oder konfigurierbare Isolationsebenen basieren, müssen für die Ausführung in Spanner überarbeitet werden. Die von Spanner unterstützte SQL-Syntax entspricht jedoch semantisch PostgreSQL. Das bedeutet, dass Schemas und Abfragen, die über die PostgreSQL-Schnittstelle geschrieben wurden, einfach in eine andere PostgreSQL-Umgebung übertragen werden können.

Die PostgreSQL-Schnittstelle unterstützt gängige PostgreSQL-SQL-Syntax, einschließlich Abfragen, Funktionen und Operatoren. Darüber hinaus unterstützt sie viele Datentypen, die DDL-Syntax und Informationsschemaansichten. Anwendungen können über native Spanner-Clients oder PGAdapter, einen einfachen Proxy, der das offene PostgreSQL-Verbindungsprotokoll implementiert, eine Verbindung zu einer Spanner-Datenbank mit PostgreSQL-Schnittstelle herstellen. Die anfängliche Unterstützung des Wire-Protokolls ist für die Verwendung mit dem psql-Befehlszeilentool vorgesehen.

Administratoren können für die PostgreSQL-Schnittstelle aktivierte Datenbanken mithilfe der vorhandenen Konsole, APIs und Tools von Spanner wie der gcloud CLI bereitstellen, verwalten und überwachen. Die PostgreSQL-Schnittstelle wird bei der Erstellung pro Datenbank konfiguriert. Eine Spanner-Instanz kann Dialektdatenbanken für GoogleSQL- und PostgreSQL-Schnittstelle enthalten. Da beide das gleiche zugrunde liegende verteilte Datenbankmodul haben, haben beide Datenbankdialekte die gleichen Merkmale in Skalierbarkeit, Konsistenz, Leistung und Sicherheit.

Komponenten der PostgreSQL-Oberfläche

Die PostgreSQL-Schnittstelle besteht aus zwei Hauptfunktionen: Unterstützung des PostgreSQL-SQL-Dialekts und Unterstützung für Clients, die eine Verbindung zu PostgreSQL-Datenbanken herstellen.

Unterstützung von PostgreSQL SQL-Dialekten

Die PostgreSQL-Schnittstelle bietet eine Teilmenge des PostgreSQL SQL-Dialekts, einschließlich DQL, DML und DDL, sowie Erweiterungen zur Unterstützung von Spanner-Features wie verschachtelte Tabellen und Abfragehinweise. Ausführliche Informationen zur Unterstützung der PostgreSQL-Sprache von Spanner finden Sie unter Die PostgreSQL-Sprache in Spanner.

PostgreSQL-Clientunterstützung

Entwickler können ihre Anwendungen mithilfe von Open-Source-Spanner-Clients für Java, Go, Python, Node.js, Ruby, PHP, C# und C++ mit einer Datenbank an der PostgreSQL-Schnittstelle verbinden. Sie können auch den Open-Source-JDBC-Treiber von Spanner und den Treiber für das database/sql-Paket von Go verwenden.

Die PostgreSQL-Schnittstelle unterstützt auch das psql-Befehlszeilentool. psql ist eine interaktive Umgebung zum Ausführen von Abfragen, Erkunden von Metadaten und Laden von Daten, die in vielen PostgreSQL-Umgebungen üblich ist. Die psql-Unterstützung wird durch PGAdapter aktiviert, einen einfachen Proxy, der das PostgreSQL-Wire-Protokoll in die integrierte gRPC-Schnittstelle von Spanner übersetzt und für Sie Verbindungen und IAM-Authentifizierung verwaltet. Weitere Informationen finden Sie in der Übersicht zu PGAdapter.

Die Treiber PostgreSQL-JDBC-Treiber und PostgreSQL-pgx-Treiber werden auch mit PGAdapter unterstützt. Eine vollständige Liste der unterstützten PostgreSQL-Treiber finden Sie unter PostgreSQL-Treiber und ORMs.

Zwischen GoogleSQL und PostgreSQL wählen

Beim Erstellen einer Spanner-Datenbank können Sie zwischen den Dialekten GoogleSQL und PostgreSQL wählen. Der Dialekt bestimmt die Syntax und Semantik der Abfragen und Datentypen, die Ihre Anwendungen verwenden, sowie die Art und Weise, wie sie eine Verbindung zur Datenbank herstellen.

Der entscheidende Faktor bei der Entscheidung für die Verwendung von GoogleSQL oder PostgreSQL für eine bestimmte Anwendung oder ein Projekt sollte die geschäftlichen Anforderungen und Ziele und nicht die SQL-Sprachunterstützung für Spanner-Features sein. Die SQL-Dialekte sind Peers, die die gleichen Eigenschaften in Bezug auf Spanner-Features haben:

  • Beide werden auf derselben Grundlage von verteiltem Speicher und Abfrageverarbeitung implementiert. Daher haben sie die gleichen Merkmale in Bezug auf Leistung, Skalierung, Konsistenz und Verfügbarkeit.
  • Beide bieten Spanner-Funktionen über einen Teil ihrer jeweiligen Konstrukte in der Standardsprache (z. B. ANSI 2001, für die andere der Open-Source-PostgreSQL-De-facto-Standard). Außerdem werden Erweiterungen hinzugefügt, um Spanner-Features wie verschachtelte Tabellen und Abfragehinweise zu unterstützen.
  • Für beide können Sie die Spanner-Verwaltungsschnittstellen verwenden: die Google Cloud Console, die gcloud CLI und die Spanner-Clientbibliotheken für die DevOps-Automatisierung.
  • In beiden Fällen verwenden Sie die Spanner-Benutzeroberflächen für die Anwendungsentwicklung: die Spanner-Clientbibliotheken, die REST und die RPC API.
  • Bei beiden verwenden Sie die Systemschemas von Spanner INFORMATION_SCHEMA und SPANNER_SYS, um Datenbankmetadaten und -statistiken abzufragen.

Die aktuelle PostgreSQL-Schnittstelle erreicht nicht die volle Parität zwischen den GoogleSQL- und PostgreSQL-Dialekten. Langfristig sollten Sie so herausfinden, ob Sie für eine bestimmte Anwendung oder ein Projekt PostgreSQL oder GoogleSQL verwenden möchten:

  • Wählen Sie PostgreSQL aus, wenn das Entwicklungsteam mit der Open-Source-PostgreSQL-Umgebung vertraut ist oder wenn Ihr Unternehmen die Verwendung von PostgreSQL standardisiert oder bereits standardisiert.

  • Wählen Sie GoogleSQL aus:

    • Wenn das Entwicklungsteam mit GoogleSQL vertraut ist, entweder aufgrund früherer Spanner-Erfahrung oder bei der Arbeit mit anderen Google Cloud-Datenbanken wie BigQuery, die ebenfalls GoogleSQL unterstützen.
    • Wenn Ihre Organisation die Verwendung von GoogleSQL oder des zugrunde liegenden ANSI 2011-Standards standardisiert.

Weitere Informationen finden Sie unter Dialektgleichheit zwischen GoogleSQL und PostgreSQL.

Best Practices für die Verwendung der PostgreSQL-Oberfläche

Damit Sie die PostgreSQL-Schnittstelle effektiv nutzen können, rät Google zu den folgenden Empfehlungen:

  • Verwenden Sie die Google Cloud Console oder die Google Cloud CLI, um die PostgreSQL-Datenbank in einer Spanner-Instanz zu erstellen. Sie können sowohl PostgreSQL- als auch GoogleSQL-Datenbanken in derselben Instanz erstellen.

  • Verwenden Sie die Spanner-Clientbibliotheken, um Anwendungen zu verbinden, die auf Ihre Datenbank zugreifen.

  • Verwenden Sie das psql-Befehlszeilentool über den PGAdapter-Proxy, um interaktiv mit Ihrer Datenbank zu arbeiten. Alternativ können Sie die Seite Spanner Studio in der Google Cloud Console verwenden.

Nächste Schritte