CouchDB passe la seconde vitesse

Posté par (page perso) . Édité par Davy Defaud, Xavier Teyssier et Benoît Sibaud. Modéré par Xavier Teyssier. Licence CC by-sa
49
20
sept.
2016
Base de données

CouchDB est une base de données de la famille NoSQL. C’est même l’une des plus anciennes, sortie en 2005. Elle est ensuite devenue un projet Apache en 2008. Elle a pris du retard sur ses concurrents sur de nombreux aspects, mais sa grande force, la réplication entre instances primaires, reste inégalée. Pouchdb, un portage de CouchDB en JavaScript capable de tourner dans les navigateurs, est compatible avec le protocole de réplication de CouchDB et la combinaison des deux est très intéressante pour développer des applications Web dites « progressives » (PWA), capables de travailler sans connexion Internet. Il existe d’autres implémentations compatibles avec ce protocole de réplication, dont Couchbase lite pour mobile.

La version 2.0 de CouchDB est attendue depuis plusieurs années et a pris beaucoup de retard. Elle vient enfin de sortir avec de grandes nouveautés, dont la prise en charge du clustering, un nouveau moteur de « requêtage » et une interface d’administration plus moderne.

Logo de CouchDB

Clustering

C’est la grande nouveauté de cette version 2. Il est maintenant possible d’avoir une grappe de serveurs CouchDB et communiquer avec celle‐ci sans avoir à se soucier de quelle instance possède quel document. CouchDB écoute maintenant sur deux ports : sur 5984, c’est toujours ce que l’on avait avec CouchDB 1 et les requêtes envoyées dessus ne concernent que l’instance locale, et sur 5986 pour parler à tout le cluster.

Cette implémentation repose sur Dynamo, le papier écrit par Amazon et répond à trois problématiques :

  1. la tolérance aux pannes : si un serveur n’est plus disponible, les bases de données sur cette grappe restent accessibles ;
  2. les performances : comme chaque serveur ne possède qu’une partie des données, il n’a pas besoin d’indexer l’intégralité des données et cela réduit donc sa charge ;
  3. la capacité : il est maintenant possible de stocker des volumes de données qui ne tiennent pas sur un seul serveur.

Fauxton pour administrer CouchDB

L’API de CouchDB pour manipuler les bases de données et les documents à l’intérieur de celles‐ci est en HTTP. L’interface d’administration peut ainsi se résumer à une simple page HTML avec du JavaScript. Anciennement, cette page s’appelait Futon. Une nouvelle version, Fauxton, totalement réécrite est arrivée dans CouchDB 2.0. Elle a un look plus moderne, le code est plus facile à maintenir et elle offre une interface plus simple à utiliser.

Capture d'écran de Fauxton

Mango pour des requêtes plus simples

Le système d’indexation et « requêtage » de CouchDB 1.0, qui passe par la construction de vues en map/reduce est compliqué à prendre en main pour les nouveaux venus. Il est toujours utilisable dans CouchDB 2.0, mais une nouvelle interface est maintenant disponible pour cela. Elle s’inspire du find() de MongoDB et se nomme Mango.

Améliorations générales des performances

Un travail plus général d’amélioration des performances a été mené. Par exemple, les discussions avec l’équipe de PouchDB ont permis d’ajouter une nouvelle méthode à l’API HTTP de CouchDB pour accélérer les réplications. Les processus de compaction ont également été revus : ils sont plus efficaces et les bases de données après compaction sont maintenant réécrites pour optimiser les requêtes suivantes en regroupant certaines données.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.