201301 - panorama nosql

Post on 21-Jun-2015

565 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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" = "rgirodon@example.com",

• "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" = "rgirodon@example.com";

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 !

top related