Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le estensioni e i moduli in PostgreSQL sono strumenti potenti che consentono agli utenti di estendere le funzionalità del sistema di database. Possono variare da semplici oggetti SQL a librerie binarie complesse, fornendo funzionalità e capacità aggiuntive non disponibili nella distribuzione principale di PostgreSQL.
Estensioni
Per definire un'estensione, è necessario almeno un file di script contenente i comandi SQL per creare gli oggetti distribuiti dall'estensione e un file di controllo che specifica alcune proprietà di base dell'estensione stessa.
Quando le estensioni vengono create, installate o caricate in un database, distribuiscono un set di oggetti bundle progettati per estendere le funzionalità del motore. Tali oggetti possono essere funzioni, operatori, ruoli, tipi di dati, metodi di accesso e altri tipi di oggetti di database.
Quando le estensioni vengono eliminate, disinstallate o scaricate da un database, vengono rimossi tutti gli oggetti creati dall'estensione. Un'eccezione a questo caso si verifica quando nel database sono presenti altri oggetti con dipendenze da uno qualsiasi degli oggetti definiti dall'estensione.
L'implementazione della funzionalità fornita dagli oggetti distribuiti dall'estensione può essere scritta in SQL o in PL/pgSQL. Ma può anche essere implementato in un file di libreria condivisa separato (binario), che è il risultato della compilazione del codice sorgente (in genere scritto in C o Rust) che implementa la funzionalità.
In PostgreSQL le estensioni vengono gestite tramite i comandi CREATE EXTENSION, ALTER EXTENSION, DROP EXTENSION, and COMMENT ON EXTENSION.
-
CREATE EXTENSIONcrea, installa o carica un'estensione nel database in cui viene eseguito il comando. -
ALTER EXTENSIONaggiorna l'estensione a una versione più recente. -
DROP EXTENSIONelimina, disinstalla o scarica un'estensione dal database in cui viene eseguito il comando. -
COMMENT ON EXTENSIONarchivia un commento sull'estensione come oggetto di database.
Quando il server viene avviato, definisce un'area di memoria a cui tutti i processi back-end possono accedere, per eseguire in modo cooperativo qualsiasi carico di lavoro. Nel gergo PostgreSQL quell'area di memoria viene definita memoria condivisa.
Alcune estensioni che implementano funzionalità usando librerie condivise, necessitano di accedere a quell'area di memoria condivisa dal codice compilato in quelle librerie. Queste estensioni hanno un altro requisito, ovvero che i file di libreria condivisa devono essere caricati dal processo principale del motore, non appena il server viene avviato. Per queste librerie, è necessario seguire le istruzioni riportate nelle librerie di caricamento.
Moduli
Sebbene non siano considerate estensioni di questo tipo, poiché non hanno un file di controllo e un file di script per distribuire oggetti SQL in bundle in un database, un'altra forma di estendibilità in PostgreSQL consiste nell'implementazione di funzionalità nei file di libreria binaria condivisi autonomi.
Questi file possono anche essere caricati in memoria all'avvio del server e possono implementare codice che, in genere, delimita il percorso di esecuzione naturale di PostgreSQL per modificare il funzionamento predefinito del motore. Queste modifiche comportamentali mirano normalmente a potenziare funzionalità limitate del motore.
Database PostgreSQL di Azure supporta i moduli seguenti:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json