Cours No SQL
Cours No SQL
Cours No SQL
5. 1. Introduction
L’essor des très grandes plateformes et applications Web (Google, Facebook, Twitter,
LinkedIn, Amazon, …) et le volume considérable de données à gérer par ces applications
nécessitant une distribution des données et leur traitement sur de nombreux serveurs : « Data
Centers » ; ces données étant souvent associées à des objets complexes et hétérogène ont montré
les limites des SGBD traditionnels (relationnels et transactionnels) basés sur SQL.
Ainsi, de nouvelles approches de stockage et de gestion des données sont apparues, permettant
une meilleure scalabilité dans des contextes fortement distribués et offrant une gestion d’objets
complexes et hétérogènes sans avoir à déclarer au préalable l’ensemble des champs représentant
un objet.
Ces approches regroupées derrière le terme NoSQL (proposé par Carl Strozzi) ne se substituent
pas aux SGBD Relationnels mais les complètent en comblant leurs faiblesses (Not Only SQL).
5.4.1. Le Sharding
Le « Sharding » est un ensemble de techniques qui permet de répartir les données sur plusieurs
machines pour assurer la scalabilité de l’architecture. C’est un mécanisme de partitionnement
horizontal (par tuples) des données dans lequel les objets-données sont stockées sur des nœuds
serveurs différents en fonction d’une clé (ex : fonction de hachage).
Certains systèmes utilisent aussi un partitionnement vertical (par colonnes) dans lequel des
parties d'un enregistrement sont stockées sur différents serveurs.
5.4.4. Le MVCC
Le « MVCC » (Contrôle de Concurrence Multi-Version) est un mécanisme permettant d’assurer
le contrôle de concurrence,
« Clé-valeur / Key-value » : basique, chaque objet est identifié par une clé unique constituant
la seule manière de le requêter.
• Voldemort, Redis, Riak, …
« Colonne / Column » : permet de disposer d'un très grand nombre de valeurs sur une même
ligne, de stocker des relations « one-to-many », d’effectuer des requêtes par clé (adaptés au
stockage de listes : messages, posts, commentaires, ...)
• HBase, Cassandra, Hypertable, …
« Document » : pour la gestion de collections de documents, composés chacun de champs et
de valeurs associées, valeurs pouvant être requêtées (adaptées au stockage de profils utilisateur).
• MongoDBn, CouchDB, Couchbase, …
« Graphe » : pour gérer des relations multiples entre les objets (adaptés au données issues de
réseaux sociaux, …)
• Neo4j, OrientDB, …
5.5. HBase
HBase est un système de stockage efficace pour des données très volumineuses. Il permet
d’accéder aux données très rapidement même quand elles sont gigantesques. Une variante de
HBase est notamment utilisée par FaceBook pour stocker tous les messages SMS, email et chat.
5.5.1. Présentation
HBase mémorise des n-uplets constitués de colonnes (champs). Les n-uplets sont identifiés par
une clé. À l’affichage, les colonnes d’un même n-uplet sont affichées successivement : Clés,
Colonnes et Valeurs.
isbn7615 colonne=auteur valeur="Jules Verne"
isbn7615 colonne=titre valeur="De la Terre à la Lune"
isbn7892 colonne=auteur valeur="Jules Verne"
isbn7892 colonne=titre valeur="Autour de la Lune"
Pour obtenir une grande efficacité, les données des tables HBase sont séparées en régions. Une
région contient un certain nombre de n-uplets contigus (un intervalle de clés successives).
Une nouvelle table est mise initialement dans une seule région. Lorsqu’elle dépasse une certaine
limite, elle se fait couper en deux régions au milieu de ses clés. Et ainsi de suite si les régions
deviennent trop grosses.
Chaque région est gérée par un Serveur de Région (Region Server). Ces serveurs sont distribués
sur le cluster, ex: un par machine. Un même serveur de région peut s’occuper de plusieurs
régions de la même table. Au final, les données sont stockées sur HDFS.
elearning.univ-annaba.dz com.elwatan.sport
sport.elwatan.com com.elwatan.www
www.elwatan.com dz.poste.www
www.ncdc.noaa.gov dz.univ-annaba.elearning
www.poste.dz gov.noaa.ncdc.www
5.5.4. Exemple
On veut enregistrer les coordonnées et les achats de clients. On va construire une table contenant
trois familles:
• La famille personne contiendra les informations de base:
colonnes personne:nom et personne:prenom
• La famille coords contiendra l’adresse :
colonnes coords:rue, coords:ville, coords:cp, coords:pays
• La famille achats contiendra les achats effectués :
colonnes achats:date, achats:montant, achats:idfacture
HBase autorise à dé-normaliser un schéma (redondance dans les informations) afin d’accéder
aux données plus rapidement.
5.5.5. Les commandes de base
5.5.5.1. Création d’une table
• create 'NOMTABLE', 'FAMILLE1', 'FAMILLE2'...
D’autres propriétés sont possibles, par exemple VERSIONS pour indiquer le nombre de
versions à garder.
Remarques :
• Les familles doivent être définies lors de la création. C’est coûteux de créer une
famille ultérieurement.
On ne définit que les noms des familles, pas les colonnes. Les colonnes sont créées
dynamiquement.
R. Bruchez, Les bases de données NoSQL: Comprendre et mettre en œuvre, Eyrolles, 2013.