L’un des ateliers qui m’a étonné sur ce salon est celui de Couchbase.
J’avais fait une synthèse de CouchDB à une époque et j’avais lu qu’ils avaient racheté Couchbase.
J’en avais déduit un peu rapidement qu’il s’agissait donc du même produit.
Que dire d’une base dont le logo est un canapé et qui prône le je m’en foutisme en affichant un jeune vautré dans un canapé disant « Relax ».

Le premier constat est que Couchbase est assez différent de CouchDB.
Voici une page listant les différences entre les deux:
https://www.couchbase.com/couchbase-vs-couchdb

Qu’est ce que c’est ?

Couchbase est une base NoSql de type document.
Je suppose que m’arrêter à cette phrase va en laisser plus d’un perplexe…

J’entends par base NoSql, un nouveau genre de base de données qui a changé un certain nombre de paradigmes :

  • Abandon du modèle relationnel
  • Abandon des concepts de transaction et de cohérence
  • La manipulation de volumes de données importants
  • Une scalabilité horizontale (la possibilité d’ajouter des nœuds au lieu d’acheter un mainframe)

Il existe 4 catégories de bases NoSql :

  • de type colonne
    • il y a des tables et des colonnes
  • de type graphe
    • application de la théorie des graphes avec des noeuds et des arêtes
    • pratique pour modéliser des relations (réseaux sociaux), des cartes, etc.
  • de type clé valeur
    • il y a une clé d’accès et un objet
    • c’est souvent de type in memory et très rapide
  • de type document
    • un document est un objet JSON
    • Cela colle bien avec une approche objet et la programmation objet

Pourquoi utiliser Couchbase ?

Ce produit n’a pas vocation à être un genre de datalake stockant des pétaoctets de données.
Ce qui m’a été présenté est plutôt de l’utiliser pour des données chaudes et de chercher à tout avoir en mémoire.
Ce serait donc un cache JSON stockant des données sur un mois de profondeur environ.
L’ordre de grandeur maximal pour un cluster est le téraoctet.

Le deuxième point fort est l’adoption de SQL
“N1QL: Get the agility of SQL and the flexibility of JSON”

En regardant sur le site, je trouve 4 modules autour du produit :

  • Global secondary indexes, la possibilité d’indexer
  • Multi dimensional scaling, la possibilité d’ajouter des noeuds
  • Query workbench, un outil graphique pour développer et exécuter des requêtes
  • Full text search, recherche multi critères qui renvoie un score et une liste de documents au plus proche des critères

A ce point, vous devez être en demande de vous approprier cette base au plus vite.
Et bien non 😉 Je vous renvoie vers le site de l’éditeur (très bien documenté au passage).

Nous arrivons au vif du sujet : l’analytique avec Couchbase.

Motivation : Faire de l’analytique opérationnelle

C’est un cas que les bases de données traditionnelles n’aiment pas : l’hybride ; mélanger du batch et du transactionnel.
La solution de Couchbase est de proposer de l’analytique temps réel.
L’architecture contiendra un cluster Couchbase possédant des noeuds transaction et des noeuds batch.
Le module analytique enrichit SQL pour créer et interroger des datasets.
Le principe est de répliquer les données sur lesquelles faire de l’analytique, ce qui permet de ne pas impacter les performances des injections.

Exemple de requêtes analytiques

CREATE DATASET purchases on receipts where type=”purchase”;
SELECT VALUE count(*) from purchases;
SELECT storeId, city, COUNT(1) as nbReceipts,
SUM(amount) as totalAmount, AVG(amount) as avgAmount
FROM purchases
GROUP BY storeId, city
ORDER BY nbReceipts DESC;

Enfin il existe des connecteurs pour s’interfacer avec Tableau par exemple.

En conclusion, il vous reste à approfondir cette base “méconnue” et pourtant facile d’accès grâce à son query langage analytique proche du SQL.
Vous trouverez un certain nombre de sociétés qui utilisent Couchbase.
Le premier exemple dont j’ai entendu parler est Pokémon GO.

!! vive le bigdata !!