L'interfaccia PostgreSQL per Spanner ti consente di sfruttare l'infrastruttura completamente gestita, scalabile e a disponibilità elevata di Spanner utilizzando strumenti e sintassi PostgreSQL familiari. Questa pagina ti aiuta a comprendere le funzionalità e i limiti dell'interfaccia PostgreSQL.
Vantaggi dell'interfaccia PostgreSQL
- Portabilità: l'interfaccia PostgreSQL fornisce l'accesso all'ampia gamma di funzionalità di Spanner utilizzando schemi, query e client compatibili con PostgreSQL open source. In questo modo, è più semplice spostare un'applicazione creata su Spanner in un altro ambiente PostgreSQL. Questa portabilità offre flessibilità di deployment e supporta scenari di ripristino di emergenza, ad esempio un'uscita forzata.
- Familiarità: se utilizzi già PostgreSQL, puoi iniziare rapidamente a utilizzare Spanner utilizzando molte delle stesse istruzioni e degli stessi strumenti PostgreSQL. L'utilizzo di PostgreSQL nel tuo portafoglio di database comporta meno variazioni tra prodotti specifici e un insieme comune di best practice.
- Spanner senza compromessi: poiché è basata sulla base esistente di Spanner, l'interfaccia PostgreSQL offre tutti i vantaggi esistenti di disponibilità, coerenza e rapporto prezzo/prestazioni di Spanner senza dover scendere a compromessi su nessuna delle funzionalità disponibili nell'ecosistema GoogleSQL complementare.
Funzionalità PostgreSQL non supportate su Spanner
È importante capire che l'interfaccia PostgreSQL fornisce le funzionalità di Spanner tramite schemi, tipi, query e client compatibili con PostgreSQL. Non supporta tutte le funzionalità di PostgreSQL. La migrazione di un'applicazione PostgreSQL esistente a Spanner, anche utilizzando l'interfaccia PostgreSQL per Spanner, richiede probabilmente alcune modifiche per adattarsi alle funzionalità PostgreSQL non supportate o alle differenze di comportamento, come l'ottimizzazione delle query o la progettazione chiave primaria. Tuttavia, una volta eseguita la migrazione, i tuoi carichi di lavoro possono sfruttare l'affidabilità e le esclusive funzionalità multimodello di Spanner.
L'elenco seguente fornisce ulteriori informazioni sulle funzionalità PostgreSQL supportate e non supportate:
- Funzionalità PostgreSQL supportate: l'interfaccia PostgreSQL supporta molte delle funzionalità di PostgreSQL più utilizzate. Sono inclusi parti fondamentali dello schema e del sistema di tipi, molte forme di query comuni, una serie di funzioni e operatori e gli aspetti chiave del catalogo di sistema di PostgreSQL. Le applicazioni possono utilizzare molti client PostgreSQL connettendosi tramite l'implementazione del protocollo di rete PostgreSQL di Spanner.
- Alcune funzionalità del linguaggio PostgreSQL non sono supportate: le estensioni, i tipi di dati definiti dall'utente, le procedure archiviate definite dall'utente e altre funzionalità non sono supportate. Per un elenco completo, consulta Il linguaggio PostgreSQL in Spanner. In PostgreSQL sono presenti anche alcune funzionalità che si comportano in modo diverso rispetto a PostgreSQL open source. Per saperne di più, consulta la sezione Problemi noti nell'interfaccia PostgreSQL per Spanner.
- Control plane Spanner: i database con interfacce PostgreSQL utilizzano Spanner e gli strumenti Google Cloudper eseguire il provisioning, proteggere, monitorare e ottimizzare le istanze. Spanner non supporta strumenti come pgAdmin per le attività amministrative.
- Supporto del client e del protocollo di rete: Spanner supporta le funzionalità di query di base del protocollo di rete PostgreSQL utilizzando PGAdapter, un proxy leggero che viene eseguito insieme all'applicazione. In questo modo, molti client Spanner funzionano così come sono con un database di interfaccia Spanner PostgreSQL, sfruttando la gestione di endpoint e connessioni globali e l'autenticazione IAM di Spanner. Il benchmarking interno di Google mostra che PGAdapter non aggiunge alcuna latenza aggiuntiva notevole rispetto alla connessione diretta agli endpoint integrati di Spanner.
Amministrazione e gestione
L'interfaccia PostgreSQL supporta l'amministrazione e la gestione dei database Spanner con le seguenti funzionalità:
- Esperienza unificata: esegui il provisioning, gestisci e monitora i database abilitati per l'interfaccia PostgreSQL utilizzando la console, le API e gli strumenti esistenti di Spanner, come Google Cloud CLI.
- Configurazione flessibile: configura l'interfaccia PostgreSQL per database al momento della creazione. Una singola istanza Spanner può ospitare database con interfaccia GoogleSQL e PostgreSQL.
- Vantaggi condivisi: entrambi i dialetti del database condividono lo stesso motore del database distribuito sottostante, garantendo scalabilità, coerenza, prestazioni e sicurezza costanti.
Funzionalità
L'interfaccia PostgreSQL di Spanner offre due funzionalità principali che consentono l'integrazione con l'ecosistema PostgreSQL:
Supporto del dialetto PostgreSQL
Spanner fornisce un sottoinsieme del dialetto SQL di PostgreSQL, tra cui Data Query Language (DQL), Data Manipulation Language (DML) e Data Definition Language (DDL). Inoltre, include estensioni per supportare funzionalità specifiche di Spanner come tabelle interleaved, durata (TTL) e suggerimenti per le query.
Per informazioni dettagliate sugli elementi del linguaggio PostgreSQL supportati, consulta Il linguaggio PostgreSQL in Spanner. Per capire come utilizzare le funzionalità di Spanner con il dialetto PostgreSQL, consulta la documentazione della funzionalità specifica.
Supporto del client PostgreSQL
Spanner ti consente di connetterti ai database da una serie di client:
Strumenti dell'ecosistema PostgreSQL:puoi utilizzare strumenti familiari come il driver JDBC PostgreSQL e il driver PostgreSQL pgx per connettere le tue applicazioni a un database di interfaccia PostgreSQL. Per un elenco di driver, ORM e strumenti supportati, consulta Driver e ORM PostgreSQL.
Strumento a riga di comando psql: l'ambiente interattivo
psqlè supportato e ti consente di eseguire query, esplorare i metadati e caricare i dati direttamente dal terminale.PGAdapter:questo proxy leggero semplifica la gestione delle connessioni e l'autenticazione. Per maggiori dettagli, consulta la panoramica di PGAdapter.
Client Spanner:Spanner fornisce client Spanner open source per vari linguaggi di programmazione (Java, Go, Python, Node.js, Ruby, PHP, C#, C++), insieme a un driver JDBC Spanner e a un driver per il pacchetto SQL di Go. I client Spanner si connettono direttamente all'endpoint globale di Spanner senza proxy. Tuttavia, i client Spanner non offrono compatibilità con client, ORM o strumenti PostgreSQL esistenti.
Best practice per l'utilizzo dell'interfaccia PostgreSQL
Utilizza le seguenti best practice quando utilizzi l'interfaccia PostgreSQL:
- Connetti le tue applicazioni: utilizza il set di strumenti PostgreSQL supportati per una connettività efficiente.
Interagisci con il database: per il lavoro interattivo, scegli tra le seguenti opzioni:
- Il noto strumento a riga di comando psql (utilizzando il proxy PGAdapter)
- La pagina intuitiva Spanner Studio all'interno della console Google Cloud
- IDE, ad esempio DBeaver e Visual Studio Code, JetBrains, e IntelliJ
- L'emulatore Spanner che ti consente di emulare Spanner sulla tua macchina locale. Questa opzione è utile durante il processo di sviluppo e test.
Passaggi successivi
- Scopri come scegliere tra PostgreSQL e GoogleSQL.
- Segui la guida rapida per creare un database PostgreSQL e interagire con esso.
- Scopri di più sul supporto del linguaggio PostgreSQL di Spanner.
- Scopri di più su PGAdapter.
- Scopri di più sul repository GitHub di PGAdapter.
- Esamina i problemi noti nell'interfaccia PostgreSQL.