L`AVENIR DU NoSQL

publicité
L’AVENIR DU NoSQL
Quel avenir pour le NoSQL ?
Meyer Léonard
2014
L’AVENIR DU NoSQL
SOMMAIRE
Introduction ................................................................................................................. 3
Histoire ..................................................................................................................... 3
Pourquoi NoSQL ? ................................................................................................... 4
Le Sharding .......................................................................................................... 4
La Denormalization ............................................................................................... 5
Le Distributed Caching ......................................................................................... 5
A qui s’adresse le NoSQL ? .................................................................................. 7
Exemples d’utilisation ........................................................................................ 8
Contre exemples................................................................................................... 8
Théorème CAP ..................................................................................................... 9
ACID ou BASE ?................................................................................................. 11
Le NoSQL aujourd’hui ......................................................................................... 12
Les différents types de bases ............................................................................. 12
État de l’art ............................................................................................................. 20
Tour d’horizon des leaders .................................................................................. 22
MongoDB ............................................................................................................ 22
Cassandra .......................................................................................................... 22
Redis .................................................................................................................. 23
Couchbase.......................................................................................................... 23
La contre-attaque du NewSQL ............................................................................... 24
NewSQL et théorème de CAP ............................................................................... 25
La relève ? ............................................................................................................. 27
VoltDB................................................................................................................. 27
Aerospike ............................................................................................................ 29
NuoDB ................................................................................................................ 30
Conclusion ............................................................................................................. 31
Résultats et discussions ............................................................................................ 31
Google Spanner ..................................................................................................... 32
1
Le point de vue du la communauté NoSQL ........................................................... 34
Avis des professionnels ......................................................................................... 35
Conclusion ................................................................................................................ 46
Bibliographie.............................................................................................................. 47
2
Introduction
Les bases de données sont un élément très important dans l’informatique moderne.
Ces dernières années, le modèle relationnel s’est imposé comme la norme. En effet ce
dernier permet un respect des propriétés ACID (Atomicity, Consistency, Isolation,
Durability) et garanti ainsi la sécurité des données. Cependant ces propriétés demandent
des prérequis importants, ce qui peut impacter grandement les performances de la base.
A terme cela peut se traduire par une difficulté de scaling. Certaines entreprises ont donc
décidé de se pencher sur une nouvelle technologie afin de pallier aux problèmes de
performances, quitte à sacrifier la consistance des données.
Ces différents constats peuvent soulever plusieurs points : Quels sont les différents
types de base NoSQL ? Quels sont les avantages et inconvénients du NoSQL ? A-t-il des
concurrents ?
L’objet de cette thèse est donc de fournir une réponse à ces questions en
rassemblant des informations pertinentes et en investiguant les bases de données
identifiées comme Not Only SQL, puis de les comparer avec les bases traditionnelles. Leur
popularité générale auprès des professionnels et utilisateurs déterminera leur avenir. Cette
popularité se mesura par la présence des solutions NoSQL au sein des entreprises ou
solutions de ces derniers, le tout sur une échelle mondiale.
Cela permettra de conclure individuellement puis globalement sur leur pertinence
ainsi que leur avenir.
Cette thèse s’adresse donc à tous les novices sur le sujet ainsi que ceux qui
s’interrogent quant au bienfondé de cette technologie.
Histoire
Le terme NoSQL est pour la première fois sorti de la bouche de Carlo Strozzi en
1998, lors de la présentation de son système de gestion de bases de données
relationnelles open source. Il l’a appelé ainsi à cause de l’absence d’interface SQL pour
communiquer. Les bases NoSQL peuvent bien entendu être utilisées avec du SQL, c’est
pourquoi Strozzi précise qu’il est plus pertinent d’utiliser le terme « NoREL » car ces
dernières s'abstraient du côté relationnel des données. Le mot réapparu en 2009
lorsqu’Eric Evans l’utilisa pour caractériser le nombre grandissant de bases de données
non-relationnelles lors d’une présentation sur les bases de données distribuées open
source.
3
Pourquoi NoSQL ?
Une application web moderne peut supporter jusqu’à plusieurs millions d’utilisateurs
simultanés en répartissant la charge sur un ensemble de serveurs, supervisés par un load
balancer. Ces applications sont donc faites pour le scaling out, à savoir ajouter des serveurs
afin de supporter de plus en plus d’utilisateurs. Le scaling horizontal (ou « out ») tient donc
une place importante dans le contexte du cloud computing, où ajouter et retirer des
instances de machines virtuelles se fait à la demande.
A l’opposé, les bases de données relationnelles (RDBMS) n’ont pas tellement
évoluées depuis leur apparition il y a une quarantaine d’années, mais elles restent un choix
de prédilection. Gérer plus d’utilisateurs devient alors synonyme de moyens financiers
importants. Les serveurs imposants sont souvent complexes, propriétaires et très couteux.
FIGURE 1 SCALING D’UNE BASE RELATIONNELLE
De plus les RDBMS nécessitent la conception d’un modèle relationnel avant de
pouvoir stocker une quelconque donnée. Si les développeurs réalisent qu’ils ont oublié un
champ ou mis un mauvais type de donnée par exemple, le changement devient alors un
problème car il modifie en profondeur le modèle de la base. Ainsi ces changements
importants sont fréquemment évités.
Dans ce cadre, les développeurs ont créé des techniques visant à pallier aux
problèmes de performance.
LE SHARDING
Les bases de données actuelles adoptent encore souvent un modèle centralisé : un
serveur unique, éventuellement redondé en mode actif/passif pour la disponibilité. La
solution la plus courante pour supporter plus de transactions est la scalabilité verticale :
acheter une machine plus puissante (plus d’IO, de CPU, de RAM…). Le sharding quant à lui
4
se traduit par un partitionnement des données sur plusieurs serveurs. Bien que cela
contribue à améliorer les performances, il y a quelques revers :



Complexité : Les requêtes SQL deviennent plus complexes, configuration des
serveurs, backup difficiles…
Single Point Of Failure : Lorsqu’un shard est down, tout l’est également.
Obligation de maintenir un modèle sur chaque serveur.
LA DENORMALIZATION
Il s’agit d’un procédé qui vise à améliorer les performances en lecture via une
redondance ou un groupement des données. Les implémentations de cette méthode se fait
via des vues indexés (SQL Server) ou vues matérialisées (Oracle).
LE DISTRIBUTED CACHING
Le caching appliqué aux architectures distribuées (exemple : Memcached). Cela
permet d’améliorer les performances en mettant en cache les données souvent demandées.
Mais une fois de plus il y a des problèmes comme des limitations sur les requêtes, la
fragmentation du cache ou la disparition du cache lors d’un changement dans les tables.
Toutes ces techniques permettent donc d’étendre les possibilités des RDBMS mais
dévoile un certain constat : Les bases de données relationnelles peuvent, mais ne sont pas
conçus pour répondre à ce problème de scaling important des applications modernes.
Puisque les vendeurs de bases de données relationnelles n’ont aucun intérêt à
proposer des solutions alternatives à des technologies qui génèrent des milliards de dollars,
les développeurs ont dû prendre en main le problème. Google et Amazon par exemple sont
deux leaders du marché qui ont inventé, développé et dépendent de leur propre technologie
NoSQL.
5
En construisant sur leur travail, des vendeurs NoSQL ont commencé à émerger en
proposant des solutions dédiées à l’entreprise.
FIGURE 2 SCALING D’UNE BASE NOSQL
Les systèmes NoSQL, bien que tous différents, partagent des points communs :




Les schémas de la base ne sont pas figés : Les données sont dorénavant bien plus
flexibles car la structure et le type des données peuvent changer à tout moment
sans forcément impacter l’application.
Sharding automatique : Aussi appelé élasticité, une base NoSQL peut se répartir
sur plusieurs serveurs sans l’aide de l’application. De plus des serveurs peuvent
être ajoutés ou retirés à la volée. Pour faire simple, un système NoSQL ne devrait
jamais avoir à redémarrer.
Support des requêtes distribuées : Le sharding d’une base peut dans certains cas
empêcher l’exécution d’une requête complexe. Ce problème est éliminé en NoSQL
où on peut conserver toute la puissance du langage même pour récupérer des
données réparties sur plusieurs dizaines de serveurs.
Caching intégré : Là où le système relationnel devra posséder une infrastructure
physique séparée pour gérer le caching, les systèmes NoSQL le gère nativement
de façon transparente pour l’utilisateur.
6
A qui s’adresse le NoSQL ?
C’est une évidence de dire qu’il convient de choisir la bonne technologie en fonction du
besoin. Il existe cependant certains critères déterminants pour basculer sur du NoSQL.
Taille : Le NoSQL est conçu pour supporter un nombre important d’opérations, de
données, d’utilisateurs etc… Quand quelque chose est conçu de manière tellement
massive que cela doit devenir distribué. Bien que tous les systèmes NoSQL ne
soient pas conçus pour cette problématique, il est possible d’en trouver sans
problème.
Performance en écriture : Intérêt principal du géant Google, Facebook (135
milliards de messages par mois), Twitter (7TB de données par jour). Des données
qui augmentent chaque année. A 80MB/s cela prend une journée pour stocker 7TB,
donc l’écriture doit être distribuée sur un cluster, ce qui implique du MapReduce 1,
réplication, tolérance aux pannes, consistance… Pour des performances en
écriture encore plus puissante, il convient de se tourner vers les systèmes inmemory.
Performance en lecture clé-valeur : Certaines solutions NoSQL ne possèdent
pas cet avantage mais comme il s’agit d’un point clé la plupart d’entre elles en sont
dotées.
Type de données flexibles : Les solutions NoSQL supportent de nouveaux types
de données et c’est une innovation majeure. Les objets complexes peuvent être
mappés sans trop de problèmes avec la bonne solution.
Migration modèle de données : L’absence de modèle facilite grandement les
migrations. En effet le modèle est en quelque sorte dynamique car il est créé par
l’application au run-time.
ACID : Bien que ce ne soit pas le but premier du NoSQL, il existe des solutions
permettant de conserver certains (voire tous) aspects des propriétés ACID. Se
référer au théorème CAP plus bas et aux propriétés BASE.
Pas de SPOF2 : Toutes les solutions n’en sont pas dotées, mais on dénote la
présence d’une configuration relativement simplifiée du load balancing et du cluster
sizing. Cela permet d’obtenir une bonne disponibilité.
Simplicité de développement : L’accès aux données est simple. Bien que le
modèle relationnel soit simple pour les utilisateurs finaux (les données sont
restituées selon la structure de la base), il n’est pas très intuitif pour les
7
1 MapReduce est un patron d'architecture de développement informatique, popularisé (et non inventé)
par Google, dans lequel sont effectués des calculs parallèles, et souvent distribués, de données
potentiellement très volumineuses (> 1 teraoctet).
2 Le Single point of failure est un point d'un système informatique dont le reste du système est
dépendant et dont une panne entraîne l'arrêt complet du système.
développeurs. La réponse pour un problème de base de données ne peut pas
toujours être celle d’embauche d’un DBA, le développeur devrait pouvoir être en
mesure de le résoudre.
Parallel Computing : On peut également voir que le design pattern MapReduce
est souvent embarqué dans les solutions NoSQL, ce qui améliore et facilite les
calculs parallèles dans des architectures distribuées.
EXEMPLES D’UTILISATION
Si plusieurs de ces points sont importants pour un développeur, celui-ci devrait
prendre en considération l’utilisation des systèmes NoSQL. Voyons des cas d’utilisations
plus concrets :







Gestion de larges pans de données non transactionnelles3 comme des logs.
Système en temps réel ou la latence est vitale, comme des jeux par exemple.
Représentation d’objets complexes en base de façon simple.
Des systèmes embarqués qui ne souhaitent pas s’encombrer de l’overhead des
bases traditionnelles.
Système de détection de fraudes qui compare les transactions en cours à des
patterns connus.
Archivage continu et accessible en permanence.
Application web avec base de données online/offline avec synchronisation à la
connexion.
CONTRE EXEMPLES
Bien entendu, le choix d’un système relationnel peut dans la plupart des cas suffire
aux utilisations classiques d’une application quelconque. Les points suivants révèlent des
cas où l’utilisation du NoSQL n’est pas forcément pertinente ou justifié.
Intégrité des données : Les systèmes NoSQL se base sur l’application pour la
protection des données, là où le relationnel utilise une approche déclarative.
Indépendance des données ; En NoSQL, les applications font les données. Un
argument en faveur du relationnel est que des données peuvent durer pendant tout le cycle
de vie de l’entreprise, bien plus que n’importe quelle application. C’est pourquoi il vaut
mieux privilégier le relationnelle dans ce cas.
SQL : Les systèmes NoSQL proposant une interface SQL ne sont pas courants et
peut être pas plus adaptés si l’on est amené à vouloir du SQL.
3
8
Donnée non concernée par un processus métier
Relations complexes : Même si certaines solutions NoSQL proposent des relations,
les systèmes relationnels ont souvent le dessus sur ce point.
Maturité et stabilité : Les bases relationnelles ont une longueur d’avance sur ce
point. Les utilisateurs sont familiers avec leur fonctionnement, leurs possibilités et ont
confiance en elles. Il y a aussi plus de documentation et d’outils disponibles pour ces
dernières. Dans le doute il est donc plus sage de choisir les relations des bases
traditionnelles.
THEOREME CAP
A l’heure de cette thèse, il existe environs 150
solutions NoSQL. Devant cette vague de technologies il
devient de plus en plus difficile de savoir vers laquelle se
tourner. C’est là qu’intervient le théorème CAP. Ce
théorème provient d’une conjecture 4 de 2000 faite à
l’université de Berkeley par Eric Brewer. En 2002, cette
conjecture a été prouvée par Seth Gilbert and Nancy
Lynch, des enseignants du MIT, faisant ainsi d’elle un
théorème. Le théorème énonce donc qu’il est impossible
pour un système distribué de fournir les trois propriétés
suivantes à la fois :



FIGURE 3 ERIC BREWER
Consistency: Tous les noeuds du systèmes voient les même données au
même moment.
Availability: Le requête d’écriture et de lecture sont toujours satisfaites.
Partition tolerance: La seule raison qui pousse un système à l’arrêt est la
coupure totale du réseau. Autrement dit si une partie du réseau n’est pas
opérationnelle, cela n’empêche pas le système de répondre.
Afin de créer une architecture distribuée on doit donc se résoudre à choisir deux de
ces propriétés, laissant ainsi trois design possibles :



CP : Les données sont consistantes entre tous les nodes et le système
possède une tolérance aux pannes, mais il peut aussi subir des problèmes de
latence ou plus généralement, de disponibilité.
AP : Le système répond de façon performante en plus d’être tolérant aux
pannes. Cependant rien ne garanti la consistance des données entre les
nodes.
CA : Les données sont consistentes entre tous les nodes (tant que les nodes
sont online). Toutes les lectures/écritures des nodes concernent les mêmes
4
9
Une conjecture est une assertion pour laquelle on ne connaît pas encore de démonstration, mais
que l'on soupçonne d'être vraie, en l'absence de contre-exemple.
données. Mais si un problème de réseau apparait, certains nodes seront
désynchronisés au niveau des données (et perdront donc la consistance).
Le design CA n’est pas vraiment une option cohérente car un système qui n’est pas
partition tolerant sera, par définition, obligé d’abandonner la consistance ou la disponibilité
lors d’un problème de partition. C’est pourquoi il existe une version plus moderne du
théorème : « Durant un problème de partition, il faut choisir entre la disponibilité et la
consistance.».
FIGURE 4 GUIDE VISUEL AU NOSQL
En examinant les différentes propriétés du théorème, on s’apercoit que si l’ont veut
scaler horizontalement de façon importante, nous avons besoin de partition tolerance. Cela
rejoint donc la version la plus récente du théorème où il faut choisir entre l’Availability et la
Consistency. Les bases de données NoSQL accomplissent cela en perdant le coté
transactionnelle du problème.
10
ACID OU BASE ?
Il est important de noter que dans la majeure partie des cas, quand quelqu’un fait
référence aux principes ACID, il cherche surtout à faire en sorte de conserver l’intégrité des
données. Autrement dit que ces données ne deviennent pas corrompus ou se perdent.
Beaucoup de bases NoSQL peuvent fournir ce principe justement via le principe BASE.
Choisir une base NoSQL revient donc à savoir quoi faire au niveau applicatif pour
compenser les défauts. A savoir l’implémentation de divers mécanismes tels :
o Contrôle de concurrence optimiste : Procédé visant à faire en sorte de
conserver la propriété d’isolation des transactions. Plus précisément chaque
transaction cherchera à savoir si elle s’effectue seule ou non.
o Idempotence des opérations : Fait qu’une opération puisse être répétée
sans incidence sur le système jusqu’à ce qu’elle réussisse.
o Utilisation des transactions longue durée : Technique aussi appelé
« sagas » utilisé dans des environnements distribués où plusieurs transactions
sont groupées avec un identifiant unique afin de restaurer à l’état initial en cas
d’annulation. Cette opération aggrège donc un ensemble de transactions
ACID réduites, mais plus légères qu’un commit en deux temps.
Le principe BASE est donc plus facile à appliquer que des propriétés ACID
complètes. Les processus métiers ne sont au final que des modèlisations des processus du
monde réel. Ils arrivent que ces processus échouent, comme quand un vol est annulé. Que
faire dans ce cas ? Récupérer son argent ? Partir ailleurs ? Ce sont juste des règles métiers
à implémenter différemment en fonction du système. Prenons Amazon qui, afin de tenir la
charge d’utilisateurs, a choisi d’occulter l’isolation de ses transactions. Par exemple, deux
utilisateurs pourraient croire qu’ils ont acheté le dernier exemplaire d’un même livre.
Amazon estime donc qu’il est plus judicieux de s’excuser envers un utilisateur que de tout
ralentir et agacer une myriade d’autres utilisateurs.
Cette notion de BASE (Basically Availabe, Soft State, Eventuallty Consistent) est
donc à l’opposé de ACID. Les deux principes ne sont cependant pas mutuellement
exclusifs. Le principe BASE abandonne donc la consistance au profit de ces nouvelles
propriétés :



Basically available : Le système garantie bien la disponibilité dans le même
sens que celle du théorème de CAP.
Soft-State : Indique que l’état du système peut changer à mesure que le
temps passe, et ce sans action utilisateur. C’est dû à la propriété suivante.
Eventually consistent : Spécifie que le système sera consistent à mesure
que le temps passe, à condition qu’il ne recoive pas une action utilisateur
entre temps.
11
A partir de ce constat, comment déterminer lequel de ce choix est le plus pertinent
pour un cas d’utilisation donné ?
ACID est nécessaire si :
 Beaucoup d’utilisateurs ou processus qui travaillent sur une même donnée au
même moment
 L’ordre des transactions est très important.
 L’affichage de données dépassées n’est pas une option.
 Il y a un impact significatif lorsqu’une transaction n’aboutie pas (dans des
systèmes financiers en temps réel par exemple).
BASE est possible si :
 Les utilisateurs ou processus ont surtout tendances à faire des mises à jour ou
travailler sur leurs propres données.
 L’ordre des transactions n’est pas un problème (voir l’exemple d’Amazon plus
haut).
 L’utilisateur sera sur le même écran pendant un moment et regardera de toute
façon des données dépassées.
 Aucun impact grave lors de l’abandon d’une transaction.
Le NoSQL aujourd’hui
Comme mentionné dans la partie précédente, il existe beaucoup de solutions
NoSQL. Certaines comme HBase, MongoDB ou Neo4j apparaissent régulièrement dans
l’actualité et sont toutes libellées en tant que NoSQL. Il existe cependant des différences
significatives entre elles, liées notamment au théorème de CAP.
LES DIFFERENTS TYPES DE BASES
Associative (ou orientée clé-valeur)
12
Les bases associatives sont les formes les plus simples de bases NoSQL et portent
bien leur nom. Il s’agit d’un système qui stocke des valeurs indexées par des clés uniques.
L’API de requête est très simple puisque basé uniquement sur la clé et contient juste put,
get et delete. Les valeurs stockées sont totalement opaques pour la base et ne sont pas
liées à un modèle de données prédéfini.
Par conséquent il est impossible de filtrer ou demander une partie des données
comme en SQL avec la clause WHERE. Si on ne sait pas précisément ce que l’on veut, on
doit alors itérer sur les données, les filtrer puis garder celles que l’on veut. Cela peut vite
devenir très intensif d’un point de vue traitement, c’est pourquoi il convient d’éviter cette
technologie si on ne connait pas les clés voulues.
En revanche pour une utilisation appropriée permet des performances
impressionnantes sur des opérations de lecture/écriture et un scaling horizontal le plus
extensible du marché. Pour résumer voici les caractéristiques principales du système
associatif :




Aucun SQL
Meilleure scalability horizontal du marché.
Peut ne pas fournir un support des propriétés ACID
Peut offrir une architecture distribuée et tolérante aux pannes.
Implémentations :
DynamoDB : Solution d’Amazon à l’origine de ce type de base. Système ultra
scalable basé sur des SSD rapides. Design de type AP selon le théorème de CAP mais
peut aussi fournir une consistance éventuelle.
Voldemort : Implémentation open-source de Dynamo. Très scalable via un stockage
sur disques. Possibilité d’en faire une base embarquée.
Orientées colonnes
13
Les bases de données orientées colonnes sont grossièrement une évolution du
modèle associatif. Elles constituent la poupe du mouvement NoSQL à cause de leur
récurrence dans l’actualité avec des candidats comme HBase ou Cassandra. De par leur
structure, les bases orientées colonnes se rapprochent des bases relationnelles, à la
différence près que les données sont organisées en colonnes et non en lignes.
Concrètement cela signifie que, contrairement aux bases orientées lignes, les utilisateurs
qui souhaitent des informations précises n’auront pas à s’encombrer des informations
inutiles des autres colonnes. En effet les bases orientées lignes se doivent de lire
entièrement les lignes avant de sélectionner les colonnes désirées par la requête. Les
principaux avantages de ce type de système sont donc :


Il est plus performant d’extraire des données pour une densité importante
d’informations.
Améliore grandement les performances sur les tris ou agrégations de données
car ces opérations sont réalisées via des clés de lignes déjà triées.
Bien entendu si un système est davantage utilisé pour des opérations de mise à jour
ou suppression il est plus judicieux de se tourner vers une base orientée lignes. Imaginez la
mise à jour d’une dizaine de colonnes pour un enregistrement : avec une organisation en
lignes cela fait une recherche, alors qu’en colonnes cela en fait dix. Ces deux systèmes sont
souvent considérés comme complémentaires, c’est pourquoi certains organismes font
graviter leurs processus métiers autour d’une base relationnelle classique (beaucoup
d’update ou delete) et leurs processus de data mining5 autour d’une base orientée colonnes
(beaucoup de tri et agrégations).
La multiplication massive du nombre de colonnes rend ce modèle capable de stocker
les relations one-to-many ce qui permet de couvrir de nombreux cas. De plus, chaque ligne
d’une base orientée colonnes peut posséder son propre modèle (exception faites des
column family et autres supercolumn de certaines implémentations). En se référant à la
figure ci-dessus on peut donc voir des column family (A, B…E) et des colonnes spécifiques
à chaque enregistrement (foo, Tom, scala).
En revanche les requêtes simplistes constituent une contrainte qui destinera ces
bases aux applications pouvant se contenter d’un accès à données simplifiées au profit
d’une performance, d’une scalabilité et/ou d’une fiabilité accrue.
Implémentations
HBase : Utilise un API Java. Adopte un design CA. Présence de quelques SPOF.
Cassandra : Beaucoup d’API disponibles. Adopte un design AP avec consistance
éventuelle. Aucun SPOF car réplication master/master. Moins performant que HBase sur
les insertions de données.
Le data mining est un processus qui permet d’extraire des informations commercialement
pertinentes à partir d’une grande masse d’informations.
5
14
Orientées documents
Les bases de données orientées documents sont une alternative aux bases orientées
colonnes. Elles fonctionnent donc sur le même principe associatif (ici clé-document) mais
avec un ajout de fonctionnalités qui passe par la prise en compte de la structure des
données stockées sous forme de document. Ces fonctionnalités comprennent :



Ajout, modification, lecture ou suppression de seulement certains champs
dans un document
Indexation de champs de document permettant ainsi un accès rapide sans
avoir recours uniquement à la clé
Requêtes élaborées pouvant inclure des prédicats sur les champs
. Les bases de données orientées documents sont donc plus flexibles au niveau de
l’accès aux données car contrairement à leur équivalent colonnes on peut accéder à des
enregistrements en passant par des valeurs. Cette caractéristique les rapproche donc des
bases SQL. De plus ce type de base n’est pas « entravé » par un modèle prédéfinie.
Chaque document stocké possède sa propre structure et types. Cependant bien que ces
documents ne doivent pas se conformer à un modèle, cela ne veut pas pour autant qu’il n’y
a aucune contrainte sur les données. Par exemple il existe beaucoup d’implémentations qui
utilisent le format JSON ou XML La plupart des bases orientées documents fournissent des
API afin de requêter simplement de manière objet, par conséquent le mapping
documents/objets est très simple à réaliser.
Implémentations
MongoDB : Développé en C++. APIs officielles pour beaucoup de langages.
Protocol personnalisé BSON. Réplication master/slave et auto-sharding. Licence AGPL
(commercial et freeware).
15
CouchDB : Développé en Erlang. Protocol http. Réplication master/master. Licence
Apache.
Orientées objets
Le terme de base de données orientée objets remonte à 1985. La première base
commerciale de ce type date quant à elle de 1990, elle a posé les bases du support natif de
la persistance pour les langages orientées objets. Un regain d’intérêt est apparu pour ces
bases durant la première décennie du 21ème siècle lorsqu’elles sont revenues en force
entièrement réécrites en langage objet.
Quand les bases de données sont fortement liées au langage de programmation, il
en résulte ce que l’on appelle un système de gestion de base de données orienté objets
(OODBMS en anglais) Ces derniers permettent aux développeurs de créer, manipuler et
stocker leurs objets en tant que tels dans la base. Ainsi l’application et la base sont
fortement liées, contrairement aux systèmes relationnels ou la séparation est distincte, et où
ce genre de mapping se réalise via des ORMs6.
Les performances entre les deux dépendent entièrement de l’implémentation. Afin de
faire son choix il est pertinent de prendre en compte la scalability horizontal et la durée de
vie des données. En effet il est inutile de s’encombrer avec un couplage application/base de
données fort si les données seront partagées ou dureront plus longtemps que le
programme.
Au-delà de cet aspect, il existe plusieurs atouts notables aux OODBMS:




Relations des objets : La présence de « pointeurs » persistés entre les objets
peut sensiblement améliorer les performances par rapport à des jointures SQL
classiques.
Pas de couche ORM : Réduit significativement le temps de développement,
maintenance et administration.
Modélisation proche de la réalité : Les objets sont organisés et classes et les
objets sont associés à des comportements. Le modèle est donc basé sur les
objets directement plutôt que sur les données et leur traitement.
Pas d’impedance mismatch7.
Une technologie n’étant jamais parfaite il existe bien entendu des contreparties. Déjà
mentionné le couplage fort entre le programme et la base. En effet les OODBMS sont
fortement liés à l’API utilisée, et donc à son langage. De plus, étant donné la nature des
relations, il n’est pas possible de faire des jointures afin de réaliser des requêtes ad-hoc8.
16
6 Technique de programmation qui crée l'illusion d'une base de données orientée objet à partir d'une
base de données relationnelle en définissant des correspondances entre cette base de données et les objets
du langage utilisé.
7 Fait d’effectuer un mapping vers une structure de données différente de la structure source.
8 Une requête ad hoc est une requête qui ne peut pas être déterminé avant son exécution.
Peu d’organismes utilisent cette technologie dans un environnement professionnel,
c’est pourquoi il est difficile de s’informer dessus et de trouver du personnel qualifié. Il existe
cependant quelques exemples :



La bourse de New York utilise Versant pour gérer les actions.
Le Grand collisionneur d’hadrons (particule composite) au CERN en Suisse
utilise ObjectivityDB.
ObjectivityDB est également utilisé comme stockage de données pour les
noms des composants systèmes, le planning des missions satellites et de la
gestion de l’orbite du projet Iridium financé par Motorola.
Implémentations
Objectivity/DB : Réplication master/slave, Nativement .NET et supporte d’autres
langages. Langage de requête OQL. Moteur de requêtes parallèles. Licence commerciale.
Db4o : Réplication vers RDBMS, Support du .NET et Java. Interface de requête SQL
et plugin Visual Studio. Licence GPL.
Orientées graphes
17
Les bases de données orientées graphes sont des systèmes bien différents des
autres bases de données. Pour mieux comprendre, il est nécessaire de revenir sur la notion
de scalability. Il y a en fait deux cotés à la scalability d’une base de données : non
seulement le volume, mais aussi la complexité des données. Les bases orientées graphes
représentent cette complexité en utilisant, comme leur nom l’indique, la théorie des
graphes9. En conséquence, même s’il est possible de pousser le volume de donnée gérée
assez loin (de l’ordre de plusieurs milliards de nodes et relations), l’idée principale reste
d’exprimer des relations très complexes entre des données. Certains diront qu’il est possible
d’exprimer de la complexité avec des bases relationnelles, et ils auront raison, à la
différence près que les relations des graphes sont définies au niveau des enregistrements
de la base et non au niveau du modèle de données. Cela sous-entend deux choses :


Une base relationnelle est plus rapide pour examiner des petits volumes de
données. Lors d’une requête dans une base orientée graphe, il est nécessaire
d’examiner chaque enregistrement pour déterminer la structure des données,
alors que cette structure est déjà connue dans une base relationnelle.
Il est inutile de stocker les relations avec un modèle relationnel, c’est pourquoi
la base orientée graphe prendra plus de place.
Le stockage de relations au niveau des données n’a de sens que si ces relations sont
toutes très différentes, sinon cela revient à dupliquer la même chose encore et toujours.
Nuançons encore ces propos… Imaginez un table Personne et Cours : Il est fréquent
dans un modèle relationnel d’avoir une relation quelconque entre ces deux tables comme le
fait qu’une personne puisse faire partie d’un ou plusieurs cours. Que faire alors si l’on veut
caractériser davantage cette relation ? Ajouter une table intermédiaire avec les informations
désirées. Si par exemple on veut ensuite savoir via une requête combien de personnes sont
associées à un cours, on devra réaliser une opération de jointure. Dans la plupart des cas
cette opération marchera sans problème mais elle n’est pas la plus performante car ici on
doit alors parcourir toutes les tables pour accéder à l’information. Dans le cas d’une base de
données orientée graphes, le cours sera directement associé aux personnes concernées,
ce qui améliore sensiblement les performances. Imaginez maintenant le même problème
mais avec un volume de données plus beaucoup importants : le gain compenserait-il le
problème de stockage des relations ? La réponse est probablement positive mais reste
incertaine car elle dépend de beaucoup de facteurs (présence d’index, de transactions, des
implémentations etc…).
De façon générale on peut dire qu’il est intéressant de choisir ce paradigme lorsqu’on
cherche à représenter des structures chaotiques et complexes tel le social graph de
Facebook. L’utilisation de bases de données orientées graphes se propage rapidement via
une approche hybride où la base relationnelle permet d’obtenir des données brutes et ou la
partie graphe permet de fournir des informations sur les données en question. Bien que
Théorie visant à savoir trouver et exploiter les propriétés des différents types de graphes.
18
9
cette approche soit lourde en administration et développement, cela permet d’obtenir des
informations très pertinentes liées à la business intelligence 10 grâce au graph
mining 11 .Certaines implémentations respectent même les propriétés ACID et utilise des
techniques de compression de données pour prévenir les problèmes de type super node
(où un node est tellement connecté que cela revient à rapatrier une partie du graphe avec
lui). Les algorithmes de traversal12 et la complexité des relations représentées permettent
de fournir des informations que seul un graphe pourrait fournir.de manière performante.
Pour résumer :





Pensé pour des applications avec beaucoup de relations complexes,
La structure du graphe peut évoluer librement.
Les bases orientées graphes ne scalent pas autant horizontalement que leurs
alternatives NoSQL.
Peut fournir des informations extrapolées des relations entre certains nodes.
Manque de support via des frameworks ou des outils.
Implémentations
Neo4J : Développé en Java. Supporte beaucoup de langages. Réplication
master/slave. Propriétés ACID possibles. Langage de requêtes personnalisé « Cypher ».
Titan : Scalability horizontal très poussée grâce au support d’une base orientée
colonnes pour les données. Haute disponibilité avec réplication master/master. Prise en
compte d’ACID avec consistance éventuelle. Intégration native avec le framework
TinkerPop.
L’informatique décisionnelle désigne les moyens, les outils et les méthodes qui permettent de
collecter, consolider, modéliser et restituer les données, matérielles ou immatérielles, d'une entreprise en vue
d'offrir une aide à la décision et de permettre à un décideur d’avoir une vue d’ensemble de l’activité traitée.
11 Cas particulier de structure mining qui définit un processus de recherche et d’extraction
d’informations sur des structures de données semi-organisées.
12 Processus de visiter chaque node d’un arbre au moins une fois.
10
19
ÉTAT DE L’ART
Après plusieurs années d’âpres critiques, force est de constater que le NoSQL a
suscité beaucoup d’intérêts de la part des professionnels. En témoigne Google Trends :
FIGURE 5 EXPLOSION DES RECHERCHES A PARTIR DE 2009
En quatre ou cinq années, l’univers NoSQL a vu son nombre de base de données
tripler. Beaucoup de personnes attendaient une consolidation des premières technologies,
mais contre toute attente un autre phénomène s’est produit. Le NoSQL explose, et continue
d’exploser. Comme dans tous les domaines informatiques, on découvre sans arrêt des
opportunités et des défis à relever pour des nouvelles bases de données.
Tout le monde s’accorde à dire que cette explosion est due à Internet et BigData 13
qui ne cessent de rappeler le problème de volume et complexité des données. Durant les
années passées, un seul projet NoSQL a échoué : la base de données orientée graphe
Sones. La vaste majorité des autres solutions continuent à vivre tranquillement sous licence
open source ou commerciale.
Un autre point important à soulever est la perception du NoSQL par l’industrie. On
peut nettement voir un clivage entre les acteurs les plus anciens, qui essaient de protéger
leurs investissements, et les nouveaux arrivants qui sont principalement des startups
remplies d’idées nouvelles. Tandis que ces derniers optent généralement pour une solution
hybride, les autres ont encore du mal à accepter le NoSQL. On peut cependant observer un
fait intéressant : de plus en plus d’anciennes compagnies se mettent à utiliser ou même
développer des technologies NoSQL afin de séparer leurs données analytiques. On citera
notamment Oracle qui, en quelques mois, est passé du mépris au développement de Oracle
NoSQL Database, une base de données orientée clé-valeur. Microsoft a également
discrètement introduit des notions intéressantes dans la version 2012 de SQL Server
(gestion de données non structurées via stockage en colonnes par exemple).
20
13 Big data (littéralement « grosses données » ou « grande quantité de données ») est une expression
anglophone utilisée pour désigner des ensembles de données qui deviennent tellement volumineux qu'il en
devient difficile de travailler avec des outils classiques de gestion de base de données.
Analysons maintenant ces tendances issues des statistiques du site agrégateur
d’emplois d’envergure mondiale Indeed.com ;
FIGURE 6 EXPLOSION DES OFFRES D’EMPLOIS DEPUIS 2010
Ce segment montre une nette progression de l’occurrence dans les offres d’emplois du
monde entier toutes catégories confondues. En termes de proportions cela reste en
dessous des bases relationnelles classiques qui elles ont plus ou moins stagnées
(exception faite de MySQL).
Autre fait notable, le NoSQL commence discrètement à gagner sa place dans les standards
PaaS14. En effet les services comme Cloud Foundry, dotCloud ou encore Jelastic font trôner
des solutions NoSQL telles que MongoDB ou Redis au milieu des MySQL et autres
PostgreSQL. Lorsque l’heure est plus que jamais au cloud, cela constitue une très bonne
occasion pour le NoSQL de gagner son momentum. Lorsqu’un utilisateur sera confronté à
une décision lors du choix de sa persistance, il est possible qu’il soit amené à repenser à la
pertinence de son modèle ou architecture.
La maturation de la littérature NoSQL commence également à se faire sentir. Après deux
premiers livres publiés exclusivement en Allemand en 2010 et 2011, des éditeurs connus
commencent à s’y mettre. On notera le livre Wiley rédigé par Shashank Tiwari, rempli
d’indications intéressantes. La suite ne s’est pas fait attendre avec deux nouveaux livres en
2012. Récent et avec des exemples concrets, le livre « Seven Databases in Seven Weeks »
est à retenir. Il prend six bases NoSQL et ajoute PostGreSQL dedans, ce qui en fait une
recommandation à ne pas négliger. Citons aussi Manning et son « Making Sense of
NoSQL » avec des chapitres très pertinents.
14
21
PaaS, de l'anglais Platform as a Service, est l'un des types de Cloud computing, principalement
destiné aux entreprises.
Le fait est que tous ces exemples montrent bien que NoSQL a su trouver sa place au sein
de l’écosystème des bases de données. On est donc en droit de se demander qu’en est-il
du statut des leaders du marché ? Vers quoi se dirigent-ils ?
Tour d’horizon des leaders
MONGODB
La solution orientée documents souffre encore des disputes virtuelles, et c’est peut
être une chose naturelle au vu de l’important que prennent les bases de données ces
dernières années. Néanmoins MongoDB avance vite et les seuls problèmes valides
concernent généralement des versions dépassées ou un manque de connaissances. Ce
dernier point a déjà culminé au sommet de l’absurdité quand certains acteurs se sont plaints
de la limite de 2GB sur la version 32 bits, alors que MongoDB le signale clairement dans sa
section téléchargements en conseillant la version 64bits pour des usages professionnels.
Quoi qu’il en soit les investissements et partenariats de MongoDB semblent de plus
en plus prometteurs :





L’industrie a demandé plus de sécurité et des fonctionnalités LDAP.
Full text search15
Abandon de du moteur javascript SpiderMonkey pour V8 afin d’améliorer les
performances MapReduce
Un niveau encore plus fin qu’un lock au niveau des collections pour aider avec
les problèmes de concurrence.
Hash shard key.
La plupart de ces points sont en phases d’être réglés et certains sont même déjà
arrivés. Beaucoup d’architectes auront remarqué la dernière fonctionnalité. MongoDB s’est
souvent vu reproché (notamment par les concurrents) de ne pas implémenter de clé de
Shard16 claire et précise, ce qui n’est pas tout à fait vrai car même avant il y avait moyen d’y
substituer quelque chose de similaire. Dorénavant MongoDB permettra de configurer
simplement une telle clé, ce qui signifie que les utilisateurs pourront en implémenter dans
leur sharding s’ils jugent nécessaire.
CASSANDRA
22
15 Technique de recherche dans un document électronique ou une base de données textuelle, qui
consiste pour le moteur de recherche à examiner tous les mots de chaque document enregistré et à essayer
de les faire correspondre à ceux fournis par l'utilisateur.
16 Champ dans les collections (au sens MongoDB, donc ensemble de documents) utilisé pour
distribuer des documents au sein d’un cluster shard.
Base de données orientée colonnes, Cassandra s’en sort elle aussi plutôt bien en
ajoutant de nouvelles fonctionnalités au fur et à mesure comme l’amélioration de ses
requêtes. Cependant les discussions ne s’arrêtent pas quant au fait que la configuration
d’un cluster Cassandra n’est pas une partie de plaisir. Le point le plus notable reste
DataStax, l’entreprise derrière Cassandra, qui s’efforce d’intégrer des fonctionnalités de
data mining. Depuis le début Cassandra n’était pas considérée comme un puissant système
de requêtes, mais depuis peu et avec l’ajout de nouvelles fonctionnalités, il devient
envisageable de s’essayer à l’analyse des données.
REDIS
Après avoir connu une grosse croissance en 2010, Redis continue tranquillement son
chemin avec l’ajout du « sentinel failover » qui s’occupe de monitorer, notifier et basculer
automatiquement des instances en cas de problèmes. L’intégration du langage Lua, bien
qu’inattendu car tout le monde utilise du Javascript, permettra d’étendre encore les
possibilités de cette base orientée clé-valeur.
COUCHBASE
Depuis sa naissance en 2011 via la fusion de Membase et CouchOne, CouchBase
est devenu un acteur important du milieu NoSQL. Son produit CouchBase Server est donc
un grand pas en avant. Il est intéressant de voir les influences de CouchOne (avec
CouchDB) conservés. Les dernières fonctionnalités de Couchbase sont les suivantes :

Passage d’une orientation clé-valeur à une orientation documents
Support natif du JSON qui permet ainsi d’obtenir des documents avec des
différentes structures

Amélioration des requêtes et indexation.
Les documents peuvent être indexés via des vues. Tous les index sont
automatiquement distribués à travers les nodes d’un cluster. Les requêtes
supportent dorénavant des recherches par clé, par filtre et les agrégats. Les
requêtes sont également traitées pendant des changements de topologie (failover
etc..)

Réplication XDCR (cross data-centers)
Réplication des données sur plusieurs clusters répartis dans plusieurs data-centers
afin de prévenir des catastrophes naturelles ou encore pour rapprocher les données
des utilisateurs finaux pour une meilleure expérience.
23

MapReduce incrémental.
Amélioration des performances des fonctions d’agrégation pour des analyses en
temps réel
La contre-attaque du NewSQL
Michael Stonebraker, gourou des SGBD, aujourd’hui à la tête de VoltDB, s’est fait
connaitre comme un fervent dénonciateur du mouvement NoSQL. Pour Stonebraker il faut
une nouvelle génération de bases de données : “Ce qui a changé en 25 ans, c’est que nous
soumettons tous des requêtes via Internet, l’effet étant
que cela a envoyé les volumétries au travers du plafond”.
Et outre les volumes en jeu, il se pose la question de la
disponibilité : “En 1985, quand vous aviez un service en
ligne, l’idée était qu’en cas de crash vous deviez
redémarrer le plus rapidement possible à partir de vos
backup. Aujourd’hui, tout downtime est impossible : si
vous n’êtes pas 100% en ligne, vous êtes hors coup !”.
A partir de là, trois pistes sont possibles : les bases
de données SQL traditionnelle : “Vous pouvez exécuter
les vieilles bases SQL, que j’appelle les bases “legacy”, FIGURE 7 MICHAEL STONEBREAKER
des éléphants donc certaines lignes de code ont été écrites… il y a 30 ans !”. Seconde
option, celle du NoSQL. Contrairement à ce qu’on pourrait croire, il se montre tout autant
critique sur cette nouvelle génération vis-à-vis des applications OLTP 17 : “NoSQL a
abandonné SQL, a abandonné des atouts pour gagner en performance et scalability mais
ne convient pas à l’OLTP. Il faut le bon outil pour la bonne tâche”. La troisième option
évoquée par Stonebraker est d’opter pour NewsSQL : “NewSQL, c’est conserver SQL,
conserver le modèle relationnel et conserver ACID tout en ayant la performance et la
scalability”.
Alors au final, qu’est-ce que le NewSQL ? NewSQL est né de la rencontre de 3 types
d’architecture : relationnelle, NoSQL et grille de données (ou cache distribué). En effet,
NewSQL se positionne comme un stockage distribué conçu dans le prolongement des
architectures NoSQL, pour des accès transactionnels à fort débit au moyen d’une interface
SQL. Du point de vue de la scalability il est donc un concurrent direct de solutions NoSQL
comme Cassandra. Mais contrairement à ces solutions il conserve une interface
relationnelle via le SQL ce qui est l’une de ces forces. Enfin la plupart des solutions
NewSQL proposent un stockage en mémoire. Le stockage en mémoire distribué sur
plusieurs machines, sous forme de grille de données est largement utilisé depuis une
dizaine d’années dans les environnements où une faible latence est critique, notamment
24
17 Type d'application informatique qui sert à effectuer des modifications d'informations en temps réel.
Ces systèmes sont caractérisés par un traitement des requêtes très rapides tout en maintenant l’intégrité des
données
dans certaines applications des banques d’investissement. Les solutions NewSQL
partagent ainsi un positionnement intermédiaire entre solutions NoSQL et grille de données.
Depuis plusieurs années déjà (fin des années 90), les grilles de données existent.
Elles offrent des débits 10 fois supérieurs aux SSD (Solid State Drive) et des temps d’accès
100 fois inférieurs.
Pendant longtemps, ce type de technologie a été utilisé en tant que cache, du fait
des limitations sur la taille de la RAM et de son absence de durabilité (la donnée est perdue
en cas de perte d’alimentation). Le caractère distribué du stockage dans les grilles de
données a apporté une solution à ces deux problèmes. En permettant d’augmenter la taille
du stockage par ajout de machines, elles permettent d’atteindre des volumes de plusieurs
centaines de GB, très suffisant pour stocker la plupart des bases transactionnelles. En
répliquant une même information sur plusieurs machines, elles permettent de faire survivre
la donnée à une coupure électrique sur une machine.
Cette nouvelle génération semble donc régler tous les problèmes que nous
rencontrons à la fois avec NoSQL, mais aussi avec les bases relationnelles. Mais alors
qu’en est-il de théorème de CAP ?
NewSQL et théorème de CAP
Nous venons donc de définir le NewSQL comme une nouvelle race de bases de
données relationnelles créée pour être scalable sur des architectures distribuées, ou encore
éviter le problème de la scalability horizontale via la performance. Retenons aussi que cette
technologie retient les principes ACID et un possible support du SQL.
En examinant cette description on peut voir qu’elle se rapproche fortement de la
trinité du théorème de CAP, à savoir : disponibilité (performance), consistance (ACID) et
tolérant aux pannes (architecture distribuée). Ce constat va à l’encontre de la
compréhension générale du théorème. Comment est-il alors possible de choisir les trois
propriétés ?
Le théorème de CAP n’est en fait pas si simple. Comme le suggère Henry Robinson
de Cloudera, il ne s’agit pas juste d’en « choisir deux ».
« En fait, le père du théorème Dr Eric Brewer, a lui-même confirmé que le coté ‘deux
sur trois’ de théorème est trompeur. Premièrement, du fait que les pannes soient rares, il y
a peu de chances de devoir choisir entre C et A quand le système n’a pas de problème.
Deuxièmement le choix entre C et A peut se produire plusieurs fois dans le système à un
niveau de granularité plus faible. Non seulement ces sous-systèmes peuvent faire des choix
différents, mais ce choix peut changer en fonction du type d’opération, d’utilisateur ou même
de donnée. Au final les trois propriétés ne se résument pas à un choix binaire. La
disponibilité par exemple peut être traduite de zéro à cent pourcent, mais il y a aussi
beaucoup de niveau de consistance et de pannes »
25
Nous savons en effet depuis le NoSQL que cette affirmation est vraie à cause de
l’adoption du principe BASE, ou encore à cause des différentes implémentations comme
Cassandra. Il est donc clair qu’il est possible d’avoir des systèmes
tolérants aux pannes, disponibles et bénéficiant d’un certain degré
de consistance.
La tolérance aux pannes n’est en revanche pas quelque
chose d’aussi ajustable. D’ailleurs la preuve du théorème de CAP
se base sur une supposition à son sujet. Coda Hale, un ingénieur à
Yammer l’explique : « La tolérance aux pannes est obligatoires
dans un environnement distribué. On ne peut pas s’en passer. ».
En effet, comme expliqué dans la partie sur le théorème de CAP,
nous avons vu que le design CA n’était pas cohérent. La personne
ayant développé cela est un professeur à Yale qui se nomme
Daniel Abadi.
FIGURE 8 DANIEL ABADI
Tout comme le fait que les systèmes puissent retenir un certain degré de
concistance, Abadi signale qu’il est également possible de ne retenir qu’un certain degré de
disponibilité.La disponibilité n’est en fait sacrifiée qu’en cas de panne, selon ses dires. Par
conséquent, il en conclu que la consistance et et la disponibilité sont asymétriques et
introduit la notion de latence pour rééquilibrer l’équation. Étant donné que le problème
consistance contre disponibilité n’est pas présent partout (quand il n’y a pas de panne, il n’y
a pas de choix à faire), il note qu’il est plus judicieux de choisir entre la latence et la
consistance, qui lui l’est.
En se référant au wiki de Cassandra on comprend tout à fait où il veut en venir :
« Le théorème de CAP stipule que l’on doit choisir entre consistance, disponibilité et
tolérance aux pannes. On ne peut pas avoir les trois à la fois et bénéficier d’une bonne
latence. Cassandra mets en avant la disponibilité et la tolérance aux pannes (AP). Les
compromis entre consistance et latence peuvent être ajustés avec Cassandra. Vous pouvez
avoir une forte consistance avec Cassandra (contre une augmentation de la latence ».
Cela confirme donc la démonstration d’Abadi. Le CEO de ScaleDB, Mike Hogan, a
également publié un article sur le sujet en définissant le CAP event horizon : « La situation
à laquelle la latence pour un cluster excède ce qui est acceptable et que par conséquent il
est temps de faire des concessions. »
26
Pour reprendre son exemple : imaginez une base avec réplication master/slave.
Ajoutez dix slaves et cela ralenti le système. Ajoutez en 90 et il y a un problème de
réplication synchrone. En d’autres termes, la consistance à petite échelle n’est pas un
problème, mais à grande échelle cela devient impossible car la latence devient
inacceptable. Maintenant si vous assignez les slaves seulement en lecture et le master en
lecture/écriture vous pourrez utiliser ce système avec réplication synchrone sans atteindre
l’event horizon. Cependant si le master subit une panne, tout le système s’écroule. Cela
devient donc un problème de disponibilité. Avec une réplication master/master, dès le
premier master, on atteint l’event horizon. Il revient ensuite au système de proposer des
solutions pour régler les problèmes du CAP, tout en pensant à maintenir une latence faible.
Un exemple plus concret avec le CEO de Citrusleaf qui prétend que son produit
bénéficie d’une forte consistance en réduisant l’importance de la disponibilité en cas de
panne : « Pendant la panne, Citrusleaf paraitra moins disponible à cause de la latence,
jusqu’à ce que la reconfiguration du système se fasse. Pendant cette période, les
transactions sont toujours présentes mais mises en file et routées vers d’autres nodes. En
théorie le cluster sera donc moins disponible.».
Au final, comme pour la base NoSQL et ACID Citrusleaf, les bases de données
NewSQL ne sont pas conçues pour échapper au CAP event horizon en étant tout autant
disponibles qu’éventuellement consistante. Elles sont juste conçues pour retarder le plus
possible le CAP event horizon. Pour se faire elles possèdent souvent des architectures qui,
dans le cas d’une panne, sont très consistantes et bénéficie d’un certain degré de
disponibilité.
La relève ?
.
VOLTDB
Déjà mentionné auparavant VoltDB, le bébé de Michael Stonebreaker, est une base
de données relationnelle en mémoire. Elle est née des travaux académiques réalisés sur le
moteur de traitement de transaction H-Store. H-Store a été commercialisé sous le nom de
VoltDB pour la première fois en 2010. Trois ans après elle revient avec sa version 3 où elle
pousse les performances encore plus loin.
John Hugg, ingénieur chez VoltDB explique clairement le but de la base de données :
supporter des applications OLTP dans un contexte de BigData. Inutile de s’intéresser à
VoltDB si votre système n’est pas concerné, précise-t-il. Tout ce qui importe c’est donc la
vitesse à grande échelle avec des propriétés ACID complètes. Quelques faits notables sur
l’architecture :
27



Stockage des données en RAM : Les inconvénients du disque disparaissent
comme le buffer pool ou l’attente de fin de blocages du disque
Réplication : Persistance garantie car les données résident sur plusieurs
mémoires principales.
Transactions via procédures stockées en Java : L’accès aux données se
fait toujours via SQL, mais exécuté depuis une procédure stockée avec un
système commit/rollback.
VoltDB se différencie des autres bases de données car ses architectes ont retiré les
quatre sources principales d’overhead d’une base : logging (19%), latching18 (19%), locking
(17%), B-tree et opérations sur la gestion du buffer (35%). Avec cette approche, VoltDB
peut se vanter d’être rapide, sans pour autant perdre les propriétés ACID. A quel point ?
Les représentants de la base prétende être 100 fois plus rapide que MySQL, jusqu’à
13 fois plus rapide que Cassandra et 45 fois plus qu’Oracle. Le tout avec un scaling quasi
linéaire jusqu’à 50 nodes, c'est-à-dire que la latence n’augmente pas dramatiquement jusqu’
50 nodes (avec replication).
Bien sûr ces comparaisons ne sont pas très pertinentes, notamment celle avec
Cassandra car elle a été conçue pour stocker des petabytes de données réparties sur des
centaines de nodes pouvant individuellement être ajouté à chaud. Techniquement il n’y a
pas de comparaison. On peut cependant supposer que le but de ce benchmark est
essentiellement de prouver que SQL et ACID ne sont pas synonymes de lenteur.
VoltDB reste donc une technologie à surveiller même s’il est facile d’occulter le fait
qu’elle ne supporte qu’une partie de SQL ’99, ce qui signifie par exemple pas de ALTER ou
DROP. En effet modifier la structure à la volée n’est pas performant et cela va à l’encontre
de la philosophie du produit. Par conséquent si on veut modifier la structure du modèle, il
faut redémarrer tout le système. Personne n’échappe au théorème CAP.
18
Mécanismes des lock système bas niveau qui coordonne l’accès concurrent à des données
28
partagées
AEROSPIKE
Anciennement Citrusleaf, Aerospike est une
conçu pour le temps réel. Elle a également racheté
prend parti d’amener le relationnel au NoSQL et
revendique NoSQL (et à raison), on peut
aspects intéressants.
base de données orientée clé-valeur
la base NewSQL AlchemyDB qui elle
non l’inverse. Bien qu’Aerospike se
tout de même dénoter certains
L’approche hybride tout en un adoptée est assez novatrice et pour cause :







Données stockées sur SSD de façon optimisé
Index en mémoire
Resharding et repartition des données automatiques
Scaling horizontal linéaire
Entièrement ACID si besoin
99% des transactions en dessous de 1ms
Load balancing
Son coté clé-valeur rend donc Aerospike hautement scalable en plus de bénéficier de
bonne performance grâce à son architecture, tout en étant ACID compliant. Le directeur des
ventes en ingénierie à Aerospike, Young Paik, a cependant admis certains faits :


Ce n’est pas un substitut à Hadoop. Si on veut analyser 100TB de donner, Aerospike
n’est pas un bon choix.
Avoir des enregistrements de plus e 1MB n’est pas une bonne idée.
29
NUODB
NuoDB (par la startup du même nom) a été créé en 2008 en tant que NimbusDB,
nom qui fut changé en 2011. NuoDB vend donc des solutions de bases relationnelles clévaleur via le cloud. Ces bases totalement NewSQL respectent donc les propriétés ACID et
bénéficie de l’ensemble de SQL ’99. NuoDB utilise une architecture distribuée objet dans le
cloud. Ces objets sont appelés « atom » (atome en français) et possèdent des données et
métadonnées les décrivant.
Chaque atom communique donc les uns avec les autres en P2P de manière
asynchrone via des messages. NuoDB justifie ce choix en invoquant le fait que les bases de
données relationnelles classiques soient difficiles à scale car elles étaient justement
synchrones, se reposant sur un système de lock avec un node master qui s’occupait de
gérer les transactions. Selon eux, NuoDB est donc capable d’effectuer tout ce qu’une base
relationnelle est capable de faire (comme créer, supprimer ou modifier un enregistrement).
Quand un Atom est modifié dans NuoDB, il envoie donc un message à toutes ses copies,
répliquant ainsi de manière transactionnelle les changements via un système de file de
messages asynchrones.
Autres particularités :





Scalable de façon élastique : Scaling horizontal ou vertical à la volée. L’ajout
d’un node augmente systématiquement les performances.
Redondance : L’architecture distribuée continuera de fonctionner même s’il y
a plusieurs pannes.
Auto réplication : Un node ajouté est automatiquement répliqué.
Sécurisé : Les messages entre atom sont sécurisés et encryptés par défaut.
Intégration : Support de Java EE, .NET, node.js, Python et autres en plus de
fournir des supports ORM tels Hibernate.
30
NuoDB se présente plus ou moins comme un alien de la persistance et joue
beaucoup sur ses points forts. Ils sont cependant tout à fait conscient du théorème CAP et,
étant relativement jeune, ils n’ont pas encore dévoilé tous les tenants et aboutissants de
leur architecture. En effet la plupart des documents réellement intéressants ne sont pas
encore disponibles. Toutefois c’est une approche nouvelle avec beaucoup de promesses et
à surveiller de près.
Conclusion
A la lumière des chiffres avancés dans l’état de l’art, nous avons vu que le milieu des
bases de données NoSQL est tout à fait présent sur le marché. Cependant de nouveaux
concurrents sont récemment arrivés : ces nouveaux challengers NewSQL utilisent une
approche qui leur est propre. NoSQL quant à lui continue son chemin. Nous avons aussi vu
des technologies hybrides également prometteuses. Qu’en est-il alors du futur de NoSQL ?
Va-t-il continuer de creuser son côté BigData et stockage de masse ou essaiera-t-il de se
mélanger aux autres mouvements ?
Résultats et discussions
Fin 2013, Michael Stonebreaker est passé sur un podcast audio appelé « Structure
Show ». Il fut invité afin de partager son avis concernant l’état du marché des bases de
données, NoSQL inclus ainsi qu’Oracle et l’installation MySQL de Facebook. Sa prédiction
fut la suivante :
« Il y aura trois, quatre, cinq, voire peut-être six catégories de base de données
architecturées très différemment, et pour chaque catégorie on verra deux à trois éditeurs
émerger. Et je pense que le cœur, autrement dit les bases de données anciennes
générations, vont petit à petit disparaitre. Le tout se fera peut-être sur une dizaine
d’années. »
Concernant le NoSQL il ajoute :
« Ma prédiction est que le NoSQL va finir par dire Not Yet SQL […] Cassandra et
Mongo ont tous les deux annoncé ce qui ressemble, à moins de pinailler, à un langage haut
niveau qui est quasiment du SQL. »
Il affirme aussi que le NoSQL va se rediriger vers ACID et que c’est peut-être même
déjà en cours :
« Je pense que le plus gros partisan du non-ACID est historiquement un type appelé
Jeff Dean chez Google, qui est essentiellement responsable de tous leurs choix concernant
les bases de données. Et il a récemment développé un système appelé Spanner… Il s’agit
d’une solution entièrement ACID, et puisque Google retourne vers ACID, je pense que le
marché NoSQL va s’éloigner de la consistance éventuelle. »
31
Stonebreaker continue sur la situation d’Oracle :
« L’autre point que je trouve vraiment fascinant et qui n’a pas vraiment été remarqué,
c’est que SAP est maintenant dans le business des bases de données et que… Les clients
de SAP sont les plus gros clients d’Oracle à l’heure actuelle. […] Je m’attends à ce que SAP
soit plein d’arguments pour que leurs clients passent d’Oracle à SAP HANA. »
En effet les systèmes orientés OLAP19 tels Oracle ou HANA constituent le tiers du
marché, et si Oracle en venait à perdre cette part, sa position de leader du marché pourrait
être remis en cause. Concernant le reste, on est en droit de se demander si le seul fait que
Google fasse machine arrière suffise pour que NoSQL en fasse autant… Après tout, qu’estce que Google Spanner au juste ?
Google Spanner
Spanner est une base de données scalable
globalement distribué construite et déployée par Google.
Au plus haut niveau d’abstraction, il s’agit d’une base qui
répartit les données sur plusieurs groupes de machines
à état Paxos 20 dans des datacenters partout dans le
monde. La réplication est utilisée pour une disponibilité
globale et les clients bénéficient d’un failover
automatique entre les répliques. Spanner redistribue
automatiquement les données (auto-sharding) entre
machines dès que la quantité de données ou de
serveurs changent. De plus il migre automatiquement les données afin d’équilibrer la charge
ou répondre aux problèmes techniques.
La base de Google a été conçu pour gérer jusqu’à plusieurs millions de machines
réparties sur des centaines de datacenters et elle peut supporter jusqu’à plusieurs trillions
de lignes. Des applications peuvent utiliser Spanner pour assurer une haute disponibilité
même face à des catastrophes naturelles car la réplication peut même se faire sur plusieurs
continents.
Comme énoncé par Stonebreaker, l’esprit derrière Spanner porte le nom de Jeff
Dean. Ce dernier énonce la raison du revirement de Google vers NewSQL dans le
whitepaper de Spanner :
« Nous pensons qu’il est mieux que les développeurs soient confrontés à des
problèmes liés à une surutilisation des transactions lors d’une monté en charge, plutôt que
devoir réussir à trouver des solutions logicielles pour pallier à l’absence de transactions ».
19
32
Type d'application informatique orienté vers l'analyse sur-le-champ d'informations selon plusieurs
axes, dans le but d'obtenir des rapports de synthèse tels que ceux utilisés en analyse financière. Les
applications de type OLAP sont couramment utilisées en informatique décisionnelle, dans le but
d'aider la direction à avoir une vue transversale de l'activité d'une entreprise.
20 Paxos est une famille de protocole pour résoudre le consensus dans un réseau de nœuds
faillibles. L'approche de la machine à état est une technique pour convertir un algorithme en un
algorithme résistant aux pannes et distribué.
Cela peut sembler ironique puisque Google BigTable a contribué à la révolution
NoSQL… On peut constater que la plupart des critiques à l’égard du NoSQL se sont
avérées être un problème pour Google aussi. Seulement, Google a résolu le problème
comme eux seuls ont l’habitude de le faire : un savant mélange d’une théorie et technologie
avancées. Pour les utilisateurs, il en résulte de véritables transactions, un modèle de
données stricte et un langage de requêtes que beaucoup désiraient, le tout hautement
scalable et disponible.
L’ingéniosité de la plateforme repose dans ce que Google appelle l’API TrueTime.
Concrètement cette API utilise des antennes GPS, des satellites et des horloges atomiques
afin de garantir une synchronisation précise au sein du réseau Google.
Pour bien comprendre l’intérêt de TrueTime, il convient de bien comprendre les
limites des bases de données actuelles. De nos jours il existe beaucoup de bases pouvant
stocker des données sur des milliers de serveurs… La plupart furent inspirées par le papier
sur BigTable ou des technologies similaire comme Dynamo de Amazon. Ces systèmes
fonctionnent bien, mais ils ne sont pas conçus pour gérer des données entre plusieurs data
center. En tout cas pas de manière à ce que les données restent en permanence
consistantes (au sens du théorème CAP).
Selon Andy Gross, l’architecte principal de Riak, une base de données orientée clévaleur inspirée de Dynamo, le problème réside dans le fait que les serveurs doivent
communiquer en permanence via le réseau. Cela permet d’assurer qu’ils puissent stocker et
retrouver facilement des données, seulement cela ralenti fortement le système si on
disperse ces serveurs sur plusieurs emplacements géographiques bien distincts. On en
revient donc au problème de latence lié au théorème CAP.
Max Shireson le président de MongoDb Inc., dont la base de données MongoDb suit
les traces de BigTable, présente le problème sous un autre angle :
« Imaginez-vous en train d’utiliser en web service servant à transférer de l’argent
entre deux banques : l’une en Europe et l’autre en Asie. Si vous êtes en Europe, vous
pourriez voir la complétion du transfert, mais à cause de la latence, quelqu’un en Asie ne le
pourrait peut-être pas. […] Autrement dit le service ne marche pas tout le temps comme il
est supposé le faire puisque tout le monde n’a pas la même vue sur le données. Par
conséquent les données ne sont pas consistantes. »
Si vous imaginez un service utilisé par des millions de personnes, vous pouvez
concevoir l’étendue du problème. En effet, lorsqu’énormément de personnes essaient
d’accéder à un système globalement distribué et qu’il y a une certaine latence dans les
communications, cela devient très difficile de synchroniser le tout.
Bien entendu, Spanner est une technologie propriétaire et tout le monde n’a pas le
moyen de se payer des horloges atomiques. Cependant, Andy Gross précise que Google a
souvent tendance à être le fer de lance de l’open source et que le simple fait de voir
comment procède le géant de l’informatique peut être très intéressant.
33
Le dernier point à soulever reste la situation de Spanner par rapport au théorème
CAP. Sur le papier, la solution de Google semble en effet posséder les trois axes du
théorème. En pratique ce n’est pas le cas… Selon Jeff Darcy, un ingénieur de chez RedHat,
Spanner est en fait un système CP :
« Les span-serveurs forme des groupes Paxos, qui peuvent s’étendre sur plusieurs
datacenters. Chaque groupe a un leader qui maintient une table de verrous tout en tenant
un rôle spécial dans la gestion de la concurrence. […] Une transaction read-write utilise une
gestion de la concurrence pessimiste, ce qui requiert la réponse du leader. C’est un aspect
commun des systèmes CP. […] Basé sur tout ça, mon interprétation est qu’en présence
d’un problème, la possibilité d’écrire sera sacrifiée au profit de la consistance. »
Le point de vue du la communauté NoSQL
Vers fin Avril 2014, la conférence NoSQL Matters s’est déroulée en Allemagne à
Cologne. Divers sujet y ont été abordés, y compris le futur du NoSQL. Pendant 45 minutes,
Ted Dunning s’est attardé sur Big Data et la réaction de l’industrie par rapport aux besoins
futurs.
Pour commencer, il présente ce graphique :
On constate immédiatement un buzz autour de Hadoop depuis 2009, et selon
Dunning c’est un indicateur de la direction que NoSQL doit prendre pour avoir du succès. Il
signale aussi qu’ayant été conçu à l’origine pour du batch processing 21, Hadoop devra se
diriger vers des requêtes en temps réel. Concrètement il s’agit de se consacrer davantage
aux problèmes opérationnels. Pour y parvenir il faudrait que NoSQL soit prêt à évoluer en
une plateforme complète via l’incorporation de ces différents points :
21
34
Enchaînement automatique d'une suite de commandes (processus) sur un ordinateur sans
intervention d'un opérateur.






SQL : Langage standard et supporté par beaucoup de choses. Un support partiel
n’est pas suffisant.
Support des transactions : Possible avec la bonne implémentation. Dunning
évoque également Spanner pour appuyer ce point.
Meilleures performances sur les scans : Des scans lignes par lignes sont bien trop
lents, il faudrait envisager l’orienté colonnes.
Stockage de fichiers : Utile pour les images par exemple.
Snapshots/miroirs : Contrôle de version pour la base.
Agrégats incrémentaux : Faire des opérations d’agrégats au fur et à mesure que
les données arrivent afin d’améliorer les performances lorsque ces opérations seront
demandées.
Du point de vue du co-créateur de Hadoop, Doug Cutting, l’industrie va continuer de
se baser sur les travaux de Google pour progresser. Selon lui Spanner ouvre des
possibilités pour des plateformes open source distribuées comme Hadoop. En effet, Hadoop
permet de traiter des données sur de larges clusters en parallèle. Actuellement la
plateforme est surtout utilisée pour autre chose que de l’OLTP (qui constitue le moteur des
entreprises comme les e-commerces ou CRM22). Spanner démontre qu’il est possible que
de grandes entreprises puissent s’intéresser à Hadoop afin de faire de l’OLTP globalement
distribué. Cutting précise sa pensée :
« Dans la plupart des cas, les gens sont satisfaits avec leur solutions relationnelles
liées aux problèmes OLTP, et il n’y a généralement pas besoin de se diriger vers Hadoop.
[…] Cependant, lorsqu’une entreprise grandit il se peut que le changement opère. Je pense
que le reste d’entre nous vont en arriver là dans les prochaines années… »
Lorsqu’on lui parle du futur de Hadoop, voici sa réponse :
« Tout bouge très vite : je pense que la pratique la plus répandue sera de voir
Hadoop comme un kernel, à la manière de Linux. Cela deviendra de plus en plus le centre
d’un vaste nombre d’applications. »
Avis des professionnels
Jusque-là nous avons surtout obtenu l’avis des gourous et des éditeurs des
technologies concernées, mais qu’en est-il des professionnels du milieu ? Autrement dit, les
gens qui sont en en première ligne et ce qu’ils ont à dire sur le sujet. En outre, j’ai décidé de
réaliser une interview avec un de ces professionnels.
22
35
Les CRM (Customer relationship management) sont des systèmes qui permettant de gérer les
interactions avec des clients.
Bonjour Stéphane, est-ce que tu peux te présenter ?
Je suis Stéphane Landelle, le directeur technique d’EBusiness
Information. Je travaille on va dire… Dans le monde Java au sens
large depuis quasiment une quinzaine d’années. Chez EBusiness je
m’occupe de tout ce qui est animation technique, un peu
d’encadrement de stagiaires, et puis j’anime également certains de
nos projets open source. Depuis quelque temps je développe
beaucoup en Scala.
Connais-tu NoSQL et as-tu déjà croisé ces technologies en entreprise ?
Franchement ça commence juste… De manière générale la France est relativement
frileuse sur le plan technique et attend souvent de voir les technos se stabiliser et guette
notamment ce qui peut se passer sur le marché Américain ou Anglo-saxons. Donc c’est des
technos qu’on voit de plus en plus apparaitre, mais c’est assez récent. Et puis tout le monde
n’a pas besoin de gérer de très grosses volumétries donc tout le monde n’a pas besoin de
Big Data
On commence à voir apparaitre depuis une ou deux années des projets avec du Big
Data, avec notamment d’autres rosters comme du MongoDB ou des gens qui se servent de
Redis, ou encore ElasticSearch qui commence à être de plus en plus répandu.
As-tu déjà utilisé des technologies NoSQL ?
Je monte quelques petits POC. Je ne peux pas tester toutes les technos que je
regarde de près ou de loin, donc voilà… J’ai déjà joué avec MongoDB, un petit peu avec
Cassandra, un petit peu avec ElasticSearch et Neo4J… Ce n’est pas des solutions que j’ai
mis en production, moi personnellement, mais c’est des choses qu’on est en train de mettre
en place car les besoins commencent à apparaitre chez nos clients.
36
As-tu déjà entendu le terme NewSQL ?
J’ai connu les différentes déclinaisons de la signification que peut avoir NoSQL, la
dernière en date étant beaucoup « No, SQL ! » , mais NewSQL non.
Que prédis-tu concernant le futur des bases relationnelles et du NoSQL ?
Il y a une grande différence entre ce qu’on peut observer sur la blogosphère
technique, ce qu’on peut observer dans le marketing des différents vendeurs de base de
données, qu’elles soient relationnelles ou NoSQL, par rapport à ce qui est réellement utilisé
chez les clients sur des projets.
Typiquement, il faut pas se leurrer, les bases de données relationnelles occupent un
très grosse part du marché et vont continuer à l’occuper, ne serait-ce que parce que les
SGBDR continuent également à évoluer. Par exemple que ce soit Oracle ou PostgreSQL,
elles sont maintenant capables de stocker et manipuler du JSON, et SQLite progresse
beaucoup également. Donc voilà les SGBDR sont loin d’être morts et ce qu’il faut voir aussi
c’est que pendant longtemps on a confondu la complexité des SGBDR avec la complexité
des ORMs qu’on construisait par-dessus… Et depuis quelques mois, dans les choses
tendances, ce qu’on voit apparaitre c’est de revenir à des choses plus proches du métal et
recommencer à convenablement maitriser sa base de données relationnelles. Arrêter de
vouloir utiliser des ORMs d’une complexité dingue, comme notamment dans le monde Java
Hibernate/JPA, et puis revenir à des choses plus proches du natif à savoir du SQL, tout en
exploitant convenablement les possibilités des bases de données relationnelles. De plus
que ce soit pour les SGBDR ou NoSQL, il y a besoin d’une vraie expertise pour leur
administration, ce ne sont pas des choses qui s’improvisent.
37
Sur les bases de données NoSQL, on se met à voir un peu plus de recul et
d’intelligence par rapport à leur utilisation. La première approche des gens qui
commercialisait NoSQL c’était de dire « jeter vos bases de données relationnelles » et ça a
causé beaucoup d’échecs donc le discours marketing à maintenant évolué plus dans le
sens de « Not Only SQL », donc trouvez la bonne solution NoSQL adaptée à votre cas
d’utilisation parce que voilà NoSQL c’est un fourre-tout. Vous pouvez avoir besoin de
documents et à ce moment-là MongoDB peut être une solution. Vous pouvez avoir besoin
de stocker uniquement de la clé valeur et à ce moment-là Redis peut être intéressant. Vous
avez besoin de stocker des choses qui sont purement relationnelle comme du graphe,
Neo4J peut être une solution pour vous. Vous n’avez pas les mêmes besoins selon le fait
que vous vouliez gérer des volumes monstrueux ou pas etc… Bref il faut trouver la solution
de stockage adaptée et les différentes technologies NoSQL peuvent être une réponse
pertinente. Mais voilà il n’y a pas de « silver bullet », il faut trouver la bonne solution adaptée
à son besoin.
_______________________
Merci à Stéphane pour sa participation. A travers son interview on peut constater
qu’effectivement la France est un peu un retard par rapport au reste du monde mais que le
NoSQL est tout de même de plus en plus présent dans les entreprises. D’un autre coté les
bases de données relationnelles sont encore là pour longtemps.
Afin de recueillir d’autres avis, j’ai créé un questionnaire en ligne qui fut exposé sur la
toile par mes soins. Il s’adressait exclusivement aux développeurs ou DBA et fut exposé sur
developpez.com ainsi que sur différents groupes d’utilisateurs LinkedIn, Google et Viadeo
comme ceux de MySQL, PostgreSQL, SQL Server, Oracle, MongoDB et Hadoop. Au total,
une cinquantaine d’avis ont été récoltés. Voici le format du questionnaire :
Connaissez-vous le NoSQL ? *
Oui, et j'ai contribué à la mise en place d'une solution NoSQL dans le cadre d'un projet professionnel
Oui, mais seulement le coté théorique
Non
Le reste des questions se modifient en fonction de la réponse. En sachant que la
dernière complète le questionnaire instantanément en classifiant la personne comme
étrangère au NoSQL. Commençons par les réponses engendrées par la première réponse :
Dans combien de projets avez-vous mis en place des solutions NoSQL ?*
1
2
Entre 2 et 5
Plus de 5
En moyenne, de quelle taille étaient les entreprises bénéficiaires de la solution ?*
TPE (moins 10 salariés)
PE (entre 10 et 49 salariés)
ME (entre 50 et 249 salariés)
GE (plus de 250 salariés)
Grands groupes (plus de 5000 salariés)
38
De quel(s) type(s) étaient les solutions NoSQL utilisées pour vos projets ?*
Orientée colonnes (Cassandra, HBase...)
Orientée clé-valeur (Redis, Riak...)
Orientée documents (MongoDB, Couchbase, ElasticSearch...)
Orientée graphes (Neo4J, Titan...)
Pourquoi avoir utilisé une technologie NoSQL ?
Pour de meilleures performances
Les changements sur le modèle de données étaient trop fréquents
Car une base relationnelle n'était pas nécessaire
Autre :
En moyenne et sur une échelle de 1 à 10, quel était le niveau de satisfaction après la livraison ?
Selon vous, dans les prochaines années, les technologies NoSQL sont vouées à :*
O
Mourir
Remplacer les bases relationnelles
Cohabiter avec les bases relationnelles
Autre :
Avez-vous déjà eu des problèmes lors de l'utilisation ou mise en place d'une solution NoSQL ? Si oui,
décrivez-les.
Ensuite les réponses affichées avec la deuxième réponse :
Quel(s) type(s) de technologie NoSQL connaissez-vous ?
Orientée colonnes (Cassandra, HBase...)
Orientée clé-valeur (Redis, Riak...)
Orientée documents (MongoDB, Couchbase, ElasticSearch...)
Orientée graphes (Neo4J, Titan...)
Avez-vous déjà rencontré des technologies NoSQL en entreprise ?*
Oui
Non
39
Selon vous, serez-vous amené à utiliser ces technologies dans le futur ?*
Oui
Non
Je ne sais pas
Voici maintenant les résultats du sondage :
Connaissance du NoSQL
Oui, et j'ai contribué à la mise
en place d'une solution
NoSQL dans le cadre d'un
projet professionnel
Oui, mais seulement le coté
théorique
45%
55%
Non
Parmi les sondés, nous avons donc 45% des personnes qui connaissent le coté
théorique du NoSQL et 55% qui ont déjà contribué à la mise en place d’une solution dans
un cadre professionnel. Le point le plus notable reste que tout le monde connait NoSQL car
je n’ai récolté aucun « Non » pour cette question.
Nombre de projets moyen
15%
30%
1
2
Entre 2 et 5
Plus de 5
37%
18%
40
Parmi ceux qui ont déjà mis en place des solutions NoSQL, 30% d’entre eux l’ont fait
une seule fois, 18% d’entre eux l’ont fait deux fois, 37% d’entre eux l’ont fait entre deux et
cinq fois, et 15% d’entre eux l’ont fait plus de cinq fois. La distribution reste relativement
équilibrée, ce qui témoigne du niveau de différence technique entre les professionnels ayant
répondu.
Taille moyenne des entreprises
bénéficiaires
TPE (moins 10 salariés)
15%
26%
PE (entre 10 et 49
salariés)
ME (entre 50 et 249
salariés)
11%
37%
11%
GE (plus de 250
salariés)
Grands groupes (plus
de 5000 salariés)
Il fut ensuite reporté que les entreprises bénéficiaires de telles solutions étaient
majoritairement des petites entreprises, suivies par les grands groupes. Comme quoi ce
sont les besoins métiers qui comptent et non pas la taille de l’entreprise.
Type de NoSQL majoritairement
utilisé
Orientée colonnes
(Cassandra, HBase...)
2%
24%
55%
19%
Orientée clé-valeur (Redis,
Riak...)
Orientée documents
(MongoDB, Couchbase,
ElasticSearch...)
Orientée graphes (Neo4J,
Titan...)
41
Le groupe le plus utilisé reste clairement l’orientée documents, probablement à cause
du fait qu’il soit simple à aborder pour n’importe quelle personne connaissant le JSON. D’un
autre coté les orientées colonnes sont au coude à coude avec les clé-valeurs. Les
orientées graphes sont très minoritaires et ce n’est pas une surprise puisqu’elles sont
principalement réservées à des applications très spécifiques.
Raisons de l'utilisation du
NoSQL
4%
24%
Pour de meilleures
performances
Les changements sur le
modèle de données
étaient trop fréquents
39%
Car une base
relationnelle n'était pas
nécessaire
33%
Autre
Les raisons qui poussent à l’utilisation d’une technologie NoSQL sont assez
équilibrées, avec l’idée de la performance toujours en tête. On constate aussi que dans 24%
des cas, une base relationnelle n’était pas nécessaire. En effet, inutile de s’embêter avec ça
si on se contente de sauvegarder le contenu d’un panier en ligne ou de faire un cache.clévaleur par exemple.
Moyenne de satisfaction après
livraison (sur 10)
10 4
9 8% 8% 6
8%
11%
7
4%
8
61%
42
A partir de ce graphique, on peut voir que 84% des sondés sont satisfaits (score
supérieur à sept) après leur livraison. Les principales remarques négatives vis-à-vis du
NoSQL en général fut la courbe d’apprentissage ainsi que l’immaturité et le manque de
sécurité de certaines technologies :
« Chaque base a ses spécificités et une stratégie de modélisation différente. Il y a un travail
très important d'appropriation des technos. Tout le monde aujourd'hui est formaté monobase, mono
domaine et relationnelle. C'est très compliqué de sortir des réflexes traditionnels »
« J'ai utilisé plusieurs type de bases dont cassandra v1. Les concepts étaient vraiment
différents, un gros mur à franchir pour arriver à modeliser/utiliser correctement cette base. »
Futur du NoSQL
4%
Mourir
Remplacer les bases
relationnelles
Cohabiter avec les
bases relationnelles
96%
Toujours parmi ceux qui ont déjà utilisé du NoSQL dans un contexte professionnel, il
en ressort que 96% des sondés pensent que le NoSQL va finir par cohabiter avec le relationnel et
seulement 4% pensent qu’il va le supplanter. Le point le plus notable étant qu’aucun des sondés ne
pensent que le NoSQL va mourir. Il y a donc réellement un besoin par rapport aux technologies
traditionnelles.
Passons maintenant aux résultats de ceux qui n’ont jamais utilisé une technologie NoSQL :
Type de NoSQL majoritairement
connu
Orientée colonnes
(Cassandra, HBase...)
10%
25%
48%
17%
Orientée clé-valeur
(Redis, Riak...)
Orientée documents
(MongoDB, Couchbase,
ElasticSearch...)
Orientée graphes
(Neo4J, Titan...)
43
La distribution par rapport à ceux qui ont déjà utilisé du NoSQL n’est pas
bouleversée. On constate juste la réduction de l’orientée documents et la haut de l’orientée
graphes.
Présence du NoSQL en
entreprise
36%
Oui
Non
64%
Parmi ceux qui n’ont jamais utilisé de NoSQL, 36% déclarent en avoir déjà rencontré
en entreprise. Cela reste un chiffre cohérent car les bases relationnelles sont et resteront
leaders pour un bon moment.
Utilisation future du NoSQL
18%
Oui
5%
Non
Je ne sais pas
77%
77% estiment également qu’ils utiliseront une technologie NoSQL dans le futur, ce
qui pousse de nouveau à croire que le NoSQL est parti pour rester.
Bien entendu, toutes ces statistiques ne concernant que la France, c’est pourquoi
nous allons examiner les résultats du récent sondage de RebelLabs sur plus de 2000
développeurs Java. Il est cependant import de noter que ces résultats viennent des lecteurs
de RebelLabs et ne sont pas forcément représentatif de toute la communauté Java.
44
Selon RebelLabs, 53% de ses lecteurs n’utilisent que des technologies intimement
liées au SQL. D’un autre coté 39% disent avoir recours à la « persistance polyglotte ». Seul
4% des personnes interrogées n’utilisent que du NoSQL.
Impossible de comparer avec les résultats du questionnaire car les questions de
RebelLabs étaient davantage portées sur des technologies précises, contrairement aux
différentes catégories. Cependant on peut tout de même voir une certaine ressemblance au
niveau de la domination de l’orientée documents.
45
CONCLUSION
Afin de fournir une réponse quant au futur du NoSQL, il convient de repasser sur ce
que nous venons de voir :
 A la vue des différents sondages, le NoSQL fait désormais partie du paysage des
bases de données
 Le discours premier des vendeurs NoSQL a disparu et ils commencent à revenir
vers le SQL et l’ACID
 Tout le monde n’est pas au cœur de Big Data, et par conséquent les technologies
actuelles vont continuer à prospérer pour des besoins précis d’ici la nouvelle
génération.
 A travers l’apparition de Google Spanner, les leaders du marché NoSQL et
relationnel vont entrer dans une course concernant une solution de stockage
distribuée à grande échelle.
Ces constats sont en fait en accord avec les déclarations de Michael Stonebreaker.
Sur le long terme, les SGBDR et le NoSQL vont s’harmoniser avec le meilleur des deux
mondes, mais le changement ne se fera pas tout de suite car les besoins ne sont pas
encore là, à part pour les géants du web. Actuellement, les bases de données relationnelles
vont continuer à dominer le NoSQL sur des marchés plus traditionnels, et ce dernier sera
toujours utilisé pour des besoins précis. Par ailleurs, avec la reconnaissance du NoSQL
dans le milieu professionnel, on pourrait voir apparaitre de plus en plus d’architectures
basées sur de la persistance polyglotte.
46
BIBLIOGRAPHIE
Aslett Matthew How to to provide a strongly consistent distributed database and not
break CAP Theorem Too much information [Online] // The 451 Group. - 2011. - 2013. http://blogs.the451group.com/information_management/2011/12/14/newsql-cap-theoremand-latency-tolerance/.
Bailis Peter When is "ACID" ACID? Rarely. | Peter Bailis [Online] // Bailis. - Janvier
22, 2013. - 2013. - http://www.bailis.org/blog/when-is-acid-acid-rarely/.
Bojoly Marc OCTO talks ! => NewSQL [Online] // OCTO talks. - 2012. - 2013. http://blog.octo.com/newsql/.
Broecheler Matthias C* 2012: Titan - Big Graph Data With Cassandra. - Aurelius,
2012.
Bulkowski Brian Brian Bulkowski answer to How does CitrusLeaf handle the CAP
theorem? Is it strongly or eventually consitent? - Quora [Online] // Quora. - 2011. - 2013. http://www.quora.com/How-does-CitrusLeaf-handle-the-CAP-theorem-Is-it-strongly-oreventually-consitent/answer/Brian-Bulkowski.
Cade Metz Google Spans Entire Planet With GPS-Powered Database [Online] //
Wired. - http://www.wired.com/2012/09/google-spanner/all/.
Community [En ligne] // Stack Overflow. - 2012. - 2013. - http://stackoverflow.com.
Community Does Google Spanner comply with CAP theorem ? [Online] // Quora. http://www.quora.com/Distributed-Systems/Does-Google-Spanner-comply-with-CAPtheorem.
Community Théorème CAP - Wikipedia [Online] // Wikipedia. - 2010. - 2013. http://fr.wikipedia.org/wiki/Théorème_CAP.
Couchbase Couchbase Server: Distributed, Non-Relational Database | Couchbase
[Online] // Couchbase. - 2012. - 2013. - http://www.couchbase.com/couchbaseserver/overview.
Edlich Stefan Choose the "Right" Database and NewSQL: NoSQL Under Attack
[Conference]. - Copenhagen : Goto conference, 2012.
Edlich Stefan NOSQL Databases [En ligne]. - 2013. - 2013. - http://nosqldatabase.org/.
Figuière Michaël NoSQL Europe : Tour d'horizon des bases de données NoSQL |
Blog Xebia France [Online] // Xebia. - 2010. - 2013. - http://blog.xebia.fr/2010/04/21/nosqleurope-tour-dhorizon-des-bases-de-donnees-nosql/.
47
Hale Coda You Can’t Sacrifice Partition Tolerance | codahale.com [Online] //
codehale.com. - 2010. - 2013. - http://codahale.com/you-cant-sacrifice-partition-tolerance/.
Hoff Todd High Scalability - High Scalability - VoltDB Decapitates Six SQL Urban
Myths and Delivers Internet Scale OLTP in the Process [Online] // High Scalability. - 2010. 2013. - http://highscalability.com/blog/2010/6/28/voltdb-decapitates-six-sql-urban-mythsand-deliversinternet.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+High
Scalability+%28High+Scalability%29.
Hogan Mike Head in the Clouds: The CAP Theorem Event Horizon [Online] // Head
in the Clouds. - 2011. - 2013. - http://scaledb.blogspot.fr/2011/03/cap-theorem-eventhorizon.html.
NuoDB NuoDB | Cloud Database | How it Works NuoDB [Online] // NuoDB. - 2013. 2013. - http://www.nuodb.com/.
RebelLabs Java Tools and Technologies Landscape for 2014 [Online]. http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/.
Robinson Henry CAP Confusion: Problems with partition tolerance; | Apache
Hadoop for the Enterprise | Cloudera [Online] // Cloudera. - 2010. - 2013. http://blog.cloudera.com/blog/2010/04/cap-confusion-problems-with-partition-tolerance/.
Stonebreaker Michael Clarifications on the CAP Theorem and Data-Related Errors
VoltDB Blog [Online] // VoltDB Blog. - 2010. - 2013. - http://blog.voltdb.com/clarificationscap-theorem-and-data-related-errors/.
Stonebreaker Michael Slideshot: Watching Prof. Michael Stonebraker, MIT / One
Size Fits None [Online]. - 2013. - 2014. - http://slideshot.epfl.ch/play/suri_stonebraker.
48
Téléchargement