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

Tendances (20)

BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Quand utiliser MongoDB … Et quand vous en passer…
Quand utiliser MongoDB	… Et quand vous en passer…Quand utiliser MongoDB	… Et quand vous en passer…
Quand utiliser MongoDB … Et quand vous en passer…
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
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
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
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 et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4j
 
noSQL
noSQLnoSQL
noSQL
 
Présentation des bases de données NoSql
Présentation des bases de données NoSqlPrésentation des bases de données NoSql
Présentation des bases de données NoSql
 
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
 
Bases de données NoSQL
Bases de données NoSQLBases de données NoSQL
Bases de données NoSQL
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
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
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 

En vedette

Architectures techniques NoSQL
Architectures techniques NoSQLArchitectures techniques NoSQL
Architectures techniques NoSQL
OCTO Technology
 

En vedette (12)

NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
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
 
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...
 
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

Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
JEMLI Fathi
 

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
 
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
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
 

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