Vous êtes sur la page 1sur 21

Big Data

Informatique pour les données et calculs massifs et


distribués

Dr. SAGAR Samya


Exemples de systèmes NoSQL :
Cassandra – DB orientée
colonnes

2 SAGAR Samya
Qu’est-ce que Cassandra ?
 Conçu à l’origine par Facebook, maintenant un projet de
la fondation Apache, distribué par la société Datastax.
 Initialement basé sur le système BigTable de Google (stockage orienté
colonnes)
 A fortement évolué vers un modèle relationnel étendu (N1NF = Non
First Normal Form)
 Un des rares systèmes NoSQL à proposer un typage fort
 Un langage de définition de schéma et de requêtes, CQL (pas de jointure)
 Construit dès l’origine comme un système scalable et
distribué.
 Propose des méthodes de passage à l’échelle inspirées du système Dynamo
(Amazon)
 Distribution par hachage (consistent hashing)
 Tolérance aux pannes par réplication en mode multi-nœuds

3 SAGAR Samya
Modèle = relationnel + types complexes
 Cassandra gère les données à trois niveaux :
 Les bases (keyspaces);
 Les tables (column families);
 Les lignes (rows) constituées de valeurs simples
ou complexes.
 Une Base Cassandra peut être considérée :
Perspective A : c’est du relationnel étendu en rompant la
première règle de normalisation (type atomique).
Perspective B : chaque ligne est un document structuré.

4 SAGAR Samya
Paires et documents
La structure de base est la paire (clé, valeur)
 Clé : un identifiant
 Valeur : atomique (entier, chaîne de caractères), ou complexe
(dictionnaire, ensemble, liste)
 Une ligne (row, document) est un identifiant (row key) associé
à un ensemble de paires(clé, valeur).
 Les lignes sont typées par un schéma, y compris les
données imbriquées.
 Cassandra n’autorise pas (au moins avec CQL) l’insertion
de données ne respectant pas le schéma.

5 SAGAR Samya
Conception avec Cassandra
Cassandra ne propose pas de jointure (C’est du NoSQL)
 Il est donc préférable de regrouper les données le plus
possible dans des lignes (notion de document autonome).
 La conception devrait se baser sur les requêtes les plus
fréquentes de l’application (voir la partie sur la modélisation de
données NoSQL).
 On peut représenter les mêmes données sous plusieurs
formes (redondance).
 Tous les départements, avec leurs directeurs et employés (Voir
TP).
 Tous les employés, avec les départements où ils travaillent.
7 SAGAR Samya
Exemples de systèmes NoSQL :
MongoDB – DB orientée
documents

8 SAGAR Samya
Introduction
 Système de gestion de base de données NoSQL orientée
documents
 Développé en C++
 Développée en 2007 par la firme MongoDB
 Open-source
 Un des SGBD NoSQL les plus populaires
 Drivers disponibles pour plusieurs langages de
programmation (Java, JavaScript, PHP, Python,...)
 Disponibilité de plusieurs fonctionnalités SQL (COUNT,
GROUP BY, ORDER BY, SUM...)
9 SAGAR Samya
Structure de données – document
 Données avec un schéma flexible
 Une base de données contient des collections de documents
 Stockées sur le disque sous forme de documents BSON
 Documents BSON (Binary JSON) : représentation binaire sérialisées
d’un document JSON
 Supporte plus de types de données que JSON (documents, tableaux,
tableaux de documents,…)
 Taille max d’un document : 16 Mo
 Utilisation de l’API GridFS pour stocker des documents plus larges
que la taille autorisée
 GridFS permet de diviser les documents en chunks de même taille, et
les stocke sous forme de documents séparés

10 SAGAR Samya
Structure de données – document
 Un document représente une entité du système
 Chaque collection de la base de données est composée de
zéros ou plusieurs documents
 Les documents d’une même collection n’ont pas à être du même
format
 Un document peut contenir des sous-documents
 La représentation textuelle des champs est automatiquement
sauvegardée en format binaire (BSON)
 La notation BSON ajoute certaines contraintes
supplémentaires à JSON

11 SAGAR Samya
Structure de données – document
 Les champs ne peuvent contenir
 Le caractère NULL
 Le point (.)
 Le signe de dollar ($)
 Le nom de champs _id est réservé au numéro
d’identificateur unique du document
 Un document peut ressembler à ceci :
{
Nom : "Nouveau projet",
version : 1,
langages : ["C++", "Java"],
admin : { nom : "Vincent", idEmploye : 1}
}

12 SAGAR Samya
Terminologie
Base de données relationnelle MongoDB
Base de données Base de données
Table Collection
Ligne (tuple) Document
Colonne Champ
Index Index
Jointure Imbrication
Clé étrangère Référence
Clé primaire Clé primaire (représentée par le champ _id)

Remarques :
- En BDR, tous les tuples d’une table ont les mêmes champs mais les valeurs peuvent être
différentes (les valeurs sont affectées à des colonnes).
- Dans une collection MongoDB, les documents peuvent ne pas avoir un champ partagé
(pas de colonnes dans un document MongoDB).
13 SAGAR Samya
Modélisation − quelques règles simples
1..1
Personne Carte Vitale

14 SAGAR Samya
Modélisation − quelques règles simples
1..1
Personne Carte Vitale

1 seule collection Personne


Avec un sous-document
"carte_vitale"

Collection "Personne"
{
nom: "…",
carte_vitale: {
date_emission: "…",
cnam: "…"
}
}

15 SAGAR Samya
Modélisation − quelques règles simples
1..peu
Personne Adresse

16 SAGAR Samya
Modélisation − quelques règles simples
1..peu
Personne Adresse

1 seule collection Personne


Avec une liste sous-document "adresse"

Collection "Personne"
{
nom: "Foued Romdhan",
adresses:[
{
rue: "Yasser Arefet",
ville: "Sousse"
}
{
rue: "Habib Bourguiba",
ville: "Tunis"
}
]
}
17 SAGAR Samya
Modélisation − quelques règles simples
1..beaucoup
Voiture Composant

18 SAGAR Samya
Modélisation − quelques règles simples
1..beaucoup
Voiture Composant

2 collections Voiture et Composant


C’est voiture qui référence
les composants

Collection "Voiture" Collection "Composant"


{ {
marque: "…", id: "…",
modèle: "…", type: "…",
composants:[ prix: "…"
"id_101", }
"id_22",
"id_345",
...
]
}
19 SAGAR Samya
Modélisation − quelques règles simples
1..énormément
Système Log

20 SAGAR Samya
Modélisation − quelques règles simples
1..énormément
Système Log

2 collections Système et Log et Composant


C’est log qui référence
le parent

Collection "Système" Collection "Log"


{ {
id: "…", date: "…",
host: "…", level: "…",
... id_systeme: "…"
} }

21 SAGAR Samya
Modélisation − quelques règles simples
 Ne pas oubliez d’en tenir compte
 Besoin de l’ensemble des données à chaque requête
 Une seule collection
 Besoin d’avoir seulement une partie de données
 Plusieurs collections et des références
 Exemple : les posts d’un blog et leurs commentaires
 2 besoins : affichage liste des posts + affichage post avec
commentaires
 Modélisation avec 2 collections (posts, comments)

22 SAGAR Samya

Vous aimerez peut-être aussi