Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Not only SQL
Introduction.
TELECOM ParisTech, Institut TELECOM CNRS LTCI, 46, rue Barrault, 75013 Paris.
FRANCE
Soufiane RITAL
http://tsi.enst.fr/~rital/
PLATO – OTB – KEO S. RITAL
Références
NoSQL. Une nouvelle approche du stockage et de
la manipulation des données. Smile open Source
Solutions.
URL :
• http://www.opensides.fr/2011/03/10/hadoop-en-
moins-de-5-minutes/
• https://sites.google.com/a/octo.com/nosql/
• …
2
PLATO – OTB – KEO S. RITAL
Plan
Pourquoi noSQL ?
• Limites des SGBD relationnels dans une
architecture distribuées.
• Limites face aux utilisateurs
Les solutions
• NoSQL : Paradigme Clé / Valeur
• NoSQL : Bases documentaires
• NoSQL : Bases orientées colonnes
• NoSQL : Graphe / Hypergraphe
Map/Reduce et dénormalisation des données.
3
PLATO – OTB – KEO S. RITAL
Technologies SQL
BD relationnelle : transactionnelle, intégrité de
données.
Grand succès des BD relationnelles grâce à SQL
• Standardisation des SQL (moins de cout en
formation pour les entreprises)
• SQL embarque plein de fonctionnalités.
• Maturation des outils permettant l’exploitation des
BD-R
- Développeurs (IDE graphiques, intégration dans les langages
et les frameworks, …)
- Exploitation (outils de sauvegarde, monitoring, …)
4
PLATO – OTB – KEO S. RITAL
Mais !
Les SGBD relationnels ne sont pas adaptés aux
environnements distribués requis par les volumes
gigantesques.
5
PLATO – OTB – KEO S. RITAL
Leurs besoins.
Scaling des traitements. Capacité à distribuer les
traitements
Scaling des données. Capacité à répartir les
données.
La distribution de données sur plusieurs
dataCenters (répliquer les données) afin d’assurer
une continuité de service en cas de panne d’un
datacenter. Les donnes sont plus proche au client.
Architecture qui fonctionnent sur du matériel
moins sophistiqué.
6
PLATO – OTB – KEO S. RITAL
Limites des BD Relationnelles.
Le modèle relationnel est transactionnel !
• Les développeurs disposent d’un ensembles de req.
SQL permettant de faire :
- des jointures entre les tables (requêtes complexe, faisant
intervenir plusieurs tables, produit cartésien)
- Intégrité référentielle permettant de s’assurer que les liens
entre les entités sont valides.
• La mise en œuvre dans un contexte distribué est
très couteuse !
- S’assurer que les données liées entre elles sont placées sur
le même nœud du serveur.
7
PLATO – OTB – KEO S. RITAL
Limites des BD Relationnelles.
Autre le modèle relationnel, les moteurs SGBDs
(qui assure le fonctionnement de SGBD, création,
insertion, recherche, …) sont transactionnels ce
qui leur impose le respect des contraintes
ACID.
Atomicity.
Consistency
Isolation
Durability.
8
PLATO – OTB – KEO S. RITAL
ACID. Atomicity
Les mises à jour de la BD doivent être atomiques.
Binaires : réalisées ou pas.
9
Par exemple, sur 5000 lignes devant
être modifiées au sein d’une même
transaction,
si la modification d'une seule
échoue, alors la transaction entière
doit être annulée.
PLATO – OTB – KEO S. RITAL
ACID. Consistency
Les modifications apportées à la base doivent être
valides, en accord avec l'ensemble de la base et
de ses contraintes d'intégrité
10
Si un changement enfreint l'intégrité des
données, alors soit le système doit modifier
les données dépendantes, comme dans le
cas classique d’une suppression en
cascade, soit la transaction doit être
interdite.
PLATO – OTB – KEO S. RITAL
ACID Isolation
Les transactions lancées au même moment ne
doivent jamais interférer entre elles
11
Si une requête est lancée alors qu'une
transaction est en cours, le résultat de
celle-ci ne peut montrer que l'état original
ou final d'une donnée, mais pas l'état
intermédiaire.
PLATO – OTB – KEO S. RITAL
ACID. Durability
Toutes les transactions sont lancées de manière
définitive. Une base ne doit pas afficher le succès
d'une transaction, pour ensuite remettre les
données modifiées dans leur état initial.
12
PLATO – OTB – KEO S. RITAL
ACID
Dans un contexte centralisé, les contraintes ACID
sont plutôt aisées à garantir.
Système distribué : implique distribuer les
traitements de données entre différents serveurs.
Les contraintes ACID à l’échelle du système
distribué entier devient alors difficile tout en
maintenant des performances correctes
13
PLATO – OTB – KEO S. RITAL
CAP
CAP (Consistency-Availibility-
Partition tolerance).
• Coherence ou Cohérence : tous les
nœuds du système voient exactement
les mêmes données au même
moment.
• Availability ou Disponibilité : la perte
de noeuds n'empêche pas les
survivants de continuer à fonctionner
correctement.
• Partition tolerance ou Résistance au
partitionnement : aucune panne moins
importante qu'une coupure totale du
réseau ne doit empêcher le système
de répondre correctement.
14
PLATO – OTB – KEO S. RITAL
Les limites face aux usages
Manipulation des objets complexes :
• Absence de gestion d’objets hétérogènes ainsi que
le besoin de déclarer au préalable l’ensemble des
champs représentant un objet.
15
PLATO – OTB – KEO S. RITAL
Les solutions NoSQL
Pas de solution unique ! Plusieurs approches !
Regroupées en 4 catégories :
• Paradigme Clé / Valeur.
• Bases documentaires
• Base orientées colonnes
• Paradigme graphe.
16
PLATO – OTB – KEO S. RITAL
Clé / Valeur
Chaque objet est identifié par une clé
unique.
La structure de l’objet est libre et le
plus souvent laissé à la charge du
développeur (XML, JSON, …).
Quatre opération sont possibles
(CRUD) :
• Create
• Read
• Update
• Delete
17
clé 1
clé 2
clé 3
clé 4
Valeur
Valeur
Valeur
Valeur
PLATO – OTB – KEO S. RITAL
Les solutions.
Redis
Riak
Voldemort
Oracle NOSQL (récent)
18
PLATO – OTB – KEO S. RITAL
Base documentaires
Les bases de données
documentaires sont
constituées de collections
de documents. Un
document est composé de
champs et des valeurs
associées, ces dernières
pouvant être requêtées.
Par ailleurs, les valeurs
peuvent être, soit d’un type
simple (entier, chaine de
caractère, date, ...), soit
ellesmêmes composées de
plusieurs couples
clé/valeur.
19
Clé 1
Clé 2
Clé 3
Clé k
Clé n
Champ1 / valeur
Champ2 / valeur
Champ3 / valeur
Champ1 / valeur
Champ2 / valeur
Champ1 / valeur
Champ2 / valeur
Champ3 Champ1 valeur
Champ2 valeur
Champ3 valeur
Document
Document
Document
PLATO – OTB – KEO S. RITAL
Base documentaires
On conserve généralement une interface d’accès
HTTP REST permettant d’effectuer simplement des
requêtes sur la base mais celle-ci est plus
complexe que l’interface CRUD des bases
clés/valeurs. Les formats de données JSON et
XML sont le plus souvent utilisés afin d’assurer le
transfert des données sérialisées entre
l’application et la base.
20
PLATO – OTB – KEO S. RITAL
Les solutions
MongoDB
CouchDB
Terrastore
21
PLATO – OTB – KEO S. RITAL
Bases orientées Colonnes
relativement proche des bases documentaires
Plus de performance en MapReduce.
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 super-colonne.
Famille de colonnes : il s’agit d’un conteneur
permettant de regrouper plusieurs colonnes ou
supercolonnes.
22
PLATO – OTB – KEO S. RITAL
Bases orientées Colonnes
Les colonnes sont regroupées par ligne et chaque
ligne est identifiée par un identifiant unique. Elles
sont généralement assimilées aux tables dans le
modèle relationnel et sont identifiées par un nom
unique.
23
PLATO – OTB – KEO S. RITAL
Bases orientées Colonnes
Les 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.
Comparativement au modèle relationnel, les bases
orientée colonnes offrent plus de flexibilité. Il est
effet possible d’ajouter une colonne ou une super
colonne à n’importe quelle ligne d’une famille de
colonnes, colonnes ou supercolonne à tout
instant.
24
PLATO – OTB – KEO S. RITAL
Solutions
Cassandra,
Amazon SimpleDB,
Google BigTable,
HBase
25
PLATO – OTB – KEO S. RITAL
Base orientée Graphe/Hypergraphe
Ce modèle s’appuie principalement sur deux
concepts :
• d’une part l’utilisation d’un moteur de stockage pour
les objets (qui se présentent sous la forme d’une
base documentaire, chaque entité de cette base
étant nommée noeud).
• D’autre part, à ce modèle, vient s’ajouter un
mécanisme permettant de décrire les arcs (relations
entre les objets), ceux-ci étant orientés et disposant
de propriétés (nom, date, …).
26
PLATO – OTB – KEO S. RITAL
Base orientée Graphe/Hypergraphe
27
PLATO – OTB – KEO S. RITAL
Les solutions
Neo4j
OrientDB
28
PLATO – OTB – KEO S. RITAL
Nouvelles pratiques. Dénormalisation des
données.
29
PLATO – OTB – KEO S. RITAL
Nouvelles pratiques. MapReduce
Données
• MapReduce est un framework de calcul distribue sur
de grosses quantités de données.
Parallélisme
• MapReduce permet de repartir la charge sur un
grand nombre de serveurs.
• Distribution « haut niveau » avec une abstraction
quasi-totale du la couche matérielle : ajouter des
machines suffit a augmenter la capacité de calcul de
manière « plug-and-play » (scalable-friendly).
30
PLATO – OTB – KEO S. RITAL
Nouvelles pratiques. MapReduce
Implémentations
• La librairie MapReduce de Google existe dans
plusieurs langages de programmation dont C++, C#,
Erlang, Java, Python, Ruby...
• D'autre librairie implémente le concept : par exemple
Hadoop de la fondation Apache et Elastic de chez
Amazon.
Abstraction et encapsulation
• MapReduce gère entièrement le cluster et la
répartition de la charge.
• calcul distribue sans aucune connaissance dans le
domaine (Cloud). 31
PLATO – OTB – KEO S. RITAL
Nouvelles pratiques. MapReduce
Map / Reduce
• map est une fonction qui
applique une autre fonction
a tout les éléments d'une
liste (renvoie une liste).
• reduce applique
récursivement une fonction
aux éléments d'une liste
par paires en utilisant une
« graine » la première fois
puis le résultat de
l'application précédente
(renvoie un élément).
32
PLATO – OTB – KEO S. RITAL
Nouvelles pratiques. MapReduce
33