SlideShare une entreprise Scribd logo
1  sur  31
N(ot) O(nly) SQL Des alternatives aux bases de données relationnelles MALLASSI Olivier OCTOTechnology Email : omallassi@octo.com Twitter : @omallassi LinkedIn : http://www.linkedin.com/pub/olivier-mallassi/1/46/21  Blog : http://blog.octo.com
Objectifs  Proposer une vision synthétique du « monde NoSQL » Fournir un premier guide de lecture http://www.flickr.com/photos/nuagedenuit/155699074/sizes/o/
@omallassi Architecte @OCTO http://blog.octo.com noSQL User Group @Paris #nosqlfr 3
La génèse…
Au commencement était… …le fichier séquentiel (indexé)… … et COBOL Une interrogation « limitée », par index SELECT BookFile ASSIGN TO "BOOKS.DAT" ORGANIZATION IS INDEXED  ACCESS MODE IS DYNAMIC RECORD KEY IS BookNumber ALTERNATE RECORD KEY IS AuthorNumber WITH DUPLICATES FILE STATUS IS BookErrorStatus. …
Vers 1970les premiers modèles relationnels Un référentiel unique de données structurées et couplées Un système centralisé Une donnée unique (structure, valeur, consistance…) pour toutes les utilisations On modélise les données puis on développe des applications
Puis vinrent… Objectif : stocker et rechercher  dans le web en temps réel Objectif : vendre la plus grande variété d’articles (livres, bricolage…) Des enjeux communs  Performance (malgré les volumétries) Disponibilité (>99,99%) Résilience  Scalabilité horizontale Enjeux :  Agréger de gros volumes de données  BigTable + Map/Reduce Enjeux Débit important en écriture tout en assurant la disponibilité Derniers incidents majeurs : 2004 <40 minutes d’indisponibilité par an  Dynamo
Et dans le même temps, Le secteur de la finance se lancent dans une course à la latence… Lowlatency messaging Grille de calcul …et aide au développement des « caches distribués » : Data Grid
NoSQL aujourd’huiun foisonnement de solutions…
Hadoople modèle Google
HadoopUn écosystème riche et complexe Une « stack » complexe Le cauchemar de la compatibilité des versions Des leaders différents : Apache, Cloudera… Des équipes distinctes : Hive, Hadoop, Sqoop… Pig Dataflowlanguage & compiler Hive SQL LikequeriesDSL Oozie Workflow for interdependentHadoop Jobs MapReduce Framework permettant de « cruncher » des données en parallèle Sqoop Intégration RDBMS & Hadoop Hbase Base de données pour des accès aléatoires read/write Zookeeper Service de coordination HDFS Un système de fichiers distribués Write-once, readmany Flume, Chukwa, Scribe Collection de données fiable et résiliente
HadoopDistributed File System Un système de fichier distribué Permet de stocker des fichiers plus volumineux que ce que peut contenir un disque dur… Répartir les données sur plusieurs machines physiques Répliquer ces données pour assurer le « fail-over » ? N * le volume de données core-site.xml hdfs-site.xml masters, slaves ,[object Object],dfs.block.size (64MB par défaut) ,[object Object],dfs.replication : le nombre de réplica dfs.replication.min : le nombre de réplica à assurer pour valider une écriture
MapReduce Le système de requêtage : MapReduce Traiter des volumes de données plus faibles Paralléliser ces traitements « plus » unitaires Co-localiser traitements / données masters slaves core-site.xml hdfs-site.xml mapred-site.xml hadoop-metrics.properties log4j.properties hadoop-env.sh
MapReduceOverview
MapReducePrincipe de l’algorithme Objectif : réaliser la somme des deals sur un axe d’agrégation GEDEQSWAP   John    15/09/2010  EUR10200 CreditSG GEDSWAPTION  John   14/09/2010  EUR11000 CreditHSBC … GEDSWAPTION  John   17/09/2010  EUR    5500  CreditHSBC IRDIRS       Simon  13/09/2010  USD10000  DebitSG IRDIRS       Simon  14/09/2010  USD11000  CreditBoF (K1, V1) Map agrégation par devise EUR    10200 USD    -10000 EUR     11000 EUR     5500 USD     11000 List(K2, V2) Shuffle & Sort EUR     10200,11000, 5500 USD      -10000,11000 K2,list(V2) Reduce somme sur l’axe d’agrégation Itération sur l’ensemble des K2 EUR    26700 USD    1000 List(K3, V3)
L’avantage d’un DSL import org.apache.hadoop.mapred;  public static class MapextendsMapReduceBaseimplements Mapper {       public voidmap(LongWritablekey, Text value, OutputCollector output, Reporter reporter) throwsIOException {         String line = value.toString();         String[] lineAsArray = line.split("");         String currentCurrency = lineAsArray[4];         String amountAsString = lineAsArray[5];         String sens = lineAsArray[6]; DoubleWritable data = null;         if("Debit".equals(sens)){         	data = new DoubleWritable(Double.parseDouble("-" + amountAsString));         } else if("Credit".equals(sens)) {         	data = new DoubleWritable(Double.parseDouble(amountAsString));         } output.collect(new Text(currentCurrency), data);         }       } SELECT Currency, SUM(Amount)  FROMcash_flow WHERE Direction='Credit'  AND DueDate &lt; = unix_timestamp('2010-09-15 00:00:00')  GROUP BY Currency public class CurrencyAggregateextendsConfiguredimplementsTool { @Override public intrun(String[] args) throws Exception{ JobConfconf = new JobConf(CurrencyAggregate.class); conf.setJobName("CurrencyAggregate"); 	//output of the Mapper 	); conf.setOutpconf.setOutputKeyClass(Text.classutValueClass(DoubleWritable.class); conf.setMapperClass(Map.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf);         return 0; 	} public staticvoid main(String[] args) throws Exception { intexitCode = ToolRunner.run(new CurrencyAggregate(), args); System.exit(exitCode); } /The reduce is called once per key in the output map of the map() function  public static class Reduce extends MapReduceBase implements Reducer { 	public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException {         double sum = 0;         while (values.hasNext()) {         	double amount = values.next().get();         	sum += amount;         } output.collect(key, new DoubleWritable(sum));       } }
Hashmap distribuéele modèle Amazon : Dynamo, S3, SimpleDB, Cassandra, Riak, Voldemort…
Rappelez vous… Objectif : stocker et rechercher  dans le web en temps réel Objectif : vendre la plus grande variété d’articles (livres, bricolage…) Des enjeux communs  Performance (malgré les volumétries) Disponibilité (>99,99%) Résilience  Scalabilité horizontale Enjeux :  Agréger de gros volumes de données  BigTable + Map/Reduce Enjeux Débit important en écriture tout en assurant la disponibilité Derniers incidents majeurs : 2004 <40 minutes d’indisponibilité par an  Dynamo
Des enjeux différents de ceux de Google Un objectif « simple » : être capable d’accepter une demande d’achat… …quelque soit la panne ! Enjeux: reporting(induit une modélisation riche),  Indisponibilité temporaire acceptable Enjeux: disponibilité en écriture, tolérance à la panne Le modèle RDBMS atteint ces limites en terme ,[object Object]
Disponibilité
Gestion du « capacity planning » Le modèle RDBMS est adapté ,[object Object]
Besoin de reporting
…,[object Object]
Hashmap distribuéeModèle de données Modèle de données : une Map Cassandra offre un modèle de données « plus riche » en reprenant le modèle « column-oriented » de BigTable : un Map de Map Sans aller jusqu’au stockage physique en colonne Propose des index secondaires (v.0.7) :  get users where state = 'UT' and birth_date > 1970;
« Event Sourcing »Le pattern… vision « stock » ou « mouvements »? 09/2010		400	Credit 13/09/2010	10000	Debit 15/09/2010	10200	Credit 14/09/2010	11000	Credit 15/09/2010	5500 	Debit 16/09/2010 	5500	Debit 15/09/2010	11000 	Debit 16/09/2010 	5500	Credit 17/09/2010 	5500 	Credit 13/09/2010 	10000 	Debit 15/09/2010 	10200 	Credit 13/09/2010	20000	Debit 14/09/2010	11000	Credit 15/09/2010	3900	Credit 16/09/2010 	0	Credit 17/09/2010 	5500 	Credit
« Event Sourcing »Le pattern… Permet d’adresser des enjeux différents Source d’évènements, collecte ,[object Object]
Hautement disponible-… Des représentations adaptées aux usages, restitution ,[object Object]
Graph
…,[object Object]
Hashmap distribuée Gestion de la consistance Consistance faible Consistance forte Client (Write) Client (Read) Client (Write) Client (Read) Quorum basedprotocol : N/2 + 1 ou  W + R > N Trade off entre consistance, latence, tolérance à la panne en fonction de la donnée #2 «3» #2 «3»
Et les « Data Grids »?

Contenu connexe

Tendances

Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6Julien CROUZET
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLHervé Leclerc
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasBruno Bonnin
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien pauli
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Exports de r vers office
Exports de r vers officeExports de r vers office
Exports de r vers officefrancoismarical
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 

Tendances (15)

Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Cours php
Cours phpCours php
Cours php
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pas
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
Javascript
JavascriptJavascript
Javascript
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
R Devtools
R DevtoolsR Devtools
R Devtools
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Exports de r vers office
Exports de r vers officeExports de r vers office
Exports de r vers office
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Resume SGBDR
Resume SGBDRResume SGBDR
Resume SGBDR
 

En vedette

Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011Mickael Istria
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourCARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
Mix-IT (Apr 2011) - Intelligence Collective avec Apache Mahout
Mix-IT (Apr 2011) - Intelligence Collective avec Apache MahoutMix-IT (Apr 2011) - Intelligence Collective avec Apache Mahout
Mix-IT (Apr 2011) - Intelligence Collective avec Apache MahoutMichaël Figuière
 
Building complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexBuilding complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexCARA_Lyon
 
Agile Sans Frontières
Agile Sans FrontièresAgile Sans Frontières
Agile Sans FrontièresCARA_Lyon
 
Ressources pédagogiques en ligne
Ressources pédagogiques en ligneRessources pédagogiques en ligne
Ressources pédagogiques en ligneXWiki
 
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?Sébastien Bourguignon
 
Tendencias De Las Plataformas De Hardware Y TecnologíAs Emergentes
Tendencias De Las Plataformas De Hardware Y TecnologíAs EmergentesTendencias De Las Plataformas De Hardware Y TecnologíAs Emergentes
Tendencias De Las Plataformas De Hardware Y TecnologíAs Emergentesmaximo coconi torres
 
Presentation talkSpirit Paris2.0 2010
Presentation talkSpirit Paris2.0 2010Presentation talkSpirit Paris2.0 2010
Presentation talkSpirit Paris2.0 2010David BOURGEOIS
 
catalogo-productos-septiembre-2009-guatemala
catalogo-productos-septiembre-2009-guatemalacatalogo-productos-septiembre-2009-guatemala
catalogo-productos-septiembre-2009-guatemalamultinivelseguro
 
Agile ee quesiton deck
Agile ee quesiton deckAgile ee quesiton deck
Agile ee quesiton deckArtem Serdyuk
 
Joomla 1.6
Joomla 1.6Joomla 1.6
Joomla 1.6iibanez
 
Cours L3 Management des organisations 2
Cours L3 Management des organisations 2Cours L3 Management des organisations 2
Cours L3 Management des organisations 2Santesih
 
Séjour à Quimper du 18 au 25 mars 2014
Séjour à Quimper du 18 au 25 mars 2014Séjour à Quimper du 18 au 25 mars 2014
Séjour à Quimper du 18 au 25 mars 2014Comune di San Prospero
 

En vedette (20)

Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
Mix-IT (Apr 2011) - Intelligence Collective avec Apache Mahout
Mix-IT (Apr 2011) - Intelligence Collective avec Apache MahoutMix-IT (Apr 2011) - Intelligence Collective avec Apache Mahout
Mix-IT (Apr 2011) - Intelligence Collective avec Apache Mahout
 
Building complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and FlexBuilding complex and modular RIAs with OSGi and Flex
Building complex and modular RIAs with OSGi and Flex
 
Agile Sans Frontières
Agile Sans FrontièresAgile Sans Frontières
Agile Sans Frontières
 
Estrategias de aprendizajes
Estrategias de aprendizajesEstrategias de aprendizajes
Estrategias de aprendizajes
 
Ressources pédagogiques en ligne
Ressources pédagogiques en ligneRessources pédagogiques en ligne
Ressources pédagogiques en ligne
 
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?
Étude Exclusive : Les Startupers se démarquent-ils par leur personnalité ?
 
Tendencias De Las Plataformas De Hardware Y TecnologíAs Emergentes
Tendencias De Las Plataformas De Hardware Y TecnologíAs EmergentesTendencias De Las Plataformas De Hardware Y TecnologíAs Emergentes
Tendencias De Las Plataformas De Hardware Y TecnologíAs Emergentes
 
Presentation talkSpirit Paris2.0 2010
Presentation talkSpirit Paris2.0 2010Presentation talkSpirit Paris2.0 2010
Presentation talkSpirit Paris2.0 2010
 
La Bretagne vue par Anna et sara
La Bretagne vue par Anna et saraLa Bretagne vue par Anna et sara
La Bretagne vue par Anna et sara
 
catalogo-productos-septiembre-2009-guatemala
catalogo-productos-septiembre-2009-guatemalacatalogo-productos-septiembre-2009-guatemala
catalogo-productos-septiembre-2009-guatemala
 
Icfes2009
Icfes2009Icfes2009
Icfes2009
 
El escorial
El escorialEl escorial
El escorial
 
Agile ee quesiton deck
Agile ee quesiton deckAgile ee quesiton deck
Agile ee quesiton deck
 
Joomla 1.6
Joomla 1.6Joomla 1.6
Joomla 1.6
 
Carranza
 Carranza Carranza
Carranza
 
Cours L3 Management des organisations 2
Cours L3 Management des organisations 2Cours L3 Management des organisations 2
Cours L3 Management des organisations 2
 
Séjour à Quimper du 18 au 25 mars 2014
Séjour à Quimper du 18 au 25 mars 2014Séjour à Quimper du 18 au 25 mars 2014
Séjour à Quimper du 18 au 25 mars 2014
 

Similaire à mix-it 2011

Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataMarc Bojoly
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010JUG Lausanne
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataDavid Joubert
 
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
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
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
 
Les clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceLes clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceFrederic Desprez
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataMicrosoft
 
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.ithibnico
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
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
 
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
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Pythonyboussard
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABESABES
 

Similaire à mix-it 2011 (20)

Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse 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
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
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
 
Les clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceLes clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie science
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
 
Implementing a key/value store
Implementing a key/value storeImplementing a key/value store
Implementing a key/value store
 
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
 
Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
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
 
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
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 

mix-it 2011

  • 1. N(ot) O(nly) SQL Des alternatives aux bases de données relationnelles MALLASSI Olivier OCTOTechnology Email : omallassi@octo.com Twitter : @omallassi LinkedIn : http://www.linkedin.com/pub/olivier-mallassi/1/46/21 Blog : http://blog.octo.com
  • 2. Objectifs Proposer une vision synthétique du « monde NoSQL » Fournir un premier guide de lecture http://www.flickr.com/photos/nuagedenuit/155699074/sizes/o/
  • 3. @omallassi Architecte @OCTO http://blog.octo.com noSQL User Group @Paris #nosqlfr 3
  • 5. Au commencement était… …le fichier séquentiel (indexé)… … et COBOL Une interrogation « limitée », par index SELECT BookFile ASSIGN TO "BOOKS.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS BookNumber ALTERNATE RECORD KEY IS AuthorNumber WITH DUPLICATES FILE STATUS IS BookErrorStatus. …
  • 6. Vers 1970les premiers modèles relationnels Un référentiel unique de données structurées et couplées Un système centralisé Une donnée unique (structure, valeur, consistance…) pour toutes les utilisations On modélise les données puis on développe des applications
  • 7. Puis vinrent… Objectif : stocker et rechercher dans le web en temps réel Objectif : vendre la plus grande variété d’articles (livres, bricolage…) Des enjeux communs Performance (malgré les volumétries) Disponibilité (>99,99%) Résilience Scalabilité horizontale Enjeux : Agréger de gros volumes de données  BigTable + Map/Reduce Enjeux Débit important en écriture tout en assurant la disponibilité Derniers incidents majeurs : 2004 <40 minutes d’indisponibilité par an  Dynamo
  • 8. Et dans le même temps, Le secteur de la finance se lancent dans une course à la latence… Lowlatency messaging Grille de calcul …et aide au développement des « caches distribués » : Data Grid
  • 11. HadoopUn écosystème riche et complexe Une « stack » complexe Le cauchemar de la compatibilité des versions Des leaders différents : Apache, Cloudera… Des équipes distinctes : Hive, Hadoop, Sqoop… Pig Dataflowlanguage & compiler Hive SQL LikequeriesDSL Oozie Workflow for interdependentHadoop Jobs MapReduce Framework permettant de « cruncher » des données en parallèle Sqoop Intégration RDBMS & Hadoop Hbase Base de données pour des accès aléatoires read/write Zookeeper Service de coordination HDFS Un système de fichiers distribués Write-once, readmany Flume, Chukwa, Scribe Collection de données fiable et résiliente
  • 12.
  • 13. MapReduce Le système de requêtage : MapReduce Traiter des volumes de données plus faibles Paralléliser ces traitements « plus » unitaires Co-localiser traitements / données masters slaves core-site.xml hdfs-site.xml mapred-site.xml hadoop-metrics.properties log4j.properties hadoop-env.sh
  • 15. MapReducePrincipe de l’algorithme Objectif : réaliser la somme des deals sur un axe d’agrégation GEDEQSWAP John 15/09/2010 EUR10200 CreditSG GEDSWAPTION John 14/09/2010 EUR11000 CreditHSBC … GEDSWAPTION John 17/09/2010 EUR 5500 CreditHSBC IRDIRS Simon 13/09/2010 USD10000 DebitSG IRDIRS Simon 14/09/2010 USD11000 CreditBoF (K1, V1) Map agrégation par devise EUR 10200 USD -10000 EUR 11000 EUR 5500 USD 11000 List(K2, V2) Shuffle & Sort EUR 10200,11000, 5500 USD -10000,11000 K2,list(V2) Reduce somme sur l’axe d’agrégation Itération sur l’ensemble des K2 EUR 26700 USD 1000 List(K3, V3)
  • 16. L’avantage d’un DSL import org.apache.hadoop.mapred; public static class MapextendsMapReduceBaseimplements Mapper { public voidmap(LongWritablekey, Text value, OutputCollector output, Reporter reporter) throwsIOException { String line = value.toString(); String[] lineAsArray = line.split(""); String currentCurrency = lineAsArray[4]; String amountAsString = lineAsArray[5]; String sens = lineAsArray[6]; DoubleWritable data = null; if("Debit".equals(sens)){ data = new DoubleWritable(Double.parseDouble("-" + amountAsString)); } else if("Credit".equals(sens)) { data = new DoubleWritable(Double.parseDouble(amountAsString)); } output.collect(new Text(currentCurrency), data); } } SELECT Currency, SUM(Amount) FROMcash_flow WHERE Direction='Credit' AND DueDate &lt; = unix_timestamp('2010-09-15 00:00:00') GROUP BY Currency public class CurrencyAggregateextendsConfiguredimplementsTool { @Override public intrun(String[] args) throws Exception{ JobConfconf = new JobConf(CurrencyAggregate.class); conf.setJobName("CurrencyAggregate"); //output of the Mapper ); conf.setOutpconf.setOutputKeyClass(Text.classutValueClass(DoubleWritable.class); conf.setMapperClass(Map.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); return 0; } public staticvoid main(String[] args) throws Exception { intexitCode = ToolRunner.run(new CurrencyAggregate(), args); System.exit(exitCode); } /The reduce is called once per key in the output map of the map() function public static class Reduce extends MapReduceBase implements Reducer { public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException { double sum = 0; while (values.hasNext()) { double amount = values.next().get(); sum += amount; } output.collect(key, new DoubleWritable(sum)); } }
  • 17. Hashmap distribuéele modèle Amazon : Dynamo, S3, SimpleDB, Cassandra, Riak, Voldemort…
  • 18. Rappelez vous… Objectif : stocker et rechercher dans le web en temps réel Objectif : vendre la plus grande variété d’articles (livres, bricolage…) Des enjeux communs Performance (malgré les volumétries) Disponibilité (>99,99%) Résilience Scalabilité horizontale Enjeux : Agréger de gros volumes de données  BigTable + Map/Reduce Enjeux Débit important en écriture tout en assurant la disponibilité Derniers incidents majeurs : 2004 <40 minutes d’indisponibilité par an  Dynamo
  • 19.
  • 21.
  • 23.
  • 24. Hashmap distribuéeModèle de données Modèle de données : une Map Cassandra offre un modèle de données « plus riche » en reprenant le modèle « column-oriented » de BigTable : un Map de Map Sans aller jusqu’au stockage physique en colonne Propose des index secondaires (v.0.7) : get users where state = 'UT' and birth_date > 1970;
  • 25. « Event Sourcing »Le pattern… vision « stock » ou « mouvements »? 09/2010 400 Credit 13/09/2010 10000 Debit 15/09/2010 10200 Credit 14/09/2010 11000 Credit 15/09/2010 5500 Debit 16/09/2010 5500 Debit 15/09/2010 11000 Debit 16/09/2010 5500 Credit 17/09/2010 5500 Credit 13/09/2010 10000 Debit 15/09/2010 10200 Credit 13/09/2010 20000 Debit 14/09/2010 11000 Credit 15/09/2010 3900 Credit 16/09/2010 0 Credit 17/09/2010 5500 Credit
  • 26.
  • 27.
  • 28. Graph
  • 29.
  • 30. Hashmap distribuée Gestion de la consistance Consistance faible Consistance forte Client (Write) Client (Read) Client (Write) Client (Read) Quorum basedprotocol : N/2 + 1 ou W + R > N Trade off entre consistance, latence, tolérance à la panne en fonction de la donnée #2 «3» #2 «3»
  • 31. Et les « Data Grids »?
  • 32. NoSQL & DataGrids ont suivi des chemins différents NoSQL vient de besoins très ciblés Data Grid adresse des problématiques plus large « Write-through », « Writebehind »… Même si les mêmes principes s’appliquent
  • 34. Des systèmes qui ouvrent de nouvelles voies Performance / débit en écriture stockage / manipulation de volumes importants de données Souplesse dans la modélisation, multi-version… Disponibilité / résilience des systèmes Sur des niveaux de pannes de plus en plus importants « Ops simplifié » Elasticité de l’infrastructure
  • 35. Des systèmes qui challengent les règles établies « All data are not equals » Et c’est indépendant de NoSQL… La disponibilité est un des prochains challenges Depuis 1970, on gère des niveaux de pannes de plus en plus importants Sur des systèmes de plus en plus « commodities » « Workdone by Joule ». Cooperative Expendable Micro-Slice Servers (CEMS): Low Cost, Low Power Servers for Internet-Scale Service James Hamilton. « Big Data » ou l’analyse plus fine des données Des applications claires dans la BI Recherche, Machine Learning… La fin du cloisonnement OLTP, OLAP? NoSQL parle de collaboration : stockage « polyglotte » NoSQL parle d’alternatives et challenge 40 années de suprématie des bases relationnelles…
  • 36. « BecauseRDBMSscanbebeaten by more than an order of magnitude on the standard OLTP benchmark, thenthereis no marketwherethey are competitive. As such, theyshouldbeconsidered as legacytechnology more than a quarter of a century in age, for which a completeredesign and re-architectingis the appropriatenextstep. » Michael Stonebraker The End Of an Architectural Era Et si il avait raison ? :o)