relational databases & nosql databases

73
BASES DE DONNÉES RELATIONNELLES & NOSQL Cédric Villa - @zestprod - 18/09/2015 DevelopR6 - CNRS

Upload: cedric-villa

Post on 13-Apr-2017

132 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Relational databases & NoSQL databases

BASES DEDONNÉES

RELATIONNELLES & NOSQL

Cédric Villa - @zestprod - 18/09/2015 DevelopR6 - CNRS

Page 2: Relational databases & NoSQL databases

HISTOIRE

Page 3: Relational databases & NoSQL databases
Page 4: Relational databases & NoSQL databases

DIFFERENCESSTRUCTURELLES

Page 5: Relational databases & NoSQL databases

BASES DE DONNÉESRELATIONNELLES

Page 6: Relational databases & NoSQL databases

SCHÉMA RELATIONNELFortement normalisé

Page 7: Relational databases & NoSQL databases

SCHÉMA RELATIONNELExtraction précise

Métaphorebibliothécaire pointilleux

Page 8: Relational databases & NoSQL databases

SCHÉMA RELATIONNEL

« Documented by design »

Page 9: Relational databases & NoSQL databases

SQL

Page 10: Relational databases & NoSQL databases

ACIDAtomicitéCohérenceIsolation

Durabilité

Page 11: Relational databases & NoSQL databases

NOSQLNOT ONLY SQL

Page 12: Relational databases & NoSQL databases

Structure imbriquée

DOCUMENT BASEDDATABASE

Page 13: Relational databases & NoSQL databases

DOCUMENT BASEDDATABASEStructure imbriquée

Web 2.0 JSON (REST)

Ergonomie

Page 14: Relational databases & NoSQL databases

DOCUMENT BASEDDATABASEStructure imbriquée

Page 15: Relational databases & NoSQL databases

Structure imbriquée

Pas de relationsdans le SGBD

Pas ACID

DOCUMENT BASEDDATABASE

Page 16: Relational databases & NoSQL databases

Système de cache

Construire et retourner un format adapté(ex. elastic search)

Plus difficile à débogguer

DOCUMENT BASEDDATABASE

Page 17: Relational databases & NoSQL databases

SCHEMA

LESSDATABASESBDD sans schéma

Page 18: Relational databases & NoSQL databases

SCHEMALESS +

• Agilité (liberté lors du développement)

• Productivité

Page 19: Relational databases & NoSQL databases

SCHEMALESS -

• Extraction de l’information

• Métaphore du tiroir de bureau

• Difficulté de migration

Page 20: Relational databases & NoSQL databases
Page 21: Relational databases & NoSQL databases

MODÈLES CLÉS / VALEURSRedis, (virtuellement n’importe quel NoSQL), etc.

SET foo bar

GET foo => bar

Page 22: Relational databases & NoSQL databases

HYBRIDESEx: Postgres et le type « hstore »

Page 23: Relational databases & NoSQL databases

BDD CÔTÉ CLIENTHTML5 - Web SQL Database + Web Storage

Page 24: Relational databases & NoSQL databases

DÉVELOPPEMENTET AGILITÉ

Page 25: Relational databases & NoSQL databases

DEVELOPPER AVEC UNE BDD

• Abondance de doc, frameworks, etc.

• Tous les langages

Page 26: Relational databases & NoSQL databases

OBJECTRELATIONALMAPPING

Mapping objet relationnel

Page 27: Relational databases & NoSQL databases

MAPPING OBJET

Page 28: Relational databases & NoSQL databases

MAPPING OBJET

• On manipule des objets

• Object.create(attribute: « value », etc.)

• Objet.find(name: « john »)

• Les requêtes sont générées dans le language du SGDB

Page 29: Relational databases & NoSQL databases

MAPPING OBJET

• + Documentation: Dans le modèle

• + On peut ignorer le SGDB derrière (différences entre développement et production)

Page 30: Relational databases & NoSQL databases

MAPPING OBJET

• NoSQL Idem que pour BDD relationnelles

• Avantages

• ++ Documentation: dans le modèle

• + Encore moins de gestion de la BDD

Page 31: Relational databases & NoSQL databases

MAPPING OBJET

• Semble simple

• Ce n’est pas « fool-proof »

• boucle for + modification en base

Page 32: Relational databases & NoSQL databases

PERFORMANCES

Page 33: Relational databases & NoSQL databases

PERFORMANCES

• Dépendent:

• De la RAM

• Des entrées/sorties du stockage (I/O)

• Du CPU

Page 34: Relational databases & NoSQL databases

AVANT D’ENVISAGERUN PLUS GROS SERVEUR

• Mise en cache

• D’une page complète (ou 304)

• D’un fragment HTML

• Du résultat d’une requête

Page 35: Relational databases & NoSQL databases

BASES DE DONNÉES

RAPIDESRedis

Memcached

Page 36: Relational databases & NoSQL databases

BDD RAPIDES

• En RAM

• Pas d’écriture disque(systématique)

• Cluster

Page 37: Relational databases & NoSQL databases

BDD RAPIDES

• Mise en cache

• Données extraites

• Fragments HTML

• Sessions

• Files d’attentes

Page 38: Relational databases & NoSQL databases

BDD RAPIDES

• Pas de persistence / ACID sinon:pas mieux que BDD relationnelle

Page 39: Relational databases & NoSQL databases

SCALING(MISE À L’ÉCHELLE)

Page 40: Relational databases & NoSQL databases

VERTICAL SCALING

Page 41: Relational databases & NoSQL databases

VERTICAL SCALING

4 Go RAM2 CPU1 HDD 5400 RPM

Page 42: Relational databases & NoSQL databases

VERTICAL SCALING

16 Go RAM 8 CPU 1 SSD (x100)

Page 43: Relational databases & NoSQL databases

SI GOOGLE FAISAIT ÇA

• Connait 30 trillions de documents

• Crawle 20 milliards de pages / jour

Page 44: Relational databases & NoSQL databases
Page 45: Relational databases & NoSQL databases

RETOUR À LA RÉALITÉ

• 2 millions d’ordinateurs répartis

• dans +60 data centers

• sur le globe

Page 46: Relational databases & NoSQL databases

HORIZONTAL SCALING

Page 47: Relational databases & NoSQL databases

PET VS CATTLE

Page 48: Relational databases & NoSQL databases

HORIZONTAL SCALING

Page 49: Relational databases & NoSQL databases

HORIZONTAL SCALING

Page 50: Relational databases & NoSQL databases

HORIZONTAL SCALING

Page 51: Relational databases & NoSQL databases

HORIZONTAL SCALING

Page 52: Relational databases & NoSQL databases

MISE À L’ÉCHELLE

Méthode (ex.) Technologie Mise en oeuvre

Code Déploiement / Provisionning

Puppet, Docker, etc. Trivial

Stockage File System en réseau

AWS-S3, NFS, etc. Trivial

BDD ? ? ?

Page 53: Relational databases & NoSQL databases

load balancer

SQL: MASTER / MASTER

Page 54: Relational databases & NoSQL databases

load balancer

Résultat

✓ Cohérence (ACID)

✓ Disponibilité

• Limitation par I/O

Page 55: Relational databases & NoSQL databases

load balancer

Méthode adaptée pour

• Garantir la disponibilité d’une base

Pas adaptée pour

• Scaling horizontal

Page 56: Relational databases & NoSQL databases

THÉORÈME CAP• Dans un système distribué,

impossible de garantir en même temps:

• Cohérence (tous les clients partagent la même vue des données)

• Disponibilité(lecture / écriture pour tous les clients)

• Tolérance au partionnement(le système fonctionne malgré la séparation physique des données)

Page 57: Relational databases & NoSQL databases

load balancer

MongoDB, partitionnement

Page 58: Relational databases & NoSQL databases

load balancer

Théorème de CAP

✓ Cohérence

• Disponibilité

✓ Tolérance au partionnement

Page 59: Relational databases & NoSQL databases

CAP - COMPROMIS (QUELQUES EXEMPLES)

Availability(disponibilité)

Consistency(cohérence)

Partition Tolerance Data Models

MySQL / Postgres oui oui - Relationnel

MongoDB - oui oui Document

Redis - oui oui Key-Value

Cassandra oui - oui Orienté Colonne

CouchDB oui - oui Document

* utilisation du SGBD par défaut

Page 60: Relational databases & NoSQL databases

BASEBasically Available

Soft stateEventual consistency

Page 61: Relational databases & NoSQL databases

•Les données

•sont temporaireset pas à jour

•doivent être « réconciliée »

•vont finir par être cohérentes

Page 62: Relational databases & NoSQL databases

•Elastic Search

•Cassandra (Facebook)

•Dynamo (Amazon)

•Oracle NoSQL Database

•Riak

Page 63: Relational databases & NoSQL databases

QUELLE BDDUTILISER POUR

MON APPLICATION ?

Page 64: Relational databases & NoSQL databases

PROBLEMES

• Abondance de solutions

• Contradictions

• Buzz / Hype et évolutions

Page 65: Relational databases & NoSQL databases

THE RIGHTTOOL FOR THE RIGHT

JOBLe bon outil

pour le bon usage.

Page 66: Relational databases & NoSQL databases

CHOIX D’UNE BASE DE DONNÉE

• Attention au « One size fits all »

• 1 marteau = tous les problèmes sont des clous

• Pas optimal

• Arrachage de cheveux

Page 67: Relational databases & NoSQL databases

DIVISER LE PROBLÈME EN SOUS PROBLÈMES

• Plusieurs technologies de BDD

• ex: Redis + Postgres + MongoDB

• Microservices / machines virtuelles

• Chaque techno est adaptée à un sous-problème

Page 68: Relational databases & NoSQL databases

CONNAITRE PLUSIEURS TECHNOLOGIES

• Forces, faiblesses

• Les essayer, se familiariser

• Identifier un problème qui nécessite une BDD en particulier

Page 69: Relational databases & NoSQL databases

SE POSER LES BONNES QUESTIONS

• Ex pour Google

• Est-ce que c’est ok d’afficher une donnée pas à jour ?

• Est-ce que je dois réduire:

• Le temps de crawling ?

• Ou le temps de traitement des requêtes ?

Page 70: Relational databases & NoSQL databases

EX: CRAIGSLIST (PETITES ANNONCES)

• MySQL

• Memcached

• Redis

• MongoDB

• Sphinx

• Filesystem

Page 71: Relational databases & NoSQL databases

EX: CRAIGSLIST (PETITES ANNONCES)

• SQL (MySQL)

• Vertical (SSD) + RAM

• Horizontal

• Cache(consultation 99%)

Page 72: Relational databases & NoSQL databases

EX: CRAIGSLIST (PETITES ANNONCES)

• NoSQL (MongoDB)

• Utilisé pour les archives

• Schemaless

• Scaling

Page 73: Relational databases & NoSQL databases

• http://instagram-engineering.tumblr.com/post/40781627982/handling-growth-with-postgres-5-tips-fromScaling Postgres (Instagram)

• https://muut.com/blog/technology/redis-as-primary-datastore-wtf.htmlUn mec qui a détourné Redis pour son forum

• http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/Titre « troll » mais très instructif (Diaspora, problèmes de MongoDB dans la vraie vie)

• https://www.percona.com/live/mysql-conference-2012/sessions/living-sql-and-nosql-craigslist-pragmatic-approachCraigslist - Cohabitation de SQL et de NoSQL