Le NoSQL est-il l'avenir des bases de données ?
Pour comprendre la pertinence des solutions NoSQL la meilleure stratégie consiste à comprendre, dans un premier temps, ce qui assuré le succès et la pérennité des bases relationnelles.
Quelles ont été les contraintes d'exploitations qui on changé la donne ?Cette chronique propose une brève classification de ces nouveaux outils et des cas d'usages typiques
Bases relationnelles, les raisons d’une domination
Voici
bientôt un demi-siècle que les bases de données relationnelles règnent sans
partage sur l’informatique de gestion, en contraste flagrant avec l’instabilité
technologique qui caractérise en général ce secteur. Paraphrasant L. Kronecker,
un mathématicien du 19ème siècle qui forgea l’aphorisme célèbre
« God made the integers, all else is
the work of man », R. Ramakrishnan, l’auteur d’un manuel sur la bases
de données relationnelles, proposa le jeu de mot (intraduisible) « Codd made relations, all else is the work of
man ». Par cette pirouette, l’auteur entend attirer l’attention sur ce
qui fait la spécificité du modèle relationnel inventé en 1970 par E.F.Codd. Celui-ci se base en effet sur une structure mathématique
intemporelle (l’algèbre relationnelle) à l’abri des modes éphémères.
Des données structurées en tables, des enregistrements reliés implicitement par
des clés étrangères et des schémas de données stricts, voilà en gros pour le
modèle. Le langage SQL, un quasi-standard de fait, permet alors de formuler des
requêtes en spécifiant ce que l’on cherche, on parle à ce titre de langage déclaratif, et non pas comment on va le chercher :
« Trouves
tous les clients qui se nomment Dupond, qui habitent Paris et qui ont déjà
passé une commande de plus de 100€ ! ». La base de donnée relationnelle (SGBDR) se
charge de masquer toute la complexité inhérente à l’algorithme de recherche en convertissant
une requête SQL en une séquence d’opérations élémentaires sur les tables (selection,
jointure, projection etc…). L’existence d’une algèbre est ici déterminante car
c’est elle qui permet au SGBDR de convertir cette séquence d’opérations en une
autre, équivalente, dont on cherche à optimiser le temps d’exécution, un peu de
la même manière que les règles de l’algèbre usuelle permettent de simplifer une
expression arithmétique avant d’entreprendre son calcul. Ces
travaux de pionniers et ceux qui ont suivi ont permis aux SGBDR de résoudre simultanément
plusieurs problèmes fondamentaux de l’informatique de gestion.
Rappelons brièvement ici ces atouts :
- Un SGBDR prend entièrement en charge l’élaboration d’un plan de recherche des données, le code d’une application cliente est donc allégé de cette tâche.
- Un SGBDR isole les applications clientes de la structure physique des données sur le disque. Un changement de cette structure n’aura aucun impact sur le code applicatif. C’est le découplage physique.
- Un SGBDR permet d’utiliser les données de manière non-anticipée dans le sens où les requêtes peuvent être modifiées, là encore, sans avoir à modifier le code applicatif. C’est le découplage logique incarné p.ex. par la notion de vue SQL.
- Un SGBDR peut garantir la cohérence des données en appliquant des contraintes d’intégrité correspondant à un schéma de données préfédini par l’utilisateur.
- Enfin, et c’est là le plus important, un SGBDR gère les accès concurrents aux données au moyen de transactions. Pendant leur mise à jour par un processus, les enregistrements sont isolés [1] (à des degrés divers) pour les protéger de modifications intempestives par d’autres processus qui les laisseraient alors dans un état incohérent et imprévisible.
Les zones d’ombres cependant ne manquent pas et viennent nuancer quelque peu le tableau précédent. La première est liée à la difficulté de répartir les traitements d’un SGBDR sur un grand nombre de nœuds serveurs, le nombre d’échange entre eux pour assurer l’intégrité des données devenant rapidement prohibitif en termes de performance et de prix des licences !
Un autre inconvénient notoire des SGBDR est leur
inadéquation avec la programmation orientée objet qui manipule, elle, de petits
agrégats de données en mémoire organisés en grappes et en hiérarchies.
Construire ces grappes ou les sauvegarder dans un ensemble de tables s’est avéré
être une opération particulièrement délicate. Ainsi a-t-on vu la naissance des
framework de « mapping objet-relationnel » chargé d’établir un pont
entre les deux mondes, sources de complexité non-négligeable des architecture
logicielles. Bien que des solutions techniques soient apparues dès les années
1990 pour palier à ces inconvénients, nous pensons ici aux bases de données
objets, l’hégémonie des SGBDR, promues dans l’intervalle au rang d’outil
d’intégration favori des DSI, a rendu extrêmement problématique la migration
vers un nouveau modèle. Dans une certaine mesure, l’hégémonie de modèle
relationnel a donc inhibé l’innovation technologique.
Puis vint le séisme du web suivi de ses répliques : le
e-commerce, les réseaux sociaux et depuis peu le big data…
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 en registrer ou récupérer… n’importe quoi (la valeur) au moyen d’une clé ! Le « n’importe quoi » (=blob) n’a aucune structure à 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.
[1] L’isolation est l’une des quatre conditions que doit vérifier une transaction pour lesquelles l’acronyme ACID constitue un mnémonique utile.