Documentazione di PostgreSQL 9.0 > Prefazione > Una breve storia di PostgreSQL
PrecedentePrefazioneConvenzioniSuccessivo

2. Una breve storia di PostgreSQL

Il sistema di gestione per database relazionali ad oggetti ora conosciuto come PostgreSQL™ è derivato dal pacchetto POSTGRES™ scritto a Berkeley nella University of California. Con oltre un decennio di sviluppo, PostgreSQL™ è ora il più avanzato database open-source disponibile.

2.1. Il progetto Berkeley POSTGRES

Il progetto POSTGRES™, condotto dal Professor Michael Stonebraker, era supportato dalla Defense Advanced Research Projects Agency (DARPA), l'Army Research Office (ARO), la National Science Foundation (NSF), e la ESL, Inc. L'implementazine di POSTGRES™ inizia nel 1986. I concetti iniziali per il sistema sono stati presentati in [STON86], e la definizione del modello di dati iniziale compare in [ROWE87]. Il disegno delle regole di sistema di allora è stato descritto in [STON87a]. La base razionale e l'architettura dello storage manager è stata descritta dettagliatamente in [STON87b].

POSTGRES™ ha conosciuto da allora diversi rilasci importanti. Il primo sistema «demoware» divenne operativo nel 1987 e venne mostrato nel 1988 alla conferenza ACM-SIGMOD. La Versione 1, descritta in [STON90a], fu rilasciata ad alcuni utenti esterni nel giugno 1989. In risposta ad una critica sulle prime regole di sistema ([STON89]), le regole di sistema furono completamente ridisegnate ([STON90b]) e nel giugno 1990 venne rilasciata la Versione 2. La Versione 3 comparve nel 1991 e vide l'inserimento del supporto per storage manager multipli, il miglioramento dell'esecutore delle query e la riscrittura delle regole di sistema. I successivi rilasci fino a Postgres95™ (vedere sotto) furoni principalmente incentrati sulla portabilità e sull'affidabilità.

POSTGRES™ venne utilizzato per implementare diverse applicazioni di ricerca e di produzione, fra le quali: un sistema di analisi di dati finanziari, un pacchetto jet engine di monitoraggio delle prestazioni, un database di tracciamento asteroidi, un database di informazioni mediche e diversi sistemi di informazioni geografiche. POSTGRES™ venne inoltre utilizzato come strumento educativo da parecchie università. Per concludere, Illustra Information Technologies (in seguito fusa in Informix, che è ora proprietà di IBM) acquisì il codice e lo commercializzò. Verso la fine del 1992, POSTGRES™ divenne il principale gestore di dati per il progetto Sequoia 2000 sul calcolo scientifico.

La dimensione della comunità degli utenti esterni raddoppiò durante il 1993. Divenne sempre più evidente che la manutenzione del prototipo del codice ed il supporto stavano impegnando la maggior parte del tempo, che invece avrebbe dovuto essere dedicato alla ricerca nel campo dei database. Con lo scopo di ridurre questo onere di supporto, il progetto Berkeley POSTGRES™ si concluse ufficialmente con la versione 4.2.

2.2. Postgres95

Nel 1994, Andrew Yu e Jolly Chen aggiunsero un interprete di linguaggio SQL a POSTGRES™. Con un nuovo nome, fu in seguito rilasciato nel web Postgres95™ per trovare una collocazione nel mondo come un discendente open-source del codice originario Berkeley POSTGRES™.

Il codice di Postgres95™ divenne completamente ANSI C e ridotto in dimensione del 25%. Molte modifiche interne ne migliorarono le prestazioni e la manutenzione. La versione 1.0.x di Postgres95™, confrontata tramite il Wisconsin Benchmark alla versione 4.2 di POSTGRES™, risultava più veloce del 30-50%. Oltre alla eliminazione dei bug, questi furono i pricipali miglioramenti:

  • Il linguaggio di interrogazione PostQUEL fu sostituito con SQL (implementato nel server). Le subquery, che non sarebbero state supportate fino all'avvento di PostgreSQL™ (vedi sotto), erano "imitate" in Postgres95™ con funzioni SQL definite dall'utente. Le funzioni aggregate furono reimplementate. Fu anche aggiunto il supporto per la clausula GROUP BY.

  • Un nuovo programma (psql), venne fornito per le query SQL interattive, che utilizzavano la GNU Readline. psql andò a sostituire il vecchio programma monitor.

  • Una nuova libreria front-end, libpgtcl, fu introdotta per il supporto ai client basati su Tcl. Una semplice shell, pgtclsh, forniva nuovi comandi Tcl per interfacciare i programmi Tcl con il server Postgres95™.

  • L'interfaccia per i large-object fu pesantemente revisionata. L'unico meccanismo per la memorizzazione di oggetti di grandi dimensioni divenne "Inversion large objects" (il file system "Inversion" fu rimosso).

  • Il sistema di regole a livello-istanza venne rimosso. Le regole rimasero ancora disponibili come regole rewrite.

  • Un breve tutorial di introduzione alle caratteristiche del linguaggio SQL e di Postgres95™ fu distribuito con il codice sorgente.

  • Per la compilazione fu utilizzato GNU make (al posto di BSD make). Inoltre, Postgres95™ poteva essere compilato con un GCC™ non modificato (venne risolto l'allineamento dei dati double).

2.3. PostgreSQL

Nel 1996, divenne chiaro che il nome «Postgres95» non era più adeguato con i tempi. Venne scelto allora un nuovo nome, PostgreSQL™, per evidenziare il rapporto tra il POSTGRES™ originale e la più recente versione con capacità SQL. Contestualmente, venne inserito il numero di versione iniziale 6.0, utilizzando la sequenza di numerazione originariamente utilizzata dal progetto Berkeley POSTGRES™.

Molte persone continuano a riferirsi a PostgreSQL™ come «Postgres» (raramente in lettere maiuscole) per tradizione o perchè più facile da pronunciare. Questo utilizzo è largamente accettato come alternativa, nickname o alias.

L'impegno maggiore durante lo sviluppo di Postgres95™ fu quello di identificare e capire i problemi esistenti nel codice del server. Con PostgreSQL™, l'impegno maggiore venne concentrato sull'incremento delle caratteristiche e delle capacità (anche se il lavoro di fatto proseguiva in tutte le aree).

Dettagli su tutto ciò che è accaduto da allora in merito a PostgreSQL™ possono essere trovati dentro l'Appendice E, Release Notes.

Documentazione di PostgreSQL 9.0 > Prefazione > Una breve storia di PostgreSQL
PrecedentePrefazioneConvenzioniSuccessivo