Les bases de données NoSQL
Enseignante: Islem Jarraya
1
Introduction
NoSQL = Not only SQL
• Une base de données NoSQL est une base de données “non relationnelle”. Il est possible d’y stocker des
données sous une forme non structurée, sans suivre de schéma fixe. Les jointures ne sont plus nécessaires, et
le scaling est facilité.
• Non ce n’est pas seulement l’opposition à SQL : autres modèles de données très simples, Nouveaux besoins,
nouveaux outils !
Appelée aussi:
• Cloud Database
• Non-Relational Database
• Big Data database
3
NoSQL et Big Data : Une combinaison gagnante ?
• Qu'est-ce que le Big Data ? (volume, variété, vélocité)
• Qu'est-ce qu'une base de données NoSQL ? (non relationnelle, flexible,
évolutive)
• Big Data: l'importance croissante des données massives et variées dans
le monde d'aujourd'hui.
• Les bases de données NoSQL: offrent une alternative plus flexible aux
bases de données relationnelles traditionnelles.
5
NoSQL et Big Data : Une combinaison gagnante ?
Évolutivité : capacité à gérer des volumes
de données croissants
Flexibilité : adaptation à des structures
de données variées
Haute disponibilité : accès continu aux
données
Performance : requêtes rapides sur de
grands volumes de données
6
NoSQL et Big Data : Une combinaison gagnante ?
7
Quand choisir NoSQL pour le Big Data ?
•Données non structurées ou semi-structurées: Si vos données ne s'inscrivent pas facilement
dans un schéma relationnel rigide (par exemple, des données JSON, XML, des logs, etc.), NoSQL
offre une grande flexibilité.
•Grande évolutivité: Lorsque vos besoins en stockage augmentent rapidement, NoSQL s'adapte
facilement en ajoutant de nouveaux nœuds.
•Haute disponibilité: Si vos applications nécessitent un accès continu aux données, NoSQL est
souvent conçu pour être hautement disponible.
•Performance pour les écritures: NoSQL excelle généralement dans la gestion d'un grand
nombre d'écritures, ce qui est idéal pour les applications en temps réel.
•Analyses ad-hoc: Si vous avez besoin d'effectuer des analyses flexibles et non pré-définies sur
vos données, NoSQL offre une grande liberté.
8
Quand choisir NoSQL pour le Big Data ?
•IoT (Internet des Objets): Les données générées par les capteurs sont souvent non structurées et
arrivent en temps réel. NoSQL permet de stocker et d'analyser ces données de manière efficace.
•Réseaux sociaux: Les interactions sociales génèrent d'énormes quantités de données, souvent de
nature graphique. NoSQL est idéal pour représenter et analyser ces réseaux complexes.
•Log d'applications: Les logs d'applications peuvent être stockés dans des bases de données
NoSQL pour une analyse ultérieure, comme la détection d'anomalies ou le débogage.
•Recommandations: Les systèmes de recommandation utilisent souvent NoSQL pour stocker les
préférences des utilisateurs et calculer des recommandations personnalisées.
9
NoSQL avec Hadoop?
•Hadoop : C'est un framework open-source conçu
pour stocker et traiter de vastes ensembles de
données de manière distribuée. Il fournit un système
de fichiers distribué (HDFS) et un modèle de
programmation (MapReduce) pour le traitement
parallèle des données.
•NoSQL : C'est une famille de bases de données
qui ne suivent pas le modèle relationnel traditionnel.
Elles sont conçues pour gérer des données de
structures variées et de grands volumes.
•HBase : C'est une base de données NoSQL
construite sur HDFS. Elle est spécialement conçue
pour stocker de grandes quantités de données à
faible latence et à haute disponibilité.
10
Le rôle d'Hadoop dans les bases de données
NoSQL
•Fondation: HDFS, le système de fichiers distribué de Hadoop, sert souvent de base de stockage
pour de nombreuses bases de données NoSQL, notamment HBase. Il offre une scalabilité horizontale
et une haute disponibilité.
•Traitement: MapReduce, le modèle de programmation de Hadoop, peut être utilisé pour traiter les
données stockées dans les bases de données NoSQL. Il permet d'effectuer des analyses complexes
sur de grands volumes de données.
•Écosystème: Hadoop fait partie d'un écosystème plus large qui inclut d'autres outils et frameworks
pour le traitement des données, comme Spark, Hive, Pig, etc. Ces outils peuvent être utilisés en
combinaison avec les bases de données NoSQL pour construire des solutions complètes de gestion
de données.
11
Types de Base de Données NoSql
•Clé-valeur : Lorsque vous avez besoin d'un
stockage simple et rapide de grandes quantités
de données, sans la nécessité de requêtes
complexes.
•Document : Lorsque vos données sont semi-
structurées et que vous avez besoin de flexibilité
dans la structure.
•Colonne : Lorsque vous devez effectuer des
analyses sur de larges ensembles de données,
comme des données temporelles ou des
métriques.
•Graphe : Lorsque vos données sont fortement
liées entre elles et que vous avez besoin de
comprendre les relations complexes.
12
1/ BD NoSQL Clé-Valeurs
•Type basique Principes: Représentation des données sous
forme de clé/valeur.
Les valeurs peuvent être de simple chaînes de caractères ou
des objets complexes.
•Exploitation basée sur 4 opérations : Accès par la clé
•Create: Création d’un objet.
•Read: Lecture d’un objet.
•Update: Mise à jour d’un objet.
•Delete: Suppression un objet.
=> accès rapide au informations
13
1/ BD NoSQL Clé-Valeurs
14
2/ Base de données orientées document
•Principes: c’est une variante des SGBD clé/valeur, où la valeur est un
document de type XML ou JSON.
•Les documents ont une structure arborescente, ils sont composés de
champs et des valeurs associées.
•Ce type de SGBD permet d’effectuer des requêtes sur le contenu des
documents. Ce type de base de données offre une flexibilité accrue.
•Ne convient pas pour les transactions complexes nécessitant des
opérations ou des requêtes multiples sur des structures agrégées
variables.
15
2/ Base de données orientées document
16
3/ Base de données orientées colonnes
•Principes: Repose sur des colonnes. Chaque colonne est traitée
séparément, et les valeurs sont stockées de façon contigüe. Ajout de
colonnes facile et dynamique.
• Ressemble aux SGBDR, mais avec un nombre de colonnes dynamique,
différent d'un enregistrement à un autre (pas de colonnes portant les
valeurs NULL)
• Offrent de très hautes performances et une architecture hautement
évolutive
• Exemples : HBase (Hadoop), Cassandra (Facebook, Twitter), Bigtable
(Google)
3/ Base de données orientées colonnes
18
3/ Base de données orientées graphe
Principes:
• –Les données sont représentées sous-forme de graphe : Des nœuds pour
les entités, des arcs pour les relations entre les entités.
• Ce type de SGBD est adapté à la manipulation de données fortement
connectées
19
3/ Base de données orientées graphe
Principes:
• –Les données sont représentées sous-forme de graphe : Des nœuds pour
les entités, des arcs pour les relations entre les entités.
• Ce type de SGBD est adapté à la manipulation de données fortement
connectées
20
3/ Base de données orientées graphe
21
3/ Base de données orientées graphe
22
Comparaison
23
Base de données NoSQL : HBase (Hadoop
Database)
• HBase est un système de stockage efficace pour des données très volumineuses.
• Modèle de données orienté colonne.
• Il permet d'accéder aux données très rapidement même quand elles sont gigantesques.
• HBase est utilisée par Facebook pour stocker tous les messages SMS, email et chat...
• HBase peut être utilisée à la fois comme:
-Base de données temps réel.
-Base de données pour une lecture intensive pour les systèmes décisionnels
24
Liste de caractéristiques concises de HBase
• Évolutif: HBase peut s'adapter à l'augmentation du volume de données.
• Haute disponibilité: Le système bascule automatiquement sur un autre serveur en cas de panne.
• Cohérence des données: Les lectures et les écritures sont toujours synchronisées.
• Partitionnement des tables: Les tables sont divisées en plus petites parties pour une meilleure
gestion.
• Prise en charge du basculement: Le système peut basculer vers un autre serveur en cas de
défaillance.
• Intégration avec Hadoop MapReduce: HBase fournit des outils pour travailler avec Hadoop.
• API Java: HBase offre une interface de programmation en Java pour une interaction facile.
• Accessibilité: HBase est accessible depuis différents langages de programmation.
• Interface en ligne de commande: HBase peut être utilisé via une console.
25
Différences entre HDFS et HBase
Les différences techniques:
• HDFS est un système de fichiers distribué bas niveau optimisé pour le stockage.
• HBase est une base de données haut niveau construite sur HDFS, offrant des fonctionnalités avancées de
gestion de données.
Les cas d'utilisation:
• HDFS est idéal pour stocker des logs, des fichiers de sauvegarde ou de grandes quantités de données
brutes.
• HBase est parfaitement adapté aux applications nécessitant un accès rapide à des données structurées,
comme les applications d'analyse en temps réel.
Les concepts techniques:
• HDFS: Hadoop Distributed File System, système de fichiers distribué pour stocker de grands volumes de
données.
• HBase: Haute disponibilité et scalabilité, modèle de données orienté colonnes, stockage sur HDFS.
26
HBase vs. SGBDR : Comparaison rapide
Caractéristique HBase (NoSQL) SGBDR (SQL)
Modèle de données Orienté colonne Orienté ligne
Schéma Flexible, évolutif Fixe à la création
Langage de requête Aucun langage standardisé SQL
Par MapReduce (moins Optimisée (pour les petites
Jointure
performant) jointures)
Bonne (mais peut nécessiter une
Scalabilité Très bonne (horizontale)
reconfiguration)
Données non structurées ou
Cas d'utilisation semi-structurées, analyses en Transactions, OLTP, reporting
temps réel
OLTP: Traitement transactionnel en ligne (ex : transactions bancaires) 27
Orientées lignes vs. orientées colonnes :
Comparaison rapide
Bases de données orientées lignes Bases de données orientées
Caractéristique
(SQL) colonnes (Hbase)
Stockage Enregistrements complets (lignes) Valeurs par colonne
Facile pour les enregistrements Efficace pour les analyses sur de
Accès aux données
individuels grandes quantités de données
Rapide pour les lectures/écritures Excellente pour les agrégations et les
Performance des requêtes
individuelles analyses complexes
Compression Moins efficace Très efficace
Cas d'utilisation typiques OLTP (Transactions en ligne) OLAP (Analyse en ligne analytique)
OLAP: Traitement analytique en ligne (ex : reporting, business intelligence)
28
Modèle de données orienté colonnes de HBase
Concept clé :
• HBase est basé sur un modèle clé-valeur organisé
par colonnes.
Structure des données :
• Row Key : Identifiant unique pour chaque ligne
• Column Families : Groupes logiques de colonnes
• Colonnes : Appelées dynamiquement dans une
Column Family
• Cellules : Stockent des données horodatées
(versioning)
• Timestamp: Les valeurs stockées dans la cellule
sont versionnées et chaque version est identifiée par
un numéro de version attribué lors de la création. Si
nous ne mentionnons pas l'horodatage lors de
l'écriture des données, l'heure actuelle est prise en
compte.
29
Modèle de données orienté colonnes de HBase
Avantages:
•Permet une lecture rapide
des colonnes spécifiques.
•Flexible pour des données
semi-structurées.
30
Partitionnement des tables HBase en régions
• Table: Ensemble des données divisé en
régions.
• Région: Sous-ensemble de la table géré
par un serveur de région.
• Serveur de région: Processus
responsable de la gestion d'une ou
plusieurs régions.
• Clé: Identifiant unique d'une ligne dans la
table. Les régions sont découpées en
fonction de la plage de clés.
32
Partitionnement des tables HBase en régions
• Une table est découpée en régions faisant à
peu près la même taille
• Le découpage est basé sur les clés
• Chaque région est gérée par un serveur de
région
• Un même serveur peut gérer plusieurs
régions
33
Architecture distribuée et scalable de HBase
Coordonne les
Gère la coordination
Region Servers
et le suivi des nœuds.
Gèrent les régions
et les requêtes des
utilisateurs
34
Architecture distribuée et scalable de HBase
Qu'est-ce que HMaster ?
Le cerveau de HBase : coordonne et gère
l'ensemble du cluster.
Rôle principal :
•Attribue les régions aux serveurs de région.
•Gère les opérations de création, modification
et suppression de tables.
•Surveille l'état des serveurs de région.
•Pourquoi HMaster est-il important ? Assure
la cohérence, la disponibilité et la performance
du cluster HBase.
35
Architecture distribuée et scalable de HBase
Qu'est-ce que Region Servers?
• Le Region Server est un composant clé de
HBase chargé de gérer les données et
requêtes des utilisateurs.
• Chaque serveur gère une ou plusieurs
régions, qui sont des sous-ensembles des
tables HBase.
• Les Region Servers exécutent les
opérations de lecture et d'écriture sur les
données.
36
Architecture distribuée et scalable de HBase
Fonctions principales :
[Link] des données :
• Les données sont stockées sous
forme de fichiers HFiles sur HDFS.
[Link] des requêtes :
• Gère les opérations Get, Scan, Put
et Delete des utilisateurs.
[Link] équilibré :
• Les régions peuvent être déplacées
entre les Region Servers pour
optimiser les performances.
37
Architecture distribuée et scalable de HBase
Composition interne du Region Server
• Regions : Sous-ensembles de tables
gérés par le Region Server.
• MemStore : Mémoire tampon pour les
écritures avant leur persistance dans
HDFS.
• HFiles : Fichiers stockés sur HDFS
pour les données persistantes.
• WAL (Write-Ahead Log) : Journal des
écritures pour garantir la durabilité des
données.
38
Architecture distribuée et scalable de HBase
Fonctionnement des composants du
Region Server
1) Sauvegarde en mémoire :
Les nouvelles écritures (inserts ou mises
à jour) sont d'abord stockées dans le
MemStore, qui est une structure en
mémoire associée à une région
spécifique du Region Server.
2) Écriture simultanée dans le WAL :
Chaque écriture est également
enregistrée dans le Write-Ahead Log
(WAL) pour assurer la durabilité des
données en cas de panne.
39
Architecture distribuée et scalable de HBase
Fonctionnement des composants du
Region Server
3) Déclenchement du flush vers HFiles :
Lorsque le MemStore atteint une taille
prédéfinie (par exemple, 64 Mo), son
contenu est vidé ("flushed") sur le disque
pour être stocké de façon permanente
dans les HFiles.
Ce processus regroupe les données en
lots séquentiels afin de réduire les accès
aléatoires au disque.
40
Architecture distribuée et scalable de HBase
Processus d'écriture et de lecture du
Region Server
• Écriture :
• Les données sont d'abord
enregistrées dans le MemStore et
dans le WAL.
• Une fois la mémoire pleine, elles
sont écrites dans les HFiles.
• Lecture :
• Les données sont récupérées
depuis le MemStore ou les HFiles
en fonction de leur disponibilité.
41
Architecture distribuée et scalable de HBase
Qu'est-ce que Zookeeper?
Service de coordination distribué utilisé
par HMaster pour gérer les états du
cluster.
• Coordination entre les composants
HBase :
Gère l'interaction entre le HMaster et les
RegionServers.
• Détection des pannes :
Identifie les RegionServers défectueux et
permet leur réassignation.
• Suivi des métadonnées :
Maintient la liste des régions et leurs
emplacements dans le cluster.
42
Data Model Operations de HBase
• HBase offre des opérations basiques pour manipuler les données stockées dans les tables.
• Ces opérations incluent :
1. Get : Lire une ou plusieurs lignes.
2. Put : Ajouter ou mettre à jour des données.
3. Scan : Lire plusieurs lignes dans une plage.
4. Delete : Supprimer des données.
43
Data Model Operations de HBase
• créer une base de données qui contient les données suivantes:
Commençons par créer la table, ainsi que les familles de colonnes associées:
44
Data Model Operations de HBase
• créer une base de données qui contient les données suivantes:
Commençons par créer la table, ainsi que les familles Vérifier que la table est bien créée:
de colonnes associées:
Résultat:
45
Data Model Operations de HBase
• Insérer les différentes lignes:
46
Data Model Operations de HBase
• Visualiser le résultat de l'insertion, en tapant:
47
Data Model Operations de HBase
• Afficher les valeurs de la colonne product de la ligne 102:
Vous obtiendrez:
48
Data Model Operations de HBase
• modifier la valeur de la colonne product de la ligne 102:
Vous obtiendrez:
Lamp nouvelles
49
Data Model Operations de HBase
• Supprimer la valeur de la colonne product de la ligne 102:
Supprimer une cellule spécifique
Vous obtiendrez:
Suppression de la dernière version: Elle supprime uniquement la dernière version de
la cellule sales:product de la ligne 102.
Conservation des anciennes versions: Les versions précédentes de cette cellule, avec
leurs timestamps respectifs, restent intactes dans HBase 50
Data Model Operations de HBase
• Supprimer la valeur de la colonne product de la ligne 102:
Supprimer toutes les versions d'une cellule avant un certain timestamp
Vous obtiendrez:
51
Data Model Operations de HBase
• Supprimer la valeur de la colonne product de la ligne 102:
Supprimer une ligne entière avec toutes ses versions
Vous obtiendrez:
52
Data Model Operations de HBase
• Supprimer la valeur de la colonne product de la ligne 102:
Supprime toutes les versions de la ligne '102' avec un timestamp inférieur ou égal à 1654321000.
Vous obtiendrez:
53