Chapitre 2
BDD relationnelles et NoSQL
Partie 2 : NoSQL
Big data & datamining
AG3 - Hakim AKEB
Sommaire
1. Rappel principes BDD relationnelles
2. Un autre modèle pour le web (le NoSQL)
3. Architectures des BDD NoSQL
4. Conclusion
Big data et Datamining SQL et NoSQL 2
1. Rappel principes BDD
relationnelle
1. Rappel principes BDD relationnelles
Rappels BDD relationnelles
Données stockées dans des tables
- 1 tables = colonnes (champs) + lignes (enregistrements)
- 1 table contient une clé primaire
- Les identifiants des tables permettent des relier les tables entre elles
- Cela permet alors de croiser les données (requêtes)
Big data et Datamining SQL et NoSQL 4
1. Rappel principes BDD relationnelles
1.1. SQL = Fondement mathématique
- Théorie des ensembles
- Par définition optimisé (pas de redondance des données par exemple)
- Basé sur l’algèbre relationnelle
- Projection (sélection colonnes = SELECT)
- Sélection (extraire des lignes d’une table = WHERE)
- Jointure (croiser les données de plusieurs tables = JOIN)
- Agrégation (fonctions de synthèse = somme, moyenne, etc.)
- Union (Union résultat de 2 requêtes par ex. =UNION)
- Intersection (idem pour deux requêtes = INTERSECT)
- Différence, produit, etc.
Big data et Datamining SQL et NoSQL 5
1. Rappel principes BDD relationnelles
1.2. Transactions (SGBDR)
Une transaction obéit aux propriétés ACID
Atomicité (Atomicity): une transaction est indivisible
Cohérence (Consistency): 1 requête laisse les données cohérentes
Isolation (Isolation): deux transactions (concurrentes) n’interfèrent pas
Durabilité (Durability): les données deviennent permanentes une fois
validées
Big data et Datamining SQL et NoSQL 6
1. Rappel principes BDD relationnelles
1.3. Insuffisances des BDD relationnelles
- Ne gèrent que des données structurées (texte, nombres, dates)
- Pas d’accès simultané aux données (transactions concurrentes)
- Plutôt limitées par la taille et la couverture géographique
Qu’en est-il alors de la gestion des données du web ?
Big data et Datamining SQL et NoSQL 7
2. Besoin d’un autre modèle
pour le web
2. Un autre modèle pour le web
2.1. Web = nouvelles contraintes
Applications web doivent être accessibles à tout moment !
Moyen: Duplication de serveurs à travers le monde (accédant aux mêmes
données en même temps)
Question : au détriment de la cohérence ?
Réponse: OUI! Priorité à la disponibilité
Exemple: site d’e-commerce (panne = grosses pertes)
Problème : synchronisation et cohérence difficiles ! On parle plutôt de cohérence
à terme (Eventual Consistency).
Big data et Datamining SQL et NoSQL 9
2. Un autre modèle pour le web
2.1. Web = nouvelles contraintes
Dans les applications à grande échelle : Coût incohérence < Coût panne
Traitement des conséquences (exemples):
- Surbooking : partenariat entre compagnies aériennes et hôtels
- E-commerce : remboursement à hauteur du préjudice
Big data et Datamining SQL et NoSQL 10
2. Un autre modèle pour le web
2.2. Systèmes distribués et principes CDR
Cohérence (Consistency): même version des données sur tous les nœuds du
réseau
Disponibilité (Availability): applications accessibles à tout moment
Résistance aux morcellement (Partition Tolerance): le réseau fonctionnera
même s’il est partitionné en sous-réseaux (ex. nœuds en panne).
Big data et Datamining SQL et NoSQL 11
2. Un autre modèle pour le web
2.3. Cohérence vs flexibilité
La totale cohérence nuit à la disponibilité et à la vitesse (flexibilité)
Exemple: transaction qui accède à des données et les verrouille pendant
l’exécution de celle-ci. Toute autre transaction voulant accéder à ces données
attendra !
Résultat : le système devient indisponible => performances ralenties.
Solution : Big data => compromis entre cohérence et flexibilité (paramètres
à gérer selon l’application).
Vélocité = critère primordial
Big data et Datamining SQL et NoSQL 12
2. Un autre modèle pour le web
2.4. BDDs NoSQL
- NoSQL = Not Only SQL
- Difficile de donner une définition précise !
Propriétés NoSQL :
- Traitements et stockage distribués (TRES IMPORTANT!)
- Priorité à la vitesse + disponibilité
- Traiter des données non structurées
- Pas de schéma de données standard
- Pas de transactions au sens SGBDR
Big data et Datamining SQL et NoSQL 13
3. Architectures des BDD NoSQL
3. Architectures des BDD NoSQL
Trois principaux modèles
- Entrepôts clés-valeurs
- BDD orientées documents
- BDD orientées colonnes
Big data et Datamining SQL et NoSQL 15
3. Architectures des BDD NoSQL
3.1. Entrepôts clés-valeurs (key-value store)
- ECV = bdd les plus simples
- Ensemble de couples (clé, valeur)
- Clé = identifiant
- Valeur = texte, vidéo, AF123 Vol CDG – FRA : Départ 13h40, à l’heure
fichier log, image,
AF456 Vol ORY – PTP : Départ 6h00, retard 1h
structure complexe, etc.
CA875 Vol CDG1 – PEK: Départ 19h40, à l’heure
Opérations sur les données:
- Valeur = get(clé) pour récupérer la valeur stockée
- Insert(clé, valeur) insérer un nouvel elt dans la bdd
- Delete(clé) supprimer un elt de la bdd
Big data et Datamining SQL et NoSQL 16
3. Architectures des BDD NoSQL
3.1. Entrepôts clés-valeurs (key-value store)
Exemple : e-commerce
Ce qui est stocké:
- id de session (connexion au site)
- Profil utilisateur
- Données de session (temps, etc.)
- Contenu du panier
Big data et Datamining SQL et NoSQL 17
3. Architectures des BDD NoSQL
3.1. Entrepôts clés-valeurs (key-value store)
Implémentation:
- données stockées sur plusieurs nœuds (la valeur détermine nœud stockage)
- Répartition des clés selon le type de données de la partie Valeur pour
simplifier la gestion
Paramétrage de la cohérence (3 paramètres)
- Facteur de réplication: définit le nombre N de nœuds sur lesquels les données
doivent être répliquées.
- Quorum d’écriture (W): Nombre de nœuds dont on exige qu’ils notifient que
les données ont été écrites avec succès, donc écriture validée.
- Quorum de lecture (R ): Nombre min de nœuds à interroger pour être sûr
d’obtenir la dernière version des données.
On parle de cohérence forte si R + W > N
Big data et Datamining SQL et NoSQL 18
3. Architectures des BDD NoSQL
3.1. Entrepôts clés-valeurs (key-value store)
Produits:
- Redis, Amazon DynamoDB, Oracle NoSQL Database, Memcached,
Hazelcast, Ehcache, Berkeley DB (Oracle), LevelDB (Google), Aerospike,
Riak, Memcached DB, , …
Applications (exemples):
- Gestion profils utilisateurs sites e-commerce
- Gestion de sessions utilisateurs
- …
Big data et Datamining SQL et NoSQL 19
3. Architectures des BDD NoSQL
3.2. Bases orientées documents (Document store)
- Ressemblent (conceptuellement) aux Entrepôts Clés-Valeurs
- Valeur = document semi-structuré
(écrit par exemple en XML)
- Les valeurs peuvent ne pas avoir
toutes le même format
Big data et Datamining SQL et NoSQL 20
3. Architectures des BDD NoSQL
3.2. Bases orientées documents (Document store)
- Un exemple avec MongoDB (source MongoDB.com)
Les données sont stockées au format JSON (JavaScript Object Notation)
{ "_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
Exemple de déclaration d’1 "lastname": "Wu",
structure JSON "address": { "street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA", "zip": "90404" },
"hobbies": ["surfing", "coding"] }
Exemple de requête au format JSON + résultat:
db.users.find({ "address.zip" : "90404" })
{ "_id": "5cf0029caff5056591b0ce7d", "firstname": "Jane", "lastname": "Wu", "address":{}}
{ "_id": "507f1f77bcf86cd799439011", "firstname": "Jon", "lastname": "Davis", "address":{}}
{ "_id": "5349b4ddd2781d08c09890f3", "firstname": "Jim", "lastname": "White", "address":{}}
{ "_id": "5bf142459b72e12b2b1b2cd", "firstname": "Jeff", "lastname": "Taylor", "address":{}}
{ "_id": "5cf003283b23d04a40d5f88a", "firstname": "Jerry", "lastname": "Miller", "address":{}}
{ "_id": "5bf142459b72e12b2b1b2cd", "firstname": "Jai", "lastname": "Williams", "address":{}}
{ "_id": "5cf0036deaa1742dd225ea35", "firstname": "Jess", "lastname": "Johnson", "address":{}}
{ "_id": "54495ad94c934721ede76d90", "firstname": "Jill", "lastname": "Brown", "address":{}}
{ "_id": "566eb3c704c7b31facbb0007", "firstname": "Janet", "lastname": "Jones", "address":{}}
{ "_id": "5a999cc461d36489a27f2563", "firstname": "Jan", "lastname": "Smith", "address":{}}
Big data et Datamining SQL et NoSQL 21
3. Architectures des BDD NoSQL
3.2. Bases orientées documents (Document store)
Implémentation:
- Réplication des données sur des nœuds (assurer la disponibilité)
- Répartition équilibrée des données entre les nœuds
- Schéma de type Maître-Esclave (Master-Slave)
- Les requêtes sont envoyées au maître, qui décide vers quel esclave l’envoyer
- Si le maître tombe en panne, les esclaves élisent un nouveau maître
Produits:
MySQL*, Oracle*, MS SQL Server*, MongoDB, IBM DB2*, IBM Notes (anciennement Lotus
Notes), Couchbase (optimisation applications mobiles, IoT et web)
* : sont aussi des BDD SQL
Applications:
- Gestion de contenu: Blogs, plateformes vidéo
- Catalogues produits e-commerce (milliers de produits avec caractéristiques différentes)
Big data et Datamining SQL et NoSQL 22
3. Architectures des BDD NoSQL
3.3. Bases orientées colonnes (Column-oriented database)
- Modèle de données riche
- On peut créer:
- Des colonnes statiques à la façon SGBDR
- Des regroupements de colonnes (Super-colonnes)
- Des familles de colonnes (Column family) : équivalent de la table SGBDR
- Des colonnes dynamiques (nom colonnes, type données colonnes, leur nombre)
Big data et Datamining SQL et NoSQL 23
3. Architectures des BDD NoSQL
3.3. Bases orientées colonnes (Column-oriented database)
Implémentation:
- La BDD stockée sur plusieurs nœuds
- Disponibilité assurée par la réplication (redondance), pas de nœud maître
- On peut gérer le niveau de cohérence (propagation modifs à tous les nœuds)
- Une transaction se limite de verrouiller seulement l’enregistrement à modifier.
Ces bdd sont très efficaces car très rapides (accès + requêtes) + plus compactes
Produits: Cassandra, Hbase, Microsoft Azure Cosmos DB, Google Cloud Bigtable, …
Cassandra: CERN, eBay, Netflix, Facebook, Twitter, Instagram, The Weather Channel, …
Applications: applications ne pouvant se permettre de perdre des données
Big data et Datamining SQL et NoSQL 24
3. Architectures des BDD NoSQL
3.3. Bases orientées colonnes (Column-oriented database)
Régler le niveau de cohérence
On peut régler ce niveau, par exemple en écriture. Dans Cassandra on a plusieurs
niveaux:
ONE: on écrit sur 1 seul nœud (optimise les performances), mais si écriture perdue…
QUORUM: une écriture se propage sur une majorité de nœuds du cluster avant d’être
validée (donc plus de sécurité)
ALL: on exige que tous les nœuds aient répondu positivement pour valider une
opération d’écriture.
Big data et Datamining SQL et NoSQL 25
3. Architectures des BDD NoSQL
3.4. Top 20 des Bases de données: (db-engines.com février 2021)
Big data et Datamining SQL et NoSQL 26
3. Architectures des BDD NoSQL
3.4. Top 20 des Bases de données: (db-engines.com février 2022)
Big data et Datamining SQL et NoSQL 27
3. Architectures des BDD NoSQL
3.4. Top 20 des Bases de données: (db-engines.com mars 2023)
Big data et Datamining SQL et NoSQL 28
3. Architectures des BDD NoSQL
3.5. Autres types de BDD NoSQL
BDDs orientées graphes (Graph DB)
- BDD = nœuds + arcs entre les nœuds
- Nœuds = données
- Arcs = relations entres les nœuds (données)
Avantages:
- Arcs : évitent les jointures (coûteuses) pour retrouver 1 information
(exemple : Vidéos louées par 1 client = Arcs → Vidéos), sans passer par la
table Locations.
Exemple ci-contre : gestion des followers dans les
réseaux sociaux (source Neo4j)
BDD les plus connues: SQL Server, Redis, Maria DB
Big data et Datamining SQL et NoSQL 29
3. Architectures des BDD NoSQL
3.5. Autres types de BDD NoSQL
RDF Store (Resource Description Framework)
- Sous-classe des BDD orientées graphes
- Représenter les données sous la forme de triplets (sujet-prédicat-objet)
- RDF Store est aussi appelé Triplestore
BDDS RDF dans le top 20:
- Oracle
- IBM db2
FOAF = Friend of a Friend
= Ontologie pour décrire des
personnes + relations entre elles
Big data et Datamining SQL et NoSQL 30
3. Architectures des BDD NoSQL
3.5. Autres types de BDD NoSQL
BDDs moteurs de recherche (Search Engine Database)
- Conçues pour rechercher du contenu dans les données
- Optimisées pour rechercher des données longues, semi-structurées ou structurées
- Offrent des outils pour rechercher des motifs dans un texte
Exemples : MongoDB, Redis, ElasticSearch, …
Exemple d’utilisation: combiner plusieurs fichiers logs pour suivre en temps réel ce
qui se passe sur un système.
ElasticSearch: modèle utlisé par Amazon Web Services (AWS), Google cloud, Microsoft
Azure, …
Big data et Datamining SQL et NoSQL 31
4. Conclusion
4. Conclusion
Le NoSQL est-il l’avenir des BDD?
- NoSQL:
- Différents modèles de données répondent à des besoins différents
- Le modèle de données devient ainsi « rigide » et a un usage spécifique
- Adopter le NoSQL =
- abandonner un système universel (SGBDR). Nécessaire si on veut obtenir des
performances élevées répondant aux exigences des applis web à grande échelle
- Complexité technique BDDs transférée dans NoSQL vers les applications
(programmation), les incohérences sont par ex gérées dans les applis et non pas
vraiment dans les BDDs
- Manque de retour à cause de l’âge « jeune » des BDD NoSQL => les deux systèmes
(SGBRD et NoSQL) continueront à coexister (pour l’instant …)
Big data et Datamining SQL et NoSQL 33
Sources
• R. Bruchez. Les bases de données NoSQL et le big data: comprendre et mettre en œuvre.
Editions Eyrolles, 2015.
• B. Dayley. NoSQL with MongoDB in 24 Hours, Sams Teach Yourself. Sams Publishing, 2014
• J-L Hainaut. Bases de données - 3e éd.: Concepts, utilisation et développement. Dunod, 2015
• D. Vohra. NoSQL Web Development with Apache Cassandra. Cengage Learning, 2015.
Sites internet
• DB-engines: https://db-engines.com/en/ranking, 2023
• Mongo DB, https://docs.mongodb.com, 2023
• Cassandra, http://cassandra.apache.org/, 2023
• Amazon web services, https://aws.amazon.com/, 2023
Big data et Datamining SQL et NoSQL 34