Quelques bases NoSQL émergentes : CockroachDB
Dans mes articles précédents, j'ai abordé les nouvelles bases de données NoSQL qui sont peut-être les succès du futur. Mais il n'y a pas que le NoSQL qui préfigure la relève des bases de données. Le « mouvement » NewSQL décrit des bases de données relationnelles, reconstruites dès le départ pour conserver les forces des Systèmes de Gestion de Bases de Données Relationnelles (SGBDR), notamment le modèle relationnel, le langage SQL, les jointures et l'acidité de la transaction, en les adaptant à un système complètement distribué pour monter en charge horizontalement à l'infini.
Le bien connu théorème CAP, dont je parle dans cet article, indique qu'on ne peut pas obtenir trois garanties en même temps : cohérence, disponibilité et partitionnement. Ce théorème CAP est une des bases de la réflexion autour du NoSQL. Elle a conduit à dire que pour distribuer les données et continuer à assurer leur disponibilité, il faut diminuer l'exigence de cohérence de ces données. Et il est impératif aujourd’hui de pouvoir distribuer les données pour gérer des volumes de données de plus en plus importants.
Pour cela, il faut simplifier le modèle de données. Un modèle relationnel, avec d'innombrables relations entre les tables, est difficile à distribuer. Le plus simple, c'est d'avoir une table de type paire clé-valeur avec une seule clé, la clé primaire, sur laquelle on peut découper et distribuer.
Pour bien comprendre ce qu’est une paire clé-valeur, voici un extrait de la formation Les fondements de la programmation : Les structures de données.
Mais ce n'est pas parce qu'il est difficile de distribuer un modèle relationnel, que c'est impossible. Par exemple, Google l'a fait. Depuis 2012, Google utilise une base de données relationnelle et cohérente pour stocker toute sa publicité en ligne, donc l’essentiel de son revenu. La base s’appelle F1, et elle est décrite dans cette publication.
Afin de réussir le découpage de données relationnelles, Google a opté pour un stockage hiérarchique et emboîté. Alors qu’on se représente un modèle relationnel sans réelle hiérarchie, comme des tables liées les unes aux autres, comme ceci.
Le modèle de stockage choisi par Google, et qui leur permet de répartir les données des tables avec les tables filles, ressemble à ceci.
Donc, les relations entre les tables sont stockées de façon imbriquée, pour stocker les clés étrangères sur les mêmes serveurs que les valeurs de clés primaires.
Le fondement de ce type de stockage est toujours une approche clé-valeur. Il y a toujours une clé primaire.
CockroachDB
Il y a quelques moteurs NewSQL naissants qui s’inspirent de ce modèle. Celui dont je veux vous parler s’appelle CockroachDB. Il évolue vite et malgré son nom peu commercial, il peut se révéler un candidat à une popularité croissante, surtout parce qu’il offre des fonctions riches : langage SQL, indexation, transactions avec isolation optimiste et pessimiste, jointures, tout cela avec un modèle de distribution horizontale.
Au début, CockroachDB était un moteur de bases de données clé-valeur. Les concepteurs ont ensuite ajouté, par-dessus le moteur de stockage, une couche de requêtage en SQL, avec la possibilité d'écrire des jointures. L'accès au serveur se fait à l'aide du protocole de PostgreSQL, les bibliothèques clientes crées pour PostgreSQL sont donc naturellement adaptées à CockroachDB. La liste des éléments de syntaxe SQL supportés est déjà longue. Par exemple, les fonctions de fenêtrage, et la création de vues. La sécurité est aussi présente, avec la possibilité de gérer les privilèges sur les objets.
Les données sont organisées en utilisant une imbrication, comme le modèle de Google F1. CockroachDB supporte le principe des transactions distribuées, et les transactions sont complètement ACID. Le protocole implémenté s'appelle Raft, et il s'agit d'un protocole plus simple que Paxos, qui est utilisé par HBase par exemple.
Pour rappel, voici dans cette vidéo, en quoi consiste une transaction dans le monde SQL.
CockroachDB est un moteur de bases de données NewSQL très intéressant et qui évolue dans le bon sens. Ne le perdez pas de vue, il pourrait se révéler un très bon choix pour vos besoins.
Les vidéos sont des extraits de mes formations LinkedIn Learning.
#nosql #sgbd #newsql
Pilote d’essai dans l’industrie du suppositoire
7 ans.
Cloud Architect, FinOps Evangelist, Certified (Azure, AWS, Kubernetes) - Silicon Chalet Meetup Founder
7 ansintéressant Rudy ! Peux tu nous dire quel est le best use case pour CockroachDB ? Big Data ?