ANNÉES 2000

CouchDB

En 2005, Damien Katz quitte IBM avec une idée en tête. Ses années passées sur Lotus Notes lui ont appris ce qu'était une base de données documentaire, mais aussi ce qu'elle pourrait devenir. À cette époque, le monde informatique tourne presque exclusivement autour des bases relationnelles. Pourtant, quelque chose cloche. Les applications web modernes et les outils collaboratifs réclament autre chose, une souplesse que SQL ne sait pas vraiment offrir.

Il commence par écrire CouchDB en C++. Les premiers prototypes fonctionnent, mais la gestion de la concurrence le fait buter. Il cherche une solution, parcourt les forums techniques, et tombe sur le blog « Lambda the Ultimate » où quelqu'un parle d'Erlang. Ce langage, conçu à l'origine pour les télécoms chez Ericsson, possède exactement ce dont il a besoin. La tolérance aux pannes, la distribution native, le traitement concurrent : tout y est. Katz prend alors une décision radicale. Il jette son code C++ et recommence tout en Erlang.

Ce choix technique modèle CouchDB. Erlang apporte avec lui une philosophie : les systèmes doivent survivre aux défaillances, les processus peuvent tomber sans faire chuter l'ensemble, les données peuvent être distribuées naturellement. Ces propriétés, pensées pour des centraux téléphoniques devant fonctionner sans interruption, collent parfaitement aux besoins d'une base de données moderne. Le parallèle entre télécoms et stockage de données n'était pas évident au premier regard, mais il s'avère pertinent.

CouchDB rompt avec plusieurs conventions établies. Pas de schéma rigide : les documents JSON peuvent évoluer librement, se transformer au gré des besoins sans nécessiter de migration de base. Cette liberté répond aux réalités du développement web où les structures changent constamment. L'interface parle HTTP, utilise GET pour lire, PUT pour écrire, DELETE pour supprimer. Rien de plus, rien de moins. Un développeur web se retrouve en terrain connu.

JavaScript devient le langage des requêtes. Là où d'autres bases imposent leur propre dialecte, CouchDB mise sur un langage que tout développeur web connaît. Les vues, ces index personnalisés qui permettent d'interroger les données, s'écrivent en JavaScript. Map-reduce aussi.

La réplication bidirectionnelle figure parmi les atouts les plus singuliers de CouchDB. Deux instances peuvent se synchroniser, échanger leurs modifications après avoir fonctionné séparément pendant des jours. Par exemple, un smartphone perd sa connexion, continue de travailler en local, puis synchronise tout une fois reconnecté. Peu de temps après la sortie de l'iPhone par Apple, cette capacité anticipe un monde où les appareils mobiles et les connexions intermittentes seront la norme plutôt que l'exception.

Pour gérer les écritures concurrentes, CouchDB adopte une approche optimiste. Pas de verrous qui bloquent, pas d'attentes forcées. Chaque document possède un numéro de révision, un peu comme Git avec ses commits. Quand deux modifications entrent en conflit, CouchDB garde les deux versions et laisse l'application décider. Cette gestion des conflits, inspirée des systèmes de contrôle de version, donne une souplesse inhabituelle pour une base de données.

L'histoire bifurque en 2011. CouchDB fusionne avec Membase, une technologie de cache distribué aux performances remarquables. De cette union naît Couchbase, qui combine la richesse documentaire de CouchDB avec la vitesse brute de Membase. La créature hybride hérite des deux mondes : persistance et flexibilité d'un côté, vélocité de l'autre.

Techniquement, CouchDB repose sur quelques briques bien pensées. Le moteur de stockage écrit sur disque tout en maintenant des index pour l'accès rapide. Le système de vues transforme les documents en index interrogeables. Le protocole de réplication assure la cohérence entre instances distantes. Ces composants interagissent en s'appuyant sur les forces d'Erlang, qui orchestre le tout avec une certaine élégance.

CouchDB participe à l'émergence du mouvement NoSQL, et prouve qu'on peut penser autrement le stockage des données. Son influence se lit dans l'architecture de nombreuses bases modernes qui reprennent ses idées : documents sans schéma, API web-friendly, réplication intelligente. PouchDB, son dérivé en JavaScript pour navigateurs, étend la synchronisation jusqu'au client web.

Les cas d'usage se multiplient là où la flexibilité compte. Applications mobiles qui doivent fonctionner hors ligne, systèmes collaboratifs où des utilisateurs modifient les mêmes données, outils qui doivent se répliquer entre sites distants. CouchDB excelle dans ces situations où la connexion n'est pas garantie, où les structures évoluent vite, où la distribution des données est une nécessité.