SlideShare une entreprise Scribd logo
N(ot) o(nly) SQL
Des alternatives aux bases de données relationnelles

Olivier Mallassi
v-0.3 (09 Septembre 2010)
Pour démarrer
Quelques idées reçues…

  NoSQL n’est pas un remplacement des SGBDR
  NoSQL reste un domaine d’innovation…
  …même s’il existe de nombreux déploiement en
production dans des systèmes hautement sollicités

  NoSQL est un écosystème riche
  Le reste ne la présentation ne se veut pas exhaustive
  « Le diable est dans le détail »
Malgré tout,
ces technologies sont intéressantes pour nos systèmes

  Vers plus de disponibilité
  Vers plus de souplesse dans la gestion des schémas/
structures

  Vers plus d’élasticité de l’infrastructure
  Un volume croissant de données stockées

© OCTO 2010

3
Au commencement étaient…
Systèmes relationnels

Modélisation &
normalisation
de la données

Modèle
centralisé, un
référentiel
unique

Système de
backup

Structuration
forte de la
donnée

Systèmes
relationnels

Moteur et
Langage SQL

 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

© OCTO 2010

4
Puis vinrent…
  Des cas d’usage différents mais des enjeux communs
 
 
 
 

Performance
Disponibilité (>99,99%)
Résilience
Scalabilité horizontale

• Un moteur de recherche mondial

• La boutique en ligne mondiale

• Développements spécifiques :
BigTable + Algorithmes Map/
Reduce

• Développements spécifiques :
Dynamo

• Permet l’agrégation de gros volumes de
données

© OCTO 2010

• Permet d’obtenir de gros débit en
écriture et d’assurer la disponibilité
• Dernier incidents majeurs : 2004
• <40 minutes d’indisponibilité par an

5
Qui ont imposé des « trade-offs »
  Disponibilité et Volumes de données manipulés et stockés
  Réplication/partitionnement (ie. pas de backup ?)
  Organisation physique des données optimisés pour les traitements (BigTable)

  Performance / débit en écriture
 Le « two phase commit » permet de respecter les propriétés ACID en environnement distribué
mais au détriment des temps de réponse et gère mal l’indisponibilité de systèmes de stockage
  Le sharding de systèmes relationnels reste complexe

  L’élasticité et la gestion native du « fail-over » n’offre aucune garantie sur
l’emplacement physique des données à un instant t
  Difficile d’avoir un comportement transactionnel déterministe
  Difficile de gérer des relations entre entités

Trade-off : « we forfeit ‘C’ and ‘I’ for availibility, graceful degradation and
performance »
• Un spectre qui va de forte consistance, isolation, transactions à consistance faible, disponibilité
prime, transactions optimistes
• De ACID vers BASE

© OCTO 2010

Source : « Towards Robust Distributed Systems » Dr. Eric A. Brewer
http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf

6
NoSQL : des gênes différents
Des systèmes distribués de stockage de données faiblement structurées

Les alternatives aux systèmes relationnels ont été bâties pour assurer
- La disponibilité (distribution & prise en compte du « fail-over », réplication multi-DC…)
- Une faible structuration de la donnée (stockage de structures diverses, évolutivité des schémas…)
- Elasticité des infrastructures (ajouts/pertes de serveur…)
- Elasticité de la structure

- Performance, débit en écriture (optimisation des accès disque,
stockage des données en colonnes, Master/Master…)
- Manipulation de gros volume de données (Partitionnement…)

- Modélisation impossible ou
difficilement exploitable dans le
modèle relationnel

 Des systèmes nativement décentralisés
 Les applications sont écrites et influent la modélisation de la
donnée. La donnée est stockée telle qu’utilisée par l’application
(déjà vrai suivant l’utilisation que l’on fait d’un ORM)

 Des systèmes distribués et
optimisés pour les structures
de données qu’ils manipulent

© OCTO 2010

7
À l’origine du mouvement NoSQL

Le Cloud démocratise ces solutions spécifiques hautement scalables
• Google App Engine permet de développer sur le Google Data Store
• Amazon offre des services de stockage : SimpleDB, S3
Certains acteurs « open-sourcent » leurs solutions (pas uniquement dans le domaine NoSQL)
• LinkedIn et Voldemort, Facebook et Cassandra…

La plupart des « grands du web » d’aujourd’hui migrent vers ces solutions

Un marché de niche permettant une modélisation plus facile des données (par rapport à la modélisation relationnelle)
• Les graphes, les documents…
Le sens de l’histoire : 40 années de suprématie des RDBMS enfin « challengée »

© OCTO 2010

8
N(ot) o(nly) SQL
un écosystème riche

© OCTO 2010
Un foisonnement de solutions…
Key/Value

Document

 

 

Graph

Column Oriented

Un marché « Open Source Pro » :
 
 
 

Les développeurs Redis rachetés par VMWare
Cassandra, MongoDB, Riak, Neo4j ont des structures pouvant assurer le support, la formation…
..

Un marché « As a Service »
 

© OCTO 2010

Amazon, vmWare…
10
…Organisées en grandes catégories
basées sur la modélisation de la donnée

Key/Value
{attr1, …}

Document
Column Oriented
Graph
Flat file, Géographique, XML, Object…

© OCTO 2010

11
Les bases « graph »
Objectifs
• Modéliser simplement des graphes de données
• Des nœuds (et leur propriétés)
• Des relations entre les nœuds et des propriétés sur les
relations
• Proposer un langage et un moteur de requête optimisé pour
le parcours de graphes
A noter
• Evolutivité du schéma
• Propriétés des nœuds et surtout des relations
• Mode Master/Slave
• Réplication asynchrone (eventually consistent)
• Les solutions tendent vers l’implémentation de fonctionnalité
de partitionnement
• Respect d’ACID
Cas d’utilisation
• Recommandations / éléments liés (e-commerce…)
• Construction de meta-datas (issues d’analyse des
comportements utilisateurs, permettant de corréler des
données diverses…)
• …

© OCTO 2010

12
Les bases « graph »
en termes d’API
Neo4j
Transaction tx = myDb.beginTx();
try
{
Node architect = myDb.createNode();
Node smith = myDb.createNode();
smith.setProperty(« version », « 1.0 »);
Relationship relation = smith.createRelationshipTo(architect, …
relatoin.setProperty…
tx.success();
}
finally
tx.finish();

© OCTO 2010

13
Les espaces de stockage « Key/value »
Objectifs
•  Assurer Disponibilité/Performances des systèmes en
W/R et en TP
•  Permettre le stockage de gros volume de données
A noter
•  Une donnée est identifiable pour sa clé uniquement
•  La valeur n’est pas nécessairement structurée
•  Requêtage : put / get / delete
•  Mode Master/Master
•  Partitionnement suivant la clé
•  Gestion fine de la consistance : en fonction de la
donnée, le niveau de réplication et de consistance que
l’on souhaite
•  Suivant les outils : Versionning des structures de
données

Neo

Age:29
Name : Thomas Anderson
…

Trinity

YXpnYXplZw== YXpnYXpl
Zw==

Cas d’usage
•  Traitements TP (enjeux de début en écriture,
disponibilité)
•  Volumétrie de données

© OCTO 2010

14
Stockage « Key/Value »
en termes d’API

Voldemort
StoreClientFactory factory = new SocketStoreClientFactory(numThreads,
numThreads, maxQueuedRequests, maxConnectionsPerNode,
maxTotalConnections, bootstrapUrl);
try {
StoreClient<String, Object> client = factory.getStoreClient("author");
Map<String, Object> authorMap = new HashMap<String, Object>();
authorMap.put("key", "key" + i);
authorMap.put("firstName", "firstName" + i);
authorMap.put("lastName", "lastName" + i);
client.put("key" + i, authorMap);

© OCTO 2010

15
Les espaces de stockage « Column Oriented »
Objectifs
•  Permettre le stockage de gros volume de données
•  Permettre l’analyse de gros volume de données
•  Permettre la manipulation de colonnes uniquement
•  Suivant les outils : Assurer Disponibilité/
Performances des systèmes en W/R

Neo

Age

29

Timestamp#1

name

Thomas
Anderson

Timestamp#2

A noter
•  Un modèle Key/Value où la valeur est a elle-même
une représentation « Key/Value »
•  Column oriented = optimisation du stockage
physique de la donnée par colonne
•  Suivant les outils : un mode Master/Master
Cas d’usage
•  Business Intelligence de façon générale

© OCTO 2010

16
Stockage « Column-oriented »
en termes d’API
Cassandra
TTransport tr = new TSocket("192.168.216.128", 9160);
TProtocol proto = new TBinaryProtocol(tr);
tr.open();
Cassandra.Client cassandraClient = new Cassandra.Client(proto);
Map<String, List<ColumnOrSuperColumn>> insertClientDataMap = new HashMap<String,
List<ColumnOrSuperColumn>>();
List<ColumnOrSuperColumn> clientRowData = new ArrayList<ColumnOrSuperColumn>();
ColumnOrSuperColumn columnOrSuperColumn = new ColumnOrSuperColumn();
columnOrSuperColumn.setColumn(new Column("fullName".getBytes(UTF8),
aCustomer.getName().getBytes(UTF8), timestamp));
clientRowData.add(columnOrSuperColumn);
insertClientDataMap.put("customers", clientRowData);
cassandraClient.batch_insert("myBank", aCustomer.getName(),insertClientDataMap,
ConsistencyLevel.DCQUORUM);

© OCTO 2010

17
Et Hbase?
  Un clone de Google Big Table
  Utilise HDFS pour la réplication
  Master/Slave
JDBC

Thrift

…

Hive (DSL SQL-like)

Pig (DSL

Hadoop : « framework » Map/Reduce

HBase
Hadoop Distributed File System

© OCTO 2010

18
Les bases « Document »
Objectifs
•  Stocker de la donnée structurée permettant une
interrogation plus complexe qu’un « Key/Value »

Neo

{« Age »: 29,
« Name » : « Thomas Anderson »
« knows »:[{« name »: « Trinity »
…

A noter
•  S’apparente à une « Key/Value » dont la valeur
est structurée
•  Gestion des types des attributs (utf-8 string,
integer, date…)
•  Requêtage : insert, update, findBy
•  Rajouts possibles d’index sur les attributs de la
valeur
•  Requête de type find(…), comparateur (<, ==…)
•  Mode Master/Slave (même si les solutions tendent
à offrir des fonctionnalités de partitionnement)
•  Finalement assez proche des bases XML
Cas d’usage
•  Stockage de contenu (CMS, Blog, Mail…)

© OCTO 2010

19
N(ot) o(nly) SQL
pour conclure…

© OCTO 2010
Des systèmes de stockage qui repoussent les limites
et changent les règles établies

 

Performance, débit en
écriture

  Stockage et Manipulation de gros
volume de données

Au niveau des développements
• 
• 
• 
• 

Relâchement d’ACID & faible modélisation de la donnée
Gestion de stale state et résolution de conflits
Pas (peu…) de systèmes de requêtes
La gestion de certaines problématiques remontent au niveau de l’espace applicatif (Gestion de l’intégrité transactionnelle, jointures,
filtres…)

Au niveau de l’exploitation

  Disponibilité et « Design for
failure »

•  Changement de l’outilage (JMX…)
•  Quid de la gestion des backups (à relativiser par la réplication sur plusieurs nœuds)
Au niveau de la sécurité
•  Pas (peu…) de contrôles d’accès
Pas de standardisation (à la différence de SQL qui normalise les API, le protocole d’accès…)
Quid de l’intégration de ces systèmes dans le reste du SI

 

Elasticité des infrastructure

•  Attentes en terme de reporting (ad-hoc, scheduled…)
•  Partage des données entre plusieurs systèmes
•  …

de stockage

 

Souplesse de modélisation

© OCTO 2010

21
Au-delà du buzz…
  NoSQL nous rappelle qu’il est important de travailler

sur l’utilisation qui est faite de la donnée
  Toutes les données n’ont pas besoin d’être consistantes dans tous
les contextes d’utilisation

  NoSQL parle de collaboration : stockage

« polyglote »

  NoSQL parle d’alternatives et challenge 40 années

de suprématie des bases relationnelles…

© OCTO 2010

22
© OCTO 2010

23

Contenu connexe

Tendances

Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
Denodo
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
Oussama ARBI
 
NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler Softeam
TelecomValley
 
Big data architectures
Big data architecturesBig data architectures
Big data architectures
Mariem Khalfaoui
 
Bases de données NoSQL
Bases de données NoSQLBases de données NoSQL
Bases de données NoSQL
Samy Dindane
 
NoSQL MeetUp
NoSQL MeetUpNoSQL MeetUp
NoSQL MeetUp
Eric DYKSTEIN
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
JEMLI Fathi
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de données
Guillaume Harry
 
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
Antoine Augusti
 
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
Olivier Mallassi
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
Persistance polyglotte avec Spring Data
Persistance polyglotte avec Spring DataPersistance polyglotte avec Spring Data
Persistance polyglotte avec Spring Data
Michel Domenjoud
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
Minyar Sassi Hidri
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
ebiznext
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisation
Microsoft Technet France
 
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
CHAKER ALLAOUI
 
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
ALTIC Altic
 
Base de données distribuée
Base de données distribuéeBase de données distribuée
Base de données distribuée
kamar MEDDAH
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
Mouna Torjmen
 

Tendances (20)

Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
 
NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler Softeam
 
Big data architectures
Big data architecturesBig data architectures
Big data architectures
 
Bases de données NoSQL
Bases de données NoSQLBases de données NoSQL
Bases de données NoSQL
 
NoSQL MeetUp
NoSQL MeetUpNoSQL MeetUp
NoSQL MeetUp
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de données
 
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
 
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
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Persistance polyglotte avec Spring Data
Persistance polyglotte avec Spring DataPersistance polyglotte avec Spring Data
Persistance polyglotte avec Spring Data
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisation
 
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
 
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
 
Base donnes my_sql
Base donnes my_sqlBase donnes my_sql
Base donnes my_sql
 
Base de données distribuée
Base de données distribuéeBase de données distribuée
Base de données distribuée
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
 

En vedette

Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
Alexis Seigneurin
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
Alexis Seigneurin
 
Rey banquedefrance 11-2014
Rey banquedefrance 11-2014Rey banquedefrance 11-2014
Rey banquedefrance 11-2014
Macropru Reader
 
Cours radon-sept-2013
Cours radon-sept-2013Cours radon-sept-2013
Cours radon-sept-2013
AIBQ
 
Test
TestTest
Test
polovich
 
Retrouver un ventre plat
Retrouver un ventre platRetrouver un ventre plat
Retrouver un ventre plat
hedge70closet
 
Cars 3
Cars 3Cars 3
Cars 3
MUNEVAR
 
Presentation de D-Lices 131107
Presentation de D-Lices 131107Presentation de D-Lices 131107
Presentation de D-Lices 131107
GCAILLEAU
 
Proyecto formacion empresaria_ll
Proyecto formacion empresaria_llProyecto formacion empresaria_ll
Proyecto formacion empresaria_ll
nuryyy
 
1302 newsletter
1302 newsletter1302 newsletter
1302 newsletter
susanabartz
 
Trabajo de tic
Trabajo de ticTrabajo de tic
Los medios de comunicacion
Los medios de comunicacionLos medios de comunicacion
Los medios de comunicacion
jesikitabernal
 
Homo videns
Homo vidensHomo videns
Homo videns
IraisOcampo
 
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
Cronograma de actividades del año lectivo 2013   2014 3 ro bach.Cronograma de actividades del año lectivo 2013   2014 3 ro bach.
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
Italo Orozco
 
Nuevas Tecnologías: Organización de los medios en los entornos educativos.
Nuevas Tecnologías: Organización de los medios en los entornos educativos. Nuevas Tecnologías: Organización de los medios en los entornos educativos.
Nuevas Tecnologías: Organización de los medios en los entornos educativos.
EliMartinGarrido
 
Términos de economía
Términos de economíaTérminos de economía
Términos de economía
Italo Orozco
 
Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)
Aiza Hernández
 
Calculo i
Calculo iCalculo i
Calculo i
salomon benito
 
Informatica
InformaticaInformatica

En vedette (20)

Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
Rey banquedefrance 11-2014
Rey banquedefrance 11-2014Rey banquedefrance 11-2014
Rey banquedefrance 11-2014
 
Cours radon-sept-2013
Cours radon-sept-2013Cours radon-sept-2013
Cours radon-sept-2013
 
Test
TestTest
Test
 
Retrouver un ventre plat
Retrouver un ventre platRetrouver un ventre plat
Retrouver un ventre plat
 
Cars 3
Cars 3Cars 3
Cars 3
 
Presentation de D-Lices 131107
Presentation de D-Lices 131107Presentation de D-Lices 131107
Presentation de D-Lices 131107
 
Proyecto formacion empresaria_ll
Proyecto formacion empresaria_llProyecto formacion empresaria_ll
Proyecto formacion empresaria_ll
 
1302 newsletter
1302 newsletter1302 newsletter
1302 newsletter
 
Trabajo de tic
Trabajo de ticTrabajo de tic
Trabajo de tic
 
Los medios de comunicacion
Los medios de comunicacionLos medios de comunicacion
Los medios de comunicacion
 
Homo videns
Homo vidensHomo videns
Homo videns
 
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
Cronograma de actividades del año lectivo 2013   2014 3 ro bach.Cronograma de actividades del año lectivo 2013   2014 3 ro bach.
Cronograma de actividades del año lectivo 2013 2014 3 ro bach.
 
Face parts
Face partsFace parts
Face parts
 
Nuevas Tecnologías: Organización de los medios en los entornos educativos.
Nuevas Tecnologías: Organización de los medios en los entornos educativos. Nuevas Tecnologías: Organización de los medios en los entornos educativos.
Nuevas Tecnologías: Organización de los medios en los entornos educativos.
 
Términos de economía
Términos de economíaTérminos de economía
Términos de economía
 
Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)Asignacion 3(aiza aponte)
Asignacion 3(aiza aponte)
 
Calculo i
Calculo iCalculo i
Calculo i
 
Informatica
InformaticaInformatica
Informatica
 

Similaire à No Sql - Olivier Mallassi - September 2010

SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
Microsoft
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Microsoft Technet France
 
Réussir sa migration vers le Cloud grâce à la virtualisation des données
Réussir sa migration vers le Cloud grâce à la virtualisation des donnéesRéussir sa migration vers le Cloud grâce à la virtualisation des données
Réussir sa migration vers le Cloud grâce à la virtualisation des données
Denodo
 
Présentation Big Data et REX Hadoop
Présentation Big Data et REX HadoopPrésentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
Joseph Glorieux
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
Christophe Villeneuve
 
Les clés de succès pour moderniser votre architecture de données en 2022
Les clés de succès pour moderniser votre architecture de données en 2022Les clés de succès pour moderniser votre architecture de données en 2022
Les clés de succès pour moderniser votre architecture de données en 2022
Denodo
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
Denodo
 
cours_SOA_AO+FB_en_informatique_SOA_.pdf
cours_SOA_AO+FB_en_informatique_SOA_.pdfcours_SOA_AO+FB_en_informatique_SOA_.pdf
cours_SOA_AO+FB_en_informatique_SOA_.pdf
waliakeabraham
 
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essaiSSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
Microsoft Technet France
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
Blandine Larbret
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
Denodo
 
Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude
Microsoft Technet France
 
Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018
Converteo
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalitéParis JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Michaël Figuière
 
A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)
Abdelkader OUARED
 
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETICNoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
La FeWeb
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
linasafaa
 

Similaire à No Sql - Olivier Mallassi - September 2010 (20)

SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...
 
Réussir sa migration vers le Cloud grâce à la virtualisation des données
Réussir sa migration vers le Cloud grâce à la virtualisation des donnéesRéussir sa migration vers le Cloud grâce à la virtualisation des données
Réussir sa migration vers le Cloud grâce à la virtualisation des données
 
Présentation Big Data et REX Hadoop
Présentation Big Data et REX HadoopPrésentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
Les clés de succès pour moderniser votre architecture de données en 2022
Les clés de succès pour moderniser votre architecture de données en 2022Les clés de succès pour moderniser votre architecture de données en 2022
Les clés de succès pour moderniser votre architecture de données en 2022
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
cours_SOA_AO+FB_en_informatique_SOA_.pdf
cours_SOA_AO+FB_en_informatique_SOA_.pdfcours_SOA_AO+FB_en_informatique_SOA_.pdf
cours_SOA_AO+FB_en_informatique_SOA_.pdf
 
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essaiSSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude
 
Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalitéParis JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
 
A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)
 
mix-it 2011
mix-it 2011mix-it 2011
mix-it 2011
 
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETICNoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 

Plus de JUG Lausanne

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
JUG Lausanne
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
JUG Lausanne
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
JUG Lausanne
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
JUG Lausanne
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
JUG Lausanne
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
JUG Lausanne
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
JUG Lausanne
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
JUG Lausanne
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
JUG Lausanne
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
JUG Lausanne
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
JUG Lausanne
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
JUG Lausanne
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
JUG Lausanne
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
JUG Lausanne
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
JUG Lausanne
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
JUG Lausanne
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
JUG Lausanne
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
JUG Lausanne
 

Plus de JUG Lausanne (20)

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
 

No Sql - Olivier Mallassi - September 2010

  • 1. N(ot) o(nly) SQL Des alternatives aux bases de données relationnelles Olivier Mallassi v-0.3 (09 Septembre 2010)
  • 2. Pour démarrer Quelques idées reçues…   NoSQL n’est pas un remplacement des SGBDR   NoSQL reste un domaine d’innovation…   …même s’il existe de nombreux déploiement en production dans des systèmes hautement sollicités   NoSQL est un écosystème riche   Le reste ne la présentation ne se veut pas exhaustive   « Le diable est dans le détail »
  • 3. Malgré tout, ces technologies sont intéressantes pour nos systèmes   Vers plus de disponibilité   Vers plus de souplesse dans la gestion des schémas/ structures   Vers plus d’élasticité de l’infrastructure   Un volume croissant de données stockées © OCTO 2010 3
  • 4. Au commencement étaient… Systèmes relationnels Modélisation & normalisation de la données Modèle centralisé, un référentiel unique Système de backup Structuration forte de la donnée Systèmes relationnels Moteur et Langage SQL  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 © OCTO 2010 4
  • 5. Puis vinrent…   Des cas d’usage différents mais des enjeux communs         Performance Disponibilité (>99,99%) Résilience Scalabilité horizontale • Un moteur de recherche mondial • La boutique en ligne mondiale • Développements spécifiques : BigTable + Algorithmes Map/ Reduce • Développements spécifiques : Dynamo • Permet l’agrégation de gros volumes de données © OCTO 2010 • Permet d’obtenir de gros débit en écriture et d’assurer la disponibilité • Dernier incidents majeurs : 2004 • <40 minutes d’indisponibilité par an 5
  • 6. Qui ont imposé des « trade-offs »   Disponibilité et Volumes de données manipulés et stockés   Réplication/partitionnement (ie. pas de backup ?)   Organisation physique des données optimisés pour les traitements (BigTable)   Performance / débit en écriture  Le « two phase commit » permet de respecter les propriétés ACID en environnement distribué mais au détriment des temps de réponse et gère mal l’indisponibilité de systèmes de stockage   Le sharding de systèmes relationnels reste complexe   L’élasticité et la gestion native du « fail-over » n’offre aucune garantie sur l’emplacement physique des données à un instant t   Difficile d’avoir un comportement transactionnel déterministe   Difficile de gérer des relations entre entités Trade-off : « we forfeit ‘C’ and ‘I’ for availibility, graceful degradation and performance » • Un spectre qui va de forte consistance, isolation, transactions à consistance faible, disponibilité prime, transactions optimistes • De ACID vers BASE © OCTO 2010 Source : « Towards Robust Distributed Systems » Dr. Eric A. Brewer http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf 6
  • 7. NoSQL : des gênes différents Des systèmes distribués de stockage de données faiblement structurées Les alternatives aux systèmes relationnels ont été bâties pour assurer - La disponibilité (distribution & prise en compte du « fail-over », réplication multi-DC…) - Une faible structuration de la donnée (stockage de structures diverses, évolutivité des schémas…) - Elasticité des infrastructures (ajouts/pertes de serveur…) - Elasticité de la structure - Performance, débit en écriture (optimisation des accès disque, stockage des données en colonnes, Master/Master…) - Manipulation de gros volume de données (Partitionnement…) - Modélisation impossible ou difficilement exploitable dans le modèle relationnel  Des systèmes nativement décentralisés  Les applications sont écrites et influent la modélisation de la donnée. La donnée est stockée telle qu’utilisée par l’application (déjà vrai suivant l’utilisation que l’on fait d’un ORM)  Des systèmes distribués et optimisés pour les structures de données qu’ils manipulent © OCTO 2010 7
  • 8. À l’origine du mouvement NoSQL Le Cloud démocratise ces solutions spécifiques hautement scalables • Google App Engine permet de développer sur le Google Data Store • Amazon offre des services de stockage : SimpleDB, S3 Certains acteurs « open-sourcent » leurs solutions (pas uniquement dans le domaine NoSQL) • LinkedIn et Voldemort, Facebook et Cassandra… La plupart des « grands du web » d’aujourd’hui migrent vers ces solutions Un marché de niche permettant une modélisation plus facile des données (par rapport à la modélisation relationnelle) • Les graphes, les documents… Le sens de l’histoire : 40 années de suprématie des RDBMS enfin « challengée » © OCTO 2010 8
  • 9. N(ot) o(nly) SQL un écosystème riche © OCTO 2010
  • 10. Un foisonnement de solutions… Key/Value Document     Graph Column Oriented Un marché « Open Source Pro » :       Les développeurs Redis rachetés par VMWare Cassandra, MongoDB, Riak, Neo4j ont des structures pouvant assurer le support, la formation… .. Un marché « As a Service »   © OCTO 2010 Amazon, vmWare… 10
  • 11. …Organisées en grandes catégories basées sur la modélisation de la donnée Key/Value {attr1, …} Document Column Oriented Graph Flat file, Géographique, XML, Object… © OCTO 2010 11
  • 12. Les bases « graph » Objectifs • Modéliser simplement des graphes de données • Des nœuds (et leur propriétés) • Des relations entre les nœuds et des propriétés sur les relations • Proposer un langage et un moteur de requête optimisé pour le parcours de graphes A noter • Evolutivité du schéma • Propriétés des nœuds et surtout des relations • Mode Master/Slave • Réplication asynchrone (eventually consistent) • Les solutions tendent vers l’implémentation de fonctionnalité de partitionnement • Respect d’ACID Cas d’utilisation • Recommandations / éléments liés (e-commerce…) • Construction de meta-datas (issues d’analyse des comportements utilisateurs, permettant de corréler des données diverses…) • … © OCTO 2010 12
  • 13. Les bases « graph » en termes d’API Neo4j Transaction tx = myDb.beginTx(); try { Node architect = myDb.createNode(); Node smith = myDb.createNode(); smith.setProperty(« version », « 1.0 »); Relationship relation = smith.createRelationshipTo(architect, … relatoin.setProperty… tx.success(); } finally tx.finish(); © OCTO 2010 13
  • 14. Les espaces de stockage « Key/value » Objectifs •  Assurer Disponibilité/Performances des systèmes en W/R et en TP •  Permettre le stockage de gros volume de données A noter •  Une donnée est identifiable pour sa clé uniquement •  La valeur n’est pas nécessairement structurée •  Requêtage : put / get / delete •  Mode Master/Master •  Partitionnement suivant la clé •  Gestion fine de la consistance : en fonction de la donnée, le niveau de réplication et de consistance que l’on souhaite •  Suivant les outils : Versionning des structures de données Neo Age:29 Name : Thomas Anderson … Trinity YXpnYXplZw== YXpnYXpl Zw== Cas d’usage •  Traitements TP (enjeux de début en écriture, disponibilité) •  Volumétrie de données © OCTO 2010 14
  • 15. Stockage « Key/Value » en termes d’API Voldemort StoreClientFactory factory = new SocketStoreClientFactory(numThreads, numThreads, maxQueuedRequests, maxConnectionsPerNode, maxTotalConnections, bootstrapUrl); try { StoreClient<String, Object> client = factory.getStoreClient("author"); Map<String, Object> authorMap = new HashMap<String, Object>(); authorMap.put("key", "key" + i); authorMap.put("firstName", "firstName" + i); authorMap.put("lastName", "lastName" + i); client.put("key" + i, authorMap); © OCTO 2010 15
  • 16. Les espaces de stockage « Column Oriented » Objectifs •  Permettre le stockage de gros volume de données •  Permettre l’analyse de gros volume de données •  Permettre la manipulation de colonnes uniquement •  Suivant les outils : Assurer Disponibilité/ Performances des systèmes en W/R Neo Age 29 Timestamp#1 name Thomas Anderson Timestamp#2 A noter •  Un modèle Key/Value où la valeur est a elle-même une représentation « Key/Value » •  Column oriented = optimisation du stockage physique de la donnée par colonne •  Suivant les outils : un mode Master/Master Cas d’usage •  Business Intelligence de façon générale © OCTO 2010 16
  • 17. Stockage « Column-oriented » en termes d’API Cassandra TTransport tr = new TSocket("192.168.216.128", 9160); TProtocol proto = new TBinaryProtocol(tr); tr.open(); Cassandra.Client cassandraClient = new Cassandra.Client(proto); Map<String, List<ColumnOrSuperColumn>> insertClientDataMap = new HashMap<String, List<ColumnOrSuperColumn>>(); List<ColumnOrSuperColumn> clientRowData = new ArrayList<ColumnOrSuperColumn>(); ColumnOrSuperColumn columnOrSuperColumn = new ColumnOrSuperColumn(); columnOrSuperColumn.setColumn(new Column("fullName".getBytes(UTF8), aCustomer.getName().getBytes(UTF8), timestamp)); clientRowData.add(columnOrSuperColumn); insertClientDataMap.put("customers", clientRowData); cassandraClient.batch_insert("myBank", aCustomer.getName(),insertClientDataMap, ConsistencyLevel.DCQUORUM); © OCTO 2010 17
  • 18. Et Hbase?   Un clone de Google Big Table   Utilise HDFS pour la réplication   Master/Slave JDBC Thrift … Hive (DSL SQL-like) Pig (DSL Hadoop : « framework » Map/Reduce HBase Hadoop Distributed File System © OCTO 2010 18
  • 19. Les bases « Document » Objectifs •  Stocker de la donnée structurée permettant une interrogation plus complexe qu’un « Key/Value » Neo {« Age »: 29, « Name » : « Thomas Anderson » « knows »:[{« name »: « Trinity » … A noter •  S’apparente à une « Key/Value » dont la valeur est structurée •  Gestion des types des attributs (utf-8 string, integer, date…) •  Requêtage : insert, update, findBy •  Rajouts possibles d’index sur les attributs de la valeur •  Requête de type find(…), comparateur (<, ==…) •  Mode Master/Slave (même si les solutions tendent à offrir des fonctionnalités de partitionnement) •  Finalement assez proche des bases XML Cas d’usage •  Stockage de contenu (CMS, Blog, Mail…) © OCTO 2010 19
  • 20. N(ot) o(nly) SQL pour conclure… © OCTO 2010
  • 21. Des systèmes de stockage qui repoussent les limites et changent les règles établies   Performance, débit en écriture   Stockage et Manipulation de gros volume de données Au niveau des développements •  •  •  •  Relâchement d’ACID & faible modélisation de la donnée Gestion de stale state et résolution de conflits Pas (peu…) de systèmes de requêtes La gestion de certaines problématiques remontent au niveau de l’espace applicatif (Gestion de l’intégrité transactionnelle, jointures, filtres…) Au niveau de l’exploitation   Disponibilité et « Design for failure » •  Changement de l’outilage (JMX…) •  Quid de la gestion des backups (à relativiser par la réplication sur plusieurs nœuds) Au niveau de la sécurité •  Pas (peu…) de contrôles d’accès Pas de standardisation (à la différence de SQL qui normalise les API, le protocole d’accès…) Quid de l’intégration de ces systèmes dans le reste du SI   Elasticité des infrastructure •  Attentes en terme de reporting (ad-hoc, scheduled…) •  Partage des données entre plusieurs systèmes •  … de stockage   Souplesse de modélisation © OCTO 2010 21
  • 22. Au-delà du buzz…   NoSQL nous rappelle qu’il est important de travailler sur l’utilisation qui est faite de la donnée   Toutes les données n’ont pas besoin d’être consistantes dans tous les contextes d’utilisation   NoSQL parle de collaboration : stockage « polyglote »   NoSQL parle d’alternatives et challenge 40 années de suprématie des bases relationnelles… © OCTO 2010 22