Cours Big Data
3ème Génie info- GLID
Chapitre 3:
Les bases de données
NoSQL
Ahlem Ben Younes
Septembre 2015
Ecole Nationale Supérieure d’Ingénieurs de Tunis (ENSIT)
1
Plan du Chapitre
1. Introduction
2. Types de BD NoSQL
3. NoSQL VS BDR
4. Quand utiliser NoSQL?
2
3
Bases de données NOSQL ou NoSQL??
C’est pour :Not Only SQL et non (pas de SQL)
Beaucoup privilégient NOSQL ou noSQL plutôt que NoSQL
 Bases de données non-relationnelles et largement distribuées Permet
une analyse et une organisation rapides et ad-hoc des données de très
grands volumes et de types de données disparates
 Appelées également
 Cloud Databases
 Non-Relational Databases
 Big Data Databases
 …
 Développées en réponse à l’augmentation exponentielle des données
générées, enregistrées et analysées par les utilisateurs modernes et
leurs applications
1. Introduction
1. Introduction
4
Pourquoi les BD noSQL?
 SGBD traditionnel SQL
 Couteau suisse
 Fait tout bien
 Non optimal pour applications particulières
 Nouveaux cas d’utilisation extrêmes
 Big data, Web, flux de données, infonuagique, …
 Architectures spécialisées
 Mouvement noSQL (not only SQL)
1. Introduction
5
 Architecture parallèle/répartie massive
– Réseau très rapide
– Grappes de machine de commodité (fiabilité limitée, faible
coût)
 Fragmentation et duplication
– Disponibilité à tout prix
– Pas de point de défaillance unique
– Consistance limitée (transaction locale, BASE, …)
– Hachage réparti
 Localement
– compression, traitement séquentiel
 Scalabilité massive (élasticité)
– Virtualisation d’un bassin de ressources
 Flexibilité du schéma
 API simple
– Programmation plus complexe …
1. Introduction
6
Classification des SGBD
7
2. Types des BD NoSQL
Types des bases de données NOSQL
 Clef/valeur
Orientées colonnes
 Orientées documents
 Orientées graphes
8
2. Types des BD NoSQL
Type Clé/Valeur
L’un des types les plus simples, sorte de Hashmap distribuée
Conçues pour sauvegarder les données sans définir de schéma
Toutes les données sont sous forme de clef/valeur
La valeur peut être une chaîne de caractères, un objet sérialisé, blob…
La donnée est opaque au système: il n’est pas possible d’y accéder sans passer
par la clef
 Absence de typage a un impact sur le requêtage: toute l’intelligence portée
avant par les requêtes devra être portée par l’applicatif qui interroge la BD
 Communications se résumant surtout aux opérations PUT, GET et DELETE
 Objectif: fournir un accès rapide aux informations, conserver la session d’un
site web…
Exemple : DynamoDB (Amazon), Azure Table Storage (ATS), Redis, BerkeleyDB,
Voldemort (LinkedIn)
9
2. Types des BD NoSQL
Id Nom Humeur Date_naissance Couleur
12 Stella Heureuse 2007-04-01 Noire
13 Wimma Faim NULL NULL
9 Ninja NULL NULL NULL
Nom_$#_Stella~~Humeur_
$#_Heureuse~~Date_naissance_
$#_2007-04-01…
Chien_12
Clef
Valeur
10
2. Types des BD NoSQL
Orientées Colonnes
Évolution de la BD clef/valeur
 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)
11
2. Types des BD NoSQL
Id Nom Humeur Date_naissance Couleur
12 Stella Heureuse 2007-04-01 Noire
13 Wimma Faim NULL NULL
9 Ninja NULL NULL NULL
Colonnes
Clef
Requête: clef/famille:titre[/time]
Exp: "chien_12"/"Chien": "Nom « Stella »
12
2. Types des BD NoSQL
Les principaux concepts associés sont les suivants :
• Colonne :
entité de base représentant un champ de donnée
chaque colonne est définie par un couple clé / valeur
une colonne contenant d’autres colonnes est nommée supercolonne.
• Famille de colonnes :
permettent de regrouper plusieurs colonnes (ou supercolonnes)
les colonnes sont regroupées par ligne
chaque ligne est identifiée par un identifiant unique (assimilées aux
tables dans le modèle relationnel) et sont identifiées par un nom
unique
• Supercolonnes:
situées dans les familles de colonnes sont souvent utilisées comme les
lignes d’une table de jointure dans le modèle relationnel
13
2. Types des BD NoSQL
14
2. Types des BD NoSQL
• Elles sont les plus complexes à appréhender des BD NoSQL, même
si au final on a un schéma assez proche des bases documentaires
• Elles sont très utilisées pour les traitements dʼanalyse de données
et dans les traitements massifs (notamment via des opérations de
type MapReduce).
• Elles offrent plus de flexibilité que les BD relationnelles:
Il est possible dʼajouter une colonne ou une super colonne à
nʼimporte quelle ligne d’une famille de colonnes, colonnes ou
supercolonne à tout instant.
15
2. Types des BD NoSQL
tuple pour le client 1234
• table « Clients » partitionnée
en 2 familles de colonnes :
« Profile » et « Orders »
• chaque famille de colonnes a
des colonnes (e.g. name et
payment), des super colonnes
avec un nom et un nombre
arbitraire de colonnes associées
• chaque famille de colonnes
peut être traitée comme une
table séparée en terme de
partitionnement (sharding) :
* « Profile » pour le client
1234 peut être sur le nœud 1
* « Orders » pour le client 1234
peut être sur le nœud 2
16
2. Types des BD NoSQL
Orientées Documents
Étendent le paradigme clef/valeur, avec des « documents » plus complexes à la
place des données simples, et une clef unique pour chacun d’eux
Documents de type JSON ou XML
 Chaque document est un objet, contient un ou plusieurs champs, et chaque
champs contient une valeur typée (string, date, binary ou array)
Permettent de stocker, extraire et gérer les informations orientées documents
(données semi-structurées)
 Avantage : pouvoir récupérer, via une seule clef, un ensemble d’informations
structurées de manière hiérarchique
o Dans les bases relationnelles, cela impliquerait plusieurs jointures
Exemples : Mongo DB (SourceForge), Couch DB (Apache), RavenDB (destiné
aux plateformes .Net/Windows, interrogation via LINQ)
17
2. Types des BD NoSQL
{
type : « Chien »,
nom : « Stella »,
humeur : « Heureuse »,
date_naissance : 2007-04-01
aboiement : [
{ texte : « aboiement type… »
commentaires : [
{
texte : « on s’en fout! »
} ]
}]
}
Id Nom Humeur Date_naissance Couleur
12 Stella Heureuse 2007-04-01 Noire
13 Wimma Faim NULL NULL
9 Ninja NULL NULL NULL
Chien_12
Clef
Document
18
2. Types des BD NoSQL
19
2. Types des BD NoSQL
Orientées Graphes
Basées sur les théories des graphes
 S’appuie sur les notions de nœuds, de relations et des propriétés qui leur sont
rattachées
 Conçues pour les données dont les relations sont représentées comme graphes, et
ayant des éléments interconnectés, avec un nombre indéterminé de relations entre
elles
 Adapté aux traitements des données des réseaux sociaux
Exemples : Neo4J et InfiniteGraph, OrientDB
20
2. Types des BD NoSQL
Elles utilisent :
* un moteur de stockage pour les objets (similaire à une base
documentaire, chaque entité de cette base étant nommée
nœud)
* un mécanisme de description d’arcs (relations entre les
objets), arcs orientés et avec propriétés (nom, date, ...)
• elles sont bien plus efficaces que les BDR pour traiter les
problématiques liées aux réseaux (cartographie, relations entre
personnes, ...)
• sont adaptées à la manipulation d'objets complexes organisés
en réseaux : cartographie, réseaux sociaux, ..
21
2. Types des BD NoSQL
22
2. Types des BD NoSQL
Comparaison entre Types de BD NoSQL
23
3. NoSQL vs SGBD Relationnels
SGBD Relationnels offrent :
• un système de jointure entre les tables permettant de construire des
requêtes complexes impliquant plusieurs entités.
• un système dʼintégrité référentielle permettant de sʼassurer que les
liens entre les entités sont valides.
Pour un contexte fortement distribué :
Ces mécanismes ont un coût considérable :
• avec la plupart des SGBD relationnels, les données d’une BD liées
entre elles sont placées sur le même nœud du serveur.
• si le nombre de liens est important, il est de plus en plus difficile de
placer les données sur des nœuds différents.
24
3. NoSQL vs SGBD Relationnels
SGBD Relationnels sont généralement transactionnels :
=> gestion de transactions respectant les contraintes ACID (Atomicity,
Consistency, Isolation, Durability)
Contexte fortement distribué :
Cette gestion a un coût considérable :
Il est nécessaire de distribuer les traitements de données entre
différents serveurs
• alors difficile de maintenir les contraintes ACID à l’échelle du
système distribué entier
• tout en maintenant des performances correctes
=> la plupart des SGBD « NoSQL » relâchent les contraintes ACID, ou
même ne proposent pas de gestion de transactions.
25
3. NoSQL vs SGBD Relationnels
Modèle relationnel :
• les données sont divisées en ligne (tuples – rows) avec des
colonnes (columns) prédéfinies (attributs)
• il n’y a pas de tuples emboîtés
• il n’y a pas de liste de valeurs
Modèle agrégat :
• une collection dʼobjets reliés
• qui doivent être traités ensemble
3. NoSQL vs SGBD Relationnels
26
3. NoSQL vs SGBD Relationnels
27
On retrouve le modèle agrégat dans les BD orientés objets
28
3. NoSQL vs SGBD Relationnels
Théorème de CAP (Brewer, 2000) :
3 propriétés fondamentales pour les systèmes distribués :
• C oherence ou Consistance : tous les nœuds du système voient
exactement les mêmes données au même moment
• A vailability ou Disponibilité : la perte de nœuds n'empêche pas les
survivants de continuer à fonctionner correctement, les données restent
Accessibles
• P artition tolerance ou Résistance au partitionnement : le système étant
partitionné, aucune panne moins importante qu'une coupure totale du réseau ne
doit lʼempêcher de répondre correctement (en cas de partitionnement en sous
réseaux, chacun doit pouvoir fonctionner de manière autonome)
Dans un système distribué, il est impossible dʼobtenir ces 3
propriétés en même temps, il faut en choisir 2 parmi les 3
29
• Les SGBDR assurent les propriétés de Consistance et de Disponibilité
(Availability) => système AC
• Les SGBD « NoSQL » sont des systèmes CP (Cohérent et Résistant au
partitionnement) ou AP (Disponible et Résistant au partitionnement).
SGBDR NoSQL
NoSQL
3. NoSQL vs SGBD Relationnels
30
Consistance (Coherence) : Un système S est dit consistant si on peut garantir
qu'une fois quʼon y enregistre un état (disons "x = y"), il donnera le même état à
chaque opération suivante, jusqu'à ce que cet état soit explicitement changé par
quelque chose en dehors de S
Ex1: Une instance de la BD est automatiquement pleinement
consistante puisqu'il n'y a qu'un seul nœud qui maintient l'état.
Ex2 : Si 2 serveurs de BD sont impliqués, et si le système est
conçu de telle sorte que toutes les clés de "a" à "m" sont conservées sur le serveur 1, et les
clés "n" à "z" sont conservées sur le serveur 2, alors le système peut encore facilement garantir
la cohérence
Ex3 : Supposons 2 BD avec des répliques. Si une des BD fait
une opération dʼinsertion de ligne, cette opération doit être aussi faite (commited) dans la
seconde BD avant que l'opération soit considérée comme complète.
• Pour avoir une cohérence de 100% dans un tel environnement répliqué, les nœuds doivent
communiquer
• Plus le nb de répliques est grand plus les performances d'un tel système sont mauvaises.
3. NoSQL vs SGBD Relationnels
31
Disponibilité (Availability): Les BD dans Ex1 ou Ex2 ne sont
pas fortement disponibles
• dans Ex1 : si le nœud tombe en panne, on perd 100%
des données
• dans Ex2 : si le nœud tombe en panne, on perd 50%
des données
• dans Ex3 : une simple réplication de la BD sur un autre
serveur assure une disponibilité de 100%.
• augmenter le nb de nœuds avec des copies des
données (répliques) augmente directement la
disponibilité du système, en le protégeant contre les
défaillances matérielles.
• les répliques aussi aider à équilibrer la charge dʼopérations concurrences,
notamment en lecture.
3. NoSQL vs SGBD Relationnels
32
Consistance (Coherence) : Un système S est dit consistant si on peut garantir
qu'une fois quʼon y enregistre un état (disons "x = y"), il donnera le même état à
chaque opération suivante, jusqu'à ce que cet état soit explicitement changé par
quelque chose en dehors de S
Ex1: Une instance de la BD est automatiquement pleinement
consistante puisqu'il n'y a qu'un seul nœud qui maintient l'état.
Ex2 : Si 2 serveurs de BD sont impliqués, et si le système est
conçu de telle sorte que toutes les clés de "a" à "m" sont conservées sur le serveur 1, et les
clés "n" à "z" sont conservées sur le serveur 2, alors le système peut encore facilement garantir
la cohérence
Ex3 : Supposons 2 BD avec des répliques. Si une des BD fait
une opération dʼinsertion de ligne, cette opération doit être aussi faite (commited) dans la
seconde BD avant que l'opération soit considérée comme complète.
• Pour avoir une cohérence de 100% dans un tel environnement répliqué, les nœuds doivent
communiquer
• Plus le nb de répliques est grand plus les performances d'un tel système sont mauvaises.
3. NoSQL vs SGBD Relationnels
33
Résistance au partitionnement (Partition-tolerance):
• Supposons que soit assuré par réplication « consistance » et « disponibilité ».
Dans le cas Ex3, supposons 2 serveurs de BD dans 2 Data-Centers différents, et
que l’on perde la connexion réseau entre les 2 Data-Centers, faisant que les 2 BD
sont incapables de synchroniser leurs états.
• Si vous parvenez à gérer les opérations de lecture/écriture sur ces 2 BD, il peut
être prouvé que les 2 serveurs ne seront plus consistants.
Exemple: une application bancaire gardant à tout moment «l'état de votre compte » est
lʼexemple parfait du problème des enregistrements inconsistants :
•Si un client retire 1000 euros à Marseille, cela doit être immédiatement répercuté à Paris, afin
que le système sache exactement combien il peut retirer à tout moment
•Si le système ne parvient pas à le faire, cela pourrait mécontenter de nombreux Clients
•Si les banques décident que la « consistance » est très importante, et désactivent les
opérations d'écriture lors de la panne, alors la «disponibilité» du cluster sera perdu puisque
tous les comptes bancaires dans les 2 villes seront désormais gelés jusqu‘à ce que le réseau
soit de nouveau opérationnel.
3. NoSQL vs SGBD Relationnels
34
Les BD NoSQL :
• Adoptent une représentation de données non relationnelle
• ne remplacent pas les BD relationnelles mais sont une alternative,
un complément apportant des solutions plus intéressantes dans
certains contextes
• apportent une plus grande performance dans le contexte des
applications Web avec des volumétries de données
Exponentielle
• utilisent une très forte distribution de ces données et des
traitements associés sur de nombreux serveurs
• font un compromis sur le caractère « ACID » des SGBDR pour
plus de scalabilité horizontale et dʼévolutivité.
Lʼadoption croissante des bases NoSQL par des grands acteurs du Web
(Google, faceBook, …) => multiplication des offres de systèmes NoSQL
3. NoSQL vs SGBD Relationnels
35
• pas de schéma pour les données ou schéma dynamique
• données de structures complexes ou imbriquées
• données distribuées : partitionnement horizontal des données
sur plusieurs nœuds (serveurs) généralement par utilisation dʼalgorithmes
« MapReduce »
• réplication des données sur plusieurs nœuds
• privilégient la Disponibilité à la Cohérence (théorème de CAP) :
AP (Disponible + Résistant au partitionnement) plutôt que CP
(Cohérent + Résistant au partitionnement)
=> n’ont en général pas de gestion de transactions
• mode d'utilisation : peu d'écritures, beaucoup de lectures
3. NoSQL vs SGBD Relationnels
36
3. NoSQL vs SGBD Relationnels
BD Relationnel noSQL
Consistance forte VS Consistance éventuelle
Grandes quantités de
données
VS Enorme quantité de
données
Évolutivité possible VS Evolutivité facile
SQL VS Map-Reduce
Bonne disponibilité VS Très haute disponibilité
37
4. Quand utiliser noSQL ?
Bases de données NOSQL
 Performances sur de gros volumes de données
 Performances sur des données non structurées
 Evolutivité très importante, même pour de faibles volumes
 Cependant:
 Technologie assez jeune donc Manque d’outils la supportant
Encore en évolution, pas de standards
 Pas de langage de requêtage commun comme SQL, mais divers:
 Requêtes spécifiques au langage (Java, Python…)
 Requêtes spéciale pour la base (Cassandra Query Language)
 API basée sur Map Reduce, ou sur graphes d’objets
On doit faire plus de travail au niveau du code, ce qui peut influer sur la
performance
38
4. Quand utiliser noSQL ?
Quand utiliser noSQL?
Si l’évolutivité est une préoccupation
Mais attention, ce n’est pas toujours un MUST : Flickr et Wikipedia
utilisent des SGBDR
Si l’absence de schéma est une préoccupation
Si être IN et FASHION est une préoccupation
Pour un nombre important de personnes, l’utilisation d’un nouveau
paradigme ou technologie est un MUST!
Bibliographie
Why NOSQL – Part 1 – CAP Theorem :
http://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap-
theorem/ DATANERD (juin 2015)
NOSQL : 5 minutes pour comprendre : http://blog.neoxia.com/nosql-5-
minutes-pour-comprendre/ NEOXIA (juin 2015)
Lilia Sfaxi, Cours Big data, INSAT-Tunisie 2014
Bernard ESPINASSE, Cours Introduction aux systèmes NoSQL , Ecole
Polytechnique Universitaire de Marseille, Avril 2013
39

Cours Big Data sep 2015- Chapitre 3.pdf

  • 1.
    Cours Big Data 3èmeGénie info- GLID Chapitre 3: Les bases de données NoSQL Ahlem Ben Younes Septembre 2015 Ecole Nationale Supérieure d’Ingénieurs de Tunis (ENSIT) 1
  • 2.
    Plan du Chapitre 1.Introduction 2. Types de BD NoSQL 3. NoSQL VS BDR 4. Quand utiliser NoSQL? 2
  • 3.
    3 Bases de donnéesNOSQL ou NoSQL?? C’est pour :Not Only SQL et non (pas de SQL) Beaucoup privilégient NOSQL ou noSQL plutôt que NoSQL  Bases de données non-relationnelles et largement distribuées Permet une analyse et une organisation rapides et ad-hoc des données de très grands volumes et de types de données disparates  Appelées également  Cloud Databases  Non-Relational Databases  Big Data Databases  …  Développées en réponse à l’augmentation exponentielle des données générées, enregistrées et analysées par les utilisateurs modernes et leurs applications 1. Introduction
  • 4.
    1. Introduction 4 Pourquoi lesBD noSQL?  SGBD traditionnel SQL  Couteau suisse  Fait tout bien  Non optimal pour applications particulières  Nouveaux cas d’utilisation extrêmes  Big data, Web, flux de données, infonuagique, …  Architectures spécialisées  Mouvement noSQL (not only SQL)
  • 5.
    1. Introduction 5  Architectureparallèle/répartie massive – Réseau très rapide – Grappes de machine de commodité (fiabilité limitée, faible coût)  Fragmentation et duplication – Disponibilité à tout prix – Pas de point de défaillance unique – Consistance limitée (transaction locale, BASE, …) – Hachage réparti  Localement – compression, traitement séquentiel  Scalabilité massive (élasticité) – Virtualisation d’un bassin de ressources  Flexibilité du schéma  API simple – Programmation plus complexe …
  • 6.
  • 7.
    7 2. Types desBD NoSQL Types des bases de données NOSQL  Clef/valeur Orientées colonnes  Orientées documents  Orientées graphes
  • 8.
    8 2. Types desBD NoSQL Type Clé/Valeur L’un des types les plus simples, sorte de Hashmap distribuée Conçues pour sauvegarder les données sans définir de schéma Toutes les données sont sous forme de clef/valeur La valeur peut être une chaîne de caractères, un objet sérialisé, blob… La donnée est opaque au système: il n’est pas possible d’y accéder sans passer par la clef  Absence de typage a un impact sur le requêtage: toute l’intelligence portée avant par les requêtes devra être portée par l’applicatif qui interroge la BD  Communications se résumant surtout aux opérations PUT, GET et DELETE  Objectif: fournir un accès rapide aux informations, conserver la session d’un site web… Exemple : DynamoDB (Amazon), Azure Table Storage (ATS), Redis, BerkeleyDB, Voldemort (LinkedIn)
  • 9.
    9 2. Types desBD NoSQL Id Nom Humeur Date_naissance Couleur 12 Stella Heureuse 2007-04-01 Noire 13 Wimma Faim NULL NULL 9 Ninja NULL NULL NULL Nom_$#_Stella~~Humeur_ $#_Heureuse~~Date_naissance_ $#_2007-04-01… Chien_12 Clef Valeur
  • 10.
    10 2. Types desBD NoSQL Orientées Colonnes Évolution de la BD clef/valeur  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)
  • 11.
    11 2. Types desBD NoSQL Id Nom Humeur Date_naissance Couleur 12 Stella Heureuse 2007-04-01 Noire 13 Wimma Faim NULL NULL 9 Ninja NULL NULL NULL Colonnes Clef Requête: clef/famille:titre[/time] Exp: "chien_12"/"Chien": "Nom « Stella »
  • 12.
    12 2. Types desBD NoSQL Les principaux concepts associés sont les suivants : • Colonne : entité de base représentant un champ de donnée chaque colonne est définie par un couple clé / valeur une colonne contenant d’autres colonnes est nommée supercolonne. • Famille de colonnes : permettent de regrouper plusieurs colonnes (ou supercolonnes) les colonnes sont regroupées par ligne chaque ligne est identifiée par un identifiant unique (assimilées aux tables dans le modèle relationnel) et sont identifiées par un nom unique • Supercolonnes: situées dans les familles de colonnes sont souvent utilisées comme les lignes d’une table de jointure dans le modèle relationnel
  • 13.
  • 14.
    14 2. Types desBD NoSQL • Elles sont les plus complexes à appréhender des BD NoSQL, même si au final on a un schéma assez proche des bases documentaires • Elles sont très utilisées pour les traitements dʼanalyse de données et dans les traitements massifs (notamment via des opérations de type MapReduce). • Elles offrent plus de flexibilité que les BD relationnelles: Il est possible dʼajouter une colonne ou une super colonne à nʼimporte quelle ligne d’une famille de colonnes, colonnes ou supercolonne à tout instant.
  • 15.
    15 2. Types desBD NoSQL tuple pour le client 1234 • table « Clients » partitionnée en 2 familles de colonnes : « Profile » et « Orders » • chaque famille de colonnes a des colonnes (e.g. name et payment), des super colonnes avec un nom et un nombre arbitraire de colonnes associées • chaque famille de colonnes peut être traitée comme une table séparée en terme de partitionnement (sharding) : * « Profile » pour le client 1234 peut être sur le nœud 1 * « Orders » pour le client 1234 peut être sur le nœud 2
  • 16.
    16 2. Types desBD NoSQL Orientées Documents Étendent le paradigme clef/valeur, avec des « documents » plus complexes à la place des données simples, et une clef unique pour chacun d’eux Documents de type JSON ou XML  Chaque document est un objet, contient un ou plusieurs champs, et chaque champs contient une valeur typée (string, date, binary ou array) Permettent de stocker, extraire et gérer les informations orientées documents (données semi-structurées)  Avantage : pouvoir récupérer, via une seule clef, un ensemble d’informations structurées de manière hiérarchique o Dans les bases relationnelles, cela impliquerait plusieurs jointures Exemples : Mongo DB (SourceForge), Couch DB (Apache), RavenDB (destiné aux plateformes .Net/Windows, interrogation via LINQ)
  • 17.
    17 2. Types desBD NoSQL { type : « Chien », nom : « Stella », humeur : « Heureuse », date_naissance : 2007-04-01 aboiement : [ { texte : « aboiement type… » commentaires : [ { texte : « on s’en fout! » } ] }] } Id Nom Humeur Date_naissance Couleur 12 Stella Heureuse 2007-04-01 Noire 13 Wimma Faim NULL NULL 9 Ninja NULL NULL NULL Chien_12 Clef Document
  • 18.
  • 19.
    19 2. Types desBD NoSQL Orientées Graphes Basées sur les théories des graphes  S’appuie sur les notions de nœuds, de relations et des propriétés qui leur sont rattachées  Conçues pour les données dont les relations sont représentées comme graphes, et ayant des éléments interconnectés, avec un nombre indéterminé de relations entre elles  Adapté aux traitements des données des réseaux sociaux Exemples : Neo4J et InfiniteGraph, OrientDB
  • 20.
    20 2. Types desBD NoSQL Elles utilisent : * un moteur de stockage pour les objets (similaire à une base documentaire, chaque entité de cette base étant nommée nœud) * un mécanisme de description d’arcs (relations entre les objets), arcs orientés et avec propriétés (nom, date, ...) • elles sont bien plus efficaces que les BDR pour traiter les problématiques liées aux réseaux (cartographie, relations entre personnes, ...) • sont adaptées à la manipulation d'objets complexes organisés en réseaux : cartographie, réseaux sociaux, ..
  • 21.
  • 22.
    22 2. Types desBD NoSQL Comparaison entre Types de BD NoSQL
  • 23.
    23 3. NoSQL vsSGBD Relationnels SGBD Relationnels offrent : • un système de jointure entre les tables permettant de construire des requêtes complexes impliquant plusieurs entités. • un système dʼintégrité référentielle permettant de sʼassurer que les liens entre les entités sont valides. Pour un contexte fortement distribué : Ces mécanismes ont un coût considérable : • avec la plupart des SGBD relationnels, les données d’une BD liées entre elles sont placées sur le même nœud du serveur. • si le nombre de liens est important, il est de plus en plus difficile de placer les données sur des nœuds différents.
  • 24.
    24 3. NoSQL vsSGBD Relationnels SGBD Relationnels sont généralement transactionnels : => gestion de transactions respectant les contraintes ACID (Atomicity, Consistency, Isolation, Durability) Contexte fortement distribué : Cette gestion a un coût considérable : Il est nécessaire de distribuer les traitements de données entre différents serveurs • alors difficile de maintenir les contraintes ACID à l’échelle du système distribué entier • tout en maintenant des performances correctes => la plupart des SGBD « NoSQL » relâchent les contraintes ACID, ou même ne proposent pas de gestion de transactions.
  • 25.
    25 3. NoSQL vsSGBD Relationnels Modèle relationnel : • les données sont divisées en ligne (tuples – rows) avec des colonnes (columns) prédéfinies (attributs) • il n’y a pas de tuples emboîtés • il n’y a pas de liste de valeurs Modèle agrégat : • une collection dʼobjets reliés • qui doivent être traités ensemble
  • 26.
    3. NoSQL vsSGBD Relationnels 26
  • 27.
    3. NoSQL vsSGBD Relationnels 27 On retrouve le modèle agrégat dans les BD orientés objets
  • 28.
    28 3. NoSQL vsSGBD Relationnels Théorème de CAP (Brewer, 2000) : 3 propriétés fondamentales pour les systèmes distribués : • C oherence ou Consistance : tous les nœuds du système voient exactement les mêmes données au même moment • A vailability ou Disponibilité : la perte de nœuds n'empêche pas les survivants de continuer à fonctionner correctement, les données restent Accessibles • P artition tolerance ou Résistance au partitionnement : le système étant partitionné, aucune panne moins importante qu'une coupure totale du réseau ne doit lʼempêcher de répondre correctement (en cas de partitionnement en sous réseaux, chacun doit pouvoir fonctionner de manière autonome) Dans un système distribué, il est impossible dʼobtenir ces 3 propriétés en même temps, il faut en choisir 2 parmi les 3
  • 29.
    29 • Les SGBDRassurent les propriétés de Consistance et de Disponibilité (Availability) => système AC • Les SGBD « NoSQL » sont des systèmes CP (Cohérent et Résistant au partitionnement) ou AP (Disponible et Résistant au partitionnement). SGBDR NoSQL NoSQL 3. NoSQL vs SGBD Relationnels
  • 30.
    30 Consistance (Coherence) :Un système S est dit consistant si on peut garantir qu'une fois quʼon y enregistre un état (disons "x = y"), il donnera le même état à chaque opération suivante, jusqu'à ce que cet état soit explicitement changé par quelque chose en dehors de S Ex1: Une instance de la BD est automatiquement pleinement consistante puisqu'il n'y a qu'un seul nœud qui maintient l'état. Ex2 : Si 2 serveurs de BD sont impliqués, et si le système est conçu de telle sorte que toutes les clés de "a" à "m" sont conservées sur le serveur 1, et les clés "n" à "z" sont conservées sur le serveur 2, alors le système peut encore facilement garantir la cohérence Ex3 : Supposons 2 BD avec des répliques. Si une des BD fait une opération dʼinsertion de ligne, cette opération doit être aussi faite (commited) dans la seconde BD avant que l'opération soit considérée comme complète. • Pour avoir une cohérence de 100% dans un tel environnement répliqué, les nœuds doivent communiquer • Plus le nb de répliques est grand plus les performances d'un tel système sont mauvaises. 3. NoSQL vs SGBD Relationnels
  • 31.
    31 Disponibilité (Availability): LesBD dans Ex1 ou Ex2 ne sont pas fortement disponibles • dans Ex1 : si le nœud tombe en panne, on perd 100% des données • dans Ex2 : si le nœud tombe en panne, on perd 50% des données • dans Ex3 : une simple réplication de la BD sur un autre serveur assure une disponibilité de 100%. • augmenter le nb de nœuds avec des copies des données (répliques) augmente directement la disponibilité du système, en le protégeant contre les défaillances matérielles. • les répliques aussi aider à équilibrer la charge dʼopérations concurrences, notamment en lecture. 3. NoSQL vs SGBD Relationnels
  • 32.
    32 Consistance (Coherence) :Un système S est dit consistant si on peut garantir qu'une fois quʼon y enregistre un état (disons "x = y"), il donnera le même état à chaque opération suivante, jusqu'à ce que cet état soit explicitement changé par quelque chose en dehors de S Ex1: Une instance de la BD est automatiquement pleinement consistante puisqu'il n'y a qu'un seul nœud qui maintient l'état. Ex2 : Si 2 serveurs de BD sont impliqués, et si le système est conçu de telle sorte que toutes les clés de "a" à "m" sont conservées sur le serveur 1, et les clés "n" à "z" sont conservées sur le serveur 2, alors le système peut encore facilement garantir la cohérence Ex3 : Supposons 2 BD avec des répliques. Si une des BD fait une opération dʼinsertion de ligne, cette opération doit être aussi faite (commited) dans la seconde BD avant que l'opération soit considérée comme complète. • Pour avoir une cohérence de 100% dans un tel environnement répliqué, les nœuds doivent communiquer • Plus le nb de répliques est grand plus les performances d'un tel système sont mauvaises. 3. NoSQL vs SGBD Relationnels
  • 33.
    33 Résistance au partitionnement(Partition-tolerance): • Supposons que soit assuré par réplication « consistance » et « disponibilité ». Dans le cas Ex3, supposons 2 serveurs de BD dans 2 Data-Centers différents, et que l’on perde la connexion réseau entre les 2 Data-Centers, faisant que les 2 BD sont incapables de synchroniser leurs états. • Si vous parvenez à gérer les opérations de lecture/écriture sur ces 2 BD, il peut être prouvé que les 2 serveurs ne seront plus consistants. Exemple: une application bancaire gardant à tout moment «l'état de votre compte » est lʼexemple parfait du problème des enregistrements inconsistants : •Si un client retire 1000 euros à Marseille, cela doit être immédiatement répercuté à Paris, afin que le système sache exactement combien il peut retirer à tout moment •Si le système ne parvient pas à le faire, cela pourrait mécontenter de nombreux Clients •Si les banques décident que la « consistance » est très importante, et désactivent les opérations d'écriture lors de la panne, alors la «disponibilité» du cluster sera perdu puisque tous les comptes bancaires dans les 2 villes seront désormais gelés jusqu‘à ce que le réseau soit de nouveau opérationnel. 3. NoSQL vs SGBD Relationnels
  • 34.
    34 Les BD NoSQL: • Adoptent une représentation de données non relationnelle • ne remplacent pas les BD relationnelles mais sont une alternative, un complément apportant des solutions plus intéressantes dans certains contextes • apportent une plus grande performance dans le contexte des applications Web avec des volumétries de données Exponentielle • utilisent une très forte distribution de ces données et des traitements associés sur de nombreux serveurs • font un compromis sur le caractère « ACID » des SGBDR pour plus de scalabilité horizontale et dʼévolutivité. Lʼadoption croissante des bases NoSQL par des grands acteurs du Web (Google, faceBook, …) => multiplication des offres de systèmes NoSQL 3. NoSQL vs SGBD Relationnels
  • 35.
    35 • pas deschéma pour les données ou schéma dynamique • données de structures complexes ou imbriquées • données distribuées : partitionnement horizontal des données sur plusieurs nœuds (serveurs) généralement par utilisation dʼalgorithmes « MapReduce » • réplication des données sur plusieurs nœuds • privilégient la Disponibilité à la Cohérence (théorème de CAP) : AP (Disponible + Résistant au partitionnement) plutôt que CP (Cohérent + Résistant au partitionnement) => n’ont en général pas de gestion de transactions • mode d'utilisation : peu d'écritures, beaucoup de lectures 3. NoSQL vs SGBD Relationnels
  • 36.
    36 3. NoSQL vsSGBD Relationnels BD Relationnel noSQL Consistance forte VS Consistance éventuelle Grandes quantités de données VS Enorme quantité de données Évolutivité possible VS Evolutivité facile SQL VS Map-Reduce Bonne disponibilité VS Très haute disponibilité
  • 37.
    37 4. Quand utilisernoSQL ? Bases de données NOSQL  Performances sur de gros volumes de données  Performances sur des données non structurées  Evolutivité très importante, même pour de faibles volumes  Cependant:  Technologie assez jeune donc Manque d’outils la supportant Encore en évolution, pas de standards  Pas de langage de requêtage commun comme SQL, mais divers:  Requêtes spécifiques au langage (Java, Python…)  Requêtes spéciale pour la base (Cassandra Query Language)  API basée sur Map Reduce, ou sur graphes d’objets On doit faire plus de travail au niveau du code, ce qui peut influer sur la performance
  • 38.
    38 4. Quand utilisernoSQL ? Quand utiliser noSQL? Si l’évolutivité est une préoccupation Mais attention, ce n’est pas toujours un MUST : Flickr et Wikipedia utilisent des SGBDR Si l’absence de schéma est une préoccupation Si être IN et FASHION est une préoccupation Pour un nombre important de personnes, l’utilisation d’un nouveau paradigme ou technologie est un MUST!
  • 39.
    Bibliographie Why NOSQL –Part 1 – CAP Theorem : http://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap- theorem/ DATANERD (juin 2015) NOSQL : 5 minutes pour comprendre : http://blog.neoxia.com/nosql-5- minutes-pour-comprendre/ NEOXIA (juin 2015) Lilia Sfaxi, Cours Big data, INSAT-Tunisie 2014 Bernard ESPINASSE, Cours Introduction aux systèmes NoSQL , Ecole Polytechnique Universitaire de Marseille, Avril 2013 39