SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
NoSQL et Big Data
Arnaud Cogoluègnes - Zenika
ADIRA - 8 octobre 2014
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
NoSQL
Hadoop
MapReduce
HDFS
Théorème CAP
Eventual consistency
Hive
Pig
Architecture
lambda
Cascading
MongoDB
Cassandra
Big Data
Agenda
Que faire du NoSQL
Hadoop et moi
NoSQL et Hadoop en action
NoSQL
Retour vers le futur : les SGDBR
Les garanties ACID
Standard, portable
SQL-86 ... SQL:2011
select * from Book
Un point d’intégration
Image : http://www.eaipatterns.com/SharedDataBaseIntegration.html
ORM : les premières tensions
Une fausse bonne idée ?
?
Service : les tensions continuent
Services
Application A Application B Application C
Le web : comment “scaler” ?
SGBDR : généraliste
NoSQL
Moins de fonctionnalités
Plus spécialisés
Garanties relachées
Principes des “pipes” Unix
NoSQL viable, les aggrégats
CommandeClient
Ligne
Produit
1 *
1
*
*
1
"commandes" : [
{
"id" : 32,
"clientId" : 2,
"lignes" : [
{
"articleId" : 79,
"prix" : 29,
"nom" : "Spring in Action"
}
]
}
]
Les aggrégats
+
Unité atomique
Données co-localisées
-
Usage unique
Vues à créer par usage
Partition (Sharding)
Alan
Bob
...
Zoe
Alan Bob Zoe
<< A >> << B >> << Z >>
…
Pas de sharding
Sharding
Réplication
Alan
…
Alan Alan
Partition et réplication
Alan Bob Zoe
…
Zoe Alan Bob
Bob Zoe Alan
Relacher la durabilité
commit()
fsync()
store()
fsync()
Stockage mémoire et réplication
Alan
…
Alan Alan
Théorème CAP
Alan Alan
Partition réseau
Choisir disponibilité ou cohérence
Disponibilité = update autorisé
Cohérence = update interdit
Bases de données NoSQL
Clustering
Open source
Scalabilité
Pas de schéma
Clé/valeur
Pas bien pour…
Requêtes sur les données
Transactions sur plusieurs objets
Relations complexes
Bien pour…
Session
Profil
Cache
Implémentations
Redis
Riak
Hazelcast
"user1" => "login : alan ; gender : M"
"user2" => "login : zoe ; gender : F"
Orientées colonnes
Pas bien pour…
Requêtes
Agrégations
Bien pour…
Mesures
Logs
Expiration
Implémentations
Cassandra
HBase
stationID : 1234 =>
date : 20140914 value : 12
date : 20140915 value : 22
value : 18date : 20140916
stationID : 6789 =>
date : 20140914 value : 25
date : 20140915 value : 28
value : 27date : 20140916
Orientées documents
Pas bien pour…
Transactions sur plusieurs
collections
Requêtes avec jointures
Bien pour…
Logs
CMS
E-commerce
Implémentations
MongoDB
CouchBase
"commandes" : [
{
"id" : 32,
"clientId" : 2,
"lignes" : [
{
"articleId" : 79,
"prix" : 29,
"nom" : "Spring in Action"
}
]
}
]
Orientées graphes
Pas bien pour…
Grosse volumétrie
Mises à jour massives
Bien pour…
Données “connectées”
Routage, données localisées
Recommandations
Implémentations
Neo4j
Arnaud
Spring Batch
in Action
Zenika
Alan
auteur
employé
lecteur
Moteur d’indexation
Pas bien pour…
Transactions
Bien pour…
Indexation
Recherche plain/text
Implémentations
ElasticSearch
Solr
Hadoop
Hadoop, un système distribué
● Système de fichiers distribué : HDFS
● API de programmation : MapReduce, YARN
Hadoop
HDFS
MapReduce, YARN
Votre application
HDFS
HDFS
MapReduce, YARN
Votre application
Tolérant aux pannes
Scalable
Formats de fichiers
Compression
Blocs, datanodes, namenode
file.csv B1 B2 B3 fichier composé de 3 blocs (taille par défaut d’un bloc : 128 Mo)
B1 B2 B1 B3
B1 B2 B2 B3
DN 1 DN 2
DN 4DN 3
les datanodes stockent les blocs
(le bloc 3 est ici sous-répliqué)
B1 : 1, 2, 3 B2 : 1, 3, 4
B3 : 2, 4
Namenode
le namenode gère les méta-données et s’assure de la réplication
HDFS, les limitations
Fichiers “append-only”
Bien pour “write once, read many times”
Peu de gros fichiers, bien
Plein de petits fichiers, pas bien
MapReduce
HDFS
MapReduce
Votre application
Simple
Batch
Scalable
Jointure, distinct, group by
MapReduce
file.csv B1 B2 B3
Mapper
Mapper
Mapper
B1
B2
B3
Reducer
Reducer
k1,v1
k1,v2
k1 [v1,v2]
Le code va à la donnée
file.csv B1 B2 B3
Mapper
Mapper
Mapper
B1
B2
B3
Reducer
Reducer
k1,v1
k1,v2
k1 [v1,v2]
B1 B2 B1 B3
B1 B2 B2 B3
DN 1 DN 2
DN 4DN 3
DN 1
DN 3
DN 4
Hadoop 1
HDFS
MapReduce
Hadoop 2
HDFS
YARN
MapReduce
Votre
application
MapReduce, les limitations
Code bas niveau
Ré-utilisation difficile
Préférer les abstractions comme Cascading
Comment stocker ?
Formats de fichiers
Compression
Parquet
SequenceFile
Texte
Avro
Pas de compression
Snappy
Deflate
GZIP
La panoplie
MapReduce
Cascading
API Java
Hive
SQL
Pig
Script ETL
Votre application
Spark
Spark
Votre application
Tez
Apache Tez
MapReduce nouvelle génération
Cascading
API Java
Hive
SQL
Pig
Script ETL
Votre application
NoSQL et Hadoop
en action
Architecture lambda : objectifs
● Tolérant aux pannes
● Latence faible
● Scalable
● Générique
● Extensible
● Requêtes “ad hoc”
● Maintenance minimale
● Debuggable
Layers
Speed layer
Serving layer
Batch layer
Batch layer
Speed layer
Serving layer
Batch layer
Stockage des données.
Création des vues.
Serving layer
Speed layer
Serving layer
Batch layer
Accès aux vues batch.
Speed layer
Speed layer
Serving layer
Batch layer
Accès temps réel.
Batch layer
Speed layer
Serving layer
Batch layer
Hadoop (MapReduce, HDFS).
Thrift, Cascalog.
Serving layer
Speed layer
Serving layer
Batch layer
ElephantDB, BerkeleyDB.
Speed layer
Speed layer
Serving layer
Batch layer
Cassandra, Storm, Kafka.
Jointure flux et référentiel
Hadoop
Traitement
(jointures, transformation)
Flux
Reporting
Données de référence
Gestion de données
Données brutes
Données
parsées
Traitement et
insertion
Archives Vues Transformations
Avro, GZIP
Rétention permanente
Parquet, Snappy
Rétention 2 ans glissants
Traitement (Cascading)
HDFS BD temps réel
Cinématique avec Spring Batch
Archivage
Traitement Traitement Traitement
Nettoyage
Java, API HDFS
Cascading
MapReduce
Hive, Pig, Cascading
UDF : User Defined Function
Hive
+
SQL (non-standard)
Prise en main rapide
Extensible avec UDF
-
Testabilité médiocre
Réutilisabilité médiocre
Pas de contrle du flot
Logique disséminée
Programmation par UDF
Pig
+
Pig Latin
Prise en main rapide
Extensible avec UDF
-
Testabilité médiocre
Réutilisabilité médiocre
Logique disséminée
Programmation par UDF
Cascading
+
API Java
Testable unitairement
Contrôle du flot
Bonne réutilisabilité
-
Programmation nécessaire
Comment commencer
● Identifier les cas d’utilisation
● Caractériser les données
○ volume, fraîcheur nécessaire, append-only
● En déduire les produits adaptés
● Virtualiser ou pas
● Penser au déploiement et à la maintenance
● Penser au cloud pour le prototypage
Conclusion
NoSQL : de nouveaux outils ciblés
Big Data : de nouvelles possibilités
Des architectures, des patterns émergents

Contenu connexe

Tendances

Tendances (20)

Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 
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_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
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
 
Hadoop
HadoopHadoop
Hadoop
 
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…
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
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
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
Presentation Hadoop Québec
Presentation Hadoop QuébecPresentation Hadoop Québec
Presentation Hadoop Québec
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
 

En vedette

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

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

Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprisesTours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Michaël Figuière
 
GTUG Nantes (Dec 2011) - BigTable et NoSQL
GTUG Nantes (Dec 2011) - BigTable et NoSQLGTUG Nantes (Dec 2011) - BigTable et NoSQL
GTUG Nantes (Dec 2011) - BigTable et NoSQL
Michaël Figuière
 

Similaire à NoSQL et Big Data (20)

Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big data
 
Bluestone - Panorama des solutions analytiques existantes
Bluestone - Panorama des solutions analytiques existantesBluestone - Panorama des solutions analytiques existantes
Bluestone - Panorama des solutions analytiques existantes
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Stats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.itStats web avec Hive chez Scoop.it
Stats web avec Hive chez Scoop.it
 
Soutenance ysance
Soutenance ysanceSoutenance ysance
Soutenance ysance
 
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
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
DataStax Enterprise BBL
DataStax Enterprise BBLDataStax Enterprise BBL
DataStax Enterprise BBL
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Sql Saturday Paris 2016 - De StreamInsight à Azure Stream Analytics
Sql Saturday Paris 2016 - De StreamInsight à Azure Stream Analytics Sql Saturday Paris 2016 - De StreamInsight à Azure Stream Analytics
Sql Saturday Paris 2016 - De StreamInsight à Azure Stream Analytics
 
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprisesTours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Les données on-premise et dans le cloud. Quelles options ?
Les données on-premise et dans le cloud. Quelles options ?Les données on-premise et dans le cloud. Quelles options ?
Les données on-premise et dans le cloud. Quelles options ?
 
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme EgronXebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
GTUG Nantes (Dec 2011) - BigTable et NoSQL
GTUG Nantes (Dec 2011) - BigTable et NoSQLGTUG Nantes (Dec 2011) - BigTable et NoSQL
GTUG Nantes (Dec 2011) - BigTable et NoSQL
 
Gtug nantes big table et nosql
Gtug nantes   big table et nosqlGtug nantes   big table et nosql
Gtug nantes big table et nosql
 

Plus de acogoluegnes (6)

What's up, RabbitMQ?
What's up, RabbitMQ?What's up, RabbitMQ?
What's up, RabbitMQ?
 
Modern messaging with RabbitMQ, Spring Cloud and Reactor
Modern messaging with RabbitMQ, Spring Cloud and ReactorModern messaging with RabbitMQ, Spring Cloud and Reactor
Modern messaging with RabbitMQ, Spring Cloud and Reactor
 
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
Microservices with Netflix OSS and Spring Cloud -  Dev Day OrangeMicroservices with Netflix OSS and Spring Cloud -  Dev Day Orange
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
 
Microservices with Netflix OSS and Spring Cloud
Microservices with Netflix OSS and Spring CloudMicroservices with Netflix OSS and Spring Cloud
Microservices with Netflix OSS and Spring Cloud
 
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introduction
 
Cascading at the Lyon Hadoop User Group
Cascading at the Lyon Hadoop User GroupCascading at the Lyon Hadoop User Group
Cascading at the Lyon Hadoop User Group
 

NoSQL et Big Data