Intermédiaire

Retour sur : Couchbase Day Paris

Le 20 mars 2018 s’est tenu le Couchbase Day au Hilton de Paris La Défense. À l’occasion de cet événement, la société Couchbase a présenté la version 5.1 de sa base noSQL, très sérieux concurrent de MongoDB, la plus connue des bases de la catégorie “orientée document”. Petit tour d’horizon du produit…

Couchbase Inc.

La société Couchbase développe et supporte la base noSQL éponyme. Son modèle économique est principalement basé sur la licence d’utilisation de la version Entreprise de la base, donnant accès à son utilisation en production, au support et aux demandes d’évolutions/optimisations. La société fondée en 2011 à Mountain View (Californie) a créé CouchBase, en combinant la base Apache CouchDB et le cache distribué memcached. Elle compte parmi ses clients de nombreux sites d’e-commerce, des sites de vente au détail (Carrefour, Leclerc, Auchan, Leroy Merlin, venteprivee.com…), des financiers (Visa, Crédit agricole, Société Générale…), des éditeurs de jeux vidéo et média (Sky, itunes, pokemon go, Blizzard, Activision), du transport (Coyote), de la publicité (Criteo) et autres.

Produits

Couchbase est une base de donnée noSQL opensource, orientée document. Il en existe une version Community gratuite, et une version Entreprise payante, embarquant un certain nombre d’optimisations et de fonctionnalités avancées. À noter cependant que la licence Entreprise n’est nécessaire que pour une utilisation en production, et qu’il est donc possible (et même conseillé) d’essayer librement la version Entreprise en développement, pour un POC et/ou benchmark.

Architecture

Couchbase se décline en version serveur (couchbase-server) ou mobile (couchbase-mobile, anciennement couchbase-lite)

Couchbase-server se décompose en services :

  • Data Service : contient les documents.
  • Indexing Engine : maintient les Global Secondary Indexes.
  • Query Engine : coordonne et exécute les requêtes.
  • Cluster Manager : pour l’administration du cluster.

Un noeud couchbase héberge l’ensemble ou une partie de ces services. Ceux-ci sont répliqués sur plusieurs noeuds couchbase, regroupés en cluster. Le cluster n’a pas de maître, il s’agit d’une architecture distribuée P2P.

Parmi les produits couchbase, on trouvera également une console web de monitoring et d’administration, une API REST quasi exhaustive, des SDKs pour la plupart des technos (java, .NET, PHP, python…)

Un cluster couchbase peut tourner sur tout type d’infra, physique ou virtuelle, dans un cloud (Couchbase proposera également prochainement sa base en version managée “as a service”). Par ailleurs, couchbase est “docker ready”.

Modélisation orientée document

Couchbase est orienté document : les données sont stockées au format JSON. Exemple :

{
  "type": "order",
  "customerId": "donpinto",
  "order_number": "12345",
  "products": [
    {
      "productId": "pokemon-red",
      "quantity": 1,
      "price": 39.99
    },
    {
      "productId": "pokemon-yellow",
      "quantity": 1,
      "price": 39.99
    }
  ]
}

Souplesse de requêtage

Couchbase est plutôt prévu pour un usage OLTP (données chaudes) même s’il existe des modules pour l’analytics. Il est possible de requêter les données de manière très souple, via des requêtes N1QL (se prononce “nickel”). Il s’agit d’une extension du langage SQL pour JSON. Sa syntaxe est très proche du SQL-92, donc très facile d’accès. Exemple de requête :

SELECT order_number, products
FROM “orders”
WHERE customerId = “donpinto”;

Full Text Search

Couchbase embarque également un moteur de recherche “full text” ; on pourra donc nativement répondre à ce type de besoin (même s’il ne sera pas aussi complet qu’un Elasticsearch

Performance

Pour offrir de bonnes performances, Couchbase s’appuie sur :

  • une architecture “memory-first” (héritage de memcached)
  • une approche asynchrone (persistence, réplication, index updates, TFS updates….)
  • des optimisations dans les plans d’exécution des requêtes, grâce aux indexes
  • l’utilisation en interne du protocole DCP (Data Change Procotol)
  • des écritures disque rapides (“append only”)
  • une “Tunable Durability”, c’est-à-dire la possibilité à chaque requête, de choisir si la donnée doit être persistée ou si elle peut être stockée en mémoire uniquement (choix durabilité vs. performante)

En résumé, couchbase tire parti du meilleur des 2 mondes (CouchDB et memcached), et laisse le choix à l’utilisateur.

scalabilité

Grâce à son architecture distribuée, couchbase est pensé pour “scaler“ facilement horizontalement. Quand le volume de données augmente, il suffit d’ajouter des noeuds au cluster pour garder des temps de réponse “constants” (scalabilité linéaire). Par ailleurs, un ajout de noeud se fait à chaud, le service reste donc “always online” !

High Availability

Couchbase a une architecture P2P ; elle ne présente donc pas de SPOF.

Failover

Les documents sont nativement répliqués. En cas de panne d’un noeud, un réplica peut continuer à fournir le document. Cependant, le “Rack Awareness” (capacité à répliquer les données intelligemment dans des racks ou DC différents) n’existe que dans la version Entreprise.
La reprise sur panne peut se faire manuellement ou automatiquement. La re-synchronisation des noeuds après une panne (opération de rebalance) se fait sans “downtime” (noeuds et données restent disponibles).

XDCR

Il existe un mécanisme de XDCR (Cross Data Center Replication) permettant la duplication des données vers un autre DataCenter. Ces copies peuvent se faire dans un sens uniquement, ou bien de manière bilatérale.
Cette capacité peut être utilisée :

  • pour de la haute disponibilité, en cas de perte d’un DC
  • mais également pour disposer localement des données (dans le cas d’une application worldwide), afin d’améliorer les temps de réponse.

Tunable Consistency

À l’instar de Cassandra, Couchbase est une base proposant la “Tunable Consistency” ; c’est-à-dire qui’il est possible à chaque requête de préciser un niveau de cohérence exigé, pour passer d’un système CP à AP (voir théorème CAP). En cas de panne d’un noeud, couchbase sera par défaut “CP” (il vous répondra “donnée indisponible”). Mais si l’utilisateur souhaite privilégier la disponibilité, on pourra demander la donnée depuis un réplica (quitte à ne pas avoir la toute dernière version de la donnée).

Disaster Recovery

Couchbase fournit également un mécanisme de backup & restore des données.

Conclusion

Nous venons de voir les fonctionnalités que peut nous offrir Couchbase. Même s’il s’agit d’une base orientée document, on ne peut s’empêcher de faire le parallèle avec Apache Cassandra et DataStax, sur de nombreux points communs (architecture P2P, scalabilité horizontale, tunable consistency, performance…)

Parmi les avantages de cette solution, on retiendra en particulier :

  • le système de requête N1QL très souple et puissant.
  • les performances et la scalabilité.
  • la haute dispo.
  • une solution open source.
  • un blog technique, une grande communauté d’utilisateurs et une adoption suffisante pour que le produit puisse perdurer.

On notera comme points négatifs les limitations de la version community gratuite, qui la rend très rapidement insuffisante en exploitation :

  • les backups/restores y sont excessivement lents par rapport à la version entreprise, exposant la production à des interruptions de service en cas de panne majeure.
  • l’absence de Rack Awareness dans cette version pourra également dégrader la disponibilité.
  • l’absence de XDCR rend compliquée une extension worldwide du business.

Pour terminer, si vous souhaitez aller plus loin, Couchbase propose en ligne des tutoriaux vidéo gratuits, ainsi que des formations avancées (mais payantes).

© SOAT
Toute reproduction interdite sans autorisation de l’auteur

Nombre de vue : 205

AJOUTER UN COMMENTAIRE