Couchbase Server

système de gestion de base de données
(Redirigé depuis Couchbase)

Couchbase Server, initialement connu sous le nom Membase, est une base de données orientée document, NoSQL, open-source, et multi-modèle, optimisée pour les applications interactives. Ces applications peuvent servir de nombreux utilisateurs simultanés en créant, stockant, récupérant, agrégeant, manipulant et présentant des données. Pour prendre en charge ces types de besoins d'application, Couchbase Server fournit un accès facile aux valeurs-clés ou aux documents JSON avec une faible latence et un débit soutenu élevé. Elle est conçue pour regrouper des déploiements à très grande échelle en une seule ou plusieurs machines.

Couchbase Server
Description de l'image Couchbase logo.png.
Description de l'image Couchbase Server Screenshot.png.
Informations
Créateur CouchbaseVoir et modifier les données sur Wikidata
Développé par Couchbase, Inc.
Première version
Dernière version 1.7.1.1 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/couchbase/manifestVoir et modifier les données sur Wikidata
Écrit en C++ et ErlangVoir et modifier les données sur Wikidata
Type Base de données multi-modèle, base de données NoSQL, base de données à valeur-clé
Licence Apache HTTP Server, freemium
Site web https://www.couchbase.com/

Couchbase au AWS Summit

Couchbase Server a fourni la compatibilité du protocole client avec Memcached[2], mais a ajouté la persistance du disque, la réplication des données, la reconfiguration de cluster en direct, le rééquilibrage et la multi-location avec le partitionnement des données .

Histoire du produit modifier

Membase a été développé par plusieurs chefs de file du projet Memcached, qui avaient fondé une société, NorthScale, pour développer une plateforme de stockage à valeur-clé avec la simplicité, la rapidité et l'évolutivité de Memcached, mais aussi les capacités de stockage, de persistance et d'interrogation d'une base de données. Le code source original de Membase a été fourni par NorthScale et les co-sponsors du projet Zynga et Naver Corporation (alors connue sous le nom de NHN) pour un nouveau projet sur membase.org en juin 2010[3].

Le 8 février 2011, les fondateurs du projet Membase et Membase, Inc. ont annoncé une fusion avec CouchOne (une société avec plusieurs des principaux acteurs derrière CouchDB ). La société fusionnée a été nommée Couchbase, Inc. En janvier 2012, Couchbase a commercialisé le Couchbase Server 1.8. En septembre 2012, Orbitz a déclaré avoir changé certains de ses systèmes pour utiliser Couchbase[4]. En décembre 2012, Couchbase Server 2.0 (annoncé en juillet 2011) a été publié et comprenait un nouveau magasin de documents JSON, l'indexation & interrogation, le MapReduce incrémentiel, et la réplication dans les centres de données[5],[6].

Architecture modifier

 
Schéma Couchbase Server par rapport à Couchbase Lite

Chaque nœud Couchbase se compose d'un service de données, d'un service d'index, d'un service de requête et d'un composant de gestionnaire de cluster. À partir de la version 4.0, les trois services peuvent être distribués pour s'exécuter sur des nœuds distincts du cluster si nécessaire. Dans le langage du théorème CAP d'Eric Brewer, Couchbase est normalement un système de type CP, ce qui signifie qu'il fournit une cohérence et une tolérance de partition, et qu'il peut être configuré comme un système AP avec plusieurs clusters.

Gestionnaire de cluster modifier

Le gestionnaire de cluster supervise la configuration et le comportement de tous les serveurs d'un cluster Couchbase. Il configure et supervise le comportement inter-nœuds comme la gestion des flux de réplication et les opérations de rééquilibrage. Il fournit également des fonctions d'agrégation métriques et de consensus pour le cluster, ainsi qu'une interface de gestion de cluster RESTful. Le gestionnaire de cluster utilise le langage de programmation Erlang et la plate-forme Open Telecom.

Réplication et basculement modifier

La réplication des données dans les nœuds d'un cluster peut être contrôlée avec plusieurs paramètres. En décembre 2012, la prise en charge de la réplication entre différents centres de données a été ajoutée[5].

Manager de données modifier

Le gestionnaire de données stocke et récupère les documents en réponse aux opérations sur les données des applications. Il écrit les données de manière asynchrone sur le disque après avoir accusé réception du client. Dans les versions 1.7 et ultérieures, les applications peuvent éventuellement s'assurer que les données sont écrites sur plusieurs serveurs ou sur disque avant d'autoriser une écriture sur le client. Les paramètres définissent les âges des éléments qui affectent le moment où les données sont persistantes et la façon dont la mémoire maximale et la migration de la mémoire principale vers le disque sont gérées. Il prend en charge les ensembles de travail supérieurs à un quota de mémoire par «nœud» ou «compartiment». Les systèmes externes peuvent s'abonner à des flux de données filtrés, prenant en charge, par exemple, l'indexation de la recherche en texte intégral, l'analyse des données, ou l'archivage[7].

Format des données modifier

Le document est l'unité la plus élémentaire de manipulation de données dans Couchbase Server. Les documents sont stockés au format de document JSON sans schéma prédéfini. Les documents non-JSON peuvent également être stockés dans Couchbase Server (binaire, valeurs sérialisées, XML, etc. )

Cache géré par objets modifier

Couchbase Server comprend un cache géré par objets multi-thread intégré qui implémente des API compatibles Memcached telles que : get, set, delete, append, prefend, etc.

Moteur de stockage modifier

Couchbase Server a une conception de stockage en appendice, immunisée contre la corruption des données, les OOM Killers et la perte soudaine de puissance. Les données sont écrites dans le fichier de données de manière à uniquement s'ajouter, ce qui permet à Couchbase d'effectuer principalement des écritures séquentielles pour la mise à jour, et de fournir des modèles d'accès optimisés pour les E/S de disque.

Performance modifier

Un benchmark de performances réalisé par Altoros en 2012, compare Couchbase Server à d'autres technologies[8]. Cisco Systems a publié un benchmark mesurant la latence et le débit de Couchbase Server avec une charge de travail mixte en 2012[9].

Licence et assistance modifier

Couchbase Server est une version packagée de la technologie logicielle open source de Couchbase et est disponible dans une édition communautaire sans correctifs de bugs récents avec une licence Apache 2.0[10] et une édition pour un usage commercial[11]. Les versions de Couchbase Server sont disponibles pour les systèmes d'exploitation Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows et macOS.

Couchbase a pris en charge les kits des développeurs de logiciels pour les langages de programmation .NET, PHP, Ruby, Python, C, Node.js, Java, Go et Scala .

N1QL modifier

Un langage de requête appelé langage de requête de forme normale non-primaire, N1QL (prononcé nickel), est utilisé pour manipuler les données JSON dans Couchbase, tout comme SQL manipule les données dans SGBDR. Il a des instructions SELECT, INSERT, UPDATE, DELETE, MERGE pour fonctionner sur les données JSON. Il a été annoncé en mars 2015 sous le nom de «SQL for documents»[12].

Le modèle de données N1QL est une autre forme normale (N1NF) avec prise en charge des attributs imbriqués et de la normalisation orientée domaine. Le modèle de données N1QL est également un sur-ensemble et une généralisation appropriés du modèle relationnel .

Exemple modifier

{
 "email": "testme@example.org",
 "friends": [
  {"name": "rick"},
  {"name": "cate"}
 ]
}
Comme requête
SELECT * FROM `bucket` WHERE email LIKE "%@example.org";
Requête de tableau
SELECT * FROM `bucket` WHERE ANY x IN friends SATISFIES x.name = "cate" END;

Couchbase Mobile modifier

Couchbase Mobile est une suite de produits pour fournir des bases de données NoSQL et de la réplication de données pour les appareils mobiles et embarqués[13].

Couchbase Lite (à l'origine TouchDB) fournit des bibliothèques natives pour les bases de données NoSQL hors ligne avec des mécanismes de réplication peer-to-peer ou client-serveur intégrés.[14] Sync Gateway gère l'accès sécurisé et la synchronisation des données entre Couchbase Lite et Couchbase Server[15].

Bibliographie modifier

  • (en) MC Brown, Getting Started with Couchbase Server, 1st, (ISBN 978-1449331061), p. 88
  • (en) Sitaram Vemulapalli, A Guide to N1QL features in Couchbase 5.5: Special Edition, Couchbase, Inc., , 112 p. (lire en ligne)
  • (en) Chamberlin Don, SQL++ For SQL Users: A Tutorial, Couchbase, Inc., , 146 p.

Notes et références modifier

  1. « Release 1.7.1.1 », (consulté le )
  2. (en) « NewProtocols - memcached - Klingon - Memcached - Google Project Hosting », (consulté le )
  3. (en) Shashank Tiwari, Professional NoSQL, John Wiley & Sons, , 15–16 p. (ISBN 9781118167809)
  4. (en) « Balancing Oracle and open source at Orbitz », GigaOM, (consulté le )
  5. a et b (en) Andrew Brust, « Couchbase 2.0 released; implements JSON document store », sur ZDNet (consulté le )
  6. (en) Derrick Harris, « Couchbase goes 2.0, pushes SQL for NoSQL », GigaOm, (consulté le )
  7. (en) Trond Norbye, « Want to know what your memcached servers are doing? Tap them », Couchbase blog,
  8. (en) Frank Weigel, « Benchmarking Couchbase », Couchbase, (consulté le )
  9. (en) « Cisco and Solarflare Achieve Dramatic Latency Reduction for Interactive Web Applications with Couchbase, a NoSQL Database » [archive du ], Cisco Systems, (consulté le )
  10. (en) « Couchbase Open Source Projects », Couchbase web site (consulté le )
  11. (en) « Couchbase Server Editions », Couchbase
  12. (en) Andy Slater, « Ssssh! don't tell anyone but Couchbase is a serious contender: Couchbase Live Europe 2015 », (consulté le )
  13. (en) « Couchbase Mobile Database - Android & iOS SQLite Alternative », www.couchbase.com (consulté le )
  14. (en) « Lite | Couchbase », www.couchbase.com (consulté le )
  15. (en) « Sync Gateway | Couchbase », www.couchbase.com (consulté le )