Estensioni di PostgreSQL in Database di Azure per PostgreSQL - Server singolo

SI APPLICA A: Database di Azure per PostgreSQL - Server singolo

Importante

Database di Azure per PostgreSQL - Il server singolo è in fase di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere Cosa succede a Database di Azure per PostgreSQL - Server singolo?.

PostgreSQL offre la capacità di estendere le funzionalità del database usando le estensioni. Le estensioni creano un bundle di più oggetti SQL correlati in un singolo pacchetto che può essere caricato o rimosso dal database con un singolo comando. Dopo essere stato caricate nel database, le estensioni si comportano come le funzionalità predefinite.

Come usare le estensioni di PostgreSQL

Per poter usare le estensioni di PostgreSQL è prima necessario installarle nel database. Per installare una determinata estensione, eseguire il comando CREATE EXTENSION dallo strumento psql per caricare nel database gli oggetti inclusi nel pacchetto.

Il database di Azure per PostgreSQL supporta un subset delle estensioni chiave come indicato di seguito. Queste informazioni sono disponibili anche eseguendo SELECT * FROM pg_available_extensions;. Oltre a quelle elencate, non sono supportate altre estensioni. È possibile creare estensioni personalizzate nel database di Azure per PostgreSQL.

Estensioni postgres 11

Le estensioni seguenti sono disponibili nei server di Database di Azure per PostgreSQL con Postgres versione 11.

Estensione Versione dell'estensione Descrizione
address_standardizer 2.5.1 Consente di analizzare un indirizzo nei suoi elementi costitutivi.
address_standardizer_data_us 2.5.1 Esempio di set di dati Address Standardizer US
btree_gin 1.3 Supporto per l'indicizzazione di tipi di dati comuni in GIN
btree_gist 1,5 Supporto per l'indicizzazione di tipi di dati comuni in GiST
citext 1,5 Tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole
cube 1.4 Tipo di dati per i cubi multidimensionali
dblink 1.2 Connettersi ad altri database PostgreSQL dall'interno di un database
dict_int 1.0 Modello di dizionario di ricerca di testo per i numeri interi
earthdistance 1.1 Calcolare le distanze ortodromiche sulla superficie terrestre
fuzzystrmatch 1.1 Determinare analogie e distanza tra stringhe
hstore 1,5 Tipo di dati per l'archiviazione dei set di coppie (chiave/valore)
hypopg 1.1.2 Indici ipotetici per PostgreSQL
intarray 1.2 Funzioni, operatori e supporto dell'indice per matrici 1D di numeri interi
isn 1.2 Tipi di dati per gli standard di numerazione dei prodotti internazionali
ltree 1.1 Tipo di dati per strutture ad albero gerarchico
orafce 3.7 Funzioni e operatori che emulano un subset di funzioni e pacchetti dal sistema di gestione di database relazionali commerciale
pgaudit 1.3.1 Fornisce funzionalità di controllo
pgcrypto 1.3 Funzioni crittografiche
pgrouting 2.6.2 Estensione PgRouting
pgrowlocks 1.2 Mostrare informazioni sul blocco a livello di riga
pgstattuple 1,5 Mostrare le statistiche a livello di tupla
pg_buffercache 1.3 Esaminare la cache del buffer condiviso
pg_partman 4.0.0 Estensione per gestire le tabelle partizionate in base all'ora o all'ID
pg_prewarm 1.2 Dati di relazione prewarm
pg_stat_statements 1.6 tenere traccia delle statistiche di esecuzione di tutte le istruzioni SQL eseguite
pg_trgm 1.4 Misurazione della somiglianza del testo e ricerca di indici in base ai trigrammi
plpgsql 1.0 Linguaggio procedurale PL/pgSQL
plv8 2.3.11 Linguaggio procedurale attendibile PL/JavaScript (v8)
postgis 2.5.1 Funzioni e tipi spaziali postGIS, geography e raster
postgis_sfcgal 2.5.1 Funzioni SFCGAL PostGIS
postgis_tiger_geocoder 2.5.1 Geocoder tiger postGIS e geocoder inverso
postgis_topology 2.5.1 Tipi e funzioni spaziali di topologia PostGIS
postgres_fdw 1.0 Wrapper di dati stranieri per server PostgreSQL remoti
tablefunc 1.0 Funzioni che consentono di modificare intere tabelle, compresi i campi incrociati
timescaledb 1.7.4 Abilita inserimenti scalabili e query complesse per i dati delle serie temporali
unaccent 1.1 Dizionario di ricerca del testo che rimuove gli accenti
uuid-ossp 1.1 Generare identificatori universalmente univoci (UUID)

Estensioni postgres 10

Le estensioni seguenti sono disponibili nei server di Database di Azure per PostgreSQL con Postgres versione 10.

Estensione Versione dell'estensione Descrizione
address_standardizer 2.5.1 Consente di analizzare un indirizzo nei suoi elementi costitutivi.
address_standardizer_data_us 2.5.1 Esempio di set di dati Address Standardizer US
btree_gin 1.3 Supporto per l'indicizzazione di tipi di dati comuni in GIN
btree_gist 1,5 Supporto per l'indicizzazione di tipi di dati comuni in GiST
chkpass 1.0 Fornisce un tipo di dati per le password con crittografia automatica
citext 1.4 Tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole
cube 1.2 Tipo di dati per i cubi multidimensionali
dblink 1.2 Connettersi ad altri database PostgreSQL dall'interno di un database
dict_int 1.0 Modello di dizionario di ricerca di testo per i numeri interi
earthdistance 1.1 Calcolare le distanze ortodromiche sulla superficie terrestre
fuzzystrmatch 1.1 Determinare analogie e distanza tra stringhe
hstore 1.4 Tipo di dati per l'archiviazione dei set di coppie (chiave/valore)
hypopg 1.1.1 Indici ipotetici per PostgreSQL
intarray 1.2 Funzioni, operatori e supporto dell'indice per matrici 1D di numeri interi
isn 1.1 Tipi di dati per gli standard di numerazione dei prodotti internazionali
ltree 1.1 Tipo di dati per strutture ad albero gerarchico
orafce 3.7 Funzioni e operatori che emulano un subset di funzioni e pacchetti dal sistema di gestione di database relazionali commerciale
pgaudit 1.2 Fornisce funzionalità di controllo
pgcrypto 1.3 Funzioni crittografiche
pgrouting 2.5.2 Estensione PgRouting
pgrowlocks 1.2 Mostrare informazioni sul blocco a livello di riga
pgstattuple 1,5 Mostrare le statistiche a livello di tupla
pg_buffercache 1.3 Esaminare la cache del buffer condiviso
pg_partman 2.6.3 Estensione per gestire le tabelle partizionate in base all'ora o all'ID
pg_prewarm 1.1 Dati di relazione prewarm
pg_stat_statements 1.6 tenere traccia delle statistiche di esecuzione di tutte le istruzioni SQL eseguite
pg_trgm 1.3 Misurazione della somiglianza del testo e ricerca di indici in base ai trigrammi
plpgsql 1.0 Linguaggio procedurale PL/pgSQL
plv8 2.1.0 Linguaggio procedurale attendibile PL/JavaScript (v8)
postgis 2.4.3 Funzioni e tipi spaziali postGIS, geography e raster
postgis_sfcgal 2.4.3 Funzioni SFCGAL PostGIS
postgis_tiger_geocoder 2.4.3 Geocoder tiger postGIS e geocoder inverso
postgis_topology 2.4.3 Tipi e funzioni spaziali di topologia PostGIS
postgres_fdw 1.0 Wrapper di dati stranieri per server PostgreSQL remoti
tablefunc 1.0 Funzioni che consentono di modificare intere tabelle, compresi i campi incrociati
timescaledb 1.7.4 Abilita inserimenti scalabili e query complesse per i dati delle serie temporali
unaccent 1.1 Dizionario di ricerca del testo che rimuove gli accenti
uuid-ossp 1.1 Generare identificatori universalmente univoci (UUID)

Estensioni postgres 9.6

Le estensioni seguenti sono disponibili nei server di Database di Azure per PostgreSQL con Postgres versione 9.6.

Estensione Versione dell'estensione Descrizione
address_standardizer 2.3.2 Consente di analizzare un indirizzo nei suoi elementi costitutivi.
address_standardizer_data_us 2.3.2 Esempio di set di dati Address Standardizer US
btree_gin 1.0 Supporto per l'indicizzazione di tipi di dati comuni in GIN
btree_gist 1.2 Supporto per l'indicizzazione di tipi di dati comuni in GiST
chkpass 1.0 Fornisce un tipo di dati per le password con crittografia automatica
citext 1.3 Tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole
cube 1.2 Tipo di dati per i cubi multidimensionali
dblink 1.2 Connettersi ad altri database PostgreSQL dall'interno di un database
dict_int 1.0 Modello di dizionario di ricerca di testo per i numeri interi
earthdistance 1.1 Calcolare le distanze ortodromiche sulla superficie terrestre
fuzzystrmatch 1.1 Determinare analogie e distanza tra stringhe
hstore 1.4 Tipo di dati per l'archiviazione dei set di coppie (chiave/valore)
hypopg 1.1.1 Indici ipotetici per PostgreSQL
intarray 1.2 Funzioni, operatori e supporto dell'indice per matrici 1D di numeri interi
isn 1.1 Tipi di dati per gli standard di numerazione dei prodotti internazionali
ltree 1.1 Tipo di dati per strutture ad albero gerarchico
orafce 3.7 Funzioni e operatori che emulano un subset di funzioni e pacchetti dal sistema di gestione di database relazionali commerciale
pgaudit 1.1.2 Fornisce funzionalità di controllo
pgcrypto 1.3 Funzioni crittografiche
pgrouting 2.3.2 Estensione PgRouting
pgrowlocks 1.2 Mostrare informazioni sul blocco a livello di riga
pgstattuple 1.4 Mostrare le statistiche a livello di tupla
pg_buffercache 1.2 Esaminare la cache del buffer condiviso
pg_partman 2.6.3 Estensione per gestire le tabelle partizionate in base all'ora o all'ID
pg_prewarm 1.1 Dati di relazione prewarm
pg_stat_statements 1.4 tenere traccia delle statistiche di esecuzione di tutte le istruzioni SQL eseguite
pg_trgm 1.3 Misurazione della somiglianza del testo e ricerca di indici in base ai trigrammi
plpgsql 1.0 Linguaggio procedurale PL/pgSQL
plv8 2.1.0 Linguaggio procedurale attendibile PL/JavaScript (v8)
postgis 2.3.2 Funzioni e tipi spaziali postGIS, geography e raster
postgis_sfcgal 2.3.2 Funzioni SFCGAL PostGIS
postgis_tiger_geocoder 2.3.2 Geocoder tiger postGIS e geocoder inverso
postgis_topology 2.3.2 Tipi e funzioni spaziali di topologia PostGIS
postgres_fdw 1.0 Wrapper di dati stranieri per server PostgreSQL remoti
tablefunc 1.0 Funzioni che consentono di modificare intere tabelle, compresi i campi incrociati
timescaledb 1.7.4 Abilita inserimenti scalabili e query complesse per i dati delle serie temporali
unaccent 1.1 Dizionario di ricerca del testo che rimuove gli accenti
uuid-ossp 1.1 Generare identificatori universalmente univoci (UUID)

Estensioni postgres 9.5

Nota

PostgreSQL versione 9.5 è stato ritirato.

Le estensioni seguenti sono disponibili nei server di Database di Azure per PostgreSQL con Postgres versione 9.5.

Estensione Versione dell'estensione Descrizione
address_standardizer 2.3.0 Consente di analizzare un indirizzo nei suoi elementi costitutivi.
address_standardizer_data_us 2.3.0 Esempio di set di dati Address Standardizer US
btree_gin 1.0 Supporto per l'indicizzazione di tipi di dati comuni in GIN
btree_gist 1.1 Supporto per l'indicizzazione di tipi di dati comuni in GiST
chkpass 1.0 Fornisce un tipo di dati per le password con crittografia automatica
citext 1.1 Tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole
cube 1.0 Tipo di dati per i cubi multidimensionali
dblink 1.1 Connettersi ad altri database PostgreSQL dall'interno di un database
dict_int 1.0 Modello di dizionario di ricerca di testo per i numeri interi
earthdistance 1.0 Calcolare le distanze ortodromiche sulla superficie terrestre
fuzzystrmatch 1.0 Determinare analogie e distanza tra stringhe
hstore 1.3 Tipo di dati per l'archiviazione dei set di coppie (chiave/valore)
hypopg 1.1.1 Indici ipotetici per PostgreSQL
intarray 1.0 Funzioni, operatori e supporto dell'indice per matrici 1D di numeri interi
isn 1.0 Tipi di dati per gli standard di numerazione dei prodotti internazionali
ltree 1.0 Tipo di dati per strutture ad albero gerarchico
orafce 3.7 Funzioni e operatori che emulano un subset di funzioni e pacchetti dal sistema di gestione di database relazionali commerciale
pgaudit 1.0.7 Fornisce funzionalità di controllo
pgcrypto 1.2 Funzioni crittografiche
pgrouting 2.3.0 Estensione PgRouting
pgrowlocks 1.1 Mostrare informazioni sul blocco a livello di riga
pgstattuple 1.3 Mostrare le statistiche a livello di tupla
pg_buffercache 1.1 Esaminare la cache del buffer condiviso
pg_partman 2.6.3 Estensione per gestire le tabelle partizionate in base all'ora o all'ID
pg_prewarm 1.0 Dati di relazione prewarm
pg_stat_statements 1.3 tenere traccia delle statistiche di esecuzione di tutte le istruzioni SQL eseguite
pg_trgm 1.1 Misurazione della somiglianza del testo e ricerca di indici in base ai trigrammi
plpgsql 1.0 Linguaggio procedurale PL/pgSQL
postgis 2.3.0 Funzioni e tipi spaziali postGIS, geography e raster
postgis_sfcgal 2.3.0 Funzioni SFCGAL PostGIS
postgis_tiger_geocoder 2.3.0 Geocoder tiger postGIS e geocoder inverso
postgis_topology 2.3.0 Tipi e funzioni spaziali di topologia PostGIS
postgres_fdw 1.0 Wrapper di dati stranieri per server PostgreSQL remoti
tablefunc 1.0 Funzioni che consentono di modificare intere tabelle, compresi i campi incrociati
unaccent 1.0 Dizionario di ricerca del testo che rimuove gli accenti
uuid-ossp 1.0 Generare identificatori universalmente univoci (UUID)

pg_stat_statements

L'estensione pg_stat_statements è precaricata in ogni server di Database di Azure per PostgreSQL per consentire di tenere traccia delle statistiche di esecuzione delle istruzioni SQL. L'impostazione pg_stat_statements.track, che controlla le istruzioni conteggiate mediante l'estensione, è impostata su top. Ciò consente di rilevare tutte le istruzioni eseguite direttamente dai client. Gli altri due livelli di rilevamento sono none e all. Questa impostazione è configurabile come parametro del server tramite il portale di Azure o l'interfaccia della riga di comando di Azure.

È necessario trovare un compromesso tra le informazioni sull'esecuzione di query fornite da pg_stat_statements e l'impatto della registrazione di ogni istruzione SQL sulle prestazioni del server. Se non si usa attivamente l'estensione pg_stat_statements, è consigliabile impostare pg_stat_statements.track su none. Si noti che alcuni servizi di monitoraggio di terze parti possono basarsi su pg_stat_statements per fornire informazioni dettagliate sulle prestazioni delle query. Verificare se questo è il proprio caso.

dblink e postgres_fdw consentono di connettersi da un server PostgreSQL a un altro oppure a un altro database nello stesso server. Il server di destinazione deve consentire le connessioni dal server di origine attraverso il firewall. Quando si usano queste estensioni per la connessione tra server Database di Azure per PostgreSQL, questa operazione può essere eseguita attivando l'impostazione "Consenti l'accesso a Servizi di Azure". Questo è necessario anche quando si vogliono usare le estensioni per il loopback allo stesso server. L'impostazione "Consenti l'accesso a Servizi di Azure" è disponibile nella pagina del portale di Azure per il server Postgres, nell'area Sicurezza connessione. L'attivazione di "Consenti l'accesso ai servizi di Azure" attiva tutti gli indirizzi IP di Azure nell'elenco elementi consentiti.

Nota

Attualmente, le connessioni in uscita da Database di Azure per PostgreSQL tramite estensioni wrapper esterne, ad esempio postgres_fdw, non sono supportate, ad eccezione delle connessioni ad altri server di Database di Azure per PostgreSQL nella stessa area di Azure.

uuid

Se si prevede di usare uuid_generate_v4() dall'estensione uuid-ossp, è consigliabile il confronto con gen_random_uuid() dall'estensione pgcrypto per ottenere vantaggi in termini di prestazioni.

pgAudit

L'estensione pgAudit fornisce la registrazione di controllo delle sessioni e degli oggetti. Per informazioni su come usare questa estensione in Database di Azure per PostgreSQL, vedere l'articolo concetti relativi al controllo.

pg_prewarm

L'estensione pg_prewarm carica i dati relazionali nella cache. Il preriscaldamento delle cache significa che le query hanno tempi di risposta migliori alla prima esecuzione dopo un riavvio. In Postgres 10 e versioni successive, la prewarming viene eseguita manualmente usando la funzione prewarm.

In Postgres 11 e versioni successive è possibile configurare la prewarming in modo che venga eseguito automaticamente. È necessario includere pg_prewarm nell'elenco shared_preload_libraries dei parametri e riavviare il server per applicare la modifica. I parametri possono essere impostati dal portale di Azure, dall'interfaccia della riga di comando, dall'API REST o dal modello ARM.

TimescaleDB

TimescaleDB è un database time series che viene creato in un pacchetto come estensione per PostgreSQL. TimescaleDB offre funzioni analitiche orientate al tempo, ottimizzazioni e scalabilità di Postgres per carichi di lavoro di serie temporali.

Altre informazioni su TimescaleDB, un marchio registrato di Timescale, Inc. Database di Azure per PostgreSQL offre l'edizione TimescaleDB Apache-2.

Installazione di TimescaleDB

Per installare TimescaleDB, è necessario includerlo nelle librerie di precaricamento condivise del server. Per rendere effettiva una modifica al parametro shared_preload_libraries di Postgres, è necessario riavviare il server. È possibile modificare i parametri usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Tramite il portale di Azure:

  1. Selezionare il server di Database di Azure per PostgreSQL.

  2. Nella barra laterale selezionare Parametri del server.

  3. Cercare il shared_preload_libraries parametro.

  4. Selezionare TimescaleDB.

  5. Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.

  6. Dopo la notifica, riavviare il server per applicare queste modifiche. Per informazioni su come riavviare un server, vedere Riavviare un server di Database di Azure per PostgreSQL.

È ora possibile abilitare TimescaleDB nel database Postgres. Connettersi al database ed eseguire il comando seguente:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Suggerimento

Se viene visualizzato un errore, verificare di aver riavviato il server dopo aver salvato shared_preload_libraries.

È ora possibile creare un hypertable TimescaleDB da zero o eseguire la migrazione dei dati delle serie temporali esistenti in PostgreSQL.

Ripristino di un database di scalabilità temporale usando pg_dump e pg_restore

Per ripristinare un database di scala cronologica usando pg_dump e pg_restore, è necessario eseguire due procedure helper nel database di destinazione: timescaledb_pre_restore() e timescaledb_post restore().

Preparare prima di tutto il database di destinazione:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database 
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

È ora possibile eseguire pg_dump nel database originale e quindi eseguire pg_restore. Dopo il ripristino, assicurarsi di eseguire il comando seguente nel database ripristinato:

SELECT timescaledb_post_restore();

Per altri dettagli sul metodo di ripristino con il database abilitato per la scalabilità cronologica, vedere la documentazione relativa alla scalabilità cronologica

Ripristino di un database di scalabilità temporale usando timescaledb-backup

Durante l'esecuzione della procedura SELECT timescaledb_post_restore() elencata sopra, è possibile ottenere autorizzazioni negate durante l'aggiornamento del flag timescaledb.restore. Ciò è dovuto a un'autorizzazione ALTER DATABASE limitata nei servizi di database PaaS cloud. In questo caso è possibile eseguire un metodo alternativo usando lo strumento timescaledb-backup per eseguire il backup e il ripristino del database di scala cronologica. Timescaledb-backup è un programma per rendere il dump e il ripristino di un database TimescaleDB più semplice, meno soggetto a errori e prestazioni più elevate. A tale scopo, eseguire le operazioni seguenti

  1. Installare gli strumenti come descritto qui
  2. Creare un database e un server di Database di Azure per PostgreSQL di destinazione
  3. Abilitare l'estensione Scala cronologica come illustrato in precedenza
  4. Concedere il ruolo azure_pg_admin all'utente che verrà usato da ts-restore
  5. Eseguire ts-restore per ripristinare il database

Altre informazioni su queste utilità sono disponibili qui.

Nota

Quando si usano utilità timescale-backup per eseguire il ripristino in Azure, poiché i nomi utente del database per Database di Azure per PostgresQL non flessibili devono usare il formato <user@db-name> , è necessario sostituire @ con la codifica dei caratteri %40.

Passaggi successivi

Segnalare a Microsoft la mancanza di un'estensione che si desidera usare. Esprimere un voto per le richieste esistenti o creare nuovi commenti e richieste nel forum dei commenti.