Estensioni e moduli
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 funzionalità aggiuntive che non sono disponibili nella distribuzione principale di PostgreSQL.
Estensioni
Per definire un'estensione, è necessario almeno un file di script, che contiene 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 vengono create, installate o caricate estensioni in un database, distribuiscono un set di oggetti bundle che puntano a estendere la funzionalità del motore. Tali oggetti possono essere funzioni, operatori, ruoli, tipi di dati, metodi di accesso e altri tipi di oggetto 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 è quando nel database sono presenti altri oggetti con dipendenze da uno degli oggetti definiti dall'estensione.
L'implementazione della funzionalità fornita da tali oggetti distribuiti dall'estensione può essere scritta in SQL o PL/pgSQL. Ma può anche essere implementato in un file separato di libreria condivisa (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 CREATE EXTENSION
comandi , DROP EXTENSION
ALTER EXTENSION
, e COMMENT ON EXTENSION
.
-
CREATE EXTENSION
crea, installa o carica un'estensione nel database in cui viene eseguito il comando. -
ALTER EXTENSION
aggiorna l'estensione a una versione più recente. -
DROP EXTENSION
elimina, disinstalla o scarica un'estensione dal database in cui viene eseguito il comando. -
COMMENT ON EXTENSION
archivia 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 tutti i carichi di lavoro. Nel gergo PostgreSQL tale area di memoria viene definita memoria condivisa.
Alcune estensioni che implementano funzionalità che usano librerie condivise richiedono l'accesso alla memoria condivisa dal codice compilato in tali librerie. Queste estensioni hanno un altro requisito, ovvero che i file di libreria condivisa devono essere caricati dal processo principale del motore, non appena viene avviato il server. Per queste librerie, è necessario seguire le istruzioni riportate nelle librerie di caricamento.
moduli
Sebbene non siano considerate estensioni come tali, perché 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 condivisa autonomi.
Questi file possono anche essere caricati in memoria all'avvio del server e possono implementare il codice che in genere delimita il percorso di esecuzione naturale di PostgreSQL e modifica il funzionamento predefinito del motore. Tali modifiche comportamentali mirano normalmente ad amplificare alcune funzionalità limitate del motore.
Database di Azure per PostgreSQL supporta i moduli seguenti:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json