Je suis administrateur de bases de données, c'est mon métier. L'outil principal avec lequel je travaille est PostgreSQL, qui est un système de gestion de bases de données relationnelles, un des meilleurs outils qui soit.

La prise en main pour un développeur de logiciel de ce type d'outil est loin d'être évidente. La plupart du temps, ce qui importe pour un développeur est la façon dont son code fonctionne, et dont l'architecture du programme est mise en place. Il est rarement intéressé par la façon dont sont stockées les données qu'il manipule, et si le sujet l'intéresse, il le voit au travers de son modèle de données, qui, la plupart du temps, est un modèle objet.

On voit donc régulièrement s'opposer deux façons de penser : les modèles relationnels et les modèles objets ; Une des pire chose qui puisse arriver est de coller un ORM entre les deux modèles : on obtient rarement un compromis acceptable, d'un coté comme de l'autre. Au mieux, l'ORM va permettre de prendre en main progressivement la base de données relationnelle afin de faire correspondre le code avec la base. Ici, il est important de noter que je suis DBA, de mon point de vue, c'est au code de coller au modèle relationnel.

Malheureusement, les contraintes de développement en entreprise étant ce qu'elles sont, les modèles relationnels des bases de données ne sont pas toujours conçues par des concepteurs versés dans l'art des ensembles. On retrouve donc régulièrement des modèles qui consistent simplement à sérialiser des objets et à les associer à des clés. Ce qui revient à stocker des paires clés/valeurs. Et pour cela, nul besoin d'un SGBDR.

De plus, des bases de données relationnelles comme PostgreSQL sont de très bons outils transactionnels, mais ils existent des outils qui peuvent être plus pratique lorsqu'on ne fait que des lectures de données et très peu d'écriture.

Or, on passe plus de temps à lire des tweets ou des profils Facebook qu'a y raconter sa vie ( quoique ), et ces outils manipulent des données qui sont très faiblement modélisés.

Depuis quelques années, de très gros sites Webs ( Amazon, Google, Facebook, ... ) ont donc amorcé une réflexion sur leurs besoins en base de données, et y répondent aujourd'hui par la publication de documents et d'outils qui font parti de la mouvance NoSQL. Récemment, c'est Twitter qui annoncait se passer de MySQL pour se diriger vers une base de données très différentes : Cassandra.

On voit ici que s'oppose deux modèles : des bases de données très structurés, et ayant essentiellement des besoins en écritures ( par exemple, une application comptable ), et des bases de données non-structurées, accédées essentiellement en lecture.

Je vais donc tenter de comprendre, d'expliquer et de prendre en main la seconde famille d'outils, que je ne connais pas, dans une séries d'articles sur ce blog.