Estensioni e moduli in Azure Database per PostgreSQL - Server flessibile

Le estensioni e i moduli in PostgreSQL sono strumenti potenti che è possibile usare per estendere la funzionalità del sistema di database. Variano da oggetti SQL semplici a librerie binarie complesse e offrono funzionalità e funzionalità aggiuntive che non sono 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 le proprietà di base dell'estensione stessa.

Quando si creano, installano o caricano estensioni in un database, viene distribuito un insieme di oggetti volti ad ampliare 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 si eliminano, disinstallano o scaricano estensioni da un database, il processo rimuove 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.

È possibile scrivere l'implementazione della funzionalità fornita da tali oggetti distribuiti dall'estensione in SQL o PL/pgSQL. Ma è anche possibile implementarlo in un file di libreria condivisa (binario) separato, che è il risultato della compilazione del codice sorgente (in genere scritto in C o Rust) che implementa la funzionalità.

In PostgreSQL si gestiscono le estensioni tramite i CREATE EXTENSIONcomandi , ALTER EXTENSIONDROP EXTENSION, e COMMENT ON EXTENSION .

  • CREATE EXTENSION crea, installa o carica un'estensione nel database in cui si esegue il comando.
  • ALTER EXTENSION aggiorna l'estensione a una versione più recente.
  • DROP EXTENSION elimina, disinstalla o scarica un'estensione dal database in cui si esegue il comando.
  • COMMENT ON EXTENSION archivia un commento sull'estensione come oggetto di database.

All'avvio del server, definisce un'area di memoria a cui possono accedere tutti i processi back-end per eseguire in modo cooperativo tutti i carichi di lavoro. Nel gergo PostgreSQL quell'area di memoria viene definita memoria condivisa.

Alcune estensioni che implementano funzionalità usando librerie condivise devono accedere all'area di 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 il server viene avviato. Per queste librerie, seguire le istruzioni riportate in Librerie di caricamento.

Moduli

Anche se non sono considerate estensioni 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 implementa funzionalità nei file di libreria binari condivisi autonomi.

È possibile caricare questi file in memoria all'avvio del server. Possono implementare il 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