Upload
lyonjug
View
565
Download
1
Tags:
Embed Size (px)
Citation preview
LE SPEAKER
+ FOLLOW ME !•• @rgirodon
RÉMY GIRODON
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
LE CONSTAT ACTUEL
+UN DATA MODEL
NATUREL ET INTUITIF
PROPRE : NORMALISATION DES DONNÉES
RELATIONNEL EVERYWHERE
LE CONSTAT ACTUEL
+ STANDARDISATION ET RICHESSE DU LANGAGE SQL
•Création des tables
•Définition des contraintes
•Manipulation des données
REQUÊTES
INSERT
UPDATE
RELATIONNEL EVERYWHERE
UPDATE
DELETE
PROCÉDURES STOCKÉES
•Définition d’Index
LE CONSTAT ACTUEL
+DESIGNED FOR ACID
ATOMICITÉ
COHÉRENCE
ISOLATION
RELATIONNEL EVERYWHERE
ISOLATION
DURABILITÉ
LE CONSTAT ACTUEL
+UNE OFFRE TRÈS VASTE
RELATIONNEL EVERYWHERE
LE CONSTAT ACTUEL
+DATA CHANGE
LES LIMITES DU RELATIONNEL
LE CONSTAT ACTUEL
+DATA CHANGE
LES LIMITES DU RELATIONNEL
LE CONSTAT ACTUEL
+DATA CHANGE
LES LIMITES DU RELATIONNEL
LE CONSTAT ACTUEL
+ EN UN MOT LE RELATIONNEL C’EST SUPER !
LES LIMITES DU RELATIONNEL
+ EN UN MOT LE RELATIONNEL C’EST SUPER !
LE CONSTAT ACTUEL
+ MAIS PAS POUR TOUT !
LES LIMITES DU RELATIONNEL
+ MAIS PAS POUR TOUT !
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
LA PERCÉE NOSQL
+ WELCOME TO THE JUNGLE BABY !
1 TERME, 1000 POSSIBILITÉS
LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
LA PERCÉE NOSQL
+ 4 GRANDES FAMILLES DE STORES
•Key-Value Stores
•Column-Oriented Stores
•Document-Oriented Stores
•Graph-Oriented Stores
+DIFFÉRENCES FONDAMENTALES
BEAUCOUP DE DISPARITÉS
+DIFFÉRENCES FONDAMENTALES
•Dans le Data Model
•Dans la façon de requêter la base
+ADAPTÉ À DES USE-CASES DIFFÉRENTS !
LA PERCÉE NOSQLKEY-VALUE STORES
LA PERCÉE NOSQLCOLUMN-ORIENTED STORES
LA PERCÉE NOSQLDOCUMENT-ORIENTED STORES
LA PERCÉE NOSQLGRAPH-ORIENTED STORES
LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS
+ CONNAÎTRE A MINIMA LES DIFFÉRENTS PRODUITS
•Data Model•Data Model
•Features de Requêtage
LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS
+ FAIRE LE BON CHOIX POUR SON USE-CASE + FAIRE LE BON CHOIX POUR SON USE-CASE MÉTIER !
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
FOCUS PRODUITSREDIS
+ DESCRIPTIF RAPIDE
Simplicity Speed
Reliability
FOCUS PRODUITSREDIS
+ LE DATA MODEL
id_14 � String
5 Data Types
Database
RowString commands
id_15 � List Row
id_16 � Set Row
id_17 � Sorted Set
id_18 � Hash
Row
Row
List commands
Set commands
Sorted Set commands
Hash commands
FOCUS PRODUITS
+ STRING COMMANDS
REDIS
+USAGE
•Cache Provider
•Session Manager
•Counters
•ID Generators
FOCUS PRODUITS
+ LIST COMMANDS
REDIS
+USAGE
•Real lists
•Time Series
•Queues / Workers
FOCUS PRODUITS
+ SET COMMANDS
REDIS
+USAGE
•Real Sets
•Relations
FOCUS PRODUITS
+ ZSET COMMANDS
REDIS
+USAGE
•Scores
•Inverted Index
FOCUS PRODUITS
+HASHES COMMANDS
REDIS
+USAGE
•Structured Data
FOCUS PRODUITS
+ADDITIONNAL FEATURES
•Transactions
•Publish / Subscribe
•Write to Disk
REDIS
•Write to DiskCLASSIC DUMP
APPEND ONLY
•ReplicationMASTER / SLAVES
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
FOCUS PRODUITSCASSANDRA
+ HISTORIQUE RAPIDE
FOCUS PRODUITSCASSANDRA
+ LE DATA MODEL
id_14 � {
company_name : "SQLI",
company_agence : “Lyon",
company_standard : "0472405353“
user_firstname: "Rémy",
Column Family : users
Keyspace : userAppKeyspace
Row
user_firstname: "Rémy",
user_lastname: "Girodon",
user_skill_1: ”java”,
user_skill_2: ”cassandra”
}
id_15 � {
…}
Row
id_16 � {
…}
Row
Columns
FOCUS PRODUITSCASSANDRA
+ LE DATA MODEL FAÇON SIMPLE
•Column
TRIPLET NAME / VALUE / TIMESTAMP
•Row•Row
UNE CLÉ
UN ENSEMBLE DE COLUMNS TRIÉ PAR NAME
•Column families
UN ENSEMBLE DE ROWS
FOCUS PRODUITSCASSANDRA
+ MAIS PAS SI SIMPLE !
•Column
LE NAME PEUT STOCKER DE L ’ I NFORMAT ION
( PAS UN IQUEMENT UNE STR ING ! )
•Row
PEUT CONTEN IR PLUS IEURS M I L L IONS DE
COLONNES
PAS DE SCHEMA IMPOSÉ
FOCUS PRODUITSCASSANDRA
+ LE DATA MODEL
id_14 � {
name : “www.sqli.com",
2012-09-19 11:36:12:134 : “10.33.198.67",
2012-09-19 11:36:12:628 : “10.33.198.68",
Column Family : serverConnections
Keyspace : serverAppKeyspace
Row
2012-09-19 11:36:12:628 : “10.33.198.68",
2012-09-19 11:36:12:981 : “10.33.198.67",
2012-09-19 11:36:13:062 : “10.33.198.69",
}
id_15 � {
…}
Row
id_16 � {
…}
Row
Columns
FOCUS PRODUITSCASSANDRA
+REQUÊTAGE VIA L’API
•Au niveau Row
RÉCUPÉRER TOUTES LES ROWS
RÉCUPÉRER UNE ROW VIA SA KEY
RÉCUPÉRER UNE L ISTE DE ROWS VIA
UNE L ISTE DE KEYS
FOCUS PRODUITSCASSANDRA
+REQUÊTAGE VIA L’API
•Au niveau Column
RÉCUPÉRER TOUTES L ES COLUMNS
RÉCUPÉRER UNE COLUMN V I A SON NAME
RÉCUPÉRER UNE L I S TE DE COLUMNS V I A UNE
L I S TE DE NAMES
RÉCUPÉRER UN RANGE DE COLUMNS
FOCUS PRODUITSCASSANDRA
+REQUÊTAGE VIA CQL
•SELECT * FROM users WHERE KEY = "id_14";
•
•UPDATE users
•SET "email" = "[email protected]",
• "phone" = "0472405353"
•WHERE KEY = "id_14";
FOCUS PRODUITSCASSANDRA
+REQUÊTAGE VIA CQL
•SELECT "2012-09-19 00:00:00:000"
• .. "2012-09-19 23:59:59:999"
•FROM serverConnections
•WHERE KEY = "id_14";
FOCUS PRODUITSCASSANDRA
+REQUÊTAGE VIA CQL
•CREATE INDEX email_key ON users (email);
•SELECT * FROM users
•WHERE "email" = "[email protected]";
FOCUS PRODUITSCASSANDRA
+ BUILT-IN CLUSTERING
N2 N3
Keys
10..20
Keys
20..30
N1
N5
N4
N6
Keys
0..10
Keys
30..40
Keys
40..50Keys
50..60
FOCUS PRODUITSCASSANDRA
+TUNABLE REPLICATION
N2 N3Replication
Factor = 2K1
N1
N5
N4
N6K1
FOCUS PRODUITSCASSANDRA
+TUNABLE CONSISTENCY
N2 N3Client
N1
N5
N4
N6
Reads on any node
Indicates a
Consistency level
Read repair
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
FOCUS PRODUITSMONGODB
+ DERRIÈRE LE PRODUIT, UNE COMPANY
FOCUS PRODUITSMONGODB
+ UN DATA MODEL SIMPLE
id_14 � {
firstname: "Rémy",
lastname: "Girodon",
Collection : users
Database : userAppDb
Document
lastname: "Girodon",
company: {
name : "SQLI",
agence : “Lyon",
standard : "0472405353“
},
skills: [‘java’, ‘mongodb’]
}
FOCUS PRODUITSMONGODB
+ DES FEATURES DE REQUÊTAGE AVANCÉES
db.users.find( {age: {$gte: 30} } )
db.users.find( {“company.name": ‘SQLI'} )
db.users.update( {lastname: ‘Girodon'} , {$set: {age : 34})db.users.update( {lastname: ‘Girodon'} , {$set: {age : 34})
db.users.remove({firstname: ’Girodon’})
db.users.ensureIndex( {“age”: 1} )
db.users.ensureIndex( {“skills”: 1, “company.agence”:1 } )
FOCUS PRODUITSMONGODB
+ SUPPORT API CLIENTES
FOCUS PRODUITSMONGODB
+ BUILT-IN REPLICATION
FOCUS PRODUITSMONGODB
+ BUILT-IN SHARDING
SOMMAIRE
LE CONSTAT ACTUEL
AVANTAGES ET LIMITES DU RELATIONNEL
LA PERCÉE NOSQL
QUELQUES POINTS DE CONVERGENCE
BEAUCOUP DE DISPARITÉS
PANORAMA NOSQL
FOCUS PRODUITS
FOCUS REDIS
FOCUS CASSANDRA
FOCUS MONGODB
FOCUS NEO4J
FOCUS PRODUITSNEO4J
+ DERRIÈRE LE PRODUIT, UNE COMPANY
FOCUS PRODUITSNEO4J
+ LE DATA MODEL Database : userAppDb
ID: 7152Name: RémyAge: 34Twitter: @rgirodon
ID: 10097Name:NicolasAge: 29Twitter: @nmoret
WORKS WITH
From: 01/11/2008Project: STMicro LYS
FOCUS PRODUITSNEO4J
+ LE DATA MODEL
•Les nœuds ont un ID
•Les nœuds ont des propriétes key - value
•Les arêtes ont un Label•Les arêtes ont un Label
•Les arêtes ont une direction
•Les arêtes ont des propriétes key - value•
FOCUS PRODUITSNEO4J
+ LE REQUÊTAGE
•Par Index
APPLICABLE AUX PROPRIÉTÉS DES NŒUDS ET ARÊTES
EX: RÉCUPÉRATION D’UN NŒUD PAR LA VALEUR DE SA PROPRIÉTÉ « NAME »
FOCUS PRODUITSNEO4J
+ LE REQUÊTAGE
•Par Traversal
NAVIGATION DANS LE GRAPHE À PARTIR D’UN NŒUD
CONSTRUCTION DE CHEMINS DE PARCOURS EN FONCTION D’OPTION
FOCUS PRODUITSNEO4J
+ LE REQUÊTAGE
•Exemple de Traversal (Les amis de mes amis sont mes amis…)
FOCUS PRODUITSNEO4J
+ LE REQUÊTAGE
•Exemple de Traversal (Les amis de mes amis sont mes amis…)
FOCUS PRODUITSNEO4J
+ LE REQUÊTAGE
•Par Cypher (Declarative Graphe Query Language)
FOCUS PRODUITSNEO4J
+ LES MODES D’EXÉCUTION
•Mode Embarqué
ÉCRITURE EN FICHIER
SUPPORT DES TRANSACTIONSSUPPORT DES TRANSACTIONS
API JAVA NATIVE
PERFORMANCE++
CLIENT UNIQUE À LA BASE
FOCUS PRODUITSNEO4J
+ LES MODES D’EXÉCUTION
•Mode Server
API REST UNIVERSELLE
CLIENTS MULTIPLES À LA BASECLIENTS MULTIPLES À LA BASE
FOCUS PRODUITSNEO4J
+ LES FEATURES
•Haute disponibilité
ENTERPRISE EDITION
SLAVE DATABASESLAVE DATABASE
•Online backup
ENTERPRISE EDITION
CONCLUSIONTOUS LES PROBLÈMES NE SONT PAS DES CLOUS !
NOM DU CLIENTMerci !NOM DU CLIENTMerci !