En 2012, les principaux systèmes de gestion de bases de données relationnelles (SGBDR) sur le marché sont propriétaires. Nous parlons régulièrement d’Oracle Database, MySQL, Microsoft SQL Server. En dehors de ces solutions commerciales, il existe un SGDBR open-source largement utilisé: il s’agit de PostgreSQL et il est l’objet de cet article.
Un peu d’histoire
PostgreSQL prend son nom en 1996, toutefois son développement dure depuis le milieu des années 80. En effet c’est une équipe de l’université de Berkeley conduite par Michael Stonebraker qui commença un projet nommé Postgres, dans la continuation du projet ingres, SGBDR qui était passé dans le monde des bases propriétaires. Une version de POSTGRES a été commercialisée sous le nom « Illustra », achetée plus tard par Informix.
POSTGRES utilisait son propre langage de requêtes, POSTQUEL. Jugé techniquement meilleur que SQL grâce à sa richesse d’expression, en pratique, POSTQUEL ne trouva pas sa place dans le coeur des developpeurs.
En 1994-95 deux thésards Andrew Yu et Jolly Chen, de l’équipe du professeur Stonebraker, ont remplacé POSTQUEL par SQL,
le projet fut alors renommé Postgres95 et devriendra l’année suivante PostgreSQL.
- La première version prendra le numero 6
- Les versions 6.1 à 6.5 apparaitront durant les années 1997- 1999
- Les versions 7.0 à 7.4 apparaitront durant les années 2000 – 2004
- Les versions 8.0 à 8.4 apparaitront durant les années 2005 – 2009
- Les années 2010 donnent naissance au version 9.x
- La version actuelle est la 9.1.3.
Les dévelopements de PostgreSQL sont gérés dans une organisation mondiale et structurée. Deux groupes se dégagent dans cette organisation:
- Le Core Team: 6 personnes, ayant la responsabilité des grandes orientations
- Les contributeurs: une bonne centaine de personnes qui discutent des évolutions et maintiennent le code.
Une description
Je vais parler dans cette description des aspects fonctionnels et de l’eco-systeme postgreSQL. PostgreSQL est un SGBD relationnel et objet…
- fonctionnant dans une architecture Client/serveur où chaque connection crée un processus gérant les requetes du client,
- gérant au travers d’un mecanisme nommée MVCC une bonne isolation des transactions,
- fiable et disponible grace à la gestion de log (WAL) et de la réplication au niveau transactionnel,
- apportant un support de la norme SQL 99,
- remarquablement extensible au travers des capacités du language de procédure interne et de la souplesse de l’API.
De ce fait PostgreSQL ne se réduit pas au seul moteur du SGBDR, c’est tout un eco-systeme favorisé par la capacité d’extension du moteur. Un site comme pgfoundry vous donnera une bonne idée de la dynamique de l’eco-systeme.
Voici une liste des projets par sujet:
- Database Administration (73 projects)
- Database Development (67 projects)
- Drivers/Interfaces (22 projects)
- Graphical Interfaces (GUI) (18 projects)
- Internet (13 projects)
- Other/Non-listed Topic (3 projects)
- PostgreSQL Community (5 projects)
- PostgreSQL Enhancements (76 projects)
- Procedural Languages (12 projects)
- Technical Applications (27 projects)
- User Applications (30 projects)
En plus de sa capacité d’extension, PostreSQL présente dans sa branche 9 une solution de réplication intégrée facilement déployable et la mise en oeuvre de solutions innovantes dans la gestion de l’isolation des transactions.
Je vous proposerai dans les semaines à venir une exploration de l’architecture globale, une présentation des mécanismes internes (MVCC, WAL) et plusieurs articles sur les tâches d’administration d’un serveur PostgreSQL.
Licences et packaging
La licence de PostgreSQL est une licence BSD (http://fr.wikipedia.org/wiki/Licence_BSD). Il n’y a qu’une version de PostgreSQL, j’entends par là: pas de déclinaison marketing du produit comme c’est le cas avec MySQL.
Avec PostgreSQL, il n’y a pas de redevance, sauf à choisir une version produite par une sociétè commerciale maintenant une version particulière de PostgreSQL comme EntrepriseDB par example.
Références documentaires
http://docs.postgresql.fr/
http://www.dalibo.org/organisation_du_projet_postgresql
http://pgfoundry.org/
http://www.2ndquadrant.com/fr/histoire-postgresql/