Académique Documents
Professionnel Documents
Culture Documents
Introduction
1 / 29 2 / 29
Introduction
I NoSQL : ”Not Only SQL”, ce n’est pas du relationnel, et le contexte
d’utilisation n’est donc pas celui des SGBDR.
NoSQL pour le BigData I Origine : recherche d’information sur le web, moteurs type Google,
Yahoo, données des réseaux sociaux, ...
I Besoin de stockage d’énormes masses de données. Twitter par
Anne-Cécile Caron exemple reçoit plusieurs Tera-octets de données par jour.
I Système distribué
Master MIAGE - SGBD
I table d’associations - Map - de couples (clef,valeur)
1er trimestre 2017-2018 I Di↵érentes approches, rangées dans la famille ”NoSQL”.
3 / 29 4 / 29
Bibliographie Introduction
Le cours d’aujourd’hui utilise Pourquoi ces technologies sont passées des acteurs du web au ”grand
I le livre de Serge Abiteboul et al, public” ?
Web Data Management I Big Data =) Volume, Variété, Vélocité
http://webdam.inria.fr/Jorge/ I Exploitation de données externes ajoutées aux données internes,
I le livre blanc de Smile sur NoSQL : quelles soient structurées (relationnelles, multidimensionnelles) ou
http://www.smile.fr/Livres-blancs/Culture-du-web/NoSQL non (e.g. documentaires)
I le livre de Eric Redmond et Jim R. Wilson, I Quelques exemples de Big Data :
Seven Databases in Seven Weeks I Service marketing : informatique décisionnelle ”classique” (données
I le livre de Nick Dimiduk et Amandeep Khurana, structurées), couplée avec l’exploitation de mails (données internes
HBase in Action non structurés), et des réseaux sociaux (données externes non
structurées).
I Recherche Scientifique : capteurs qui ramènent énormément de
données numériques (accélérateur de particules, télescope, ...) ou
nécessité de partager des données très volumineuses (génomique, ...)
I NoSQL n’est qu’une partie de cette vaste problématique du Big
Data.
NoSQL pour le BigData NoSQL pour le BigData
Contexte Contexte
Recherche sur le web Recherche sur le web
5 / 29 6 / 29
Le théorème CAP
Aucun système distribué ne peut fournir les 3 propriétés suivantes :
1. Consistency (cohérence) : tous les noeuds voient exactement les
mêmes données en même temps
2. Availability (disponibilité) : garantie que toutes les requêtes
reçoivent une réponse, car l’échec d’un noeud n’empêche pas les
survivants de continuer à fonctionner
3. Partition tolérance (résistance au partitionnement) : Le système
continue à fonctionner malgré la perte d’un message du à une pendant l’envoi du message M, d 0 6= d
panne. Autrement dit, en cas de morcellement du réseau, chaque I en général, la résistance au partitionnement n’est pas discutable dans un
sous-réseau doit pouvoir fonctionner de façon autonome. système distribué : on doit choisir en A+P ou C+P
I Un SGBD relationnel classique va privilégier C+P, avec un système
transactionnel distribué et la vérification des propriétés ACID. C’est au
détriment des performances !
I En NoSQL, on choisit plutôt A+P.
NoSQL pour le BigData NoSQL pour le BigData
Bases NoSQL Bases NoSQL
MapReduce
13 / 29 14 / 29
HBase
I HBase est construit au dessus de HDFS, système de fichier distribué.
I 1 table est stockée dans une ou plusieurs régions, Le découpage se fait
par famille de colonnes, chacune stockée dans des HFiles (HDFS).
I HBase est construit au dessus de Hadoop, framework de programmation
distribuée, basé sur MapReduce ! HBase propose donc aussi une API
pour MapReduce
I HBase est fortement consistent (C+P) sur 1 cluster : HDFS gère la
réplication des données à chaque écriture, et si un serveur de régions
tombe en panne, il faut modifier les informations ”dans quelle région
trouver quelle donnée”, pendant ce temps la base n’est plus disponible.
Quand on a plusieurs clusters, les clusters de réplication ne donnent pas
forcément la donnée la plus récente (mais système ”eventually
consistent”).
I HBase ne permet pas l’indexation des données, autrement qu’avec la
rowkey.
I HBase permet de gérer beaucoup de données ... il n’est pas adapté pour 1
seule machine.
Exemple : Neo4j
I très efficace pour traverser un graphe (pas de jointure)
I algorithmes classiques sur les graphes, que l’on peut appeler avec
l’interface REST
I Par défaut, Neo4j gère des transactions avec les propriétés ACID.
I Pour le passage à l’échelle en mode distribué, utiliser Neo4j HA
(pour High Availability) : available et partition tolerant (A+P du
théorème CAP)
I Peut gérer plus de 30 milliards de sommets, et plus de 30 milliards
de relations (arcs).
I Pas de support pour de la programmation MapReduce