In un settore estremamente specialistico come quello dei Data Base Management System (conosciuti anche con l’acronimo DBMS), costellato da colossi del calibro di Microsoft, Oracle e da icone open-source quali MySQL o MariaDB, un ruolo e una storia veramente particolari sono quelli di PostgreSQL, che è riuscito a collocarsi, fin dalla sua nascita, in un segmento di nicchia, quello dei “database relazionali a oggetti”, poco “presidiato” dalla concorrenza ma rivelatosi decisamente redditizio nel lungo periodo.
Breve storia di PostgreSQL
Per apprezzare al meglio il blasone e le caratteristiche di questo celebre DBMS è necessario effettuare un lungo salto nel tempo per tornare agli inizi degli anni 70 quando, in un clima di generale fermento nei riguardi dell’informatica, all’università di Berkeley un gruppo di pioneristici ricercatori riuscì ad implementare, quasi per caso, un sistema prototipale di “database relazionale” cui affidò il nome, apparentemente poco allineato con le sue finalità, di Interactive Graphics Retrieval System (Ingress).
Partiti grazie a un finanziamento finalizzato alla realizzazione di un archivio geo-spaziale, invero, i giovani accademici statunitensi si resero subito conto di aver implementato un sistema differente da quello pensato in origine ma davvero innovativo e in grado di introdurre elementi rivoluzionari nella gestione di grandi moli di informazioni.
Per questo motivo, in onore all’idea che li aveva spinti ad avviare la propria avventura, ma anche (e più prosaicamente) per continuare a ricevere i fondi universitari, decisero di “riciclare” l’appellativo originale per quello che può essere considerato uno dei più illustri antesignani dei moderni database.
Nasceva, in questo modo abbastanza rocambolesco, un progetto che avrebbe ispirato nel corso dei decenni framework e sistemi ancora oggi molto famosi ed utilizzati come Microsoft SQL Server e NonStop SQL ma che, soprattutto, avrebbe dato vita al proprio erede naturale quando, nel 1982, il proprio padre fondatore, Michael Stonebraker, decise di ammodernare il DBMS per superare gli ormai datati principi ispiratori e creare un nuovo database in grado di aprire ufficialmente l’era “post-(In)gress”.
Per comprendere al meglio il contesto di riferimento, è necessario considerare come il linguaggio destinato a diventare lo strumento universale e incontrastato nel mondo dei database, lo Structured Query Language (SQL), si trovasse in quel periodo ancora in uno stato embrionale e non avesse ancora pienamente espresso quelle incredibili potenzialità che lo hanno reso nel tempo un paradigma insostituibile nel campo dei DBMS.
Per tale motivazione, gli sforzi iniziali del nuovo gruppo di lavoro furono orientati su un “interprete” informatico molto promettente, denominato Quel, nato nel 1976 quasi insieme a Ingress, che divenne parte integrante del nuovo, ambizioso progetto.
Il successo del prodotto nato nell’Università di Berkeley fu immediato e repentino e seppe inizialmente resistere, sia pure tra non poche tribolazioni, anche all’ascesa irrefrenabile dell’SQL che in breve tempo divenne la “lingua franca” nel mondo dei database.
In tale situazione, la community che fin dall’inizio aveva attivamente supportato e sviluppato il DBMS, cogliendo tempestivamente la necessità di adeguarsi al mutato scenario internazionale, decise di operare una ulteriore rivisitazione dei meccanismi di funzionamento di Postgre, che fu profondamente modificato per adattarsi agli schemi di funzionamento del nuovo imperante standard di riferimento.
Con il fine di esplicitare quella che poteva essere considerata una svolta epocale, il DBMS mutò nuovamente identità assumendo il nome di PostgreSQL ed iniziando un a nuova irrefrenabile ascesa che lo porterà a divenire uno dei più utilizzati ed apprezzati strumenti software per la gestione di banche dati digitali.
Una nota di colore legata a quest’ultima (e per ora definitiva) denominazione del DBMS è contenuta in una Faq pubblicata sul portale ufficiale del prodotto nella quale si precisa (con tanto di registrazione audio), evidentemente in segno di rispetto nei confronti delle origini, della storia e delle evoluzioni del progetto, come la pronuncia corretta del software debba essere considerata Post-Gres-QL. Non è certamente un caso che in tal modo sono implicitamente ricordati il progenitore Ingres, la volontà di aprire una nuova era superando gli iniziali principi ispiratori e, infine, anche il primo linguaggio utilizzato agli esordi per l’interrogazione delle banche dati.
PostgreSQL, principali caratteristiche tecniche
Una delle caratteristiche più apprezzate di PostgreSQL è rappresentata dalla capacità di coniugare le potenzialità della programmazione a oggetti con quelle dei DBMS relazionali, consentendo agli sviluppatori di superare le difficoltà concettuali e tecniche (conosciute dagli addetti ai lavori come “Disadattamento di impedenza relazionale oggetto” o “Object–relational impedance mismatch”) connesse alla mappatura delle classi utilizzate nei software con le tabelle di una banca dati.
Si tratta, come anticipato in precedenza, di funzionalità estremamente “settoriali” ma particolarmente apprezzate da tutti coloro che si ritrovano a dover manipolare strutture dati complesse e a gestire proprietà quali l’ereditarietà, l’incapsulamento o il polimorfismo tipicamente ignorate dagli schemi relazionali sui quali si basano i DBMS canonici.
Dal punto di vista tecnico, PostgreSQL utilizza il tipico paradigma client-server declinato in uno scenario nel quale i processi sono generati dalla richiesta di un client e proseguono con le elaborazioni effettuate da componenti software che lavorano “dietro le quinte” garantendo le interlocuzioni con i dati memorizzati negli archivi informatici.
Nella configurazione standard di PostgreSQL è fornita una soluzione client a riga di comando ma nel corso del tempo hanno riscosso sempre più successo applicazioni di tipo grafico come “pgAdmin” o “phpPgAdmin”, che permettono agli utenti di interagire con il database in maniera estremamente semplice e veloce.
PostgreSQL, completamente open source
Un ulteriore punto di forza di PostgreSQL è sicuramente costituito dalla sua connotazione totalmente open source: mentre altri DBMS appartenenti all’ormai amplissimo universo del software aperto, quali ad esempio il celeberrimo MySQL, presentano anche versioni commerciali dei propri prodotti, il DBMS nato a Berkeley non solo è disponibile in modalità totalmente gratuita ma ha anche adottato nel corso del tempo strategie sempre più orientate a difendere tale tratto distintivo con l’obiettivo di fidelizzare i propri utenti ma anche garantire uno sviluppo del progetto basato sui contributi dei tanti volontari della community.
Come è possibile leggere sul sito ufficiale del DBMS, infatti, la “PostgreSQL Global Development Group”, ossia il team storico di sviluppatori che costituisce la colonna dorsale dell’intero progetto, si impegna formalmente “a rendere PostgreSQL disponibile come software gratuito e open source per sempre. Non ci sono piani per cambiare la licenza PostgreSQL o rilasciare PostgreSQL con una licenza diversa”.
Decisamente singolare appare, sotto questo punto di vista, la decisione di non adottare uno schema di licenza GNU (General Public Licence), che ormai è divenuto un punto di riferimento universale per il codice aperto, ma di rilasciare il DBMS sotto i termini della cosiddetta “PostgreSQL License” che, sotto molti aspetti, può essere assimilata alle licenze già utilizzate dal Massachusetts Institute of Technology (BIT) di Boston.
Si tratta, invero, di una licenza certificata dall’”Open Source Iniziative” che non limita l’uso di PostgreSQL all’interno di applicazioni commerciali e proprietarie e offre adeguate garanzie alle aziende che desiderano incorporare un database nei propri prodotti senza timore di incorrere in spiacevoli sorprese derivanti da commissioni occulte, vincoli non chiaramente specificati o modifiche ai termini di utilizzo.
L’ecosistema di PostgreSQL
Nel corso del tempo, invero, i meccanismi di funzionamento di PostgreSQL sono stati adottati come principi di riferimento per lo sviluppo di piattaforme software eterogenee e complesse, in grado di rispondere alle sempre più articolate e differenziate esigenze degli utenti dei DBMS moderni.
In tale contesto, gli sviluppatori, potendo contare sulla sicurezza e la maturità del codice aperto messo a disposizione di tutti gli interessati senza particolari restrizioni, hanno contribuito a creare, negli ultimi anni, un vero e proprio “ecosistema digitale” che orbita intorno al progetto originario di PostgreSQL ma ne amplia i confini, le potenzialità e i vantaggi.
Uno degli esempi più interessanti è rappresentato da Greenplum Database, che offre una piattaforma orientata all’analisi dei big data ed è rilasciato con la licenza aperta Apache 2. Si tratta, in estrema sintesi, di un data warehouse estremamente performante e in grado di gestire diverse petabyte di dati con notevole semplicità grazie a tecniche di segmentazione delle informazioni e alla capacità di far convivere, e lavorare in maniera parallela, più database PostgreSQL.
La piattaforma EDB PostgreSQL può essere, invece, considerata come la trasposizione commerciale del DBMS originario, rispetto al quale sono fornite funzionalità di tipo aziendale quali strumenti di gestione, monitoraggio e ottimizzazione delle tabelle, servizi di supporto professionale ma anche una piena compatibilità con gli ambienti Oracle. Il successo di tale spin-off è stato certificato anche da Gartner che lo ha posizionato nel cosiddetto Quadrante Magico per gli anni 2013-2018 grazie agli oltre 4000 clienti acquisiti in un intervallo di tempo estremamente ridotto. La solidità e l’importanza di EDB PostgreSQL sono ulteriormente confermate dai casi di successo rappresentati dall’installazione del DBMS all’interno dei sistemi informativi di multinazionali del calibro di MasterCard, Hewlett Packard Enterprise, Ericsson, AT&T, Alibaba, Korea Telecom e ABN AMRO.
Particolarmente interessante è, inoltre, TimescaleDB che rappresenta un database open source ideato per semplificare la gestione delle informazioni basate sul tempo all’interno dei database. Tutto il codice è distribuito con la licenza Apache-2, a eccezione di alcune funzionalità aziendali rese disponibili con un agreement personalizzato che prende il nome di Timescale License (TSL) ed è comunque riconducibile ai paradigmi del software aperto.
TimescaleDB nasce dalla consapevolezza che i dati connessi a serie temporali stiano assumendo una rilevanza sempre maggiore in relazione ad aree di primaria importanza quali, ad esempio, il monitoraggio continuo di sistemi complessi, l’Internet delle Cose, la gestione dei dati finanziari, l’ambito della logistica, le app per dispositivi mobili, che possono anche essere utilizzate per finalità di tipo medicale. È del tutto evidente che tali tipologie di dati, per l’elevato volume che possono raggiungere e la natura intrinsecamente complessa che generalmente assumono, richiedono meccanismi differenti e fortemente specializzati di lettura e scrittura che non si adattano ai modelli di funzionamento dei database standard.
Per tali motivazioni, il nuovo DBMS propone funzionalità in grado di rispondere alle esigenze di gestire in maniera veloce ed efficace i dati basati sul tempo attraverso l’utilizzo della piattaforma PostgreSQL e l’integrazione, del tutto trasparente per l’utente finale, di tecniche innovative basate sui paradigmi noSQL.
Una menzione particolare merita anche il modulo PostGIS che estende le funzionalità del DBMS con strumenti di tipo spaziale, permettendo di gestire dati geo-referenziati, consentendo di immagazzinare, interrogare e manipolare archivi geografici in modo rapido ed efficiente. Anche in questo caso, il modulo nasce da un’attenta e approfondita analisi del contesto di riferimento nel quale la gestione di dati territoriali e la diffusione delle informazioni geografiche sono diventate attività di primaria importanza per molte organizzazioni pubbliche e private che, pertanto, hanno sempre più bisogno di strumenti specialistici e consolle di gestione centralizzate ma soprattutto di piattaforme che permettano di accedere alle informazioni geo-referenziate velocemente, in sicurezza ed in maniera concorrente.
Tra le altre funzionalità ed estensioni che gli utenti apprezzano di PostgreSQL è possibile ricordare:
- l’utilizzo di dizionari che supportano la ricerca full text e consentono di identificare i documenti in linguaggio naturale, superando i limiti connessi alle sintassi delle query SQL. In particolare, i dizionari utilizzati dal DBMS, oltre a ottimizzare la qualità della ricerca, la normalizzazione e la rimozione delle parole non significative, consentono di migliorare le prestazioni delle query.
- Le funzionalità di tipo JSON che consentono la restituzione di dati in formati non propriamente tipici dei database SQL ma fortemente utilizzati dalle più moderne piattaforme software web-based.
- L’estensione pg_stat_statements che consente, tra le altre cose, di tenere traccia delle principali statistiche relative a tutte le istruzioni SQL eseguite nell’istanza di riferimento; è possibile, ad esempio, verificare quali utenti abbiano richiesto determinate interrogazioni ma anche visualizzare tutte le query di estrazione lanciate in un determinato periodo o calcolare il tempo di elaborazione effettivamente impiegato.
- L’estensione postgres_fdw che permette di accedere e modificare i dati memorizzati in altri server PostgreSQL attraverso sofisticati sistemi di virtualizzazione che rendono le attività indipendenti dall’effettiva localizzazione della sorgente delle informazioni.
Una popolarità sempre crescente
A confermare l’estrema popolarità di PostgreSQL contribuisce in maniera decisiva anche il prestigioso portale Db-Engines.com che non solo posiziona il software di Berkeley addirittura al quarto posto, ossia alle spalle di colossi indiscussi come Oracle, MySQL e Microsoft SQL Server, nella propria speciale graduatoria dedicata ai DBMS ma addirittura lo incorona come miglior gestore di database per l’anno 2020.
Non si tratta certamente di una novità né tantomeno di una sorpresa per gli addetti ai lavori: per comprendere al meglio gli straordinari margini di miglioramento di PostgreSQL è sufficiente pensare che il suo il punteggio medio su Db-Engine sia balzato negli ultimi 4 anni da 167 a 552 e che, nello stesso intervallo di tempo, il DBMS statunitense sia stato eletto per ben tre volte quale prodotto dell’anno.
Secondo quanto riportato nella presentazione della graduatoria, in base ai dati raccolti in tutto il mondo dagli esperti del settore, PostgreSQL è conosciuto e apprezzato soprattutto per la sua stabilità e il set di funzionalità continuamente aggiornato e arricchito. È necessario, a tal proposito, sottolineare come le ultime versioni del DBMS si siano effettivamente concentrate principalmente sui moduli back-end, puntando ad aumentare le prestazioni e l’efficienza generale di tutto il sistema.
Assume contorni ancora più rilevanti, l’affermazione di PostgreSQL se si considera che i prodotti appartenenti all’ecosistema menzionato in precedenza come Greenplum Database, TimescaleDB o ESB siano presenti nella classifica in maniera autonoma e non concorrano, pertanto, ad incrementare i numeri già ampiamente positivi del proprio blasonato “genitore”.
Jonathan Katz, membro del team di PostgreSQL, commentando gli straordinari risultati ottenuti negli ultimi tempi e, in particolare, riferendosi al riconoscimento conferito dal portale specialistico, ha affermato come il DBMS debba principalmente il proprio successo “alla comunità collaborativa e globale di sviluppatori open source che stanno risolvendo le moderne sfide della gestione dei dati. Continueremo a migliorare il nostro DBMS open source, già estremamente intuitivo per gli utenti e famoso per l‘affidabilità e la robustezza”.
Un unico motore ACID-compliant
A differenza di MySQL e MariaDB, che hanno costruito parte delle proprie fortune sull’ampio numero di “motori” interscambiabili anche in modalità plug and play, PostgreSQL si basa fin dalle sue origini su un singolo DB-Engine che, al pari di quelli dei propri concorrenti, garantisce la completa aderenza ai famosi principi ACID, ossia fornisce la certezza che i meccanismi di gestione dei dati soddisfino le seguenti quattro proprietà:
- Atomicità: il processo deve essere suddivisibile in un numero finito di unità atomiche, chiamate transazioni. L’esecuzione di una transazione, pertanto, deve essere per definizione o totale o nulla, e non sono ammesse esecuzioni parziali;
- Coerenza: il database deve rispettare i vincoli di integrità, sia all’ inizio che alla fine di transazione. Non devono, quindi, verificarsi contraddizioni (ossia situazioni di incoerenza) tra i dati archiviati nel DB;
- Isolamento: ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre: l’eventuale fallimento di una transazione non deve interferire con le altre operazioni in esecuzione;
- Durabilità: una volta che una transazione ha completato tutte le proprie attività (richiedendo quello che in gergo tecnico è chiamato un commit work), i cambiamenti apportati al database non dovranno essere più persi.
Tra le principali caratteristiche del motore di PostgreSQL, particolare importanza riveste la gestione della “concorrenza” che include processi quali l’indicizzazione avanzata, le transazioni nidificate, il controllo della concorrenza multi-versione (conosciuto anche con l’acronimo MVCC dalla locuzione anglosassone MultiVersion concurrency control), la parallelizzazione delle query di lettura e creazione e la compilazione Just-In time.
Per garantire affidabilità, ridondanza dei dati, alta disponibilità e ripristino di emergenza, PostgreSQL utilizza funzionalità come la “Scrittura anticipata su file di log”, che, nota anche come “Write-ahead logging”, permette di preservare l’atomicità e la persistenza dei dati, la “replica master-slave”, che assicura una ulteriore copia integrale delle informazioni, il ripristino “point-in-time” (PITR), che consente di riportare indietro nel tempo una porzione di database in maniera agevole e controllata.
L’insieme delle tecniche appena elencate, incastonate in un’architettura generale resa armonica e omogenea da anni di sviluppo e raffinamenti successivi, consente l’implementazione e la distribuzione efficiente di cluster di database multi-nodo in grado di archiviare e gestire con efficienza grandi volumi (nell’ordine dei terabyte) di dati e la realizzazione di sistemi iper-specializzati che possono spingersi a garantire l’elaborazione di volumi pari anche a diversi petabyte.
Per proteggere l’accesso al database, PostgreSQL utilizza, inoltre, forme meccanismi avanzati di autenticazione e crittografia (tra i più importanti si ricordano, a titolo di esempio, GSSAPI, SSPI, LDAP, o il Salted Challenge Response Authentication Mechanism), che permettono di attivare controlli di accesso a livello di colonna e di riga e supportano l’autenticazione multi-fattore, basata su token, “once time password” (OTP), etc.
Video: Database a confronto – Jelvix
L’inclusione nelle piattaforme cloud di Amazon e Microsoft
L’incredibile successo di PostgreSQL ha indotto anche i due più importanti fornitori di servizi cloud a livello mondiale, Amazon e Microsoft, ad includere il DBMS nato a Berkeley nel novero delle banche dati utilizzabili attraverso le proprie piattaforme.
In particolare, secondo quanto si legge sul portale AWS, il colosso fondato da Jeff Bezos ritiene che sia “diventato il database relazionale open source più usato da molti sviluppatori aziendali e start-up, e ora è alla base delle applicazioni aziendali e per dispositivi mobili leader di settore.”.
In tale contesto Amazon RDS consente di implementare distribuzioni PostgreSQL scalabili con una capacità di hardware personalizzabile in tempo reale e di gestire attività di amministrazione complesse e dispendiose a livello di tempo quali, ad esempio, installazione e aggiornamento del software PostgreSQL, gestione dello storage, replica con elevati livelli di disponibilità e throughput di lettura e backup per il disaster recovery.
Il servizio cloud di Amazon, invero, offre le caratteristiche del motore di database PostgreSQL e in particolare garantisce che il codice, le applicazioni e gli strumenti attualmente utilizzati con i database esistenti possono essere utilizzati nell’ambiente fornito dal colosso statunitense.
Amazon RDS, in particolare, supporta la versione numero 12 di PostgreSQL, che ha introdotto sensibili miglioramenti in termini di prestazione, solidità, gestione delle transazioni e parallelismo nell’esecuzione delle query.
Ancora più interessante è l’orientamento scelto da Microsoft che non solo ha incluso PostgreSQL all’interno di Azure ma ha addirittura deciso di acquisire la società Citus Data, che negli ultimi tempi era assurta all’onore delle cronache per aver sviluppato un’estensione del DBMS statunitense in grado di scalare la portata del database in modo distribuito, sfruttando al meglio le potenzialità e la versatilità delle soluzioni cloud e incrementando le performance e le risorse impiegate nella gestione dei dati.
Secondo quanto si legge nella nota ufficiale congiunta rilasciata dal colosso di Redmond e dal team di Citus, “lavorando insieme, accelereremo il rilascio su Azure di funzionalità chiave e pronte per l’enterprise legate a PostgreSQL e permetteremo a carichi di lavoro critici di operare sulla nostra infrastruttura senza problemi”.
Conclusioni
PostgreSQL può essere certamente considerato come uno dei DBMS open source più popolari, utilizzati e apprezzati al mondo, grazie a una storia lunga, prestigiosa e contrassegnata da una straordinaria capacità di adattamento alle mutevoli esigenze degli utenti, alle evoluzioni tecnologiche che hanno contrassegnato il mondo dei database nel corso dei decenni ma anche alle proposte offerte dai propri competitor.
Nato dall’idea rivoluzionaria di un gruppo di ricercatori universitari di Berkeley, PostgreSQL è riuscito inizialmente a ritagliarsi uno spazio importante in un segmento “elitario” e poco considerato dagli altri DBMS, come quello della gestione degli “oggetti” e della mappatura con i costrutti utilizzati dai principali linguaggi di programmazione.
Nel corso del tempo, però, puntando forte sulla propria connotazione totalmente open source, PostgreSQL si è affermato come un DBMS completo e in grado di generare attorno a sé un vero e proprio ecosistema digitale, composto da progetti indipendenti e innovativi ma basati sulle funzionalità e sulla piattaforma operativa del famoso “genitore”.