Le système de bases de données relationnelles objet PostgreSQL est issu de POSTGRES, programme écrit à l'université de Californie à Berkeley. Après des dizaines d'années de développement, PostgreSQL annonce être devenu la base de données libre de référence.
Le projet POSTGRES, mené par le professeur Michael Stonebraker, était sponsorisé par le DARPA (acronyme de Defense Advanced Research Projects Agency), l'ARO (acronyme de Army Research Office), la NSF (acronyme de National Science Foundation) et ESL, Inc. Le développement de POSTGRES a débuté en 1986. Les concepts initiaux du système ont été présentés dans [ston86] et la définition du modèle de données initial apparut dans [rowe87]. Le système de règles fut décrit dans [ston87a], l'architecture du gestionnaire de stockage dans [ston87b].
Depuis, plusieurs versions majeures de POSTGRES ont vu le jour. La première « démo » devint opérationnelle en 1987 et fut présentée en 1988 lors de la conférence ACM-SIGMOD. La version 1, décrite dans [ston90a], fut livrée à quelques utilisateurs externes en juin 1989. Suite à la critique du premier mécanisme de règles ([ston89]), celui-ci fut réécrit ([ston90b]) pour la version 2, présentée en juin 1990. La version 3 apparut en 1991. Elle apporta le support de plusieurs gestionnaires de stockage, un exécuteur de requêtes amélioré et une réécriture du gestionnaire de règles. La plupart des versions qui suivirent, jusqu'à Postgres95 (voir plus loin), portèrent sur la portabilité et la fiabilité.
POSTGRES fut utilisé dans plusieurs applications, en recherche et en production. On peut citer, par exemple : un système d'analyse de données financières, un programme de suivi des performances d'un moteur à réaction, une base de données de suivi d'astéroïdes, une base de données médicale et plusieurs systèmes d'informations géographiques. POSTGRES a aussi été utilisé comme support de formation dans plusieurs universités. Illustra Information Technologies (devenu Informix, maintenant détenu par IBM) a repris le code et l'a commercialisé. Fin 1992, POSTGRES est devenu le gestionnaire de données principal du projet de calcul scientifique Sequoia 2000.
La taille de la communauté d'utilisateurs doubla quasiment au cours de l'année 1993. De manière évidente, la maintenance du prototype et le support prenaient un temps considérable, temps qui aurait dû être employé à la recherche en bases de données. Dans un souci de réduction du travail de support, le projet POSTGRES de Berkeley se termina officiellement avec la version 4.2.
En 1994, Andrew Yu et Jolly Chen ajoutèrent un interpréteur de langage SQL à POSTGRES. Sous le nouveau nom de Postgres95, le projet fut publié sur le Web comme descendant libre (OpenSource) du code source initial de POSTGRES, version Berkeley.
Le code de Postgres95 était écrit en pur C ANSI et réduit de 25%. De nombreux changements internes améliorèrent les performances et la maintenabilité. Les versions 1.0.x de Postgres95 passèrent le Wisconsin Benchmark avec des performances meilleures de 30 à 50% par rapport à POSTGRES, version 4.2. À part les correctifs de bogues, les principales améliorations furent les suivantes :
le langage PostQUEL est remplacé par SQL (implanté sur le serveur). (La bibliothèque d'interface libpq a été nommée à partir du langage PostQUEL.) Les requêtes imbriquées n'ont pas été supportées avant PostgreSQL (voir plus loin), mais elles pouvaient être imitées dans Postgres95 à l'aide de fonctions SQL utilisateur ; les agrégats furent reprogrammés, la clause GROUP BY ajoutée ;
un nouveau programme, psql, qui utilise GNU Readline, permet l'exécution interactive de requêtes SQL ; c'est la fin du programme monitor ;
une nouvelle bibliothèque cliente, libpgtcl
,
supporte les programmes écrits en Tcl ; un shell
exemple, pgtclsh
, fournit de nouvelles commandes Tcl
pour interfacer des programmes Tcl avec
Postgres95 ;
l'interface de gestion des « Large Objects » est réécrite ; jusque-là, le seul mécanisme de stockage de ces objets passait par le système de fichiers Inversion (« Inversion file system ») ; ce système est abandonné ;
le système de règles d'instance est supprimé ; les règles sont toujours disponibles en tant que règles de réécriture ;
un bref tutoriel présentant les possibilités du SQL ainsi que celles spécifiques à Postgres95 est distribué avec les sources ;
la version GNU de make est utilisée pour la construction à la place de la version BSD ; Postgres95 peut également être compilé avec un GCC sans correctif (l'alignement des doubles est corrigé).
En 1996, le nom « Postgres95 » commence à mal vieillir. Le nom choisi, PostgreSQL, souligne le lien entre POSTGRES et les versions suivantes qui intègrent le SQL. En parallèle, la version est numérotée 6.0 pour reprendre la numérotation du projet POSTGRES de Berkeley.
Beaucoup de personnes font référence à PostgreSQL par « Postgres » (il est rare que le nom soit écrit en capitales) par tradition ou parce que c'est plus simple à prononcer. Cet usage est accepté comme alias ou pseudo.
Lors du développement de Postgres95, l'effort était axé sur l'identification et la compréhension des problèmes dans le code. Avec PostgreSQL, l'accent est mis sur les nouvelles fonctionnalités, sans pour autant abandonner les autres domaines.
L'historique de PostgreSQL à partir de ce moment est disponible dans l'Annexe E.