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 - Server singolo si trova nel percorso 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 What's happening to Database di Azure per PostgreSQL Single Server?.
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.
Database di Azure per PostgreSQL supporta un subset di estensioni chiave, come illustrato di seguito. Queste informazioni sono disponibili anche eseguendo SELECT * FROM pg_available_extensions;
. Oltre a quelle elencate, non sono supportate altre estensioni. Non è possibile creare un'estensione personalizzata in Database di Azure per PostgreSQL.
Estensioni postgres 11
Le estensioni seguenti sono disponibili nei server 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 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 numeri interi |
earthdistance | 1.1 | calcolare grandi distanze cerchio sulla superficie della Terra |
fuzzystrmatch | 1.1 | determinare analogie e distanza tra stringhe |
hstore | 1,5 | tipo di dati per l'archiviazione di 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 standard internazionali di numerazione dei prodotti |
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 da RDBMS commerciale |
pgaudit | 1.3.1 | fornisce funzionalità di controllo |
pgcrypto | 1.3 | funzioni crittografiche |
pgrouting | 2.6.2 | Estensione pgRouting |
pgrowlocks | 1.2 | visualizzare le informazioni sul blocco a livello di riga |
pgstattuple | 1,5 | mostra 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 dell'indice 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 PostGIS SFCGAL |
postgis_tiger_geocoder | 2.5.1 | Geocoder tiger postGIS e geocoder inverso |
postgis_topology | 2.5.1 | Funzioni e tipi spaziali di topologia PostGIS |
postgres_fdw | 1.0 | wrapper di dati stranieri per server PostgreSQL remoti |
tablefunc | 1.0 | funzioni che modificano intere tabelle, inclusi 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 di testo che rimuove gli accenti |
uuid-ossp | 1.1 | generare identificatori univoci universalmente (UUID) |
Estensioni postgres 10
Le estensioni seguenti sono disponibili nei server 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 | tipo di dati per le password crittografate automaticamente |
citext | 1.4 | tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole |
cube | 1.2 | tipo di dati per 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 numeri interi |
earthdistance | 1.1 | calcolare grandi distanze cerchio sulla superficie della Terra |
fuzzystrmatch | 1.1 | determinare analogie e distanza tra stringhe |
hstore | 1.4 | tipo di dati per l'archiviazione di 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 standard internazionali di numerazione dei prodotti |
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 da RDBMS commerciale |
pgaudit | 1.2 | fornisce funzionalità di controllo |
pgcrypto | 1.3 | funzioni crittografiche |
pgrouting | 2.5.2 | Estensione pgRouting |
pgrowlocks | 1.2 | visualizzare le informazioni sul blocco a livello di riga |
pgstattuple | 1,5 | mostra 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 dell'indice 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 PostGIS SFCGAL |
postgis_tiger_geocoder | 2.4.3 | Geocoder tiger postGIS e geocoder inverso |
postgis_topology | 2.4.3 | Funzioni e tipi spaziali di topologia PostGIS |
postgres_fdw | 1.0 | wrapper di dati stranieri per server PostgreSQL remoti |
tablefunc | 1.0 | funzioni che modificano intere tabelle, inclusi 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 di testo che rimuove gli accenti |
uuid-ossp | 1.1 | generare identificatori univoci universalmente (UUID) |
Estensioni postgres 9.6
Le estensioni seguenti sono disponibili nei server 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 | tipo di dati per le password crittografate automaticamente |
citext | 1.3 | tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole |
cube | 1.2 | tipo di dati per 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 numeri interi |
earthdistance | 1.1 | calcolare grandi distanze cerchio sulla superficie della Terra |
fuzzystrmatch | 1.1 | determinare analogie e distanza tra stringhe |
hstore | 1.4 | tipo di dati per l'archiviazione di 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 standard internazionali di numerazione dei prodotti |
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 da RDBMS commerciale |
pgaudit | 1.1.2 | fornisce funzionalità di controllo |
pgcrypto | 1.3 | funzioni crittografiche |
pgrouting | 2.3.2 | Estensione pgRouting |
pgrowlocks | 1.2 | visualizzare le informazioni sul blocco a livello di riga |
pgstattuple | 1.4 | mostra 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 dell'indice 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 PostGIS SFCGAL |
postgis_tiger_geocoder | 2.3.2 | Geocoder tiger postGIS e geocoder inverso |
postgis_topology | 2.3.2 | Funzioni e tipi spaziali di topologia PostGIS |
postgres_fdw | 1.0 | wrapper di dati stranieri per server PostgreSQL remoti |
tablefunc | 1.0 | funzioni che modificano intere tabelle, inclusi 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 di testo che rimuove gli accenti |
uuid-ossp | 1.1 | generare identificatori univoci universalmente (UUID) |
Estensioni postgres 9.5
Nota
PostgreSQL versione 9.5 è stato ritirato.
Le estensioni seguenti sono disponibili nei server 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 | tipo di dati per le password crittografate automaticamente |
citext | 1.1 | tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole |
cube | 1.0 | tipo di dati per 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 numeri interi |
earthdistance | 1.0 | calcolare grandi distanze cerchio sulla superficie della Terra |
fuzzystrmatch | 1.0 | determinare analogie e distanza tra stringhe |
hstore | 1.3 | tipo di dati per l'archiviazione di 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 standard internazionali di numerazione dei prodotti |
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 da RDBMS commerciale |
pgaudit | 1.0.7 | fornisce funzionalità di controllo |
pgcrypto | 1.2 | funzioni crittografiche |
pgrouting | 2.3.0 | Estensione pgRouting |
pgrowlocks | 1.1 | visualizzare le informazioni sul blocco a livello di riga |
pgstattuple | 1.3 | mostra 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 dell'indice 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 PostGIS SFCGAL |
postgis_tiger_geocoder | 2.3.0 | Geocoder tiger postGIS e geocoder inverso |
postgis_topology | 2.3.0 | Funzioni e tipi spaziali di topologia PostGIS |
postgres_fdw | 1.0 | wrapper di dati stranieri per server PostgreSQL remoti |
tablefunc | 1.0 | funzioni che modificano intere tabelle, inclusi i campi incrociati |
unaccent | 1.0 | dizionario di ricerca di testo che rimuove gli accenti |
uuid-ossp | 1.0 | generare identificatori univoci universalmente (UUID) |
pg_stat_statements
L'estensione pg_stat_statements viene precaricata in ogni server Database di Azure per PostgreSQL per fornire un mezzo per 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
dblink e postgres_fdw consentono di connettersi da un server PostgreSQL a un altro o 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 di dati esterne, ad esempio postgres_fdw, non sono supportate, ad eccezione delle connessioni ad altri server Database di Azure per PostgreSQL nella stessa area di Azure.
uuid
Se si prevede di usare uuid_generate_v4()
dall'estensione uuid-ossp, prendere in considerazione il confronto con gen_random_uuid()
l'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. La prewarming 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 modello portale di Azure, dell'interfaccia della riga di comando, dell'API REST o 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 fornisce timescaleDB Edizione Apache-2.
Installazione di TimescaleDB
Per installare TimescaleDB, è necessario includerlo nelle librerie di precaricamento condiviso del server. Per rendere effettiva una modifica al parametro di shared_preload_libraries
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:
Selezionare il server di Database di Azure per PostgreSQL.
Nella barra laterale selezionare Parametri del server.
Cercare il
shared_preload_libraries
parametro.Selezionare TimescaleDB.
Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.
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. Connessione al database ed eseguire il comando seguente:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Suggerimento
Se viene visualizzato un errore, verificare che il server sia stato riavviato dopo il salvataggio 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 scala cronologica tramite 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 database abilitato per la scalabilità cronologica del metodo di ripristino, vedere la documentazione relativa alla scalabilità cronologica
Ripristino di un database di scalabilità temporale usando timescaledb-backup
Durante l'esecuzione della SELECT timescaledb_post_restore()
procedura precedente è possibile ottenere autorizzazioni negate durante l'aggiornamento del flag timescaledb.restore. Ciò è dovuto all'autorizzazione ALTER DATABA edizione Standard limitata nei servizi di database PaaS cloud. In questo caso è possibile eseguire un metodo alternativo usando timescaledb-backup
lo strumento 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
- Installare gli strumenti come descritto qui
- Creare un server e un database di destinazione Database di Azure per PostgreSQL
- Abilitare l'estensione Scala cronologica come illustrato in precedenza
- Concedere azure_pg_admin ruolo all'utente che verrà usato da ts-restore
- Eseguire ts-restore per ripristinare il database
Altre informazioni su queste utilità sono disponibili qui.
Nota
Quando si usano timescale-backup
utilità per il ripristino in Azure, poiché i nomi utente del database per Database di Azure per PostgresQL non flessibili devono usare il formato , è necessario sostituire @
con %40
la <user@db-name>
codifica dei caratteri.
Passaggi successivi
Segnalare a Microsoft la mancanza di un'estensione che si desidera usare. Votare per le richieste esistenti o creare nuove richieste di feedback nel forum di feedback.