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.
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 :
- la tolérance aux pannes : si un serveur n’est plus disponible, les bases de données sur cette grappe restent accessibles ;
- 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 ;
- 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.
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.
Aller plus loin
- Annonce de la sortie de CouchDB 2.0 (288 clics)
- Communiqué de la fondation Apache sur la sortie de CouchDB 2.0 (105 clics)
- Site officiel de CouchDB (270 clics)
- Pokedex, un exemple de Progressive Web App, utilisant CouchDB (217 clics)
- DLFP : la nouvelle architecture de Cozy Cloud s’appuie sur CouchDB (196 clics)
# Commentaire supprimé
Posté par El Titi . Évalué à 2. Dernière modification le 21 septembre 2016 à 09:01.
Ce commentaire a été supprimé par l’équipe de modération.
# Et pour la suite
Posté par Bruno Michel (site web personnel) . Évalué à 5.
Jan Lenhardt a publié la liste des changements qu'il aimerait bien voir dans les prochaines versions de CouchDB : https://lists.apache.org/thread.html/afd87c27745141be1325203a2ea0610a0d2886a729658110b1de3ef6@%3Cdev.couchdb.apache.org%3E
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.