PostgreSQL 9.1: Le estensioni

Una delle caratteristiche più interessanti introdotte in PostgreSQL 9.1 è sicuramente la possibilità di creare delle EXTENSION.

Questa funzionalità risolverà il problema noto a tutti i DBA PostgreSQL che riguardava la gestione delle estensioni (ad esempio PostGIS), in cui ad ogni upgrade di versione le funzioni e i tipi di dato propri dell’estensione si mischiavano con gli altri oggetti del database. Dalla versione 9.1, se opportunamente sviluppate, verranno viste nelle operazioni di dump/restore come un semplice contenitore esterno.

Una EXTENSION è semplicemente un contenitore di oggetti SQL (per esempio tabelle, funzioni, tipi ecc…).

L’idea che molteplici oggetti del database possano essere considerati come un’unica entità porta notevoli vantaggi in termini di gestione e design del database, in quanto con un solo comando si possono aggiungere, modificare o cancellare tutti gli oggetti contenuti in una estensione.

Una caratteristica che ho trovato particolarmente interessante è sicuramente la possibilità di definire dipendenze tra EXTENSION diverse, il che rende ancora più strutturato e facilmente gestibile il design del database.

Ecco un semplice esempio di EXTENSION:

Un’estensione ha bisogno di almeno 2 file, uno chiamato .control e almeno uno chiamato .sql. Entrambi i file devono risiedere nella directory "extension" presente nella share di Postgres (anche se nel file .control è possibile indicare un path diverso per il/i file .sql).

Un esempio di file hello–1.0.sql:

CREATE OR REPLACE FUNCTION hello_f()
RETURNS TEXT LANGUAGE SQL AS 'SELECT ''Hello World''::TEXT';

E relativo file hello.control:

comment = 'A trivial extension'
default_version = '1.0'
superuser = false

Una volta creati questi due file, è possibile effettuare alcune operazioni, ad esempio:


CREATE EXTENSION hello;
DROP EXTENSION hello; # Cancella tutti gli oggetti
# contenuti nell'estensione
ALTER EXTENSION hello [ADD | DROP] member_object
ALTER EXTENSION hello SET SCHEMA nuovo_schema
ALTER EXTENSION hello UPDATE [TO nuova_versione]

Si rimanda alla documentazione ufficiale di PostgreSQL per maggiori informazioni.

Sono convinto che la facilità di utilizzo e l’estrema utilità renderanno le EXTENSION una delle caratteristiche più apprezzate dagli utilizzatori di PostgreSQL in futuro – oltre che un notevole vantaggio nello sviluppo del software per noi che facciamo consulenze di professione.

This Post Has 0 Comments

Leave A Reply