Bases de Données NoSQL



Documents pareils
Cours 8 Not Only SQL

OpenPaaS Le réseau social d'entreprise

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Cartographie des solutions BigData

Groupe de Discussion Big Data Aperçu des technologies et applications. Stéphane MOUTON

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données documentaires et distribuées Cours NFE04

Les bases de données relationnelles

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

NoSQL : hype ou innovation? Grégory Ogonowski / Recherches Octobre 2011

Introduction à MapReduce/Hadoop et Spark

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

Introduction à ElasticSearch

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Le BigData, aussi par et pour les PMEs

NoSQL. Etat de l art et benchmark

Les technologies du Big Data

Cassandra chez Chronopost pour traiter en temps réel 1,5 milliard d événements par an

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Présentation du module Base de données spatio-temporelles

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Certificat Big Data - Master MAthématiques

Un peu de culture : Bases N osql L 1

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

Big Data Concepts et mise en oeuvre de Hadoop

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Hibernate vs. le Cloud Computing

Programmation parallèle et distribuée (Master 1 Info )

NFE204 Bases de données avancées

Programmation parallèle et distribuée

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

Les journées SQL Server 2013

Programmation parallèle et distribuée

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

BIG DATA. Veille technologique. Malek Hamouda Nina Lachia Léo Valette. Commanditaire : Thomas Milon. Encadré: Philippe Vismara

Bases de données documentaires et distribuées Cours NFE04

11/01/2014. Le Big Data Mining enjeux et approches techniques. Plan. Introduction. Introduction. Quelques exemples d applications

NoSQL : les meilleures

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Hadoop, les clés du succès

Pentaho Business Analytics Intégrer > Explorer > Prévoir

Java et les bases de données

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Cours Bases de données

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Big Data : utilisation d un cluster Hadoop HDFS Map/Reduce HBase

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Le NoSQL - Cassandra

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

HADOOP ET SON ÉCOSYSTÈME

Ricco Rakotomalala R.R. Université Lyon 2

4 Exemples de problèmes MapReduce incrémentaux

Importation et exportation de données dans HDFS

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Cassandra et Spark pour gérer la musique On-line

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Les quatre piliers d une solution de gestion des Big Data

SQL Historique

Quels choix de base de données pour vos projets Big Data?

Big Data et Graphes : Quelques pistes de recherche

Business Intelligence, Etat de l art et perspectives. ICAM JP Gouigoux 10/2012

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata!

Présentation Alfresco

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

A QUOI SERVENT LES BASES DE DONNÉES?

ArcGIS 10.1 for Server

Labs Hadoop Février 2013

Document réalisé par Khadidjatou BAMBA


M2 GL UE DOC «In memory analytics»

Rapport de Mini-Projet en ArcGIS Engine

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

Big Data On Line Analytics

Le cloud computing au service des applications cartographiques à haute disponibilité

Big Data. Les problématiques liées au stockage des données et aux capacités de calcul

Big data et données géospatiales : Enjeux et défis pour la géomatique. Thierry Badard, PhD, ing. jr Centre de Recherche en Géomatique

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Langage SQL : créer et interroger une base

Les bases de données

Module BDR Master d Informatique (SAR)

Bases de données documentaires et distribuées Cours NFE04

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

BIRT (Business Intelligence and Reporting Tools)

Notes de cours : bases de données distribuées et repliquées

IBM Cloudant Data Layer Local Edition

Cours Bases de données 2ème année IUT

Optimisations des SGBDR. Étude de cas : MySQL

Transcription:

Bases de Données NoSQL LI328 Technologies Web Mohamed-Amine Baazizi Transparents de Bernd Amann UPMC - LIP6 LI328 Technologies Web (B. Amann) 1

SGBD Universalité Systèmes «SQL» : Facilité d'utilisation Cohérence des données Persistance des données Fiabilité (pannes) Efficacité Universalité Vues «One size fits all» SQL Données structurées Transactions Optimisation de requêtes Indexation des données LI328 Technologies Web (B. Amann) 3

Caractéristiques du Big Data LI328 Technologies Web (B. Amann) 4

Les évolutions... Nouvelles Données : Web 2.0 : Facebook, Twitter, news, blogs,... LOD : graphes, ontologies,... Flux : capteurs, GPS, Nouveaux Traitements : Moteurs de recherche Extraction, analyse,... Recommandation, filtrage collaboratif, Nouvelles Infrastructures : Cluster, réseaux mobiles, microprocesseurs multi-coeurs, très gros volumes, données pas ou faiblement structurées transformation, agrégation, indexation distribution, parallélisation, redondance LI328 Technologies Web (B. Amann) 5

Évolution Spécialisation Systèmes «nosql» (not only SQL) : Facilité d'utilisation Cohérence des données Persistence des données Fiabilité (pannes) Efficacité Universalité Langages spécialisées Données hétérogènes Réplication Parallélisation Indexation de contenus «Systèmes sur mesure» LI328 Technologies Web (B. Amann) 6

Cohérence, Disponibilité, Pannes Théorème CAP : dans un système distribué il est impossible de garantir à chaque instant T plus que deux parmi les trois propriétés suivantes : Coherency (cohérence) : tous les noeuds voient la même version Availability (disponibilité) : chaque requête obtient une réponse Partition tolerance (résistance à une panne partielle) : C P A la perte de messages n'empêche pas le système de continuer à fonctionner LI328 Technologies Web (B. Amann) 7

Cohérence, Disponibilité, Pannes Impossibilité d'assurer C (cohérence), A (Disponibilité) et P (tolérance aux pannes) en même temps A et C : si A alors Node 2 réponds à req2 si C alors la variable a de Node 2 contient 2 LI328 Technologies Web (B. Amann) 8

Cohérence, Disponibilité, Pannes Impossibilité d'assurer C (cohérence), A (Disponibilité) et P (tolérance aux pannes) en même temps A et P : si A alors Node 2 réponds à req2 si P alors le msg de Node1 vers Node 2 perdu et donc a=1 sur ce dernier LI328 Technologies Web (B. Amann) 9

Cohérence, Disponibilité, Pannes Impossibilité d'assurer C (cohérence), A (Disponibilité) et P (tolérance aux pannes) en même temps C et P : Exercice LI328 Technologies Web (B. Amann) 10

SQL NoSQL Cohérence forte : Logique : Schémas, contraintes Physique : Transactions ACID Distribution des données Transactions distribuées Ressources limitées Optimisation de requêtes Langage standard : SQL Cohérence faible : Schémas, contraintes Cohérence «à terme» Distribution des traitements : Traitements «batch» MapReduce Ressources «illimitées» Passage à l'échelle horizontal Langages spécialisés, API LI328 Technologies Web (B. Amann) 11

Infrastructures RAIN : le Cloud Redundant Array of Independent Nodes (cloud) Infrastructure à faible coût : PC, open-source, LAN générique Tolérance aux fautes : redondance du matériel, des données et des traitements Administration facile : architecture «shared-nothing» virtualisation Utilisation facile : Modèles de programmation restreint : MapReduce LI328 Technologies Web (B. Amann) 12

SQL NoSQL Traitements centralisés Traitements distribués Accès distribué Accès local Traitement Requêtes + données Coordinateur Code + résultats Traitement Traitement LI328 Technologies Web (B. Amann) 13

SQL NoSQL Accès à grain fin : Accès «batch» : beaucoup de lectures / écritures de de petits objets peu de lectures / écritures de grands objets T1 T2 T3 T1 T2 T3 LI328 Technologies Web (B. Amann) 14

Vers nosql Étendre / adapter un SGBD traditionnel : niveaux de concurrence, indexes, stockage Définir des systèmes spécialisés pour une infrastructure (distribué) : cloud, clusters un type de données : profils, documents XML, RDF,... un type de traitements : partage, analyse/agrégation, visualisation LI328 Technologies Web (B. Amann) 15

Classification de systèmes Types de données : tables, clés/valeurs, arbres, graphes, documents Paradigme (langages) : map/reduce (PIG, Hive) API / Protocole : JSON/REST Persistence : mémoire, disque, cloud... Gestion de concurrence / cohérence Réplication, protocoles Langage d'implémentation,... LI328 Technologies Web (B. Amann) 16

Liste (incomplète) de systèmes nosql Document store (DS) : Collections de documents Natifs : CouchDB, MongoDB, TerraStore,... Soft : exist, Virtuoso Key-value store (KVS) : Absence de schéma DynamoDB, Voldemort, Azure Table Storage, MongoDB, Bigtable... Tabular store (TS) : Tables Cassandra, Hadoop / Hbase, Hypertable (Bigtable) Graph store (GS) : Graphes AllegroGraph, InfiniteGraph Autres types de systèmes nosql : XML, Triplestore (RDF), oriéntés objets LI328 Technologies Web (B. Amann) 17

Acteurs nosql Amazon : DynamoDB, SimpleDB Microsoft : Azure Table Storage Google : BigTable, Datastore, GFS Apache : CouchDB, Cassandra, Hadoop / HBase Beaucoup de start-ups... LI328 Technologies Web (B. Amann) 19

MongoDB (DS) JSON document store Protocole : BSON (binary JSON) MapReduce, langage orienté-objet (JSON) Écrit en C++ LI328 Technologies Web (B. Amann) 20

MongoDB MongoDB est un SGBD : orienté documents libre scalable : réplication, auto-sharding flexible : pas de schéma de données, full-text index écrit en C++. Il fait partie de la mouvance NoSQL et vise a fournir des fonctionnalités avancées. Utilisée par Foursquare, bit.ly, Doodle, Disqus LI328 Technologies Web (B. Amann) 21

Mongo DB Modèle logique BD = ensemble de collections Collection = ensemble de documents Taille variable Taille fixe (capped) : LRU Document = objet BSON Modèle physique Index : attributs, geo-spatial MapReduce Sharding (partitionnement horizontal) LI328 Technologies Web (B. Amann) 22

Langage MongoDB Mise-à-jour db.collection.insert() db.collection.update() db.collection.save() db.collection.findandmodify() db.collection.remove() Interrogation db.collection.find() db.collection.findone() LI328 Technologies Web (B. Amann) 23

Mongo DB : insert db.collection.insert(<doc> [, <doc> ]*) > collection = db.contactinfo > doc = { "nom" : "toto", "info" : { "twitter" : "@toto5646", "email" : "toto@upmc.fr" }, "amis" : 87687, "photo" : BinData(...) "date_login" : new Date()} > db.contactinfo.insert(doc) LI328 Technologies Web (B. Amann) 24

MongoDB : update db.collection.update(query, update, <upsert>, <multi>) query : requête update : modifications upsert (booléen) : false (défaut) : update true : update or insert if not exists multi (booléen) : false (défaut) : maj de la 1ere occurrence trouvée true : maj toutes les occurrence LI328 Technologies Web (B. Amann) 25

MongoDB: update db.products.update( { item: "book", qty: { $gt: 5 } }, { $set: { x: 6 }, $inc: { y: 5} } ) <> db.products.update( { item: "book", qty: { $gt: 5 } }, { x: 6, y: 15 } ) db.products.update( { item: "book", qty: { $gt: 5 } }, { $set: { x: 6, y: 15 } }, { multi: true } ) = db.products.update( { item: "book", qty: { $gt: 5 } }, { $set: { x: 6, y: 15 } }, false, true ) db.products.update( { item: "magazine", qty: { $gt: 5 } }, { $set: { x: 25, y: 50 } }, { upsert: true } ) LI328 Technologies Web (B. Amann) 26

Mongo DB : requêtes db.collection.find( <query>, <projection> ) db.collection.findone( <query>, <projection> ) > db.inventory.find( {} ) > db.contactinfo.findone({"nom" : "toto"}); > db.contactinfo.findone({"contact.twitter" : "@toto5646"}); > db.contactinfo.find({"date_login" : { "$gt" : ISODate("2015-09-17T23:25:56.314Z"), "$lt" : ISODate("2014-09-17")}}).sort({nom : 1}).limit(10).skip(100) LI328 Technologies Web (B. Amann) 27

MongoDB : requêtes > db.employee.insert( { " name ": " John Smith ", " address ": { " street ": " Lily Road ", " number ": 32, " city ": " Owatonna ", "zip ": 55060 }, " hobbies ": [ " yodeling ", "ice skating " ] }) >db. employee. FindOne ( {" name ": " John Smith "}) > db. employee. find ( {" address. city ": " Owatonna "}, {" name ": 1}) > db. employee. find ( {" address. city ": " Owatonna "}, {" address.city ": 0, age : 1, name : 1}) > db. employee. find ( {" hobbies ": {" $ne ": " yodeling "}}) LI328 Technologies Web (B. Amann) 28

MongoDB en Java Authentification (optionnel ): boolean auth = db. authenticate ( myusername, mypassword ); Liste des collections : Set < String > colls = db. GetCollectionNames (); for ( String s : colls ) { System. out. println (s); } Accès à une collection : DBCollection coll = db. getcollection (" testcollection ") LI328 Technologies Web (B. Amann) 29

MongoDB en Java Insertion d'un objet (document) : 1 BasicDBObject doc = new BasicDBObject (); 2 3 doc. put (" name ", " MongoDB "); 4 doc. put (" type ", " database "); 5 doc. put (" count ", 1); 6 7 BasicDBObject info = new BasicDBObject (); 8 9 info. put ("x", 203); 10 info. put ("y", 102); 11 12 doc. put (" info ", info ); 13 14 coll. insert ( doc ); LI328 Technologies Web (B. Amann) 30

MongoDB en Java Requêtes : 1 DBObject doc = collection. findone (); // get first document 2 System. out. println ( dbobject ); 1 DBCursor cursor = collection. find (); 2 while ( cursor. hasnext ()) { 3 System. out. println ( cursor. next ()); } 1 BasicDBObject query = new BasicDBObject (); 2 query.put(" number ", 5); 3 DBCursor cursor = collection. find ( query ); 4 while ( cursor. hasnext ()) { 5 System. out. println ( cursor. next ()); } LI328 Technologies Web (B. Amann) 31

MongoDB en Java Requêtes : 1 BasicDBObject query = new BasicDBObject (); 2 List < Integer > list = new ArrayList < Integer >(); 3 list. add (9); 4 list. add (10); 5 query.put(" number ", new BasicDBObject (" $in ", list )); 6 DBCursor cursor = collection. find ( query ); 7 while ( cursor. hasnext ()) { 8 System. out. println ( cursor. next ()); 9 } LI328 Technologies Web (B. Amann) 32

MongoDB en Java Requêtes : 1 BasicDBObject query = new BasicDBObject (); 2 query.put(" number ", new BasicDBObject (" $gt ", 5). append (" $lt ", 8)); 3 DBCursor cursor = collection. find ( query ); 4 while ( cursor. hasnext ()) { 5 System. out. println ( cursor. next ()); 6 } Création d'un index : coll. createindex (new BasicDBObject ("i", 1)); // create index on "i", ascending LI328 Technologies Web (B. Amann) 33

Parallélisation : MapReduce Entrée : une (grande) collection d'objets (documents, données) un traitement / calcul ensembliste : compter, agréger, filtrer, indexer, jointure un grand nombre de machines connectées Problème : paralléliser le traitement en utilisant efficacement les machines disponibles LI328 Technologies Web (B. Amann) 34

Programme : Approche MapReduce Séquence de deux appels de fonctions : map1 reduce1 map2 reduce2... Coordinateur Déploiement des données et des traitements dans le cluster Coordination de l'exécution Avantage : Parallélisation «automatique» de l'évaluation Virtualisation de l'infrastructure LI328 Technologies Web (B. Amann) 35

Parallélisation : MapReduce Collection d'objets = collection de couples (Clés, Valeurs) Deux fonctions utilisateur f et g : map (f, [ ( A, V ) ]) ( B,V' )* : map (count_words, ( url, doc )) ( mot, int )* shuffle (B,V')* (B, V'*)* : shuffle (mot, int)* (mot, int*)* reduce (g, (C',V'*)*) (C,V'')* : group by mot reduce (sum, (mot, int*)*) (mot, int)* agrégation LI328 Technologies Web (B. Amann) 36

MapReduce (exemple) a1 b1 b3 v1 b2 Map / Shuffle count 1 3 Reduce sum b1 4 a2 b3 b2 v2 1 1 2 a3 b3 b1 b3 b1 b2 b2 v3 b1 1 3 b2 b3 1+3=4 3+1=4 (A,V)* (B,int*)* (B,int)* LI328 Technologies Web (B. Amann) 37

MongoDB : MapReduce db.runcommand( { mapreduce : <collection>, map : <mapfunction>, reduce : <reducefunction> [, query : <query filter object>] [, sort : <sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces>] [, limit : <number of objects to return from collection>] [, out : <see output options below>] [, keeptemp: <true false>] [, finalize : <finalizefunction>] [, scope : <object where fields go into javascript global scope >] [, jsmode : true] [, verbose : true] } ); LI328 Technologies Web (B. Amann) 38

MapReduce : exemple Collection de commentaires : { username: "jones", likes: 20, text: "J'aime cette photo!" } Fonction Map : function() { emit( this.username, {count: 1, likes: this.likes} ); } Fonction Reduce : function(key, values) { var result = {count: 0, likes: 0}; values.foreach(function(value) { result.count += value.count; result.likes += value.likes; }); return result; } Map / shuffle : [ (C,V) ] [(C',[V'])] Reduce : [ (C',[V']) ] [ (C',V') ] MapReduce incrémental LI328 Technologies Web (B. Amann) 39

Sharding Partitionnement horizontal d'une BD (collection) : Réplication maître / esclave plusieurs milliers de nœuds ajout / suppression de nœuds (dynamique) équilibrage de charge automatique LI328 Technologies Web (B. Amann) 40

MonoDB : Sharding Notions : shard : traitement de requêtes (query, maj) sur un fragment de collection (identifié par shardkey) mongos : routage de requêtes config server : surveillance des shards (métadonnées) Sharded cluster Equilibrage Routage (shardkey) / Brodacast (no key) Configuration (cache) Configuration LI328 Technologies Web (B. Amann) 41

Conclusion On a besoin de SQL et de NoSQL NoSQL = not only SQL Principe CAP Importance de nosql Analyse de données Passage à l'échelle Parallélisation / partionnement verticale LI328 Technologies Web (B. Amann) 42

MongoDB en Java 1 import com. mongodb. Mongo ; 2 import com. mongodb.db; 3 import com. mongodb. DBCollection ; 4 import com. mongodb. BasicDBObject ; 5 import com. mongodb. DBObject ; 6 import com. mongodb. DBCursor ; 7 8 Mongo m = new Mongo (); 9 // or 10 Mongo m = new Mongo ( " localhost " ); 11 // or 12 Mongo m = new Mongo ( " localhost ", 27017 ); 13 14 DB db = m. getdb ( " mydb " ); LI328 Technologies Web (B. Amann) 43