© Alcyonix SQLI Group, 2014
LE DOGME REMIS EN QUESTION
… et avec eux de nouveaux besoins et des priorités chamboulées qui ont résolument changé la donne. Pour un site d’e-
commerce ou pour un réseau social par exemple, les exigences de disponibilité et de capacité à monter en charge ont
désormais largement supplanté les exigences d’intégrité des données ou d’isolation des transactions. Pour une entreprise
comme Amazon, une plateforme indisponible, ne serait-ce que quelques minutes, signifie une perte de dizaines de milliers de
commandes. Dans ces conditions, une adhérence stricte à l’isolation des transactions qui risquerait de pénaliser les
performances est inenvisageable. La solution est humaine et pragmatique : dans les très rares situations où un client se trouvera
lésé, suite à une collision entre deux transactions par exemple, le service client lui transmettra un mot d’excuse assorti d’un bon
d’achat proportionné au préjudice subi.
Par ailleurs, une grande partie des données que l’on cherche aujourd’hui à valoriser dans un SI n’est pas disponible sous forme
de tables structurées. Il s’agit plutôt de données non-structurées éparpillées dans un fatras de fichiers Excel, de logs ou même
de fichiers audio pour lesquels un SGBDR n’est d’aucun secours.
La possibilité de distribuer le stockage et les traitements, au besoin sur des milliers de machines, est désormais cruciale pour
assurer la disponibilité des systèmes e-commerce. Pour cela, il existe un éventail de solutions que l’on désigne couramment par
le terme NoSQL. Impossible d’en donner une définition fonctionnelle précise, tout au plus peut-on énumérer quelques
caractéristiques communes à ces systèmes : ils sont le plus souvent (1) clusterisables, (2) dépourvus de schémas, (3)
dépourvus de transactions, (4) non-relationnels et (5) proposés en open-source. On peut les répartir en 4 catégories :
1. Les entrepôts clé-valeur : c’est la base NoSQL la plus simple qui soit, elle se réduit à une simple table de hachage
persistance au moyen de laquelle on pourra enregistrer ou récupérer… n’importe quoi (la valeur) au moyen d’une clé ! Le
« n’importe quoi » (=blob) n’a aucune structure a priori. C’est à l’application cliente de comprendre la structure de ce blob.
Les caddies des clients d’un site e-commerce peuvent être implémentés de cette manière.
2. Les bases orientées documents : similaires au cas précédent, elles présupposent néanmoins que les valeurs stockées
sont des documents structurés et auto-descriptifs, de type XML, JSON ou autre, que l’on peut examiner. Un site d’e-
commerce qui doit disposer d’un schéma flexible pour entreposer la description de ses produits pourrait utiliser ce type de
solution.
3. Les bases de données orientées colonnes : structurées en lignes et en colonnes comme dans les SGBDR, les
enregistrements sont toutefois rassemblés en groupes de colonnes et les opérations d’agrégation y sont très performantes.
Pour l’enregistrement d’un client p.ex. un premier groupe contiendrait les commandes et un second le profil utilisateur. Les
CMS ou les plateformes de blogs qui hébergent des articles avec leurs commentaires, leurs liens, les rétro-liens et des tags
pourraient en faire bon usage. Les redondances et la dé-normalisation des données sont ici monnaie courante.
4. Les bases de données orientées graphe : elles autorisent le stockage d’entités connectées par des associations
directionnelles dotées de propriétés. Dans toutes les situations où des entités appartiennent simultanément à plusieurs
domaines (sociaux, professionnels, géographiques), comme les réseaux sociaux p.ex., ce type de solution permettra la
navigation d’une entité à l’autre, beaucoup plus efficacement que ne sauraient le faire les SGBDR (forts mal nommés).
POURQUOI ET QUAND CHOISIR UNE SOLUTION NOSQL ?
Pas de concepts profonds, ni d’algèbres mystérieuses donc pour le NoSQL, mais un retour à une forme de rusticité
technologique. Faire très efficacement juste ce qu’il faut, telle pourrait être en l’occurrence la devise. La complexité n’a
évidemment pas disparue comme par enchantement, mais elle a migré. Plutôt que d’être encapsulée dans une solution à
vocation universelle, comme un SGBDR, la complexité bascule désormais dans le code applicatif chargé d’assurer un minimum
de cohérence des données, on peut accepter par exemple dans certaines situations des incohérences temporaires (eventual
consistency). Une certaine rigidité du modèle de données fera aussi partie du prix à payer. Pour le coup, la complexité sera
entièrement dédiée à résoudre un certain type de problème de performance. En ce sens elle sera optimale.
Ne nous leurrons pas, les solutions NoSQL ont pour l’instant le charme propre aux terres inexplorées. Accroître la productivité
des programmeurs grâce à la simplicité de ces nouvelles plateformes et augmenter drastiquement les performances seront les
principales motivations d’un tel choix. Les projets pour lesquels la réduction du time to market est déterminante et ceux pour
lesquels un avantage compétitif justifie une prise de risque technologique pourront utiliser avec profit ces nouvelles solutions.
Les SGBDR ne sont pas morts pour autant, ils coexisteront pour longtemps, dans le cadre de ce que Martin Fowler nomme fort
poétiquement la persistance polyglotte, avec ces solutions non orthodoxes.
Mais, insistons encore une fois là-dessus, le recours à l’option NoSQL se fera avant tout sur la base d’un examen lucide et
chiffré des compromis acceptables entre consistance des données et disponibilité des systèmes. Il s’agit donc au moins autant
d’un choix commercial que d’un choix technologique.