formation nosql

108
Formation NoSQL

Upload: jeremie-campari

Post on 09-Jan-2017

2.884 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Formation nosql

Formation NoSQL

Page 2: Formation nosql

Ceci est un extrait d’un formation NoSQL disponible sur

http://www.eisiform.com/nosql/

Page 3: Formation nosql

Avant propos : NoSQL n’est ni une évolution, ni une révolution !

I

Page 4: Formation nosql

C’est simplement de nouvelles opportunités.

I

Page 5: Formation nosql

I - Introduction au NoSQL

I

Page 6: Formation nosql

[…] Des slides sont sautés

Page 7: Formation nosql

4. Stocker les données en fonction des intentions d’usage

I-4. Penser usage

Page 8: Formation nosql

Quels objectifs ?

- Comprendre la notion d’usage de la donnée

- Avoir une première vision de la modélisation des données en fonction de l’usage

I-4. Penser usage

- Quelles sont les conséquences d’une mauvaise modélisation de la donnée

Page 9: Formation nosql

La chocolaterie

I-4. Penser usage

Page 10: Formation nosql

La chocolaterie

?I-4. Penser usage

Page 11: Formation nosql

Le relationnel dans la réalité

Mon article de blog

Commentaires

Table articles

Table commentairesTable utilisateurs

I-4. Penser usage

Page 12: Formation nosql

Mon article de blog

Commentaires

Le NoSQL dans la réalité

I-4. Penser usage

Stockage de donnée déjà packagées

Titre : Mon article de blog

Contenu :

Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Page 13: Formation nosql

Une modélisation loupée

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

I-4

Page 14: Formation nosql

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … } ]

I-4

Comment récupérer les 10 derniers commentaires postés sur le blog ?

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … }]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … }]

Titre : Mon article de blog

Contenu :Commentaires : [ { user, contenu … }, { user, contenu … }, { user, contenu … }]

Page 15: Formation nosql

A retenir

Le NoSQL demande de penser usage

Impossible de créer le schéma de la donnée sans connaitre l’expérience utilisateur finale.

NoSQL est très performant pour un usage précis

En packageant toutes les données relatives à un usage précis, NoSQL ne requête qu’un emplacement au lieu de « n » emplacements.

I-4. Penser usage

Le modèle relationnel est plus flexible

Dans le modèle relationnel, la donnée peut être assemblée à souhait quelque soit la demande.

En NoSQL, un besoin non anticipé peut coûter très très cher en temps et donc en performance.

Page 16: Formation nosql

5. Différence entre le NoSQL et le Big Data

I-5. NoSQL et BigData

Page 17: Formation nosql

Pourquoi s’intéresser au Big data ?

- Comprendre en quoi NoSQL est un outil de choix pour le Big Data

- Savoir distinguer la limite entre Big Data et NoSQL

I-5. NoSQL et BigData

- Saisir l’étendu du Big Data

Page 18: Formation nosql

I-5. NoSQL et BigData

Qu’est ce que le Big Data ?

Page 19: Formation nosql

I-5. NoSQL et BigData

Manipulation de très gros volumes de données provenant de sources hétérogènes.

Big data :

Page 20: Formation nosql

- Gros volume de données

PROBLEME

- Besoin de performance dans le traitement et la manipulation des données

CONSEQUENCE

- Besoin de machines en cluster

- Besoin d’un design de la donnée performant et donc pensé en fonction de l’usage plutôt que des relations

SOLUTION

NoSQL

I-5. NoSQL et BigData

Page 21: Formation nosql

- Données provenant de sources hétérogènes.

PROBLEME

- Besoin d’un design de donnée semi-structuré plutôt que structuré.

SOLUTIONNoSQL

- Données non structurée que l’on va essayer d’organiser pour pouvoir les traiter.

CONSEQUENCE

- La diversité initiale empêche de respecter un format rigide de donnée finale.

I-5. NoSQL et BigData

Page 22: Formation nosql

[…] Des slides sont sautés

Page 23: Formation nosql

II - La scalabilité des bases de donnée

II

Page 24: Formation nosql

2. Le théorème de CAP

II-2. Théorème de CAP

Page 25: Formation nosql

[…] Des slides sont sautés

Page 26: Formation nosql

Finalement, CAP revient à dire…

Partitionnement (tolérance aux pannes)

II-2. Théorème de CAP

OU

Disponibilité

Cohérence

Page 27: Formation nosql

Mais dans la réalité, tout est en nuance…

Partitionnement (tolérance aux pannes)

Disponibilité

Cohérence

II-2. Théorème de CAP

OU

Page 28: Formation nosql

Et en posant le problème autrement…

Partitionnement (tolérance aux pannes)

Temps de réponse

Cohérence

Temps réel

Sécurité

OU

II-2. Théorème de CAP

C’est LE problème.

Page 29: Formation nosql

D’ou vient exactement ce temps de réponse ?

Crédits: kleppmann.com II-2

Page 30: Formation nosql

C dans CAP est différent de C dans ACID

ACID Cohérence de la donnée à l’échelle d’un seul noeud.

CAP Cohérence de la donnée à l’échelle d’un cluster.

II-2. Théorème de CAP

Page 31: Formation nosql

Le cluster recherche de la stabilité

II-2. Théorème de CAP

• Lorsque la donnée est cohérente dans le cluster, tous les noeuds renvoient le même contenu à la lecture.

• Le problème survient lorsqu’une requête insère une nouvelle donnée et que celle-ci doit être propagée dans les réplicas.

Page 32: Formation nosql

La différence entre Relationnel et NoSQL

• Relationnel est normalisé donc les transactions sont essentielles et très fréquentes. Utilisation intensive de l’ACID.

• Or l’ACID sur un cluster est coûteux en temps

• Il scale plus ou moins facilement sur un cluster en fonction du niveau de cohérence demandé

RelationnelNoSQL

II-2

• NoSQL est pensé pour limiter le nombre de relations entre les tables donc limiter le besoin de l’ACID. Donc plus performant.

Page 33: Formation nosql

Les bases de donnée en fonction de la cohérence

Disponibilité

Tolérant aux pannesCohérence

CouchDb Cassandra

RiakMysql

PostgreSQL

CouchBase Mongodb

HBaseII-2. Théorème de CAP

Page 34: Formation nosql

[…] Des slides sont sautés

Page 35: Formation nosql

4. Architecturer le cluster : Distribution et duplication des

données

II-4. Sharding et replication

Page 36: Formation nosql

II-4. Sharding et replication

Duplication : Replica-set

Master

READ

READREAD

WRITEWRITE

SlaveSlave

Page 37: Formation nosql

II-4. Sharding et replication

Duplication : Replica-set

Slave SlaveREADREAD

Page 38: Formation nosql

II-4. Sharding et replication

Duplication : Replica-set

Slave MasterREADREAD

Page 39: Formation nosql

II-4. Sharding et replication

Distribution : Sharding

M

S S

M

S S

M

S S

product facture, order users

productfacture, order users product facture, orderusers

Page 40: Formation nosql

II-4. Sharding et replication

Distribution : Sharding

M

S

M

S

M

S

Minimum pour 75 Go sur 3 shards25 Go 25 Go 25 Go

25 Go 25 Go 25 Go

- 6 serveurs pour les données - 3 serveurs arbitres

Page 41: Formation nosql

III - Développer avec NoSQL

III

Page 42: Formation nosql

III-2. Points communs

2. Points communs entre les bases NoSQL

Page 43: Formation nosql

Quel points communs à toutes les bases NoSQL ?

Aucun.

III-2. Points communs

Page 44: Formation nosql

Quel points communs à la plupart des bases NoSQL ?

- Un schéma implicite

- L’absence de relations

- L’absence du language SQL

III-2. Points communs

- L’open source

Page 45: Formation nosql

III-3. Modélisation

3. Modélisation de la donnée

Page 46: Formation nosql

III-3. Modélisation

Rappel : Fonctionnement des bases relationnelles

- Support de l’ACID (transactions)

- Aucune redondance des données

- Des entités décrites par des métadonnée fortement typées

- Utilisation de jointures

- Les entités sont liées par des relations

- Les métadonnées ne sont pas dupliquée à chaque ligne

Page 47: Formation nosql

III-3

Rappel : Distribution et duplication en NoSQL

- Distribution de la donnée

Factures Clients Produits

Produits FacturesClients

- Replication de la donnée

Serveur 1 Serveur 2 Serveur 3

Page 48: Formation nosql

III-3

Factures Clients Produits

Produits FacturesClients

Serveur 1 Serveur 2 Serveur 3

Problème : Partitionnement des données

Dans ce cas de figure les jointures ne sont pas performantes

Page 49: Formation nosql

Solution apportée par le NoSQL

La donnée contient l’intégralité des informations nécessaires pour une requête.

agrégat

III-3. Modélisation

Page 50: Formation nosql

La notion d’agrégat

- Une unité d’information complexe et isolée (semi-structurée)

- Identifiée par un élément racine (id)

- Traité / Stocké / Echangé de manière atomique

- On y accède uniquement par la racine

III-3. Modélisation

Page 51: Formation nosql

[…] Des slides sont sautés

Page 52: Formation nosql

L’agrégat en NoSQL

- Rapide car pas d’agrégat à construire lors de la requêteAVANTAGES

INCONVENIENT

- Entraine la duplication des données

- Plus besoin de transaction car l’agrégat est atomique avec lui même

- Des données à mettre à jours à plusieurs endroits

- L’agrégat est désignée pour un usage précis et peu flexible

III-3. Modélisation

Page 53: Formation nosql

L’agrégation via les requêtes SQL

- Extrême flexibilité dans le requêtage des donnéesAVANTAGES

INCONVENIENT

- Besoin de transactions pour modifier les différentes tables en « simultané »

- Aucune redondance de la donnée, ni des métadonnées

- Lenteur de l’exécution de la requête du à la formation de l’agrégat

- Difficulté pour distribuer la donnée sur le cluster, dû aux dépendances entre les tables

III-3. Modélisation

Page 54: Formation nosql

III-4. Inconvénients

4. De nouvelles problématiques de développement

Page 55: Formation nosql

III-4. Inconvénients

Problématique 1 : Schéma implicite

User

{ name: "Franck", age: 20 }

{ name: "Franck" }

{ name: "Franck", age: "20" }

{ book: "Colère de l’ombre", publication: 2005 }

Page 56: Formation nosql

[…] Des slides sont sautés

Page 57: Formation nosql

III-4. Inconvénients

Problématique 2 : Requêtage propriétaire

db.collection.find( {} )

MATCH (all) RETURN all

GET /collection

DESCRIBE keyspaces;

MongoDb

Neo4j

CouchDB

Cassandra

Page 58: Formation nosql

III-4. Inconvénients

Problématique 3 : Plus de normalisation

- Des données peuvent être dupliquées

- Les update / insert / delete doivent être réalisé à plusieurs endroits

- Des scripts batch peuvent vérifier l’état de la donnée ou la corriger

Page 59: Formation nosql

III-4. Inconvénients

Problématique 4 : Gestions des transactions ACID

Page 60: Formation nosql

[…] Des slides sont sautés

Page 61: Formation nosql

III-4. Inconvénients

Problématique 5 : Gestions des modifications concurrentes

Page 62: Formation nosql

[…] Des slides sont sautés

Page 63: Formation nosql

IV - Les différents types de bases

IV

Page 64: Formation nosql

IV-1. Clé-valeur

1. Bases clé-valeur

Page 65: Formation nosql

IV-1. Clé-valeur

S1

RAM : Hash map sessionSession 1 -> JérémieSession 2 -> FrédéricSession 3 -> John

Request -> Session 3

Le besoin : Mémoire partagée

Page 66: Formation nosql

IV-1. Clé-valeur

S4

S2

S1

S3Load

bal

ance

rRequest -> Session 3

Session 1 -> JérémieSession 2 -> Frédéric

Session 3 -> JohnSession 4 -> Franck

Session 5 -> JohnSession 6 -> Franck ?

RAM : Hash map session

Le besoin : Mémoire partagée

Page 67: Formation nosql

[…] Des slides sont sautés

Page 68: Formation nosql

Autre besoin : Queue

- Envoi d’email est très lent

- Inscription -> Email de validation

- Envoi de l’email en différé

IV-1. Clé-valeur

Page 69: Formation nosql

[…] Des slides sont sautés

Page 70: Formation nosql

Cas d’utilisation

Page 71: Formation nosql

[…] Des slides sont sautés

Page 72: Formation nosql

Découverte de Redis

IV-1. Clé-valeur

set "formation:the.mail.queue:state" "enable"

Commande redis

Clé respectant le standard Valeur

Page 73: Formation nosql

Découverte de Redis : Types de données

IV-1. Clé-valeur

- String (set, get, incr, incrby…)

- List (lpush, rpush, lindex, lrange…)

- Hash (hset, hmset, hget…)

- Set (sadd, sdiff, sunion…)

- Sorted set (zadd, zscore, zrange…)

Page 74: Formation nosql

[…] Des slides sont sautés

Page 75: Formation nosql

VI-2. Colonnes

2. Bases colonnes

Page 76: Formation nosql

[…] Des slides sont sautés

Page 77: Formation nosql

Cas d’utilisation

Page 78: Formation nosql

Fonctionnalité Ebay : Likes, Own, Want

Page 79: Formation nosql

Fonctionnalité Ebay : Exemple des likes

Crédits : Ebay Tech blog

Page 80: Formation nosql

Fonctionnalité Ebay : Exemple des likes

Crédits : Ebay Tech blog

Page 81: Formation nosql

Fonctionnalité Ebay : Exemple des likes

Crédits : Ebay Tech blog

Page 82: Formation nosql

Fonctionnalité Ebay : Exemple des likes

Crédits : Ebay Tech blog

Page 83: Formation nosql

Fonctionnalité Ebay : Performances finales

Crédits : Ebay Tech blog

Mysql : ~ 3 ms / requête Cassandra : ~ 0.12 ms / requête

Page 84: Formation nosql

IV-3. Documents

3. Bases documents

Page 85: Formation nosql

IV-3. Documents

Les besoins

- Création d’entités classique (user, facture, produits…)

- Une majorité de requête read et peu en write

- Savoir à l’avance les requêtes que l’on va faire

+ Populaire

Page 86: Formation nosql

IV-3. Documents

Les bases du modèle de donnée

- Base de donnée -> Collection -> DocumentsBase de donnée Table Rows

- Donnée semi-structurées en JSON{ user: jeremie, hobbies: [technologie, sport]}

Page 87: Formation nosql

Construction du modèle d’un blog

- Afficher l’article sur la page article et les 10 premiers commentaires. Charger les suivants si l’utilisateur scroll.

- Afficher le résumé des 5 derniers articles sur la page d’accueil, le top 3 des articles et les 2 derniers commentaires

- Les auteurs peuvent se connecter pour rédiger des articles et ont un ou des rôles spécifiques (admin, rédacteur, correcteur…)

IV-3. Documents

- Lister les articles d’un auteur

Page 88: Formation nosql

[…] Des slides sont sautés

Page 89: Formation nosql

IV-4. Graphes

4. Bases graphes

Page 90: Formation nosql

Besoin : Relations nombreuses et complexes

Relation bi-directionelle

Relation directionelle

Entité de type différent

Personne Voiture

Relation qui a plus de poids

Emprunte à

Relation nommée

Page 91: Formation nosql

[…] Des slides sont sautés

Page 92: Formation nosql

Pourquoi choisir une base graphe ?

- Facilité de requêtage dans le graphe

- Haute performance sur les graphes

- ACID + Forte cohérence dans le cluster

IV-4. Graphes

Page 93: Formation nosql

[…] Des slides sont sautés

Page 94: Formation nosql

V - Vers le NewSQL ?

V

Page 95: Formation nosql

V-3. Etat du NewSQL

1. Notion de NewSQL

Page 96: Formation nosql

Google Megastore

We believe it is better to have application programmers deal with performance problems due to overuse of

transactions as bottlenecks arise, rather than always coding around the lack of transactions.

V-1. Notion de NewSQL

Page 97: Formation nosql

[…] Des slides sont sautés

Page 98: Formation nosql

Le NewSQL aujourd’hui

V-1. Notion de NewSQL

Page 99: Formation nosql

V-2. In-Memory et BigData

3. NewSQL in-memory et BigData

Page 100: Formation nosql

Usage classique de VoltDB

Un important flux de données entrantesIngère

Nécessite un traitement par évènement pour analyser les résultats en temps réel.

AnalyseDécide

Exporte les données vers une base persistence pour du stockage ou du batch ultérieur par exemple(Export)

V-2. In-Memory et BigData

Page 101: Formation nosql

Crédits : VoltDB

Big Data streaming architecture

V-2. In-Memory et BigData

Page 102: Formation nosql

VI - Elastic Search

VI

Page 103: Formation nosql

1. Particularités de la base Elastic Search

VI-1. Spécificités Elasticsearch

Page 104: Formation nosql

[…] Des slides sont sautés

Page 105: Formation nosql

VI-1. Spécificités Elasticsearch

Elastic Search

- Bâti autour de Apache Lucene

- Ajoute la persistence (stockage) des données à Lucene

- Simplifie la configuration et unifie / approfondit le requêtage

- Base de donnée document NoSQL ayant un index inversé

Page 106: Formation nosql

2. Expérimentations sur elastic search

VI-2. Expérimentations

Indexation, Requêtage, Filtrage, Facette, Aggrégation, géolocalisation, catégorisation…

Page 107: Formation nosql

[…] Des slides sont sautés

Page 108: Formation nosql

Ceci est un extrait d’un formation NoSQL disponible sur

http://www.eisiform.com/nosql/