SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Bases de données aujourd’hui et bases de données
NoSQL
Antoine Augusti
Thibaud Dauce
Géraldine Del Mondo
20 février 2015
1 Architecture web et relationnel
Architecture classique
Bilan architecture classique
Qu’est-ce qu’un ORM ?
2 Au delà du SQL : les BDs NoSQL
Pourquoi changer du relationnel ?
Relâchement des contraintes de transactions
À quoi ressemble une BD NoSQL
3 Les types de bases de données NoSQL
Bases de données clé-valeur
Bases de données orientées documents
Bases de données orientées graphes
4 Conclusion
Bonnes pratiques
NoSQL ou relationnel ?
1 Architecture web et relationnel
Architecture classique
Bilan architecture classique
Qu’est-ce qu’un ORM ?
2 Au delà du SQL : les BDs NoSQL
Pourquoi changer du relationnel ?
Relâchement des contraintes de transactions
À quoi ressemble une BD NoSQL
3 Les types de bases de données NoSQL
Bases de données clé-valeur
Bases de données orientées documents
Bases de données orientées graphes
4 Conclusion
Bonnes pratiques
NoSQL ou relationnel ?
Architecture classique
Figure : La stack LAMP.
Stacks habituelles :
LAMP : Linux, Apache, MySQL, PHP — la plus commune ;
LEMP : Linux, Nginx, MySQL, PHP-FPM — commence à
remplacer LAMP ;
MEAN : MySQL, Express, AngularJS, Node.js — pour du
JavaScript côté serveur.
Architecture web et relationnel Architecture classique 20 février 2015 4 / 30
Bilan architecture classique
Avantages :
Rapide à mettre en place (installation en un clic
généralement) ;
Optimisation possible, verticalement le plus souvent ;
Inconvénients :
Il faut une expertise base de données.
Architecture web et relationnel Bilan architecture classique 20 février 2015 5 / 30
Qu’est-ce qu’un ORM ?
Définition : ORM
L’Object-Relationnal Mapping est une technique qui simule une
base de données orientée objet à partir d’une base de données
relationnelle.
Fait la liaison entre le monde relationnel dans la couche
stockage et le monde objet dans l’application ;
Facilité de développement : pas besoin d’une connaissance
poussée du SQL ;
Facilite les interactions avec la base de données pour les
développeurs.
Les limites des ORM
Toujours beaucoup moins performant que des requêtes SQL
optimisées.
Architecture web et relationnel Qu’est-ce qu’un ORM ? 20 février 2015 6 / 30
ORM : exemple de requêtes
1 <?php
2 // Création d’un utilisateur
3 $data = [
4 ’prenom’ => ’Antoine’,
5 ’age’ => 42
6 ];
7 $user = User::create($data);
8
9 // Sélection des utilisateurs majeurs et articles qu’ils ont écrits
10 $users = User::with(’articles’)
11 ->where(’age’, ’>=’, 18)
12 ->get();
13
14 // Suppression des utilisateurs vivant à Paris
15 User::where(’prenom’, ’Antoine’)->delete();
16
17 // Les derniers articles d’un utilisateur (3ème page)
18 $articles = Article::whereUserId($user->id)
19 ->latest()
20 ->take(10)
21 ->skip(20)
22 ->get();
Listing 1: Quelques requêtes basiques avec l’ORM Eloquent (PHP).
D’autres ORM : Hibernate (Java), SQLAlchemy (Python), Mongoose (Node.js). . .
Architecture web et relationnel Qu’est-ce qu’un ORM ? 20 février 2015 7 / 30
1 Architecture web et relationnel
Architecture classique
Bilan architecture classique
Qu’est-ce qu’un ORM ?
2 Au delà du SQL : les BDs NoSQL
Pourquoi changer du relationnel ?
Relâchement des contraintes de transactions
À quoi ressemble une BD NoSQL
3 Les types de bases de données NoSQL
Bases de données clé-valeur
Bases de données orientées documents
Bases de données orientées graphes
4 Conclusion
Bonnes pratiques
NoSQL ou relationnel ?
Problèmes liés au relationnel
Service réparti sur plusieurs continents ?
Accès concurrent de plusieurs centaines de milliers de
personnes ?
Stockage d’objets avec prise en compte de l’héritage ?
Reconnaissance automatique d’images ou traitement
automatique de textes ?
Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? 20 février 2015 9 / 30
Pourquoi changer du relationnel ?
Besoin d’une alternative vers les années 2004 avec l’arrivée du Big
Data.
Des volumes de données important (plusieurs gigas, voire
téraoctets) ;
Un nombre de transactions très important, une forte demande
de disponibilité et de temps de réponse ;
Des bases de données réparties sur plusieurs centres de
données ou continents ;
Préférence pour l’ajout de petites machines plutôt qu’une
configuration poussée des BDs.
Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? 20 février 2015 10 / 30
Relâchement des contraintes de transactions
Impossible de garantir les propriétés ACID des BDs relationnelles
avec les nouvelles contraintes.
De nouvelles propriétés BASE, suite au théorème CAP :
Basic Availability : système disponible dans son ensemble bien
que certaines machines soient indisponibles ;
Soft state : l’état du système distribué peut changer, même
sans nouvelles transactions ;
Eventual Consistency : En l’absence de nouvelles transactions,
le système sera cohérent au bout d’un temps.
Au delà du SQL : les BDs NoSQL
Relâchement des contraintes de
transactions 20 février 2015 11 / 30
À quoi ressemble une BD NoSQL
Un SGBD qui n’est pas structuré en tables et dont l’élément de
base n’est pas un tuple mais dépend du type de BD NoSQL ;
Un langage de requête non uniformisé, propre à chaque BD.
Souvent au format JSON avec une API REST ;
Une dénormalisation des données où certains enregistrements
sont en partie ou entièrement dupliqués ;
Type de base de données NoSQL à choisir en fonction de
l’usage souhaité ;
Types de base de données NoSQL existants : clé-valeur,
colonnes, documents, graphe. . .
Au delà du SQL : les BDs NoSQL À quoi ressemble une BD NoSQL 20 février 2015 12 / 30
1 Architecture web et relationnel
Architecture classique
Bilan architecture classique
Qu’est-ce qu’un ORM ?
2 Au delà du SQL : les BDs NoSQL
Pourquoi changer du relationnel ?
Relâchement des contraintes de transactions
À quoi ressemble une BD NoSQL
3 Les types de bases de données NoSQL
Bases de données clé-valeur
Bases de données orientées documents
Bases de données orientées graphes
4 Conclusion
Bonnes pratiques
NoSQL ou relationnel ?
Modélisation BD clé-valeur
Modélisation : la plus simple. À une clé, on associe une
valeur. La valeur peut être de n’importe quel type (chaîne de
caractères, entier, structure, objet sérialisé. . .).
Des exemples de paires clé-valeur avec des types différents.
Clé Valeur
pays.id-42 {"id" :42,"name" :"Chad"}
statistiques.nombre-visiteurs 1337
configuration.periode-gratuite false
articles.categories-sport.latest [22, 45, 67, 200, 87]
Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 14 / 30
BD clé-valeur en détail
Opérations : création d’une paire clé-valeur, suppression,
accès à une valeur à l’aide de la clé, incrémentation et
décrémentation d’une valeur ;
On peut définir la durée de vie d’une paire clé-valeur ou
adopter une politique least recently used ;
Stockage en RAM pour accélérer les temps de lecture.
Mécanisme de reprise en cas de crash ;
Cas d’utilisation : cache d’une autre BD, comptage
d’éléments, gestion de files d’attente, opérations
ensemblistes. . .
Principaux acteurs : Redis, Memcached, Riak.
Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 15 / 30
Commandes sous Redis
1 # Assignation de chaîne "bonjour" à la clé "cleTexte"
2 redis> SET cleTexte bonjour
3 OK
4 # Récupération de la valeur de la clé "cleTexte"
5 redis> GET cleTexte
6 "bonjour"
7
8 # Incrémentation d’un compteur
9 redis> INCR compteur
10 (integer) 42
11 # Suppression du compteur
12 redis> DEL compteur
13 (integer) 1
14
15 # Création d’une liste avec insertion en fin de liste
16 redis> RPUSH liste "Hello"
17 (integer) 1
18 # Insertion en fin de liste
19 redis> RPUSH liste "World"
20 (integer) 2
Listing 2: Quelques commandes Redis en console.
Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 16 / 30
Bases de données orientées documents
Modélisation : aucun schéma fixe, un document peut
contenir n’importe quel type d’information ;
Optimisation horizontale ;
Opérations : utilise le JSON pour les requêtes et l’améliore
pour le stockage (BSON) ;
Facile d’accès (API REST, shell. . .) ;
Cas d’utilisation : base de données principalement utilisées
pour du stockage ;
Principaux acteurs : MongoDB, CouchDB, CouchBase.
Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 17 / 30
Exemple d’un document
1 {
2 "id":1500,
3 "nom":"Thibaud",
4 "prénom":"Dauce",
5 "professeur_préférée":{
6 "numero":42,
7 "prenom":"Géraldine",
8 "nom":"Del Mondo",
9 "matières": ["BD", "Réseaux"]
10 },
11 "commentaires":[
12 {
13 "id":646,
14 "contenu":"J’adore la BD."
15 },
16 {
17 "id":647,
18 "contenu":"Boule et Bill aussi."
19 },
20 {
21 "id":648,
22 "contenu":"Et pleins d’autres trucs."
23 }
24 ]
25 }
Listing 3: Exemple d’un document JSON.
Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 18 / 30
Exemples de requêtes MongoDB
db.inventory.find( { type: "snacks" } )
Listing 4: Exemple de requête find sur MongoDB.
Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 19 / 30
Exemples de requêtes MongoDB
db.inventory.find(
{
type: ’food’,
$or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } }
}
)
Listing 5: Exemple de requête find sur MongoDB avec des opérateurs
spéciaux.
Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 20 / 30
Exemples de requêtes MongoDB
db.inventory.insert(
{
item: "ABC1",
details: {
model: "14Q3",
manufacturer: "XYZ Company"
},
stock: [
{ size: "S", qty: 25 },
{ size: "M", qty: 50 }
],
category: "clothing"
}
)
Listing 6: Exemple de requête insert sur MongoDB.Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 21 / 30
Exemples de requêtes MongoDB
db.inventory.update(
{ item: "MNO2" },
{
$set: {
category: "apparel",
details.model: "14Q2"
},
$currentDate: { lastModified: true }
}
)
Listing 7: Exemple de requête update sur MongoDB.
Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 22 / 30
Bases de données orientées graphes
Figure : Exemple de graphe.
Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 23 / 30
Bases de données orientées graphes
Modélisation : représentation de l’information de manière
très particulière (nœuds et arcs de même importance) ;
Opérations : traitement très particulier de l’information (voir
slide précédente) ;
Cas d’utilisation : utilisé principalement pour les réseaux
(liens entre des équipements ou des personnes) ;
Base de données rarement utilisée pour du stockage ;
Principaux acteurs : Neo4j, Titan, OrientDB.
Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 24 / 30
Bases de données orientées graphes
Figure : Exemple de graphe.
Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 25 / 30
Exemple de requête
Figure : Exemple de requête Cypher pour Neo4j.
Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 26 / 30
1 Architecture web et relationnel
Architecture classique
Bilan architecture classique
Qu’est-ce qu’un ORM ?
2 Au delà du SQL : les BDs NoSQL
Pourquoi changer du relationnel ?
Relâchement des contraintes de transactions
À quoi ressemble une BD NoSQL
3 Les types de bases de données NoSQL
Bases de données clé-valeur
Bases de données orientées documents
Bases de données orientées graphes
4 Conclusion
Bonnes pratiques
NoSQL ou relationnel ?
Les bonnes pratiques du NoSQL
Bien connaître ses données ;
Ne pas avoir peur de la redondance ;
Ne pas trop redonder ;
Et surtout, bien quantifier ses besoins.
RTFM
La majorité des bases de données NoSQL connues sur le marché
possèdent une très bonne documentation, souvent faite à
destination de personnes venant du monde du relationnel.
Conclusion Bonnes pratiques 20 février 2015 28 / 30
NoSQL ou relationnel ?
Les deux mon capitaine !
Les bases de données NoSQL ont été inventées afin de résoudre des
problèmes insolubles par les bases de données relationnelle et non
pas pour les remplacer.
NoSQL Relationnel
stockage de masse stockage fiable
données diverses données formatées
scalabilité horizontale scalabilité verticale
Conclusion NoSQL ou relationnel ? 20 février 2015 29 / 30
Choix du type de BD NoSQL
Modélisation Cas d’utilisation
Clé / valeur Modélisation simple, per-
mettant d’indexer des infor-
mations diverses via une clé
Mise en cache
Documents Modélisation souple per-
mettant de stocker des do-
cuments au format JSON
dans des collections
Stockage de masse
Graphes Modélisation optimisée
pour les problèmes de
graphes
Stockage provisoire
pour traiter les don-
nées
Conclusion NoSQL ou relationnel ? 20 février 2015 30 / 30

Contenu connexe

Tendances

BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxLaurent Broudoux
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4jBoris Guarisma
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Hatim CHAHDI
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQLkamar MEDDAH
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleLilia Sfaxi
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4jNeo4j
 
Présentation des bases de données orientées graphes
Présentation des bases de données orientées graphesPrésentation des bases de données orientées graphes
Présentation des bases de données orientées graphesKoffi Sani
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQLebiznext
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2Amal Abid
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4JLilia Sfaxi
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 

Tendances (20)

BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4j
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique Décisionnelle
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
Présentation des bases de données orientées graphes
Présentation des bases de données orientées graphesPrésentation des bases de données orientées graphes
Présentation des bases de données orientées graphes
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
noSQL
noSQLnoSQL
noSQL
 

En vedette

Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureMicrosoft
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)gdusbabek
 
Presentation Hadoop Québec
Presentation Hadoop QuébecPresentation Hadoop Québec
Presentation Hadoop QuébecMathieu Dumoulin
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataArrow Group
 
Architectures techniques NoSQL
Architectures techniques NoSQLArchitectures techniques NoSQL
Architectures techniques NoSQLOCTO Technology
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 

En vedette (10)

Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Presentation Hadoop Québec
Presentation Hadoop QuébecPresentation Hadoop Québec
Presentation Hadoop Québec
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Architectures techniques NoSQL
Architectures techniques NoSQLArchitectures techniques NoSQL
Architectures techniques NoSQL
 
Une introduction à HBase
Une introduction à HBaseUne introduction à HBase
Une introduction à HBase
 
Introduction à Hadoop
Introduction à HadoopIntroduction à Hadoop
Introduction à Hadoop
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 

Similaire à Introduction aux bases de données NoSQL

cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdfhbadir
 
Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementLudovic REUS
 
Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosqlInes Slimene
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeMongoDB
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solutionJEMLI Fathi
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010JUG Lausanne
 
Bases de données no sql.pdf
Bases de données no sql.pdfBases de données no sql.pdf
Bases de données no sql.pdfZkSadrati
 
Base de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvreBase de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvreMICHRAFY MUSTAFA
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBRomain Cambien
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .netHamza SAID
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTCHAKER ALLAOUI
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...AZUG FR
 
NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamTelecomValley
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 

Similaire à Introduction aux bases de données NoSQL (20)

cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdf
 
Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développement
 
Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosql
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Bases de données no sql.pdf
Bases de données no sql.pdfBases de données no sql.pdf
Bases de données no sql.pdf
 
Base de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvreBase de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvre
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
 
NoSQL MeetUp
NoSQL MeetUpNoSQL MeetUp
NoSQL MeetUp
 
NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler Softeam
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 

Introduction aux bases de données NoSQL

  • 1. Bases de données aujourd’hui et bases de données NoSQL Antoine Augusti Thibaud Dauce Géraldine Del Mondo 20 février 2015
  • 2. 1 Architecture web et relationnel Architecture classique Bilan architecture classique Qu’est-ce qu’un ORM ? 2 Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? Relâchement des contraintes de transactions À quoi ressemble une BD NoSQL 3 Les types de bases de données NoSQL Bases de données clé-valeur Bases de données orientées documents Bases de données orientées graphes 4 Conclusion Bonnes pratiques NoSQL ou relationnel ?
  • 3. 1 Architecture web et relationnel Architecture classique Bilan architecture classique Qu’est-ce qu’un ORM ? 2 Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? Relâchement des contraintes de transactions À quoi ressemble une BD NoSQL 3 Les types de bases de données NoSQL Bases de données clé-valeur Bases de données orientées documents Bases de données orientées graphes 4 Conclusion Bonnes pratiques NoSQL ou relationnel ?
  • 4. Architecture classique Figure : La stack LAMP. Stacks habituelles : LAMP : Linux, Apache, MySQL, PHP — la plus commune ; LEMP : Linux, Nginx, MySQL, PHP-FPM — commence à remplacer LAMP ; MEAN : MySQL, Express, AngularJS, Node.js — pour du JavaScript côté serveur. Architecture web et relationnel Architecture classique 20 février 2015 4 / 30
  • 5. Bilan architecture classique Avantages : Rapide à mettre en place (installation en un clic généralement) ; Optimisation possible, verticalement le plus souvent ; Inconvénients : Il faut une expertise base de données. Architecture web et relationnel Bilan architecture classique 20 février 2015 5 / 30
  • 6. Qu’est-ce qu’un ORM ? Définition : ORM L’Object-Relationnal Mapping est une technique qui simule une base de données orientée objet à partir d’une base de données relationnelle. Fait la liaison entre le monde relationnel dans la couche stockage et le monde objet dans l’application ; Facilité de développement : pas besoin d’une connaissance poussée du SQL ; Facilite les interactions avec la base de données pour les développeurs. Les limites des ORM Toujours beaucoup moins performant que des requêtes SQL optimisées. Architecture web et relationnel Qu’est-ce qu’un ORM ? 20 février 2015 6 / 30
  • 7. ORM : exemple de requêtes 1 <?php 2 // Création d’un utilisateur 3 $data = [ 4 ’prenom’ => ’Antoine’, 5 ’age’ => 42 6 ]; 7 $user = User::create($data); 8 9 // Sélection des utilisateurs majeurs et articles qu’ils ont écrits 10 $users = User::with(’articles’) 11 ->where(’age’, ’>=’, 18) 12 ->get(); 13 14 // Suppression des utilisateurs vivant à Paris 15 User::where(’prenom’, ’Antoine’)->delete(); 16 17 // Les derniers articles d’un utilisateur (3ème page) 18 $articles = Article::whereUserId($user->id) 19 ->latest() 20 ->take(10) 21 ->skip(20) 22 ->get(); Listing 1: Quelques requêtes basiques avec l’ORM Eloquent (PHP). D’autres ORM : Hibernate (Java), SQLAlchemy (Python), Mongoose (Node.js). . . Architecture web et relationnel Qu’est-ce qu’un ORM ? 20 février 2015 7 / 30
  • 8. 1 Architecture web et relationnel Architecture classique Bilan architecture classique Qu’est-ce qu’un ORM ? 2 Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? Relâchement des contraintes de transactions À quoi ressemble une BD NoSQL 3 Les types de bases de données NoSQL Bases de données clé-valeur Bases de données orientées documents Bases de données orientées graphes 4 Conclusion Bonnes pratiques NoSQL ou relationnel ?
  • 9. Problèmes liés au relationnel Service réparti sur plusieurs continents ? Accès concurrent de plusieurs centaines de milliers de personnes ? Stockage d’objets avec prise en compte de l’héritage ? Reconnaissance automatique d’images ou traitement automatique de textes ? Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? 20 février 2015 9 / 30
  • 10. Pourquoi changer du relationnel ? Besoin d’une alternative vers les années 2004 avec l’arrivée du Big Data. Des volumes de données important (plusieurs gigas, voire téraoctets) ; Un nombre de transactions très important, une forte demande de disponibilité et de temps de réponse ; Des bases de données réparties sur plusieurs centres de données ou continents ; Préférence pour l’ajout de petites machines plutôt qu’une configuration poussée des BDs. Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? 20 février 2015 10 / 30
  • 11. Relâchement des contraintes de transactions Impossible de garantir les propriétés ACID des BDs relationnelles avec les nouvelles contraintes. De nouvelles propriétés BASE, suite au théorème CAP : Basic Availability : système disponible dans son ensemble bien que certaines machines soient indisponibles ; Soft state : l’état du système distribué peut changer, même sans nouvelles transactions ; Eventual Consistency : En l’absence de nouvelles transactions, le système sera cohérent au bout d’un temps. Au delà du SQL : les BDs NoSQL Relâchement des contraintes de transactions 20 février 2015 11 / 30
  • 12. À quoi ressemble une BD NoSQL Un SGBD qui n’est pas structuré en tables et dont l’élément de base n’est pas un tuple mais dépend du type de BD NoSQL ; Un langage de requête non uniformisé, propre à chaque BD. Souvent au format JSON avec une API REST ; Une dénormalisation des données où certains enregistrements sont en partie ou entièrement dupliqués ; Type de base de données NoSQL à choisir en fonction de l’usage souhaité ; Types de base de données NoSQL existants : clé-valeur, colonnes, documents, graphe. . . Au delà du SQL : les BDs NoSQL À quoi ressemble une BD NoSQL 20 février 2015 12 / 30
  • 13. 1 Architecture web et relationnel Architecture classique Bilan architecture classique Qu’est-ce qu’un ORM ? 2 Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? Relâchement des contraintes de transactions À quoi ressemble une BD NoSQL 3 Les types de bases de données NoSQL Bases de données clé-valeur Bases de données orientées documents Bases de données orientées graphes 4 Conclusion Bonnes pratiques NoSQL ou relationnel ?
  • 14. Modélisation BD clé-valeur Modélisation : la plus simple. À une clé, on associe une valeur. La valeur peut être de n’importe quel type (chaîne de caractères, entier, structure, objet sérialisé. . .). Des exemples de paires clé-valeur avec des types différents. Clé Valeur pays.id-42 {"id" :42,"name" :"Chad"} statistiques.nombre-visiteurs 1337 configuration.periode-gratuite false articles.categories-sport.latest [22, 45, 67, 200, 87] Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 14 / 30
  • 15. BD clé-valeur en détail Opérations : création d’une paire clé-valeur, suppression, accès à une valeur à l’aide de la clé, incrémentation et décrémentation d’une valeur ; On peut définir la durée de vie d’une paire clé-valeur ou adopter une politique least recently used ; Stockage en RAM pour accélérer les temps de lecture. Mécanisme de reprise en cas de crash ; Cas d’utilisation : cache d’une autre BD, comptage d’éléments, gestion de files d’attente, opérations ensemblistes. . . Principaux acteurs : Redis, Memcached, Riak. Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 15 / 30
  • 16. Commandes sous Redis 1 # Assignation de chaîne "bonjour" à la clé "cleTexte" 2 redis> SET cleTexte bonjour 3 OK 4 # Récupération de la valeur de la clé "cleTexte" 5 redis> GET cleTexte 6 "bonjour" 7 8 # Incrémentation d’un compteur 9 redis> INCR compteur 10 (integer) 42 11 # Suppression du compteur 12 redis> DEL compteur 13 (integer) 1 14 15 # Création d’une liste avec insertion en fin de liste 16 redis> RPUSH liste "Hello" 17 (integer) 1 18 # Insertion en fin de liste 19 redis> RPUSH liste "World" 20 (integer) 2 Listing 2: Quelques commandes Redis en console. Les types de bases de données NoSQL Bases de données clé-valeur 20 février 2015 16 / 30
  • 17. Bases de données orientées documents Modélisation : aucun schéma fixe, un document peut contenir n’importe quel type d’information ; Optimisation horizontale ; Opérations : utilise le JSON pour les requêtes et l’améliore pour le stockage (BSON) ; Facile d’accès (API REST, shell. . .) ; Cas d’utilisation : base de données principalement utilisées pour du stockage ; Principaux acteurs : MongoDB, CouchDB, CouchBase. Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 17 / 30
  • 18. Exemple d’un document 1 { 2 "id":1500, 3 "nom":"Thibaud", 4 "prénom":"Dauce", 5 "professeur_préférée":{ 6 "numero":42, 7 "prenom":"Géraldine", 8 "nom":"Del Mondo", 9 "matières": ["BD", "Réseaux"] 10 }, 11 "commentaires":[ 12 { 13 "id":646, 14 "contenu":"J’adore la BD." 15 }, 16 { 17 "id":647, 18 "contenu":"Boule et Bill aussi." 19 }, 20 { 21 "id":648, 22 "contenu":"Et pleins d’autres trucs." 23 } 24 ] 25 } Listing 3: Exemple d’un document JSON. Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 18 / 30
  • 19. Exemples de requêtes MongoDB db.inventory.find( { type: "snacks" } ) Listing 4: Exemple de requête find sur MongoDB. Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 19 / 30
  • 20. Exemples de requêtes MongoDB db.inventory.find( { type: ’food’, $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } } ) Listing 5: Exemple de requête find sur MongoDB avec des opérateurs spéciaux. Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 20 / 30
  • 21. Exemples de requêtes MongoDB db.inventory.insert( { item: "ABC1", details: { model: "14Q3", manufacturer: "XYZ Company" }, stock: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ], category: "clothing" } ) Listing 6: Exemple de requête insert sur MongoDB.Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 21 / 30
  • 22. Exemples de requêtes MongoDB db.inventory.update( { item: "MNO2" }, { $set: { category: "apparel", details.model: "14Q2" }, $currentDate: { lastModified: true } } ) Listing 7: Exemple de requête update sur MongoDB. Les types de bases de données NoSQL Bases de données orientées documents 20 février 2015 22 / 30
  • 23. Bases de données orientées graphes Figure : Exemple de graphe. Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 23 / 30
  • 24. Bases de données orientées graphes Modélisation : représentation de l’information de manière très particulière (nœuds et arcs de même importance) ; Opérations : traitement très particulier de l’information (voir slide précédente) ; Cas d’utilisation : utilisé principalement pour les réseaux (liens entre des équipements ou des personnes) ; Base de données rarement utilisée pour du stockage ; Principaux acteurs : Neo4j, Titan, OrientDB. Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 24 / 30
  • 25. Bases de données orientées graphes Figure : Exemple de graphe. Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 25 / 30
  • 26. Exemple de requête Figure : Exemple de requête Cypher pour Neo4j. Les types de bases de données NoSQL Bases de données orientées graphes 20 février 2015 26 / 30
  • 27. 1 Architecture web et relationnel Architecture classique Bilan architecture classique Qu’est-ce qu’un ORM ? 2 Au delà du SQL : les BDs NoSQL Pourquoi changer du relationnel ? Relâchement des contraintes de transactions À quoi ressemble une BD NoSQL 3 Les types de bases de données NoSQL Bases de données clé-valeur Bases de données orientées documents Bases de données orientées graphes 4 Conclusion Bonnes pratiques NoSQL ou relationnel ?
  • 28. Les bonnes pratiques du NoSQL Bien connaître ses données ; Ne pas avoir peur de la redondance ; Ne pas trop redonder ; Et surtout, bien quantifier ses besoins. RTFM La majorité des bases de données NoSQL connues sur le marché possèdent une très bonne documentation, souvent faite à destination de personnes venant du monde du relationnel. Conclusion Bonnes pratiques 20 février 2015 28 / 30
  • 29. NoSQL ou relationnel ? Les deux mon capitaine ! Les bases de données NoSQL ont été inventées afin de résoudre des problèmes insolubles par les bases de données relationnelle et non pas pour les remplacer. NoSQL Relationnel stockage de masse stockage fiable données diverses données formatées scalabilité horizontale scalabilité verticale Conclusion NoSQL ou relationnel ? 20 février 2015 29 / 30
  • 30. Choix du type de BD NoSQL Modélisation Cas d’utilisation Clé / valeur Modélisation simple, per- mettant d’indexer des infor- mations diverses via une clé Mise en cache Documents Modélisation souple per- mettant de stocker des do- cuments au format JSON dans des collections Stockage de masse Graphes Modélisation optimisée pour les problèmes de graphes Stockage provisoire pour traiter les don- nées Conclusion NoSQL ou relationnel ? 20 février 2015 30 / 30