201301 - panorama nosql

70

Upload: lyonjug

Post on 21-Jun-2015

565 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 201301 - Panorama NoSQL
Page 2: 201301 - Panorama NoSQL

LE SPEAKER

+ FOLLOW ME !•• @rgirodon

RÉMY GIRODON

Page 3: 201301 - Panorama NoSQL
Page 4: 201301 - Panorama NoSQL

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

Page 5: 201301 - Panorama NoSQL

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

Page 6: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+UN DATA MODEL

NATUREL ET INTUITIF

PROPRE : NORMALISATION DES DONNÉES

RELATIONNEL EVERYWHERE

Page 7: 201301 - Panorama NoSQL

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

Page 8: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+DESIGNED FOR ACID

ATOMICITÉ

COHÉRENCE

ISOLATION

RELATIONNEL EVERYWHERE

ISOLATION

DURABILITÉ

Page 9: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+UNE OFFRE TRÈS VASTE

RELATIONNEL EVERYWHERE

Page 10: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+DATA CHANGE

LES LIMITES DU RELATIONNEL

Page 11: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+DATA CHANGE

LES LIMITES DU RELATIONNEL

Page 12: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+DATA CHANGE

LES LIMITES DU RELATIONNEL

Page 13: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+ EN UN MOT LE RELATIONNEL C’EST SUPER !

LES LIMITES DU RELATIONNEL

+ EN UN MOT LE RELATIONNEL C’EST SUPER !

Page 14: 201301 - Panorama NoSQL

LE CONSTAT ACTUEL

+ MAIS PAS POUR TOUT !

LES LIMITES DU RELATIONNEL

+ MAIS PAS POUR TOUT !

Page 15: 201301 - Panorama NoSQL

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

Page 16: 201301 - Panorama NoSQL

LA PERCÉE NOSQL

+ WELCOME TO THE JUNGLE BABY !

1 TERME, 1000 POSSIBILITÉS

Page 17: 201301 - Panorama NoSQL

LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE

Page 18: 201301 - Panorama NoSQL

LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE

Page 19: 201301 - Panorama NoSQL

LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE

Page 20: 201301 - Panorama NoSQL

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 !

Page 21: 201301 - Panorama NoSQL

LA PERCÉE NOSQLKEY-VALUE STORES

Page 22: 201301 - Panorama NoSQL

LA PERCÉE NOSQLCOLUMN-ORIENTED STORES

Page 23: 201301 - Panorama NoSQL

LA PERCÉE NOSQLDOCUMENT-ORIENTED STORES

Page 24: 201301 - Panorama NoSQL

LA PERCÉE NOSQLGRAPH-ORIENTED STORES

Page 25: 201301 - Panorama NoSQL

LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS

+ CONNAÎTRE A MINIMA LES DIFFÉRENTS PRODUITS

•Data Model•Data Model

•Features de Requêtage

Page 26: 201301 - Panorama NoSQL

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 !

Page 27: 201301 - Panorama NoSQL

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

Page 28: 201301 - Panorama NoSQL

FOCUS PRODUITSREDIS

+ DESCRIPTIF RAPIDE

Simplicity Speed

Reliability

Page 29: 201301 - Panorama NoSQL

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

Page 30: 201301 - Panorama NoSQL

FOCUS PRODUITS

+ STRING COMMANDS

REDIS

+USAGE

•Cache Provider

•Session Manager

•Counters

•ID Generators

Page 31: 201301 - Panorama NoSQL

FOCUS PRODUITS

+ LIST COMMANDS

REDIS

+USAGE

•Real lists

•Time Series

•Queues / Workers

Page 32: 201301 - Panorama NoSQL

FOCUS PRODUITS

+ SET COMMANDS

REDIS

+USAGE

•Real Sets

•Relations

Page 33: 201301 - Panorama NoSQL

FOCUS PRODUITS

+ ZSET COMMANDS

REDIS

+USAGE

•Scores

•Inverted Index

Page 34: 201301 - Panorama NoSQL

FOCUS PRODUITS

+HASHES COMMANDS

REDIS

+USAGE

•Structured Data

Page 35: 201301 - Panorama NoSQL

FOCUS PRODUITS

+ADDITIONNAL FEATURES

•Transactions

•Publish / Subscribe

•Write to Disk

REDIS

•Write to DiskCLASSIC DUMP

APPEND ONLY

•ReplicationMASTER / SLAVES

Page 36: 201301 - Panorama NoSQL

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

Page 37: 201301 - Panorama NoSQL

FOCUS PRODUITSCASSANDRA

+ HISTORIQUE RAPIDE

Page 38: 201301 - Panorama NoSQL

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

Page 39: 201301 - Panorama NoSQL

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

Page 40: 201301 - Panorama NoSQL

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É

Page 41: 201301 - Panorama NoSQL

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

Page 42: 201301 - Panorama NoSQL

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

Page 43: 201301 - Panorama NoSQL

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

Page 44: 201301 - Panorama NoSQL

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";

Page 45: 201301 - Panorama NoSQL

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";

Page 46: 201301 - Panorama NoSQL

FOCUS PRODUITSCASSANDRA

+REQUÊTAGE VIA CQL

•CREATE INDEX email_key ON users (email);

•SELECT * FROM users

•WHERE "email" = "[email protected]";

Page 47: 201301 - Panorama NoSQL

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

Page 48: 201301 - Panorama NoSQL

FOCUS PRODUITSCASSANDRA

+TUNABLE REPLICATION

N2 N3Replication

Factor = 2K1

N1

N5

N4

N6K1

Page 49: 201301 - Panorama NoSQL

FOCUS PRODUITSCASSANDRA

+TUNABLE CONSISTENCY

N2 N3Client

N1

N5

N4

N6

Reads on any node

Indicates a

Consistency level

Read repair

Page 50: 201301 - Panorama NoSQL

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

Page 51: 201301 - Panorama NoSQL

FOCUS PRODUITSMONGODB

+ DERRIÈRE LE PRODUIT, UNE COMPANY

Page 52: 201301 - Panorama NoSQL

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’]

}

Page 53: 201301 - Panorama NoSQL

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 } )

Page 54: 201301 - Panorama NoSQL

FOCUS PRODUITSMONGODB

+ SUPPORT API CLIENTES

Page 55: 201301 - Panorama NoSQL

FOCUS PRODUITSMONGODB

+ BUILT-IN REPLICATION

Page 56: 201301 - Panorama NoSQL

FOCUS PRODUITSMONGODB

+ BUILT-IN SHARDING

Page 57: 201301 - Panorama NoSQL

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

Page 58: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ DERRIÈRE LE PRODUIT, UNE COMPANY

Page 59: 201301 - Panorama NoSQL

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

Page 60: 201301 - Panorama NoSQL

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•

Page 61: 201301 - Panorama NoSQL

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 »

Page 62: 201301 - Panorama NoSQL

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

Page 63: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ LE REQUÊTAGE

•Exemple de Traversal (Les amis de mes amis sont mes amis…)

Page 64: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ LE REQUÊTAGE

•Exemple de Traversal (Les amis de mes amis sont mes amis…)

Page 65: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ LE REQUÊTAGE

•Par Cypher (Declarative Graphe Query Language)

Page 66: 201301 - Panorama NoSQL

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

Page 67: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ LES MODES D’EXÉCUTION

•Mode Server

API REST UNIVERSELLE

CLIENTS MULTIPLES À LA BASECLIENTS MULTIPLES À LA BASE

Page 68: 201301 - Panorama NoSQL

FOCUS PRODUITSNEO4J

+ LES FEATURES

•Haute disponibilité

ENTERPRISE EDITION

SLAVE DATABASESLAVE DATABASE

•Online backup

ENTERPRISE EDITION

Page 69: 201301 - Panorama NoSQL

CONCLUSIONTOUS LES PROBLÈMES NE SONT PAS DES CLOUS !

Page 70: 201301 - Panorama NoSQL

NOM DU CLIENTMerci !NOM DU CLIENTMerci !