Condividi tramite


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 EXTENSIONcomandi , DROP EXTENSIONALTER 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