Interfaccia PostgreSQL

Questa pagina descrive l'interfaccia PostgreSQL per Cloud Spanner e i suoi componenti. Fornisce linee guida sulla scelta tra PostgreSQL e GoogleSQL e offre best practice per l'adozione e l'utilizzo dell'interfaccia PostgreSQL.

L'interfaccia PostgreSQL rende le funzionalità di Spanner completamente gestite, con scalabilità illimitata, elevata coerenza, prestazioni elevate e disponibilità globale fino al 99,999%, accessibili dall'ecosistema PostgreSQL open source. Include un sottoinsieme principale del dialetto SQL di PostgreSQL, supporto per lo strumento a riga di comando psql, client di linguaggio nativo e integrazione negli strumenti Google esistenti come Dataflow. A differenza di altri servizi che gestiscono istanze di database PostgreSQL effettive, Spanner utilizza una sintassi compatibile con PostgreSQL per esporre le sue funzionalità di scale out esistenti. Ciò fornisce familiarità per gli sviluppatori e portabilità per le applicazioni, ma non compatibilità al 100% con PostgreSQL. Le applicazioni esistenti che si basano su funzionalità PostgreSQL, come procedure archiviate, trigger, estensioni o livelli di isolamento configurabili, dovranno essere eseguite su Spanner. Tuttavia, la sintassi SQL supportata da Spanner è PostgreSQL semanticamente equivalente, il che significa che gli schemi e le query scritte nell'interfaccia PostgreSQL possono essere facilmente trasferiti in un altro ambiente PostgreSQL.

L'interfaccia PostgreSQL supporta la sintassi SQL di PostgreSQL comune, tra cui query, funzioni e operatori. Supporta inoltre molti tipi di dati, sintassi DDL e viste degli schemi di informazioni. Le applicazioni possono connettersi a un database Spanner abilitato per l'interfaccia PostgreSQL utilizzando client Spanner nativi o PGAdapter, un proxy leggero che implementa il protocollo aperto PostgreSQL. L'utilizzo iniziale del supporto del protocollo via cavo è stato scelto con lo strumento a riga di comando psql.

Gli amministratori eseguono il provisioning, la gestione e il monitoraggio dei database abilitati per l'interfaccia PostgreSQL utilizzando la console, le API e gli strumenti esistenti di Spanner, ad esempio gcloud CLI. L'interfaccia PostgreSQL è configurata per database al momento della creazione. Un'istanza Spanner può contenere database del dialetto dell'interfaccia di GoogleSQL e PostgreSQL. Poiché condividono lo stesso motore del database distribuito sottostante, entrambi i dialetti di database hanno le stesse caratteristiche di scalabilità, coerenza, prestazioni e sicurezza.

Componenti dell'interfaccia PostgreSQL

L'interfaccia PostgreSQL è costituita da due funzionalità principali: supporto per il dialetto SQL di PostgreSQL e supporto per i client che si connettono a database abilitati per l'interfaccia PostgreSQL.

Supporto del dialetto SQL PostgreSQL

L'interfaccia PostgreSQL fornisce un sottoinsieme del dialetto SQL di PostgreSQL, tra cui DQL, DML e DDL, insieme a estensioni per supportare la funzionalità di Spanner come tabelle con interleaving e suggerimento di query. Per informazioni dettagliate sul supporto del linguaggio PostgreSQL di Spanner, consulta Il linguaggio PostgreSQL in Cloud Spanner.

Assistenza client PostgreSQL

Gli sviluppatori possono connettere le proprie applicazioni a un database di interfaccia PostgreSQL utilizzando client Spanner open source per ambienti Java, Go, Python, Node.js, Ruby, PHP, C# e C++. Possono anche utilizzare il driver JDBC open source Spanner e il driver per il pacchetto database/sql di Go.

L'interfaccia PostgreSQL supporta inoltre lo strumento a riga di comando psql. psql è un ambiente interattivo per l'esecuzione di query, l'esplorazione dei metadati e il caricamento dei dati, comune in molti ambienti PostgreSQL. Il supporto di psql è attivato da PGAdapter, un proxy leggero che traduce il protocollo filo PostgreSQL nell'interfaccia gRPC nativa di Spanner, gestendo automaticamente le connessioni e l'autenticazione IAM. Per ulteriori informazioni, consulta la sezione Informazioni su PGAdapter.

Anche i driver driver JDBC PostgreSQL e driver pgx PostgreSQL sono supportati con PGAdapter. Per un elenco completo dei driver PostgreSQL supportati, consulta Driver e ORM PostgreSQL.

Scegli tra GoogleSQL e PostgreSQL

Quando crei un database Spanner, puoi scegliere tra i dialetti GoogleSQL e PostgreSQL. Il dialetto determina la sintassi e la semantica delle query e dei tipi di dati utilizzati dalle applicazioni, nonché il modo in cui si connettono al database.

Il fattore determinante nella scelta di utilizzare GoogleSQL o PostgreSQL per una determinata applicazione o progetto dovrebbe essere le esigenze e gli obiettivi aziendali, non il supporto del linguaggio SQL per le funzionalità di Spanner. I dialetti del linguaggio SQL sono peer che condividono le stesse caratteristiche per quanto riguarda le funzionalità di Spanner:

  • Entrambi sono implementati sulla stessa base di archiviazione distribuita ed elaborazione delle query. In quanto tali, condividono caratteristiche di prestazioni, scalabilità, coerenza e disponibilità.
  • Entrambe esprimono le funzionalità di database Spanner tramite un sottoinsieme dei rispettivi costrutti di linguaggio standard (ANSI 2001 per uno, standard open source PostgreSQL per l'altro), con estensioni aggiunte per supportare le funzionalità di Spanner come tabelle con interleaving e suggerimento di query.
  • In entrambi i casi, puoi utilizzare le interfacce di gestione di Spanner: la console Google Cloud, gcloud CLI e le librerie client di Spanner per l'automazione DevOps.
  • In entrambi i casi, puoi utilizzare le interfacce di sviluppo delle applicazioni Spanner: librerie client Spanner, API REST e RPC.
  • In entrambi i casi, puoi utilizzare gli schemi di sistema INFORMATION_SCHEMA e SPANNER_SYS di Spanner per eseguire query sui metadati e sulle statistiche del database.

L'attuale release dell'interfaccia PostgreSQL non raggiunge ancora la parità completa tra i dialetti GoogleSQL e PostgreSQL. Tuttavia, a lungo termine, dovresti decidere se utilizzare PostgreSQL o GoogleSQL per una determinata applicazione o progetto come segue:

  • Scegli PostgreSQL se il team di sviluppo conosce l'ecosistema open source PostgreSQL oppure se la tua organizzazione ha o sta standardizzando l'utilizzo di PostgreSQL.

  • Scegli GoogleSQL:

    • Se il team di sviluppo conosce GoogleSQL, dall'esperienza precedente con Spanner o dalla collaborazione con altri database di Google Cloud come BigQuery che supportano anche GoogleSQL.
    • Se la tua organizzazione sta standardizzando l'uso di GoogleSQL o dello standard ANSI 2011 sottostante,

Per ulteriori informazioni, consulta la pagina sulla parità di dialetto tra GoogleSQL e PostgreSQL.

Best practice per l'utilizzo dell'interfaccia PostgreSQL

Per utilizzare l'interfaccia PostgreSQL in modo efficace, Google consiglia di:

  • Utilizza la console Google Cloud o Google Cloud CLI per creare il tuo database PostgreSQL in un'istanza Spanner. (Puoi creare database PostgreSQL e GoogleSQL nella stessa istanza).

  • Utilizza le librerie client di Spanner per connettere le applicazioni che accedono al tuo database.

  • Utilizza lo strumento a riga di comando psql tramite il proxy PGAdapter per lavorare in modo interattivo con il tuo database. In alternativa, puoi utilizzare le pagine Scrivi DDL e Query della console Google Cloud.

Passaggi successivi