BigData NoSQL
BigData NoSQL
2024-2025
Objectifs du cours
LOGO
某某科技集团
2
Plan du cours
LOGO
某某科技集团
3
Chapitre 1 Les bases de données
NoSQL: Introduction
◼ Bases de données
◼ Systèmes de gestion des BD
◼ Le mouvement Big Data
◼ Le mouvement NoSQL
◼ Les grandes familles NoSQL
Bases de données (BD)
LOGO
某某科技集团
❑ Définition
« Une Base de Données (BD) est un ensemble structuré de données enregistrées
sur des supports accessibles par l’ordinateur pour satisfaire simultanément
plusieurs utilisateurs de manière sélective et en un temps opportun »
❑ Objectifs
➢ Bonne représentation du monde réel : une image aussi fidèle que possible
de la réalité.
➢ Indépendance des programmes par rapport aux données : plusieurs
applications partageant les mêmes données
➢ Permettre la liaison entre l’ensemble des données
→ Stocker et retrouver les informations
5
Systèmes de Gestion de Bases de Données (SGBD)
LOGO
某某科技集团
❑ Définition
« Un Système de Gestion de Bases de Données (SGBD) est le logiciel qui permet
d’interagir avec la Base de Données »
❑ Exemples de SGBD
➢ SGBDs relationnels:
- Dans le domaine de la micro-informatique : ACCESS, PARADOX, DBASE,
FOXPRO, etc.
- Sur gros système : ORACLE, SQL Server, SYBASE, INGRES, INFORMIX,
etc.
➢ SGBDs NoSQL
- MongoDB, Cassandra, Néo4J, etc.
6
SGBDs Relationnels: Propriétés ACID
LOGO
某某科技集团
7
Le mouvement Big Data
LOGO
某某科技集团
Source: Oracle
8
Big Data: les fameux 5 V
LOGO
某某科技集团
9
Le mouvement NoSQL
LOGO
某某科技集团
10
NoSQL: besoins
LOGO
某某科技集团
11
NoSQL: Théorème CAP
LOGO
某某科技集团
❑ Aussi connu sous le nom de théorème de Brewer dit qu'il est impossible sur un
système informatique de garantir en même temps les trois contraintes suivantes:
Disponibilité
(Availability)
Chaque client peut
toujours lire et écrire
A
SGBDR SGBD-NoSQL
Tolérance au
Cohérence
partitionnement
(Consistency)
(Partition Tolerance)
Chaque client a la
même vue de chaque C P Le système fonctionne
SGBD-NoSQL malgré la panne
donnée à tout instant
12
NoSQL: Schema-Less
LOGO
某某科技集团
13
SQL vis NoSQL
LOGO
某某科技集团
SQL NoSQL
Coherence forte : Coherence faible :
➢ Logique : Schemas, contraintes ➢ Schemaless, pas de contraintes
➢ Physique : Transactions ACID ➢ Théorème CAP
Distribution des données Distribution des traitements :
➢ Transactions distribuees ➢ Traitements ≪ batch ≫
➢ MapReduce
Ressources limitées Ressources illimitées
➢ Optimisation de requetes ➢ Passage à l’échelle horizontal
➢ Langage standard : SQL ➢ Langages spécialisés, API
14
Les grandes familles NoSQL
LOGO
某某科技集团
❑ 4 grandes familles:
15
Base de données clé-valeur
LOGO
某某科技集团
❑ 1 base = 1 table
17
Base de données orientée colonnes
LOGO
某某科技集团
❑ Cible
➢ Répond aux problématiques de grande charge de très haute disponibilité
➢ Données stockées suivant des timestamps
➢ Adaptée aux données issues de capteurs
➢ Enregistrement des actions d'un utilisateur sur une application
❑ Avantage
➢ Forte tolérance aux pannes
➢ Facilite l’agrégation
❑ Inconvénient
➢ API de (très) bas niveau
❑ Implémentations
➢ Google BigTable
➢ Hbase: développé au sein de Hadoop, très performant en lecture
➢ Cassandra: initialement créé par Facebook, très performant en écriture mais
pas de garantie de cohérence stricte
18
Base de données orientée documents
LOGO
某某科技集团
❑ Document
➢ Unité de base de stockage
➢ Equivalent aux lignes dans les SGBDR
➢ Ensemble de couples clé-valeur au
format JSON ou XML
➢ Chaque document possède un
identifiant unique dans une collection
19
Base de données orientée documents
LOGO
某某科技集团
❑ Cible
➢ Journalisation d’évènements
➢ Recherche complexe
❑ Avantage
➢ Données semi-structurées
➢ Gestion de la version du document
❑ Inconvénient
➢ Performances des requêtes
❑ Implémentations
➢ CouchDB: Pas de verrou lors des accès concurrents
➢ MongoDB: Permet d’indexer les propriétés des documents afin d’optimiser
une recherche
➢ Riak: Base hybride orientée clé/valeur ou document
20
Base de données orientée graphe
LOGO
某某科技集团
Exemple : matérialiser un
réseau d’amis
- Qui est ami avec Saida ?
- Quels sont tous les amis de
Saida ? (directs et indirects)
- Quelles sont les amitiés de
plus de 10 ans → On ajoute
des propriétés aux relations
21
Base de données orientée graphe
LOGO
某某科技集团
❑ Cible
➢ Représentation de relations, de réseaux, d’organisations
❑ Avantage
➢ Algorithmes de la théorie des graphes (chemin le plus court, degré de
relation, …)
❑ Inconvénient
➢ Parcours complet de la base obligatoire pour avoir une réponse exhaustive
❑ Implémentations
➢ Neo4J
➢ Titan
➢ FlockDB
➢ GraphBase
➢ InfiniteGraph
22
NoSQL: Passons à la pratique
LOGO
某某科技集团
23
Chapitre 2 Base de données
orientées colonnes
--Cassandra--
◼ Introduction
◼ Installation
◼ Gestion d’une base de données Cassandra
Cassandra: Introduction
LOGO
某某科技集团
26
Cassandra: Structure du cluster et données
LOGO
某某科技集团
❑ Une instance Cassandra est une collection de nœuds indépendants qui sont
configurés ensemble pour former un cluster.
❑ Dans un cluster, tous les nœuds sont égaux, ce qui signifie qu'il n'y a pas de
nœud maître ou un processus centralisant leur gestion.
❑ Cassandra utilise un protocole appelé Gossip afin de découvrir la localisation et
les informations sur l'état des autres nœuds du cluster. Le protocole Gossip est un
protocole de communication de type « peer-to-peer » dans lequel les nœuds
échangent périodiquement des informations sur leur état mais également sur ce
qu'ils savent des autres nœuds.
28
Cassandra: Architecture
LOGO
某某科技集团
29
Cassandra: Architecture
LOGO
某某科技集团
❑ Exemple:
30
Cassandra: Réplication de données
LOGO
某某科技集团
❑ La réplication est le processus permettant de stocker des copies des données sur
de multiples nœuds afin de permettre leur fiabilité et la tolérance à la panne
❑ Quand un keyspace est créé dans Cassandra, il lui est affecté la stratégie de
distribution des réplicas, c'est-à-dire le nombre de réplicas et la manière dont ils
sont répliqués dans le cluster.
❑ Il est souvent fait référence au facteur de réplication (replication factor que nous
nommerons RF par la suite) pour parler du nombre total de réplicas dans le
cluster.
➢ un facteur de réplication de 1 signifie qu'il n'y a qu'une seule copie de chaque
ligne ;.
➢ un facteur de réplication de 2 signifie qu'il existe deux copies de chaque
ligne ;
➢ ...
31
Cassandra: Caractéristiques
LOGO
某某科技集团
❑ Principales Caractéristiques:
➢ Tolérance aux pannes de par la réplication des données.
➢ Architecture décentralisée sans nœud maitre.
➢ Modèle de données riche permettant de nombreux cas d’utilisation.
➢ Haute disponibilité, écriture des données très rapide.
❑ Avantages:
➢ Très rapide pour manipuler un volume important de données.
➢ Schemas de données flexible
➢ Possibilité de mettre en cluster plusieurs serveurs Cassandra.
➢ Replication de données.
➢ Passage par une table en mémoire an d’éviter les latences d’écriture sur
disque.
❑ Limites: toutes les données pour une valeur de clé, doivent tenir sur le disque
d’une seule machine.
32
Cassandra: Installation sous Windows
LOGO
某某科技集团
33
CQL: Cassandra Query Language
LOGO
某某科技集团
34
CQL: Création et Suppression d’un keyspace
LOGO
某某科技集团
35
CQL: Interrogation d’un keyspace
LOGO
某某科技集团
36
CQL: Création, modification et suppression d’une table
LOGO
某某科技集团
38
CQL: Insertion et affichage de données
LOGO
某某科技集团
39
CQL: Insertion par le fichier .csv
LOGO
某某科技集团
❑ Il est possible de stocker les données dans un fichier CSV et de les injecter dans
une table par :
COPY nomtable(nomscolonnes...) FROM '[Link]'
WITH DELIMITER=';' AND HEADER=TRUE;
On doit mettre les noms des colonnes dans le même ordre que le fichier CSV.
❑ Une table peut être aussi enregistrée dans un fichier CSV par :
COPY nomtable(nomscolonnes...) TO '[Link]';
Le fichier sera créé/écrasé avec les données indiquées.
40
CQL: Création d’un index
LOGO
某某科技集团
41
CQL: Agrégation
LOGO
某某科技集团
42
Spark et Cassandra
LOGO
某某科技集团
43
Chapitre 3 Base de données
orientées documents
--MongoDB--
◼ Introduction
◼ Installation
◼ Gestion d’une base de données MongoDB
◼ Les operateurs logiques et de comparaison
◼ Les index
◼ Les agrégations
MongoBD: introduction
LOGO
某某科技集团
45
MongoBD: organisation
LOGO
某某科技集团
46
MongoBD: organisation
LOGO
某某科技集团
❑ Exemple: document
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : {
x : 203,
y : 102
}
}
47
SQL vis MongoBD
LOGO
某某科技集团
❑ En BDR, tous les instances d’une table ont les mêmes champs
(mais les valeurs peuvent être différentes)
❑ Dans une collection MongoDB, les documents peuvent ne pas avoir un champ
partagé
48
MongoBD: installation sous Windows
LOGO
某某科技集团
51
Opérations sur les documents: Ajout
LOGO
某某科技集团
52
Opérations sur les documents: Modification
LOGO
某某科技集团
53
Opérations sur les documents: Modification
LOGO
某某科技集团
54
Opérations sur les documents: Suppression
LOGO
某某科技集团
55
Opérations sur les documents: Affichage
LOGO
某某科技集团
56
Opérations sur les documents: Affichage
LOGO
某某科技集团
57
Opérations sur les documents: Les expressions régulières
LOGO
某某科技集团
58
Opérations sur les documents: Les expressions régulières
LOGO
某某科技集团
❑ Autres symboles :
➢ Indiquer qu’une lettre x est facultative: x* (0 ou pl++ fois)
➢ Indiquer que la lettre x est obligatoire: x+ (1 ou pl++ fois)
➢ Indiquer que la lettre x doit se répéter au moins 2 fois et au plus 4 fois: x{2,4}
➢ Indiquer que la lettre peut être un caractère quelconque: .
➢ Le ou logique: |
59
Opérations sur un tableau d’un document
LOGO
某某科技集团
60
Opérations sur un tableau d’un document
LOGO
某某科技集团
61
Opérateurs logiques et de comparaison
LOGO
某某科技集团
❑ Si on a un champ (autre que id) selon lequel on effectue des recherches très
fréquemment, on peut créer un index sur ce champ
❑ Par défaut, on a un index sur chaque id d’une collection (et il est impossible de
le supprimer)
❑ Consulter la liste d’index sur la collection: [Link]();
❑ Créer un nouvel index sur un champ x: [Link](x:1);
❑ Supprimer un index sur un champ x: [Link](x:1)
64
Les agrégations
LOGO
某某科技集团
❑ C’est une requête qui retourne un résultat sous forme d’un tableau. Ça permet
d’utiliser des fonctions d’agrégations comme en SQL.
❑ Commandes:
➢ $group : Permet de regrouper des documents (=group by en SQL)
➢ $out : Permet de créer une nouvelle collection à partir d’une autre qui existe
déjà
➢ $unwind : Permet de décomposer un tableau en autant de documents que d’
élément
➢ $match : Permet de filtrer les documents selon une condition spécifiée
➢ $sample : Permet de sélectionner aléatoirement un nombre de documents
spécifié dans la requête
➢ $max, $min, $sum, $sqrt, $pow, $floor, $divide, $abs, $ifNull, $map, $reduce,
$arrayToObject , $split, $slice, $size, $substr, $toUpper, $toLower,$concat…
❑ Exemple: Choisir aléatoirement trois documents de la collection
[Link]([ { $sample:{ size: 3 }} ]
65
Chapitre 3 Base de données
orientées graphe
--Neo4j--
◼ Introduction
◼ Installation
◼ Gestion d’une base de données Neo4j
BD orienté graphe
LOGO
某某科技集团
67
BD orienté graphe: Neo4j
LOGO
某某科技集团
❑ Neo4j est une base NoSQL orientée graphes, complètement compatible avec les
transactions ACID
❑ Version open source et version commerciale
❑ Code source disponible sur GitHub [Link]
❑ Les données sont stockées sur disque sous la forme d'une structure de données
optimisée pour les réseaux de graphes
❑ Différents cas d’usage :
➢ Recommandation
➢ Détection de fraude
➢ …
68
BD orienté graphe: organisation
LOGO
某某科技集团
❑ l'information dans un graphe attribué est modélisée grâce à trois blocs de base:
➢ le nœud ou sommet (node, vertex): Un nœud représente une entité et
possède des propriétés
➢ la relation ou arête (relationship, edge): Une arête est directionnelle et
possède des propriétés
➢ la propriété ou attribut (property, attribute): portée par un nœud ou une
relation
Nœuds
Propriétés
Relation
69
BD orienté graphe: exemple de graphe
LOGO
某某科技集团
70
Installation de Neo4j
LOGO
某某科技集团
71
Cypher
LOGO
某某科技集团
❑ Langage déclaratif
❑ Interrogation et manipulation d’une base Neo4j très simples et très puissantes
❑ Langage non fermé : sémantique définie avec liaisons
❑ Deux clauses principales pour construire des requêtes
➢ CREATE permet de créer une nouvelle entité
➢ MATCH permet de chercher des entités
❑ Identification graphique des entités
➢ Nœud représenté entre parenthèses et deux-points pour label
➢ Relation représentée avec flèches et crochets pour détails
➢ Propriétés représentées par un dictionnaire à la JSON
72
Cypher
LOGO
某某科技集团
73
Lire des données et la structure du graphe
LOGO
某某科技集团
❑ Syntaxe générale
[MATCH WHERE]
[OPTIONAL MATCH WHERE]
[WITH [ORDER BY] [SKIP] [LIMIT]]
RETURN [ORDER BY] [SKIP] [LIMIT]
❑ Identifier les données: l’expression MATCH
➢ MATCH ()--(): Nœuds anonymes reliés par une relation
➢ MATCH (n)--(m): Nœuds identifiés par n et m reliés par une relation
➢ MATCH (n)-->(m)<--(o), (m)<--(p): Noeud m ayant trois relations incidentes
orientées
➢ MATCH (n)-[r]->(m): Relation orientée identifiée par r
➢ MATCH (n)-[*]->(m): Nœuds identifiés par n et m reliés quel que soit le
nombre de relations traversées
74
Lire des données et la structure du graphe
LOGO
某某科技集团
75
Collecter des données
LOGO
某某科技集团
❑ L’expression RETURN
➢ RETURN* : Retourne toutes les valeurs de tous les identificateurs
➢ RETURN n AS nomColonne : Utilise un alias pour nom de colonne
➢ RETURN DISTINCT n : Retourne uniquement les lignes uniques pour
l'identificateur n
➢ ORDER BY [Link] : Tri ascendant sur la colonne [Link]
➢ ORDER BY [Link] DESC : Tri descendant sur la colonne [Link]
➢ SKIP {nombre_a_passer} : Passe un certain nombre de résultats
➢ LIMIT {nombre_limite} : Limite le nombre de résultats
➢ SKIP {nombre_a_passer} LIMIT {nombre_limite} : Pagination (de
nombre_a_passer à nombre_limite)
➢ RETURN count(*) : Retourne le nombre de résultats obtenus pour la requête
76
Collecter des données
LOGO
某某科技集团
❑ L’expression WITH:
➢ Syntaxe similaire à celle de RETURN. Cependant elle isole les différentes
parties de la requête
MATCH (quelqun)-[:EST_AMI_AVEC]-(ami)
WHERE [Link] = {nom}
WITH quelqun, count(ami) AS amis
WHERE amis > 10
RETURN quelqun
➢ Comme avec la clause RETURN, il est possible d'utiliser les mots clés
ORDER BY, SKIP et LIMIT
MATCH (quelqun)-[:EST_AMI_AVEC]-(ami)
WITH quelqun, count(ami) AS amis
ORDER BY amis DESC
SKIP 1 LIMIT 3
RETURN quelqun
77
Collecter des données
LOGO
某某科技集团
❑ L’expression UNION:
➢ Retourne une union distincte (pas de ligne dupliquée) des deux requêtes
MATCH (a)-[:CONNAIT]->(b)
RETURN [Link]
UNION
MATCH (a)-[:AIME]->(b)
RETURN [Link]
➢ Retourne une union complète (duplication de lignes possible) des deux
requêtes
MATCH (a)-[:CONNAIT]->(b)
RETURN [Link]
UNION ALL
MATCH (a)-[:AIME]->(b)
RETURN [Link]
78
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ Syntaxe générale
➢ Modification uniquement :
(CREATE [UNIQUE] | MERGE)*
[SET|DELETE|REMOVE|FOREACH]*
[RETURN [ORDER BY] [SKIP] [LIMIT]]
➢ Lecture et modification :
[MATCH WHERE]
[OPTIONAL MATCH WHERE]
[WITH [ORDER BY] [SKIP] [LIMIT]]
(CREATE [UNIQUE] | MERGE)*
[SET|DELETE|REMOVE|FOREACH]*
[RETURN [ORDER BY] [SKIP] [LIMIT]]
79
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ L’expression CREATE
➢ CREATE n : Crée un nœud identifié n dans la requête
➢ CREATE (n {nom: "Alice"}) : Crée un nœud identifié n avec une propriété nom
ayant pour valeur Alice
➢ CREATE (n objet) : Crée un nœud identifié n avec une suite de propriétés
(sous forme d'objet {})
➢ CREATE (n)-[r:CONNAIT]->(m) : Crée une relation CONNAIT entre le noeud
n et le noeud m
➢ CREATE (n)-[:CONNAIT {depuis: "Lycée"}]->(m): Crée une relation CONNAIT
pourvue de la propriété depuis.
80
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ L’expression SET
➢ SET [Link] = "Alice au pays des merveilles", [Link] = "Lewis Caroll": Crée
ou met à jour des propriétés sur un nœud ou une relation.
➢ SET nr=objet: Pose un ensemble de propriétés (objet {}) ou remplace
l'ensemble des propriétés sur un nœud ou une relation
➢ SET n:Personne: Ajoute le label Personne au nœud n
❑ Les expressions DELETE et REMOVE
➢ DELETE n, r : Supprime un nœud et une relation
➢ REMOVE [Link] : Supprime la propriété nom sur le nœud n
➢ REMOVE n:Personne : Supprime le label Personne du nœud n
81
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ L’expression MERGE
➢ Trouver le nœud n, le crée s'il n'existe pas: MERGE (n:Personne {nom:
"Sylvain"}) ;
➢ Mise à jour conditionnelle : si le nœud n n'existe pas, il est créé et une
propriété dateCreation est ajoutée à ce nœud ; si le nœud n existe déjà, la
propriété compteur du nœud n est augmentée et sa propriété
dateModification est mise à jour:
MERGE (n:Personne {nom: "Sylvain"})
ON CREATE SET [Link]=timestamp()
ON MATCH SET [Link]= coalesce([Link], 0) + 1,
[Link] = timestamp()
➢ Trouve la relation r, la crée si elle n'existe pas.
MATCH (a:Personne {nom: "Sylvain"}), (b:Personne {nom: "Christophe"})
MERGE (a)-[r:CONNAIT]->(b)
82
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ L’expression INDEX
➢ CREATE INDEX ON :Personne(nom): Crée un index basé sur le couple du
label Personne avec la propriété nom
➢ MATCH (n:Personne) WHERE [Link] = "Sylvain“ : Retrouve le noeud
Sylvain en utilisant l'index :Personne(nom) (index retrouvé par l'opération
d'égalité. À noter que l'utilisation d'une fonction telle que WHERE
lower([Link]) = "sylvain" ne permet pas de déterminer l'index à utiliser)
➢ DROP INDEX ON :Personne(nom): Supprime l'index basé sur le couple du
label Personne avec la propriété nom
➢ MATCH (n:Personne) USING INDEX n:Personne(nom) WHERE [Link] =
"Sylvain“: Force l'utilisation de l'index n:Personne(nom) parmi ceux définis
pour le nœud
83
Modifier les données et la structure d'un graphe
LOGO
某某科技集团
❑ L’expression CONSTRAINT
➢ CREATE CONSTRAINT ON (p:Personne) ASSERT [Link] IS UNIQUE:
Crée une contrainte d'unicité (et l'index associé) basé sur le couple du
label Personne avec la propriété nom.
➢ DROP CONSTRAINT ON (p:Personne) ASSERT [Link] IS UNIQUE:
Supprime la contrainte d'unicité.
84
Sources
LOGO
某某科技集团
Plusieurs ressources ont été utilisées afin de préparer ce support de cours tel que:
❑ Le Web
❑ Des cours d’autres enseignants
➢ Le Big Data et les bases de données NoSQL:MongoDB, Achref El Mouelhi
➢ BigData, Pierre Nerzi (2019)
➢ Le SGBD Cassandra, PESTELLE Nicolas / SPECQ Corentin, Universite du Littoral Cote
d'Opale 2018.
➢ Introduction aux systèmes NoSQL, Bernard ESPINASSE, Ecole Polytechnique
Universitaire de Marseille, 2018
➢ Bases de Donnees NoSQL: Mohamed-Amine Baazizi
❑ Des livres
➢ Sylvain Roussy: Neo4j : Des données et des graphes
❑ Des articles
➢ Bases de données graphes : comparaison de NEO4J et OrientDB
85