Introduction aux systèmes NoSQL (Not Only SQL)



Documents pareils
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)

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

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL


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

Les bases de données relationnelles

Introduction à MapReduce/Hadoop et Spark

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

Cartographie des solutions BigData

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

Hibernate vs. le Cloud Computing

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

Le NoSQL - Cassandra

Programmation parallèle et distribuée

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.

Programmation parallèle et distribuée

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

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

NoSQL. Etat de l art et benchmark

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

Les technologies du Big Data

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

Optimisations des SGBDR. Étude de cas : MySQL

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

Ricco Rakotomalala R.R. Université Lyon 2

Big Graph Data Forum Teratec 2013

NoSQL : les meilleures

Jean-François Boulicaut & Mohand-Saïd Hacid

Module BDR Master d Informatique (SAR)

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

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

Bases de Données NoSQL

Un peu de culture : Bases N osql L 1

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

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

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

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

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

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

Document réalisé par Khadidjatou BAMBA

Bases de données Cours 1 : Généralités sur les bases de données

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

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

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

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours

Systèmes Répartis. Pr. Slimane Bah, ing. PhD. Ecole Mohammadia d Ingénieurs. G. Informatique. Semaine Slimane.bah@emi.ac.ma

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

Panorama des solutions analytiques existantes

Les quatre piliers d une solution de gestion des Big Data

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée

Big Data et Graphes : Quelques pistes de recherche

Chapitre 10. Architectures des systèmes de gestion de bases de données

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

Architecture NoSQL et réponse au Théorème CAP

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)

Bases de Données. Plan

Présentation Alfresco

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

TP Bases de données réparties

Titre : La BI vue par l intégrateur Orange

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

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

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

4 Exemples de problèmes MapReduce incrémentaux

Cours 8 Not Only SQL

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

BONJOURGRID : VERSION ORIENTÉE DONNÉE & MAPREDUCE SÉCURISÉ

Entrepôts de données : Systèmes OLAP : ROLAP, MOLAP et OLAP (5) 1 Introduction aux systèmes

Bases de données et sites WEB Licence d informatique LI345

«clustering» et «load balancing» avec Zope et ZEO

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

Cours Bases de données

Université de Liège Faculté des Sciences Appliquées Institut Montefiore ETUDE DES FRAMEWORK DISTRIBUÉS DE GRILLES DE DONNÉES

Catherine Chochoy. Alain Maneville. I/T Specialist, IBM Information Management on System z, Software Group

Stephan Hadinger, Sr. Mgr Solutions Architecture, AWS. Salon du Big Data 11 mars 2015

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

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

BIG Data et R: opportunités et perspectives

L AVENIR DU NoSQL. Quel avenir pour le NoSQL?

Chapitre 1 : Introduction aux bases de données

OpenPaaS Le réseau social d'entreprise

BI dans les nuages. Olivier Bendavid, UM2 Prof. A. April, ÉTS

Du 10 Fév. au 14 Mars 2014

Gestion des transactions et accès concurrents dans les bases de données relationnelles

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

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

Bases de données cours 1

Le BigData, aussi par et pour les PMEs

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

+ = OpenStack Presentation. Raphaël Ferreira - enovance. Credits : Thanks to the OpenStack Guys 1

SQL Server 2012 et SQL Server 2014

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

Mercredi 15 Janvier 2014

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Évaluation d une architecture de stockage RDF distribuée

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Bases de données avancées Introduction

Transcription:

Introduction aux systèmes NoSQL (Not Only SQL) Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Avril 2013 1. De nouveaux besoins en gestion de données 2. Introduction aux systèmes NoSQL 3. Modèle «Clés-Valeurs» 4. Modèle «Colonnes» 5. Modèle «Documents» 6. Modèle «Graphes» 1. De nouveaux besoin en gestion de données Nouveaux besoins en gestion de données Limites des SGBD Relationnels-transactionnels Le théorème de Brewer ou de CAP Le grand paysage des bases de données 2. Introduction aux systèmes NoSQL Les grands principes des systèmes NoSQL Typologie des systèmes NoSQL Quelques systèmes NoSQL Introduction au NoSQL Fondements des systèmes NoSQL : Sharding, Consistent hashing, MapReduce, MVCC, Vector-clock» Typologie des BD NoSQL 3. Modèle NoSQL «Clé-Valeur» 4. Modèle NoSQL «Colonne» 5. Modèle NoSQL «Document» 6. Modèle NoSQL «Graphe» Bernard ESPINASSE - Introduction aux systèmes NoSQL 1 Bernard ESPINASSE - Introduction aux systèmes NoSQL 2 Documents : C. Strauch, «Nosql databases», Lecture Notes, Stuttgart Media University, 2011. A. Foucret, «Livre blanc sur NoSQL», par Smile (http://www.smile.fr/livresblancs/culture-du-web/nosql). S-K. Gajendran, «A Survey on NoSQL Databases». S. Abiteboul, I. Manolescu, P. Rigaux, M-C Rousset, P. Senellart, «Web Data Management», Cambridge University Press 2011 (en ligne, la 3ème partie : http://webdam.inria.fr/jorge/?action=chapters). J. Dean and S. Ghemawat, «MapReduce: Simplified Data Processing on Large Clusters», OSDI 2004 Présentations : P. Selmer, «NOSQL stores and Data analytics tools», Advances in Data Management, 2012. A.-C. Caron, «NoSQL», Université de Lille 1. M. Jaffré, P. Rauzy, «MapReduce», ENS, 2010. K. Tannir, «MapReduce : Algorithme de parallélisations des traitements», 2011, http://blog.khaledtannir.net/wp-content/.../kt-presentation-mapreduce.pdf Nouveaux besoins en gestion de données Limites des SGBD Relationnels-transactionnels Le théorème de Brewer ou de CAP Le grand paysage des bases de données Bernard ESPINASSE - Introduction aux systèmes NoSQL 3 Bernard ESPINASSE - Introduction aux systèmes NoSQL 4

NoSQL Contexte Recherche sur le web 5/22 NoSQL Contexte Système distribué 6/22 Inverted File - structure Constat : essor des très grandes plateformes et applications Web (Google, Facebook, Twitter, LinkedIn, Amazon, ) volume considérable de données à gérer par ces applications nécessitant une distribution des données et leur traitement sur de nombreux serveurs ces données sont souvent associées à des dʼobjets complexes et hétérogènes => Limites des SGBD traditionnels (relationnels et transactionnels) basés sur SQL Dʼoù nouvelles approches de stockage et de gestion des données : permettant une meilleure scalabilité dans des contextes fortement distribués permettant une gestion dʼobjets complexes et hétérogènes sans avoir à déclarer onau connaît préalable le nombre lʼensemble de documents des champs n i associés représentant à un terme un objet t i. regroupées on donne derrière un poids le terme w k NoSQL à chaque(proposé document par d k Carl associé Strozzi), au terme ne se t i.le substituant poids pas traduit aux SGBD la pertinence Relationnels du document mais les pour complètant ce terme. en comblant leurs faiblesses (Not Only SQL) Système distribué Utilisent des LANs (Local Area Networks) avec 3 niveaux de communication Système distribué : = système logiciel qui permet de coordonner plusieurs ordinateurs. Généralement, cette coordination se fait par! Les envoi serveurs de messages sont via regroupés un réseauen auquel «Racks sont reliés» : liaison ces ordinateurs. réseau rapide, environ 1Go/sec Pourquoi? parce qu on manipule un très grand volume de données.! un Sans «Data distribution, center on» consiste n a pas d application en un grand scalable. nombre de «racks», interconnectés On peut imaginer par 2des scenarii routeurs de traitement (switches) des données : liaison : à 100 Mo/sec 1. On dispose d un grand ensemble de données, et on doit leur! entre différents appliquer des «traitements Data centers disponibles» : communication sur des sites distincts. internet Il faut à 2-3 Mo/sec donc envoyer les données aux endroits appropriés, et enchaîner les exécutions distantes. C est un scénario de type Workflow, que l on Les serveurs peut communiquent implémenter avec par des envoi web services. de messages, Traitements ils ne distribués. partagent pas 2. Les données sont distribuées sur un certain nombre de serveurs, et on de disque ni de ressource de traitement = architecture «shared pousse les programmes vers ces serveurs. Il est en effet plus nothing» efficace de transférer un petit programme sur le réseau plutôt qu un grand volume de données. Données distribuées. On verra aujourd hui l algorithme MapReduce qui utilise cette approche. Bernard ESPINASSE - Introduction aux systèmes NoSQL 5 Bernard ESPINASSE - Introduction aux systèmes NoSQL 6 NoSQL Contexte Système distribué 7/22 NoSQL Contexte Système distribué 8/22 Exemple : Data Centers de Google Ex. : Data center de Google (début 2010) : Utilise des LANs (Local Area Networks). On distingue 3 niveaux de! Un «communication Data center»: Google contient entre 100 et 200 «Racks», chacun contenant 1. Les 40 serveurs sont regroupés en racks. Liaison réseau rapide, environ 1Go/sec.! environ 2. 5000 Un data serveurs center consiste par «Data-center un grand nombre» pour de un racks, total interconnectés de 1 millions de serveurs par des (estimation routeurs (switches). dʼaprès la Liaison consommation à 100 Mo/sec. électrique). 3. Entre diffé r e n t s d a t a c e n t e r s, i l y a a u s s i u n e p o s s i b i l i t é d e communication mais par liaison assez lente (internet - 2-3 Mo/sec) Les serveurs communiquent par envoi de messages, Ils ne partagent Ex. : Data center de Facebook (2010) : pas de disque ni de ressource de traitement.! 2500 = cpu architecture (serveurs) shared nothing. Début 2010 : 1 data center Google contient entre 100 et 200 racks,! 1 PetaByte chacun contenant dʼespace 40 disque serveurs. (= milleterabytes Environ 5000 serveurs = 1 million par de data-center Gigabytes)! Plus pour de 250 un total Gigabytes de 1 millions données de serveurs compressées (estimation (plus d après de 2 Terabytes la non consommation compressés) électrique). Schéma : LAN/data center Rack1 Rack2 Rack3 Bernard ESPINASSE - Introduction aux systèmes NoSQL 7 Bernard ESPINASSE - Introduction aux systèmes NoSQL 8

système logiciel permettant de coordonner plusieurs ordinateurs ordinateurs reliés par un réseau local (LAN) communiquant généralement par envoi de messages utilisant une architecture distribuée :! fonctionnant sur du matériel peu spécialisé! matériel facilement remplaçable en cas de panne Application particulière : la distribution de données sur plusieurs serveurs organisés en «data centers» :! gestion de volumes de données très importants! assurer une continuité de service en cas d'indisponibilité de service sur un serveur On dispose d'un très grand ensemble de données sur lesquelles on doit leur appliquer des traitements. 2 stratégies : Par distribution des traitements (scaling des traitements) :! on distribue ces traitements sur un nombre de machines important afin dʼabsorber des charges très importantes! on envoie les données aux endroits appropriés, et on enchaîne les exécutions distantes (scénario type Workflow implémentable avec des web services) Par distribution des données (scaling des données) :! on distribue les données sur un nombre important de serveurs afin de stocker de très grands volumes de données! on «pousse» les programmes vers ces serveurs (plus efficace de transférer un petit programme sur le réseau plutôt qu'un grand volume de données Ex : algorithme MapReduce). Bernard ESPINASSE - Introduction aux systèmes NoSQL 9 Bernard ESPINASSE - Introduction aux systèmes NoSQL 10!"#$%&&'()#%*+#*%,-)... SGBD Relationnels offrent : un système de jointure entre les tables permettant de construire des requêtes complexes impliquant plusieurs entités un système dʼintégrité référentielle permettant de sʼassurer que les liens entre les entités sont valides Contexte fortement distribué : Ces mécanismes ont un coût considérable : avec la plupart des SGBD relationnels, les données dʼune BD liées entre elles sont placées sur le même nœud du serveur si le nombre de liens important, il est de plus en plus difficile de placer les données sur des nœuds différents.. Bernard ESPINASSE - Introduction aux systèmes NoSQL 11 / Bernard ESPINASSE - Introduction aux systèmes NoSQL 12

!"#$%&&'()#%*+#*%,-)#./0*1233 SGBD Relationnels sont généralement transactionnels : => gestion de transactions respectant les contraintes ACID (Atomicity, Consistency, Isolation, Durability). Contexte fortement distribué : Cette gestion a un coût considérable : nécessaire de distribuer les traitements de données entre différents serveurs alors difficile de maintenir les contraintes ACID à lʼéchelle du système distribué entier tout en maintenant des performances correctes => la plupart des SGBD «NoSQL» relâchent les contraintes ACID, ou même ne proposent pas de gestion de transactions. 45 Bernard ESPINASSE - Introduction aux systèmes NoSQL 13!"#$%&'($#)*+,)-../".$%")0$%$)1'2"# Bernard ESPINASSE - Introduction aux systèmes NoSQL 14 Modèle relationnel : les données sont divisées en ligne (tuples rows) avec des colonnes (columns) prédéfinies (attributs) il nʼy a pas de tuples emboîtés il nʼy a pas de liste de valeurs Modèle agrégat : une collection dʼobjets reliés qui doivent être traités ensemble. Bernard ESPINASSE - Introduction aux systèmes NoSQL 15 Bernard ESPINASSE - Introduction aux systèmes NoSQL 16 34

%118):%&)6*,1#6"#%44$#9,E5,?6B>#$,:%1&B#)*",%,/:#$$*5B8 65,)*56#4%&)6*,%*+,/&6#)*",)&,)*,%, #$8%&)6*%8,+%&%.%/$C,?6B,0%A$,&6,+$:6416/$,&0%&,)*56#4%&)6*,)*&6,#67/,.$56#$,/&6#)*",)&,%7%?9,!*, %""#$"%&$,4%;$/,56#,%,4B:0,/)418$#,4%11)*",' 70):0,)/,70?,4%*?,$%#8?,%+61&$#/,65,F6GHI +%&%.%/$/,#$16#&,&0%&,)&>/,%*,$%/)$#,1#6"#%44)*",46+$89J (Martin Fowler, Aggregate Oriented Database, 19 January 2012) Théorème de CAP (Brewer, 2000) : 3 propriétés fondamentales pour les systèmes distribués :!"#$%&!"!#$%!&$'##$()$%! %*#(+'*,%!#'()*+#,-.(/ 9." /:(5+/" %8'" 8(../3'5;" 32/".(-(+8+($2" %.35" +*<$'(=3/" >" 4/" =3/" %/3?/2+" '<8.(5/'"./5" @85/5" 7/" 7$22</5" '/.8+($22/../5" 7(5+'(@3</5" =3(" /5+" 7<4'(+/" %8'"./" +*<$'A-/" 7/" #BC" D'$25(5+/24&E (?8(.(@(.(+&E!8'+(+($2" +$./'824/FG" #/.3(E4(" <2$24/" +'$(5" )'827/5" %'$%'(<+<5" %$3'"./5" 5&5+A-/5" 7(5+'(@3<5"H"! #"4$--/"!"#$%$&'$"$3"#$*<'/24/"H"+$35"./5"2I375"73"5&5+A-/"?$(/2+"/:84+/-/2+"./5"-J-/5"7$22</5"83"-J-/"-$-/2+"! B" 4$--/" ()*+,*-+,+./" $3"K(5%$2(@(.(+<"H".8"%/'+/"7/"2I375"2L/-%J4*/"%85"./5" 53'?(?82+5"7/"4$2+(23/'">"M$24+($22/'"4$''/4+/-/2+"! C"4$--/"0*%.+.+"&1.",$%*&'$"$3"N<5(5+824/"83"%8'+(+($22/-/2+"H"83432/"%822/"-$(25" (-%$'+82+/" =3L32/" 4$3%3'/" +$+8./" 73" '<5/83" 2/" 7$(+" /-%J4*/'"./" 5&5+A-/" 7/" Bernard ESPINASSE - Introduction aux '<%$27'/"4$''/4+/-/2+"D$3"/24$'/"H"/2"485"7/"-$'4/../-/2+"/2"5$35E'<5/83:;"4*8432" systèmes NoSQL 17 7$(+"%$3?$('"M$24+($22/'"7/"-82(A'/"83+$2$-/F"!"#$%&& C oherence ou Consistance : tous les nœuds du système voient exactement les mêmes données au même moment A vailability ou Disponibilité : la perte de nœuds n'empêche pas les survivants de continuer à fonctionner correctement, les données restent accessibles P artition tolerance ou Résistance au partitionnement : le système étant partitionné, aucune panne moins importante qu'une coupure totale du réseau ne doit lʼempêcher de répondre correctement (en cas de partitionnement en sous réseaux, chacun doit pouvoir fonctionner de manière autonome) Dans un système distribué, il est impossible dʼobtenir ces 3 propriétés en KL même temps, il faut en choisir 2 parmi les 3 Bernard ESPINASSE - Introduction aux systèmes NoSQL 18 O/"+*<$'A-/"7/"!(0"5+(%3./"=3P(."/5+"(-%$55(@./"7P$@+/2('"4/5"+'$(5"%'$%'(<+<5"/2"-J-/"+/-%5" 7825"32"5&5+A-/"7(5+'(@3<"/+"=3L(."M83+"7$24"/2"4*$(5('"7/3:"%8'-("./5"+'$(5"H" SGBDR NoSQL NoSQL Les SGBDR assurent les propriétés de Consistance et de Disponibilité (Availability) => système AC Les SGBD!"#$%&'()*+",-(./"0"1%/2",$3'4/",$.3+($25"0"6$3+/"'/%'$734+($2"(2+/'7(+/"5825"83+$'(58+($2" «NoSQL» sont des systèmes CP (Cohérent et Résistant au partitionnement) ou AP (Disponible et Résistant au partitionnement). Consistance (Coherence) : Un système S est dit consistant si on peut garantir qu'une fois quʼon y enregistre un état (disons "x = y"), il donnera le même état à chaque opération suivante, jusqu'à ce que cet état soit explicitement changé par quelque chose en dehors de S! Ex1: Une instance de la BD est automatiquement pleinement consistante puisqu'il n'y a qu'un seul noeud qui maintient l'état.! Ex2 : Si 2 serveurs de BD sont impliqués, et si le système est conçu de telle sorte que toutes les clés de "a" à "m" sont conservées sur le serveur 1, et les clés "n" à "z" sont conservées sur le serveur 2, alors le système peut encore facilement garantir la cohérence! Ex3 : Supposons 2 BD avec des répliques. Si une des BD fait une opération dʼinsertion de ligne, cette opération doit être aussi faite (commited) dans la seconde BD avant que l'opération soit considérée comme complète. Pour avoir une cohérence de 100% dans un tel environnement répliqué, les nœuds doivent communiquer Plus le nb de répliques est grand plus les performances d'un tel système sont mauvaises. Bernard ESPINASSE - Introduction aux systèmes NoSQL 19 Bernard ESPINASSE - Introduction aux systèmes NoSQL 20

Disponibilité (Availability): Les BD dans Ex1 ou Ex2 ne sont pas fortement disponibles dans Ex1 : si le nœud tombe en panne, on perd 100% des données dans Ex2 : si le nœud tombe en panne, on perd 50% des données dans Ex3 : une simple réplication de la BD sur un autre serveur assure une disponibilité de 100%. augmenter le nb de nœuds avec des copies des données (répliques) augmente directement la disponibilité du système, en le protégeant contre les défaillances matérielles les répliques aussi aider à équilibrer la charge dʼopérations concurrences, notamment en lecture. Résistance au partitionnement (Partition-tolerance): Supposons que soit assuré par réplication «consistance» et «disponibilité». Dans le cas Ex3, supposons 2 serveurs de BD dans 2 Data-Centers différents, et que lʼon perde la connexion réseau entre les 2 Data-Centers, faisant que les 2 BD sont incapables de synchroniser leurs états. Si vous parvenez à gérer les opérations de lecture/écriture sur ces 2 BD, il peut être prouvé que les 2 serveurs ne seront plus consistants. une application bancaire gardant à tout moment «l'état de votre compte» est lʼexemple parfait du problème des enregistrements inconsistants :! Si un client retire 1000 euros à Marseille, cela doit être immédiatement répercuté à Paris, afin que le système sache exactement combien il peut retirer à tout moment! Si le système ne parvient pas à le faire, cela pourrait mécontenter de nombreux clients Si les banques décident que la «consistance» est très importante, et désactivent les opérations d'écriture lors de la panne, alors la «disponibilité» du cluster sera perdu puisque tous les comptes bancaires dans les 2 villes seront désormais gelés jusqu'à ce que le réseau soit de nouveau opérationnel. Bernard ESPINASSE - Introduction aux systèmes NoSQL 21 Bernard ESPINASSE - Introduction aux systèmes NoSQL 22 Report «NoSQL, NewSQL and Beyond: The answer to SPRAINed relational databases», 451 Group, April 15th, 2011 : Report «NoSQL, NewSQL and Beyond: The answer to SPRAINed relational databases», 451 Group, April 15th, 2011 : Face aux faiblesses des SGBDR en termes de performance, d'évolutivité et de flexibilité des besoins de traitement à grande échelle des données, alternatives suivantes avec des architectures distribuées :! NoSQL BD : BD avec schéma dynamique ou sans schéma, BD magasins de clés-valeur, BD de documents et de données graphiques,! NewSQL DB : amélioration des performances grâce à de nouveaux moteurs de stockage, des technologies transparentes de fragmentation, de nouveaux logiciels et matériels : des BD radicalement nouvelles! Data grid/cache products : amélioration des performances des applications et de la BD par stockage des données en mémoire : données persistante en cache, réplication et des données distribuées, et calcul exploitant le grid, Bernard ESPINASSE - Introduction aux systèmes NoSQL 23 Bernard ESPINASSE - Introduction aux systèmes NoSQL 24

SPRAIN : acronyme qui désigne les 6 facteurs clés de l'adoption de technologies de gestion de données alternatives aux traditionnelles BDR ces BD alternatives doivent permettre de traiter de très grands volumes de données, supporter des applications hautement distribuées ou très complexes Ces 6 facteurs clés sont :! Scalability (évolutivité) hardware economics (économie de matériel)! Performance BDR limitations! Relaxed consistency CAP theorem (cohérence relachée)! Agility polyglot persistence (agilité, persistance polyglotte)! Intricacy (intrication) big data, total data! Necessity (nécessité) open source Introduction au NoSQL Fondements des syst. NoSQL : Sharding Fondements des syst. NoSQL : Consistent hashing Fondements des syst. NoSQL : MapReduce Fondements des syst. NoSQL : MVCC Fondements des syst. NoSQL : Vector-clock Typologie des BD NoSQL Bernard ESPINASSE - Introduction aux systèmes NoSQL 25 Bernard ESPINASSE - Introduction aux systèmes NoSQL 26 Les BD NoSQL : Adoptent une représentation de données non relationnelle ne remplacent pas les BD relationnelles mais sont une alternative, un complément apportant des solutions plus intéressantes dans certains contextes apportent une plus grande performance dans le contexte des applications Web avec des volumétries de données exponentielle utilisent une très forte distribution de ces données et des traitements associés sur de nombreux serveurs font un compromis sur le caractère «ACID» des SGBDR pour plus de scalabilité horizontale et dʼévolutivité. Lʼadoption croissante des bases NoSQL par des grands acteurs du Web (Google, facebook, ) => multiplication des offres de systèmes NoSQL pas de schéma pour les données ou schéma dynamique données de structures complexes ou imbriquées données distribuées : partitionnement horizontal des données sur plusieurs nœuds (serveurs) généralement par utilisation dʼalgorithmes «MapReduce» réplication des données sur plusieurs noeuds privilégient la Disponibilité à la Cohérence (théorème de CAP) : AP (Disponible + Résistant au partitionnement) plutôt que CP (Cohérent + Résistant au partitionnement) => nʼont en général pas de gestion de transactions mode d'utilisation : peu d'écritures, beaucoup de lectures Bernard ESPINASSE - Introduction aux systèmes NoSQL 27 Bernard ESPINASSE - Introduction aux systèmes NoSQL 28

«Sharding» : Mécanisme de partitionnement horizontal (par tuples) des données dans lequel les objets-données sont stockées sur des nœuds serveurs différents en fonction dʼune clé (ex : fonction de hachage) Ex : partition = hash(o) mod n avec o = objet-données à placer et n= nb de nœuds serveur disponibles les données peuvent être aussi partitionnées afin que :! les objets-données accédés ou mis à jour en même temps, résident sur le même nœud! la charge soit uniformément répartie entre les nœuds! pour cela des objet-données peuvent /*234*0(#=&K=*(,*!(.&*(=>&,*0(#=&K=D être répliquées certains systèmes utilisent aussi un =(*/0>"&G&*!0/%/7"%"=?*/#)*/G/"%/7"%"=?*"#*0(.+/,"!(#*=(*,&%/="(#/%*)/=/*!=(,&!D partitionnement vertical (par colonnes) dans lequel des parties d'un enregistrement sont stockées sur différents!" #$%%$&'($&()*+, serveurs.!"#$%&'(* Bernard ESPINASSE - Introduction aux systèmes NoSQL 29 :=*"!*/*+/,="="(#"#$*.&0>/#"!.*"#*@>"0>*,&0(,)!*/,&*!=(,&)*(#*)"--&,&#=*!&,G&,! /00(,)"#$*=(*!(.&*6&?D*B>&*)/=/*"!*+/,="="(#&)*"#*!<0>*/*@/?*=>/=*,&0(,)!5*=>/=*/,&*=?+"0/%%?* /00&!!&!I<+)/=&)*=($&=>&,5*,&!")&*(#*=>&*!/.&*#()&D*B>&*%(/)*"!*/%.(!=*&G&#%?*)"!=,"7<=&)* /.(#$*=>&*!&,G&,!D*2(.&*!?!=&.!*/%!(*<!&*G&,="0/%*+/,="="(#"#$*"#*@>"0>*+/,=!*(-*/*!"#$%&*,&0(,)*/,&*!=(,&)*(#*)"--&,&#=*!&,G&,!D 3. Basic Concepts, Techniques and Patterns 40 )*'+&+,-',."#+"&'(. Suite quand un nœud quitte lʼanneau, les objets qui lui sont liés sont alors associés à leur nœud adjacent dans le sens horaire : Ex : le nœud C quitte lʼanneau, 3 est alors associé avec 4 et 1 au nœud A quand un nœud entre dans lʼanneau, il est placé (haché) sur lʼanneau et des objets lui seront associés selon sa place dans lʼanneau : Ex : le nœud D entre dans lʼanneau, les objets 3 et 4 lui sont associés Dʼaprès Strauch!"#$%&'#()&*+&,-(,./#0&*(-*/*1(2345*)"!6'7/!&)5*#(#'89:;5*.<%="=>,&/)&)*!?!=&.*"!* %"."=&)*=(*7&*/*.()&!=*-/0=(,*-/!=&,*=>/#*/*@&%%')&!"$#&)*!=(,&)'+,(0&)<,&*234*A4BC* &#$"#&D*:#*&!!&#0&5*89:;*=,/#!/0="(#!*/,&*E&=="!(#&)*-(,*/*.()&!=*+&,-(,./#0&*7((!=5*/#)* =>"!*+&,-(,./#0&*7((!=*>/!*#(=>"#$*=(*)(*@"=>*234D*F%"#)"#$*+&,-(,./#0&*)&+&#)!*(#*,&.(G"#$*(G&,>&/)!*"#*)/=/7/!&*!?!=&.!*H%($$"#$I%(06"#$I%/=>0"#$I7<--&,*./#/$&.&#=JD* 2<0>*(G&,>&/)*>/!*#(=>"#$*=(*)(*@"=>*2345*7<=*"#!=&/)*,&G(%G&!*/,(<#)*=,/)"="(#/%* ".+%&.&#=/="(#!*(-*89:;*=,/#!/0="(#!5*.<%="'=>,&/)"#$5*/#)*)"!6*./#/$&.&#=D*B(*$(* @"%)%?*-/!=&,5*(#&*.<!=*,&.(G&*/%%*=>&*-(<,*!(<,0&!*(-*(G&,>&/)D*B>"!*"!*+(!!"7%&*"#*&"=>&,* 2(5*"#0/!&*(-*><$&*)"!=,"7<=&)*!?!=&.!5*1(234*)/=/*!=(,&!*/,&*&K+&0=&)*=(*+&,-(,.*@&%%* L(%%(@"#$*"!*/*7,"&-*)&!0,"+="(#*(-*-&@*0(..(#*0(#0&+=!*"#*1(234*)/=/7/!&!D*B>&!&* 0(#0&+=!*@"%%*7&*,&-&,,&)*"#*=>"!*)(0<.&#=D B>&*")&/*7&>"#)*0(#!"!=&#=*>/!>"#$*"!*=(*<!&*=>&*!/.&*>/!>*-<#0="(#*-(,*7(=>*=>&*(7E&0=* >/!>"#$*/#)*=>&*#()&*>/!>"#$D*L(%%(@"#$*-"$<,&*"%%<!=,/=&!*=>"!M Figure 3.4.: Consistent Hashing Initial Situation (taken from [Whi07]) 85F59*/,&*#()&!*/#)*N5O5P5Q*/,&*(7E&0=!D*F(=>*(-*=>&.*/,&*./++&)*=(*/*>/!>*,/#$&*/#)* "./$"#&)*=(*7&*+%/0&)*(#*/*,"#$D*R(G"#$*0%(06@"!&5*=>&*#()&*-(%%(@"#$*/*(7E&0=*"!* )*'+&+,-',."#+"&'(. «Consistent hashing» : Mécanisme de partitionnement B>&*")&/*7&>"#)*0(#!"!=&#=*>/!>"#$*"!*=(*<!&*=>&*!/.&*>/!>*-<#0="(#*-(,*7(=>*=> (horizontal) dans lequel les objet-données sont stockés sur des nœuds-serveurs >/!>"#$*/#)*=>&*#()&*>/!>"#$D*L(%%(@"#$*-"$<,&*"%%<!=,/=&!*=>"!M différents en utilisant la même fonction de hachage à la fois pour le hachage des objets et le hachage des nœuds : nœuds et objets sont associés par une même fonction de hachage, et imaginés être placés sur un anneau (rack/cluster de serveurs) Ex : A, B, C sont des nœuds (serveurs) et 1, 2, 3, 4 sont des objets. un objet est associé au premier nœud serveur dans le sens horaire : Ex : les objets 4 et 1 sont associés au nœud A ; 2 à B ; 3 à C. Dʼaprès Strauch :=*"!*/*+/,="="(#"#$*.&0>/#"!.*"#*@>"0>*,&0(,)!*/,&*!=(,&)*(#*)"--&,&#=*!&,G&,! /00(,)"#$*=(*!(.&*6&?D*B>&*)/=/*"!*+/,="="(#&)*"#*!<0>*/*@/?*=>/=*,&0(,)!5*=>/=*/ /00&!!&!I<+)/=&)*=($&=>&,5*,&!")&*(#*=>&*!/.&*#()&D*B>&*%(/)*"!*/%.(!=*&G&#%?* /.(#$*=>&*!&,G&,!D*2(.&*!?!=&.!*/%!(*<!&*G&,="0/%*+/,="="(#"#$*"#*@>"0>*+/,=!*(,&0(,)*/,&*!=(,&)*(#*)"--&,&#=*!&,G&,!D 85F59*/,&*#()&!*/#)*N5O5P5Q*/,&*(7E&0=!D*F(=>*(-*=>&.*/,&*./++&)*=(*/*>/!>*,/ "./$"#&)*=(*7&*+%/0&)*(#*/*,"#$D*R(G"#$*0%(06@"!&5*=>&*#()&*-(%%(@"#$*/*(7E&0 Bernard ESPINASSE - Introduction aux systèmes NoSQL 30 Map-Reduce : Modèle de programmation parallèle (framework de calcul distribué) pour le traitement de grands ensembles de données développé par Google pour le traitement de gros volumes de données en environnement distribué :! permet de répartir la charge sur un grand nb de serveurs (cluster)! abstraction quasi-totale de lʼinfrastructure matérielle : gère entièrement, de façon transparente le cluster, la distribution de données, la répartition de la charge, et la tolérance aux pannes! ajouter des machines augmente la performance (plug & play, scalablefriendly) la librairie MapReduce existe dans plusieurs langages (C++, C#, Erlang, Java, Python, Ruby ) Figure 3.5.: Consistent Hashing Situation after Node Joining and Departure (taken from [Whi07]) be unbalanced which in turn results in an unbalanced distribution of cache objects on these nodes (as Bernard ESPINASSE - Introduction aux systèmes NoSQL 31 it can already be seen in the small scenario of figure 3.5 where node D has to take cache objects from a greater interval than node A and especially node B). An approach to solve this issue is to hash a number of representatives/replicas also called virtual nodes for each physical node onto the ring (cf. [Whi07], as an example see figure 3.6). The number of virtual nodes for a physical can be defined individually according to its hardware capacity (cpu, memory, disk capacity) and does not have to be the same for all physical Bernard ESPINASSE - Introduction aux systèmes NoSQL 32

Divers usages de Map-Reduce : Utilisé par les grands acteurs du Web notamment pour : construire les index (Google Search), détection de spam (Yahoo), Data Mining (Facebook) Mais aussi pour :! De lʼanalyse dʼimages astronomique, de la bioinformatique, de la!"##$%&'(&')"'&(*+$,'-&.)$/&"&/(%$&0$"1$2&')$&232'$!4&,",)$&(*+$,'2&5600&7$'&!"##$%&'(& simulation métrologique, de lʼapprentissage ')$68&"%+",$/'&/(%$&96/&,0(,:562$&%68$,'6(/;&"/%&5)$/&"&/(%$&$/'$82&')$&232'$!&6'&5600&7$'& automatique (Machine Learning), des statistiques, )"2)$%&(/'(&')$&86/7&"/%&5600&(1$8'":$&(*+$,'2-! le calcul de la taille de plusieurs milliers de documents!"#$%&'()&! trouver le nb dʼoccurrences dʼun pattern dans un très grand volume de données <"#=$%>,$&62&"&#8(78"!!6/7&!(%$0&?(8&#8(,$226/7&0"87$&%"'"&2$'24&"/%&')$&/"!$&(?&"/&! classifier de très grands volumes 6!#0$!$/'"'6(/&(?&')$&!(%$0&*3&@((70$-&<"#=$%>,$&62&'3#6,"003&>2$%&'(&%(&%62'86*>'$%& de données provenant par exemple de,(!#>'6/7&(/&,0>2'$82&(?&,(!#>'$82-&a'&>2$2&"&!"#&?>/,'6(/&"/%&"&8$%>,$&?>/,'6(/-&b)$& paniers dʼachats de clients (Data Mining)!"#&?>/,'6(/&#8(,$22$2&"&:$3C1"0>$&#"68&"/%&7$/$8"'$2&"&2$'&(?&6/'$8!$%6"'$&:$3C1"0>$&! #"682-&B)$&8$%>,$&?>/,'6(/&!$87$2&"00&6/'$8!$%6"'$&1"0>$2&"22(,6"'$%&56')&')$&2"!$& 6/'$8!$%6"'$&:$3-!.)$/&"##06$%&'(&%"'"*"2$24&<"#=$%>,$&!$"/2&'(&#8(,$22&"&2$'&(?&:$32& *3&2>*!6''6/7&')$&#8(,$22&0(76,&9!"#D&"/%&8$%>,$D?>/,'6(/&,(%$;&'(&')$&2'(8"7$&/(%$2& 5)6,)&0(,"003&"##03&')$&!"#&?>/,'6(/&'(&:$32&')"'&2)(>0%&*$&#8(,$22$%&"/%&')"'&')$3&(5/-& B)$&6/'$8!$%6"'$&8$2>0'2&,"/&*$&,(/262'$/'03&)"2)$%&+>2'&"2&8$7>0"8&%"'"&"/%&#8(,$22$%&*3& ')$&?(00(56/7&/(%$2&6/&,0(,:562$&%68$,'6(/4&5)6,)&"##03&')$&8$%>,$&?>/,'6(/&'(&')$& 6/'$8!$%6"'$&8$2>0'2&"/%&#8(%>,$&')$&?6/"0&8$2>0'2-&A'&2)(>0%&*$&/('$%&')"'&%>$&'(&')$&,(/262'$/'&)"2)6/7&(?&')$&6/'$8!$%6"'$&8$2>0'2&')$8$&62&/(&,((8%6/"'(8&/$$%$%&'(&%68$,'&')$& #8(,$226/7&/(%$2&'(&?6/%&')$&6/'$8!$%6"'$&8$2>0'2-&B)62&6%$"&62&600>2'8"'$%&6/&')$&?(00(56/7&?67>8$E Bernard ESPINASSE - Introduction aux systèmes NoSQL 33 Appliqué à la BD, MapReduce traite un ensemble de clés en appliquant les fonctions Map et Reduce aux nœuds de stockage qui appliquent localement la fonction Map aux clés qui doivent être traitées et qu'ils possèdent les résultats intermédiaires peuvent être hachés comme des données ordinaires et traitées par les nœuds suivants dans le sens horaire, qui appliquent la fonction Reduce aux résultats intermédiaires et produisent les résultats finaux du fait du hachage des résultats intermédiaires, aucun coordinateur est utilisé pour diriger les nœuds de traitement vers ces résultats Dʼaprès Strauch *&)+,%-).,)/0 A?&%"'"2$'2&"8$&%62'86*>'$%&"!(/7&/(%$24&')$3&,"/&*$&8$"%&"/%&"0'$8$%&(/&$",)&/(%$&"/%&/(& 2'86,'&,(/262'$/,3&62&$/2>8$%&*3&%62'86*>'$%&'8"/2",'6(/&#8('(,(024&F>$2'6(/2&"862$&(/&)(5& G,(/,>88$/'H&!(%6?6,"'6(/2&"/%&1$826(/2&"8$&#8(,$22$%&"/%&'(&5)6,)&1"0>$2&"&%"'"2$'&5600& Bernard ESPINASSE - Introduction aux systèmes NoSQL 35 Usage de MapReduce en gestion de données : Principales opérations à faire sur des grands ensembles de données : 1. Itérer sur un grand nombre dʼenregistrements 2. Extraire quelque chose ayant un intérêt de chacun de ces enregistrements 3. Regrouper et trier les résultats intermédiaires 4. Agréger tous ces résultats ensemble 5. Générer le résultat final Dans le modèle de programmation MapReduce, le développeur implémente 2 fonctions : la fonction Map et la fonction Reduce! opérations 1 et 2 : fonction Map traite une paire clé/valeur et génère un ensemble de paires de clés intermédiaires/valeurs! opérations 3, 4 et 5 : fonction Reduce fusionne toutes les valeurs intermédiaires associées avec la même clé intermédiaire. Bernard ESPINASSE - Introduction aux systèmes NoSQL 34 Fonctionnement de MapReduce : Traite des données en entrée pour en fournir des résultats en sortie Traitement constitué de plusieurs tâches dont chacune est traitée indépendamment, puis leurs résultats sont combinés On distingue 3 opérations majeures :! Split correspond à une opération de découpage! Compute correspond à une opération de calcul! Join correspond à lʼopération de regroupement du résultat Dans le modèle de programmation MapReduce, le développeur implémente 2 fonctions :! la fonction Map! la fonction Reduce. Bernard ESPINASSE - Introduction aux systèmes NoSQL 36

Fonction Map : prend en entrée un ensemble de «Clé, Valeurs» et retourne une liste intermédiaire de «Clé1, Valeur1» : Map(key,value) -> list(key1,value1) Fonction Reduce : prend en entrée une liste intermédiaire de «Clé1, Valeur1» et fournit en sortie une ensemble de «Clé1, Valeur2» : Reduce(key1,list(value1)) -> value2 Lʼalgorithme MapReduce sʼexécute en 5 phases : 1. La phase Initialisation 2. La phase Map 3. La phase regroupement (Shuffle) 4. La phase de Tri 5. La phase Reduce Fonctionnement de MapReduce : Lorsque lʼapplication MapReduce est lancée, elle crée un composant «Master» responsable de la distribution des données, de la coordination de lʼexécution de différentes unités de travail ou «Workers». Le Master attribue aux Workers les tâches map et reduce Un Worker possède 3 états:! idle : il est disponible pour un nouveau traitement! in-progress : un traitement est en cours dʼexécution! completed : il a fini un traitement, il en informe alors le Master de la taille, de la localisation de ses fichiers intermédiaires Le Master gère la synchronisation, la réorganisation, le tri et le regroupement des données : lorsquʼun Worker de type map a fini son traitement, le Master regroupe, trie et renvoie le résultat à un Worker de type reduce Bernard ESPINASSE - Introduction aux systèmes NoSQL 37 Bernard ESPINASSE - Introduction aux systèmes NoSQL 38 Soit : Exemple de BD distribuée : split 0 split 1 split 2 split 3 split 4 Input files (3) read worker worker worker Map phase (1) fork (2) assign map (4) local write User Program (1) fork Master Intermediate files (on local disks) (1) fork (2) assign reduce (5) remote read worker worker Reduce phase (6) write output file 0 output file 1 Output files BD de 1To de données 1800 serveurs les données sont découpées en 15000 morceaux dʼenviron 64Mo un seul serveur effectue la réduction (afin dʼavoir les résultats dans un seul fichier) Performances de MapReduce sur cette BD : démarrage relativement lent dû au temps de propagation du programme (±1mn). les Maps sont tous finis au bout dʼenviron 80s lʼopération se termine en 150s. on atteint un pic de lecture de 30Go/s Bernard ESPINASSE - Introduction aux systèmes NoSQL Figure 1: Executionoverview 39 Bernard ESPINASSE - Introduction aux systèmes NoSQL 40 Inverted Index: The map function parses each document, and emits a sequence of word, document ID large clusters of commodity PCs connectedtogether with switched Ethernet [4]. In our environment:

On souhaite calculer le nombre de mots dans un document : la fonction Map, «mapfunc» est alors : mapfunc(string key, String value): // key: id du document; // value: contenu du document for each word w in value EmitIntermediate (w, 1) mapfunc a 2 arguments : la clé (key) identifiant le document dont on souhaite compter les mots le contenu du document (value) lʼensemble des valeurs est parcouru par une boucle «for each» : pour chaque mot identifié, on appelle la méthode EmitIntermediate elle place dans une zone intermédiaire le mot et la valeur 1 (correspondant à une occurrence). La fonction Reduce «reducefunc» est : reducefunc(string key, Iterator values) // key: un mot; values: une liste de valeurs result = 0 for each count v in values result += v EmitResult(result) reducefunc a 2 arguments : la clé (key) correspond à un mot identifié par la fonction mapfunc une liste de valeurs contenant le nb dʼoccurrences de ce mot la liste des valeurs correspond à lʼensemble des paires (mot, count) mises en zones intermédiaires par la fonction mapfunc pour comptabiliser tous les mots du document, on initialise la variable result à 0, puis on itére sur lʼensemble des valeurs de la liste, puis chaque valeur est rajoutée à la variable result à la fin de lʼitération, la variable result contient le total du nb dʼoccurrence et le résultat est renvoyé par la fonction EmitResult Bernard ESPINASSE - Introduction aux systèmes NoSQL 41 Bernard ESPINASSE - Introduction aux systèmes NoSQL 42 Soit le fichier du document en entrée contenant 3 lignes (fractionnement du fichier en 3) chaque ligne contient 3 lettres (AAC, CBD, ACD) traitement MapReduce effectué pour compter les mots du document : Les étapes réalisées sont : Lʼétape File : on lit le fichier en entrée et on initialise les différents «Workers MapReduce» Lʼétape Splitting : on distribue les données à traiter sur les différents noeuds du cluster de traitement Lʼétape Map : on effectue le compte de chacune des lettres et ceci en local sur chaque noeud du cluster de traitement Lʼétape Suffling : on regroupe toutes les lettres ainsi que leur compte à partir de tous les noeuds de traitement Lʼétape Reduce : on effectue le cumule de toutes les valeurs de chaque lettre Lʼétape Result : on agrège tous les résultats des différentes étapes Reduce et on retourne le résultat final. Bernard ESPINASSE - Introduction aux systèmes NoSQL 43 Bernard ESPINASSE - Introduction aux systèmes NoSQL 44

Contrôle de Concurrence Multi-Version (MVCC) : Méthode de contrôle de concurrence couramment utilisée par les SGBD pour gérer des accès simultanés à la base de données avec mises à jour Dans une BD NoSQL, la gestion des mises à jour est faite :! non pas en supprimant une fraction contenant les données avant modification et en la remplaçant par une fraction contenant les données modifiées! mais en marquant les anciennes données comme obsolètes et en ajoutant une nouvelle version contenant les nouvelles données! il existe ainsi plusieurs versions enregistrées, une seule est la plus récente nécessite généralement un balayage périodique pour supprimer les objets de données obsolètes. Horloges vectorielles (Vector-clocks) : Les ensembles de données répartis sur nœuds peuvent être lus et modifiés sur chaque nœud et aucune cohérence stricte est assurée par des protocoles de transactions distribuées Problème : comment faire des modifications concurrentes Une solution : les horloges vectorielles :! un vecteur d'horloge est défini comme un n-uplet V [0], V [1],..., V[n] des valeurs d'horloge à partir de chaque noeud.! à tout instant le noeud i maintient un vecteur d'horloge représentant son état et celui des autres nœuds répliques : (Vi [0] = valeur de l'horloge du premier noeud, Vi [1] = valeur de l'horloge du deuxième noeud,... Vi [i] = sa propre valeur dʼhorloge,... Vi [n] = valeur de l'horloge du dernier nœud)! les valeurs d'horloge peuvent être de réelles «timestamps» dérivées d'une horloge locale de nœud, du numéro de version/révision Bernard ESPINASSE - Introduction aux systèmes NoSQL 45 Bernard ESPINASSE - Introduction aux systèmes NoSQL 46!"#$%&'()*+*,- Stocker les informations de la façon la mieux adaptée à leur représentation => différents types de BD NoSQL : type «Clé-valeur / Key-value» : basique, chaque objet est identifié par une clé unique constituant la seule manière de le requêter! Voldemort, Redis, Riak, type «Colonne / Column» : permet de disposer d'un très grand nb de valeurs sur une même ligne, de stocker des relations «one-to-many», dʼeffectuer des requêtes par clé (adaptés au stockage de listes : messages, posts, commentaires,...)! HBase, Cassandra, Hypertable, type «Document» : pour la gestion de collections de documents, composés chacun de champs et de valeurs associées, valeurs pouvant être requêtées (adaptées au stockage de profils utilisateur)! MongoDBn CouchDB, Couchbase, type «Graphe» : pour gérer des relations multiples entre les objets (adaptés au données issues de réseaux sociaux, )! Neo4j, OrientDB, Bernard ESPINASSE - Introduction aux systèmes NoSQL 47!"#$%&'(") *+,-".,-*/0 1,234(+5,&6(*7-8& *09,:,9&;2&1,2 #?(+(;*+*@2&3& F,7D=7)(0?,.,'(/0) *+,-" <=+5)0-&(09 <=+5)0&'()*+*,->&.*7,?@+2&(??,--,-&@A,&?=+5)0&B(+5,- 1,2(/"0+) *+,-" C5+@*6+,&1,234(+5,& 6(*7-&D=7)&(& 9=?5),0@>4(+5,- )(2&;,&0,-@,9& 9=?5),0@-&=7&+*-@-&(-& E,++&(-&-?(+(7&B(+5,- GGG GGG GG GG H//7,/(@,I"7*,0@,9 J,- J,- J,-!= <=)6+,:*@2 G GG GG GGG K0-6*7(@*=0 3&L,+(@*=0!"#$%&F7=95?@- M,7N+,2&.MO C,)?(?A,9O&.*-@7*;5@,9& P(-A)(6-4=+9,)=7@ L,9*- L*(N #HF&#2;(-,&K$O& Q==/+, M*/R(;+, PM(-, <(--(097( P26,7@(;+, %=@5-&!=@,- C=0/=.M <=5?A.M <=5?A;(-, 3-&45) *+,-" '=?5-&=0&@A,& 2,00"2+6,07 ;,@E,,0&9(@(&(09& D(-@&0(B*/(@*=0 @A7=5/A&@A,-,&?=00,?@*=0- Q7(6A&RA,=72!,=ST "7*,0@.M.UV K0D*0*@,Q7(6A WR7*6+,&(09&$5(9& #@=7,-X Bernard ESPINASSE - Introduction aux systèmes NoSQL 48 YZ

!"#$%&!"!#$%!&$'##$()$%! %*#(+'*,%!#'()*+#,-.(/ ()*+%,-).,/+0/1%2)% BD 2033)*)14+%!5*52067)+ NOSQL modèle «Clé-Valeur» Forces & faiblesses des BD NoSQL «Clé-Valeurs»!89:;98<%="%>8=9?<8@%@-$>?%$==$%A">%9@<;9$%B% 9$35".:8;$25" ;3<"./5",=>?" '/.8+($22/.5" 7(5%$5/2+" 7:8+$3+5" (27@2(8A./5" /B%.(C382+"./3'" %$%3.8'(+@" /+"./3'".8')/" 3+(.(58+($2<" -8(5" 8355(" 7/".(-(+/5"(-%$'+82+/5"C3("$2+"4$273(+"D"7/" 2$3;/../5"8%%'$4*/5E" 6$3+"4$--/"./5",=?>"'/.8+($22/.5"2/"5$2+"%85".8"'@%$25/"32(C3/"83B"%'$A.@-8+(C3/5"7/"A85/" 7/"7$22@/5<"$2"2/"7$(+"%85"4$25(7@'/'"C3:32"5/3."83+'/"$3+(."5/'8"/2"-/53'/"7:8%%$'+/'"32/" 5$.3+($2" 83" 48'84+F'/" 32(;/'5/.E" G8%%/.$25" D" 4/" +(+'/" C3/".8" -$3;824/" 9$,HI" 2/" %'J2/" 7:8(../3'5"%85".:8A827$2"+$+8."7/",HI"-8(5"5/"+'873(+"%.3+J+"%8'"K9$+"12.&",HIL"/+"2$2"K9$",HILE"M"4/"+(+'/<"(."/B(5+/"7825".8"-$3;824/"9$,HI"32/"7(;/'5(+@"(-%$'+82+/"7:8%%'$4*/5E"C3/" 2$35" 4.855$25" $@% ;9"?:$% #:"@C$>% D"?E#8:<$>% F%!":"C<#G$% D=E% H% I"=$9:J% K">$>% 8:<$@?E$>% D8=8@@$>J%K">$>%C8D9G$@?"<:$>%$?%K">$>%8:<$@?E$>%#:"AL$>E"!"#$%&' Bernard ESPINASSE - Introduction aux systèmes NoSQL 49 Elles fonctionnent comme un grand tableau associatif et retourne une valeur dont elle ne connaît pas la structure leur modèle peut être assimilé à une table de hachage (hashmap) distribuée les données sont simplement représentées par un couple clé/valeur la valeur peut être une simple chaîne de caractères, ou un objet sérialisé cette absence de structure ou de typage ont un impact important sur le requêtage : toute lʼintelligence portée auparavant par les requêtes SQL devra être portée par lʼapplicatif qui interroge la BD. Implémentations les plus connues :! Amazon Dynamo (Riak en est l'implémentation Open Source)! Redis (projet sponsorisé par VMWare)! Voldemort (développé par Linkedln en interne puis passage en open source). Bernard ESPINASSE - Introduction aux systèmes NoSQL 50 4MA$>%C$%N">$%18+O,%F%!":"C<#G$%D=E%H%I"=$9:% N."5:8)(+"7/".8"48+@)$'(/"7/"A85/"7/"7$22@/5".8"%.35"A85(C3/E">825"4/"-$7F./"4*8C3/"$AO/+"/5+" Chaque (7/2+(P(@"%8'"9@$%D=E%9@<;9$"C3("4$25+(+3/".8"5/3./"-82(F'/"7/"./"'/C3Q+/'E"" objet est identifié par une clé unique seule façon de le requêter I8" 5+'34+3'/" 7/".:$AO/+" /5+".(A'/" /+"./" %.35" 5$3;/2+".8(55@" D".8" 4*8')/" 73" 7@;/.$%%/3'" 7/" la structure de lʼobjet est libre, souvent laissé à la charge du développeur.:8%%.(48+($2"rsti<"u,19<"eeev<".8"a85/"2/")@'82+")@2@'8./-/2+"c3/"7/5"4*8w2/5"7:$4+/+5e" de lʼapplication (XML, JSON,...), la base ne gérant généralement que des chaînes dʼoctets Leur exploitation est basée sur 4 opérations (CRUD):! C reate : créer un nouvel objet avec sa clé! create(key, value)! R ead : lit un objet à partir de sa clé! read(key)! U pdate : met à jour la valeur dʼun objet à partir de sa clé! update(key, value)! D elete: supprime un objet à partir de sa clé! delete(key) elles disposent généralement dʼune simple interface de requêtage HTTP REST accessible depuis nʼimporte quel langage de développement ont des performances très élevées en lecture et en écriture et une scalabilité horizontale considérable le besoin en scalabilité verticale est faible du fait de la simplicité des opérations effectuées Bernard ESPINASSE - Introduction aux systèmes NoSQL 51 Bernard ESPINASSE - Introduction aux systèmes NoSQL 52!"#$%&'()*+",-(./"0"1%/2",$3'4/",$.3+($25"0"6$3+/"'/%'$734+($2"(2+/'7(+/"5825"83+$'(58+($2"

Utilisations principales des BD NoSQL type «Clés-Valeurs» :! dépôt de données avec besoins de requêtage très simples! système de stockage de cache ou dʼinformation de sessions distribuées (quand lʼintégrité relationnelle des données est non significative)! les profils, préférences dʼutilisateur! les données de panier dʼachat! les données de capteur! les logs de données! Forces : modèle de données simple bonne mise à lʼéchelle horizontale pour les lectures et écritures :! évolutivité (scalable)! disponibilité! pas de maintenances requises lors d'ajout/suppression de colonnes Faiblesses : modèle de données TROP simple :! pauvre pour les données complexes! interrogation seulement sur clé! déporte une grande partie de la complexité de l'application sur la couche application elle-même Bernard ESPINASSE - Introduction aux systèmes NoSQL 53 Bernard ESPINASSE - Introduction aux systèmes NoSQL 54 BD NOSQL modèle «Colonne»Xxxx Forces & faiblesses des BD NoSQL «Colonne» Les données sont stockées par colonne, non par ligne on peut facilement ajouter des colonnes aux tables, par contre l'insertion d'une ligne est plus coûteuse quand les données d'une colonne se ressemblent, on peut facilement compresser la colonne modèle proche dʼune table dans un SGBDR mais ici le nombre de colonnes :! est dynamique! peut varier dʼun enregistrement à un autre ce qui évite de retrouver des colonnes ayant des valeurs NULL. Implémentations les plus connues :! HBase (Open Source de BigTable de Google utilisé pour l'indexation des pages web, Google Earth, Google analytics,...)! Cassandra (fondation Apache qui respecte lʼarchitecture distribuée de Dynamo dʼamazon, projet né de chez Facebook)! SimpleDB de Amazon. Bernard ESPINASSE - Introduction aux systèmes NoSQL 55 Bernard ESPINASSE - Introduction aux systèmes NoSQL 56

%*#(+'*,%!#'()*+#,-.(/!"#$%&' Les principaux concepts associés sont les suivants : Colonne :! entité de base représentant un champ de donnée! chaque colonne est définie par un couple clé / valeur! une colonne contenant dʼautres colonnes est nommée super colonne. Famille de colonnes :! permettent de regrouper plusieurs colonnes (ou super colonnes)! les colonnes sont regroupées par ligne! chaque ligne est identifiée par un identifiant unique (assimilées aux tables dans le modèle relationnel) et sont identifiées par un nom unique Super colonnes :! situées dans les familles de colonnes sont souvent utilisées comme les lignes dʼune table de jointure dans le modèle relationnel. Bernard ESPINASSE - Introduction aux systèmes NoSQL 57 Elles sont les plus complexes à appréhender des BD NoSQL, même si au final on a un schéma assez proche des bases documentaires elles sont très utilisées pour les traitements dʼanalyse de données et dans les traitements massifs (notamment via des opérations de type MapReduce). elles offrent plus de flexibilité que les BD relationnelles:! Il est possible dʼajouter une colonne ou! une super colonne! à nʼimporte quelle ligne! dʼune famille de colonnes, colonnes ou super colonne à tout instant.!"#$%&'()#*+%,-.#/ 012(3&-!"#$ #%&"'()*+*,,"#$ #-.%/"#$ 01,#$ +"#$ 213-++"#$ 0"$ )*+*,,"#$ #*,.$ #*%4",.$ %.-+-#/"#$ )*33"$ +"#$ +-5,"#$ 06%,"$.17+"$ 0"$ 8*-,.%'"$ 01,#$ +"$ 3*09+"$ '"+1.-*,,"+:$ ;*3&1'1.-4"3",.$ 1%$ 3*09+"$ '"+1.-*,,"+<$ +"#$ 71#"#$ *'-",./"$ )*+*,,"#$ *22'",.$ &+%#$ 0"$ 2+"=-7-+-./:$ >+$ "#.$ "22".$ &*##-7+"$ 0618*%."'$ %,"$ )*+*,,"$ *%$ %,"$ #%&"'$ )*+*,,"$?$,6-3&*'."$ @%"++"$ +-5,"$ 06%,"$ 213-++"$ 0"$ )*+*,,"#<$)*+*,,"#$*%$#%&"'()*+*,,"$?$.*%.$-,#.1,.:$ 4)-#,%5#6%,#$'.+%(-,# 7!89 Bernard ESPINASSE - Introduction aux systèmes NoSQL 58 $'.+%(-,#+2:&-# 32,+;+;%)-<#;)+%#!# ()*$+%,$%-"+$%./012%3%!"4",5#6$%#4"*7$% =%&'()#62(;&;-.>#3,%6;&-# 2)<#%,<-,. ;"$ tuple &1'10-53"$ pour le "#.$ client +"$ 1234 3*-,#$ )*,,%$ 0"$ )"%=$ 0"$ +1$ 3*%41,)"$ A*BC!:$ ;"$ 3*09+"$ #61&&%-"$ &'-,)-&1+"3",.$#%'$0"%=$)*,)"&.#$D$06%,"$&1'.$+6%.-+-#1.-*,$06%,$3*."%'$0"$#.*)E15"$&*%'$+"#$ table «Clients 02=?#=%&'()#62(;&@#?2.#» partitionnée *78".#$F@%-$#"$&'/#",.",.$#*%#$+1$2*'3"$06%,"$71#"$0*)%3",.1-'"<$)G1@%"$",.-./$0"$)".."$71#"$ en 2 familles =%&'().#A-BCB#)2(-#2)<# de colonnes : /.1,.$,*33/"$,H%0I:$J61%.'"$&1'.<$?$)"$3*09+"<$4-",.$#618*%."'$%,$3/)1,-#3"$&"'3"..1,.$ «Profile 32@(-)+"#2)<#» et «Orders» 0"$ chaque 0/)'-'"$ famille +"#$ 1')#$ de colonnes F'"+1.-*,#$ a.'3-,=%&'(). A?2D-#2# ",.'"$ +"#$ *78".#I<$ )"%=()-$ /.1,.$ *'-",./#$ ".$ 0-#&*#1,.$ 0"$ &'*&'-/./#$F,*3<$01."<$KI:$ des colonnes (e.g. name et payment), )2(-#2)<#2)#2,:;+,2,@# des super colonnes )'(:-,#%6#2..%=;2+-<# avec un nom et un nombre arbitraire =%&'()." de colonnes 02=?#=%&'()#62(;&@#(2@# associées chaque famille de colonnes :-#+,-2+-<#2.#2#.-32,2+-# peut être traitée comme une table séparée +2:&-#;)#+-,(.#%6# en terme de partitionnement.?2,<;)c>(sharding) :! «Profile» E,%6;&-#6%,#$'.+%(-,# pour le client 1234 peut 7!89#(2@#:-#%)#F%<-#7 être sur le nœud 1 4,<-,.#6%,#$'.+%(-,#! «Orders 7!89#(2@#:-#%)#F%<-#!#» pour le client 1234 peut être sur le noeud 2!G Bernard ESPINASSE - Introduction aux systèmes NoSQL 59 Bernard ESPINASSE - Introduction aux systèmes NoSQL 60

Forces : Modèle de données supportant des données semi-structurées (clairsemées) naturellement indexé (colonnes) bonne mise à l'échelle à l'horizontale MapReduce souvent utilisé en scaling horizontal, on peut voir les résultats de requêtes en temps réel Faiblesses : A éviter pour des données interconnectés : si les relations entre les données sont aussi importantes que les données elles-mêmes (comme la distance ou calculs de la trajectoire) à éviter pour les lectures de données complexes exige de la maintenance - lors de l'ajout / suppression de colonnes et leur regroupements les requêtes doivent être pré-écrit, pas de requêtes ad-hoc définis "à la volée": NE PAS utiliser pour les requêtes non temps réel et inconnues. Les BD NoSQL type «Colonne» sont principalement utilisées pour :! Netflix l'utilise notamment pour le logging et l'analyse de sa clientèle! Ebay l'utilise pour l'optimisation de la recherche! Adobe l'utilise pour le traitement des données structurées et de Business Intelligence (BI)! Des sociétés de TV lʼutilisent pour cerner leur audience et gérer le vote des spectateurs (nb élevé d'écritures rapides et analyse de base en temps réel (Cassandra)! peuvent être de bons magasins d'analyse des données semi-structurées! utilisé pour la journalisation des événements et pour des compteurs! Bernard ESPINASSE - Introduction aux systèmes NoSQL 61 Bernard ESPINASSE - Introduction aux systèmes NoSQL 62 BD NOSQL modèle «Document» Forces & faiblesses des BD NoSQL «Document» Elles stockent une collection de "documents" elles sont basées sur le modèle «clé-valeur» mais la valeur est un document en format semi-structuré hiérarchique de type JSON ou XML (possible aussi de stocker n'importe quel objet, via une sérialisation) les documents n'ont pas de schéma, mais une structure arborescente : ils contiennent une liste de champs, un champ a une valeur qui peut être une liste de champs,... elles ont généralement une interface dʼaccès HTTP REST permettant dʼeffectuer des requêtes (plus complexe que lʼinterface CRUD des BD clés/valeurs) Implémentations les plus connues :! CouchDB (fondation Apache)! RavenDB (pour plateformes «.NET/Windows» - LINQ)! MongoDB, Terrastore, Bernard ESPINASSE - Introduction aux systèmes NoSQL 63 Bernard ESPINASSE - Introduction aux systèmes NoSQL 64

Un document est composé de champs et des valeurs associées ces valeurs :! peuvent être requêtées! sont soit dʼun type simple (entier, chaine de caractère, date,...)! soit elles mêmes composées de plusieurs couples clé/valeur. bien que les documents soient structurés, ces BD sont dites schemaless : il nʼest pas nécessaire de définir au préalable les champs utilisés dans un document les documents peuvent être très hétérogènes au sein de la BD permettent dʼeffectuer des requêtes sur le contenu des documents/objets : pas possible avec les BD clés/valeurs simples Elles sont principalement utilisées dans le développement de CMS (Content Management System - outils de gestion de contenus).!"# Bernard ESPINASSE - Introduction aux systèmes NoSQL 65 $%"&'()'# *+"+(,-'.'"/# 0"'# 1"/'(2,$'# 34,$$5&# 6778# 9:;7#<'(.'//,"/#34'22'$/ Bernard ESPINASSE - Introduction aux systèmes NoSQL 66 &1.<-'.'"/#3'&#('=0>/'&#&0(#-,#?,&'#.,1&#$'--'@$1#'&/#<-0&#$%.<-'A'#=0'#-41"/'(2,$'#B9CD#?,&'&# $-+&E),-'0(&F# G'&# 2%(.,/&# 3'# 3%""+'&# H;!I# '/# JKG# &%"/# -'# <-0&# &%0)'"/# 0/1-1&+&#, 34,&&0('(#-'#/(,"&2'(/#3'&#3%""+'&#&+(1,-1&+'&#'"/('#-4,<<-1$,/1%"#'/#-,#?,&'F# Forces : modèle de données simple mais puissant (expression de structures imbriquées) bonne mise à l'échelle (surtout si sharding pris en charge) pas de maintenance de la BD requise pour ajouter/supprimer des «colonnes» forte expressivité de requêtage (requêtes assez complexes sur des structures imbriquées) Faiblesses : inadaptée pour les données interconnectées modèle de requête limitée à des clés (et indexes) peut alors être lent pour les grandes requêtes (avec MapReduce) D0# 2,1/# 3'# -'0(# $%"$'</1%"# <-0&# &1.<-'# =0'# -'&#?,&'&# 3'# 3%""+'&# ('-,/1%""'--'&L# $'&#?, $%"&'()'"/# 3'&# <'(2%(.,"$'&# +-')+'&F# :--'&# 31&<%&'"/# <,(#,1--'0(&# 3'# 2%"$/1%"",-1/+&# / 1"/+('&&,"/'&#'"#/'(.'#3'#2-'A1?1-1/+#30#.%35-'#3%$0.'"/,1('L#$'#=0'#-'&#?,&'&#('-,/1%""' "'# <'0)'"/# %22(1(F# B'//'# 3'("15('# 2%"$/1%"",-1/+# -'0(# $%"25('# 0"'# <%<0-,(1/+# 1.<%(/," Les BD NoSQL type «Document» principalement utilisées "%/,..'"/#3,"&#-'#.1-1'0#30#3+)'-%<<'.'"/#3'#BK;#MB%"/'"/#K,",*'.'"/#;N&/'.L#%0 pour : 3'#*'&/1%"#3'#$%"/'"0&O#<%0(#-'&=0'-&#$'#.%35-'#'&/#/(5&#,3,</+F#! Enregistrement dʼévénements! Systèmes de gestion de contenu! Web analytique ou analytique temps-réel! Catalogue de produits! Systèmes d'exploitation!!"#$%&'()*+",-(./"0"1%/2",$3'4/",$.3+($25"0"6$3+/"'/%'$734+($2"(2+/'7(+/"5825"83+$'(58+($2" Bernard ESPINASSE - Introduction aux systèmes NoSQL 67 Bernard ESPINASSE - Introduction aux systèmes NoSQL 68

Elles permettent la modélisation, le stockage et la manipulation de données complexes liées par des relations non-triviales ou variables BD NOSQL modèle «Graphe» Forces & faiblesses des BD NoSQL «Graphe» modèle de représentation des données basé sur la théorie des graphes!"#$ #%&"'()*+*,,"#$ #-.%/"#$ 01,#$ +"#$ 213-++"#$ 0"$ )*+*,,"#$ #*,.$ #*%4",.$ %.-+-#/"#$ )*33"$ +"#$ +-5,"#$ 06%,"$ sʼappuie.17+"$ sur 0"$ les 8*-,.%'"$ notions 01,#$ de noeuds, +"$ 3*09+"$ de '"+1.-*,,"+:$ relations et ;*3&1'1.-4"3",.$ de propriétés 1%$ 3*09+"$ '"+1.-*,,"+<$ qui +"#$ leur 71#"#$ sont rattachées. *'-",./"$ )*+*,,"#$ *22'",.$ &+%#$ 0"$ 2+"=-7-+-./:$ >+$ "#.$ "22".$ &*##-7+"$ 0618*%."'$ Implémentations %,"$ )*+*,,"$ *%$ les %,"$ plus #%&"'$ connues )*+*,,"$ :?$,6-3&*'."$ @%"++"$ +-5,"$ 06%,"$ 213-++"$ 0"$ )*+*,,"#<$)*+*,,"#$*%$#%&"'()*+*,,"$?$.*%.$-,#.1,.:$! Neo4J! OrientDB (fondation Apache)! ()*$+%,$%-"+$%./012%3%!"4",5#6$%#4"*7$% Bernard ESPINASSE - Introduction aux systèmes NoSQL 69 Elles utilisent : ;"$ &1'10-53"$ "#.$ +"$ 3*-,#$ )*,,%$ 0"$ )"%=$ 0"$ +1$ 3*%41,)"$ A*BC!:$ ;"$ 3*09+"$ #61&&%-"$ Bernard ESPINASSE - Introduction aux systèmes NoSQL 70 &'-,)-&1+"3",.$#%'$0"%=$)*,)"&.#$D$06%,"$&1'.$+6%.-+-#1.-*,$06%,$3*."%'$0"$#.*)E15"$&*%'$+"#$ *78".#$F@%-$#"$&'/#",.",.$#*%#$+1$2*'3"$06%,"$71#"$0*)%3",.1-'"<$)G1@%"$",.-./$0"$)".."$71#"$ /.1,.$,*33/"$,H%0I:$J61%.'"$&1'.<$?$)"$3*09+"<$4-",.$#618*%."'$%,$3/)1,-#3"$&"'3"..1,.$ 0"$ 0/)'-'"$ +"#$ 1')#$ F'"+1.-*,#$ ",.'"$ +"#$ *78".#I<$ )"%=()-$ /.1,.$ *'-",./#$ ".$ 0-#&*#1,.$ 0"$ &'*&'-/./#$F,*3<$01."<$KI:$.! un moteur de stockage pour les objets (similaire à une base documentaire, chaque entité de cette base étant nommée nœud)! un mécanisme de description dʼarcs (relations entre les objets), arcs orientés et avec propriétés (nom, date,...) elles sont bien plus efficaces que les BDR pour traiter les problématiques liées aux réseaux (cartographie, relations entre personnes,...) sont adaptées à la manipulation d'objets complexes organisés en réseaux : cartographie, réseaux sociaux,.. Bernard ESPINASSE - Introduction aux systèmes NoSQL 71 Bernard ESPINASSE - Introduction aux systèmes NoSQL 72!"#$%&'()*+",-(./"0"1%/2",$3'4/",$.3+($25"0"6$3+/"'/%'$734+($2"(2+/'7(+/"5825"83+$'(58+($2"

Forces : modèle de données puissant rapide pour les données liées, bien plus rapide que SGBDR modèles dʼinterrogation bien établis et performants : Tinkerpop pile (fournit un ensemble commun d'interfaces permettant aux différentes technologies informatiques graphiques de travailler ensemble, que le développeur utilise en cas de besoin), SPARQL et Cypher Faiblesses : Fragmentation (sharding) :! Même si elles peuvent évoluer assez bien! Pour certains domaines, on peut aussi fractionner. Les BD NoSQL type «Document» sont principalement utilisées pour :! Moteurs de recommandation! Business Intelligence (BI)! Semantic Web! Social computing! Données géospatiales! Généalogie! Web of things! Catalogue des produits! Sciences de la Vie et calcul scientifique (bioinformatique, )! Données liées, données hiérarchiques! Services de routage, d'expédition et de géolocalisation! Services financiers : chaîne de financement, dépendances, gestion des risques, détection des fraudes, Bernard ESPINASSE - Introduction aux systèmes NoSQL 73 Bernard ESPINASSE - Introduction aux systèmes NoSQL 74 Magasins de triplets RDF (Triple Stores) : the foundation of many Semantic Web systems encodés in format/langage RDF chaque ligne a une structure «nœud-lien-noeud» (sujet-prédicatobjet) possibilité de joindre des graphes ensemble automatiquement en faisant correspondre les identifiants des nœuds possibilité de fusion automatique de 2 graphes Ex: le graphe 1 a le noeud A relié à B et le graphe 2 le nœud B relié à C, l'union de ces graphes montre une relation de A à C. les données RDF interrogées via le protocole/langage de requête SPARQL permettant l'utilisation d'ontologies pour l'inférence (Groupe W3C RDF Data Access de travail) Ex : Virtuoso, Sesame, Jena!"#$%&'(#)*+%,-#. /0*0%,## Internet 12*,%2,*# : net 2,*#+/#3+4'0*,%- of computers Word 5+%6#576,#5,8# WideWeb : web 9,8#+/#6+304,2*- of documents (GGG) Giant Global Graph : graph of metadata :$$$"#$7&2*#$;+8&;#$%&'(# <%&'(#+/#4,*&6&*& I called this graph the Semantic Web, but maybe it should have been Giant Global!"#$%&&'(#)*+,#-.%/*#)*'#0'1%2)+$#3'45#46)#1%74'#+)#,*86&(#*%9'#4''2#:+%2)# Graph. - Tim Berners-Lee 2007 :&84%&#:.%/*;<#= >+1#?'.2'.,=@''#= ABBC =! Bernard ESPINASSE - Introduction aux systèmes NoSQL 75 Bernard ESPINASSE - Introduction aux systèmes NoSQL 76