NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... •...

35
NoSQL 101 Premiers pas SQL vs. NoSQL 1

Transcript of NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... •...

Page 1: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

NoSQL 101Premiers pas

SQL vs. NoSQL1

Page 2: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Qui suis-je ?• Adrian-Gabriel CHIFU

• www.lsis.org/chifua

[email protected]

• MCF - FEG, AMU; LSIS

• Ph.D. - Recherche d’Information

• Thématiques de recherche : RI, TAL, Apprentissage, BDD

2

Page 3: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Objectifs (centraux) • Principes et définitions

• SQL vs. NoSQL

• Modélisation, structures

• Algorithmes

• Outils formels et technologies (MongoDB)

• Exercises3

Page 4: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Objectifs (aujourd’hui)• Introduction

• Définitions et principes

• NoSQL vs. SQL

• Types de NoSQL

• Exemples

4

Page 5: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

References • Livres:

• Getting Started with NoSQL (Gaurav Vaish)

• Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement (Eric Redmond and Jim R. Wilson)

• Data Access for Highly-Scalable Solutions: Using SQL, NoSQL, and Polyglot Persistence (John Sharp, Douglas McMurtry, Andrew Oakley, Mani Subramanian, Hanzhong Zhang)

• Resources en ligne:

• http://www.tutorialspoint.com/mongodb/

• http://www.tutorialspoint.com/mongodb_terminal_online.php

5

Page 6: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Introduction• La quantité énorme de données

• SRGBD (RDBMS)

• Modèle relationnel:

• E. F. Codds (1970) - "A relational model of data for large shared data banks"

• Programmation serveur-client

• Stockage de données structurées (applications web et business)

6

Page 7: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Règles ACID - BDR

• Atomicité

• Consistence

• Isolation

• Durabilité

7

Page 8: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Systèmes distribués• Plusieurs ordinateurs et logiciels qui communiquent par

le réseau (LAN, ou WAN).

• Plusieurs types de configurations:

• Unité centrale (mainframe)

• Postes de travail (workstations)

• PCs

• Interaction, partage de resources → but commun

8

Page 9: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

SD: Avantages• Fiabilité

• Scalabilité

• Partage de ressources

• Flexibilité

• Rapidité

• Système ouvert

• Performance

9

Page 10: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

SD: Désavantages

• Dépannage

• Logiciels

• Réseau

• Sécurité

10

Page 11: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Scalabilité• L'abilité de développement pour attendre les les besoins de

l'entreprise (équipement , communication et logiciels)

• Exemple: application web

• But: permettre l'accès pour plus d'utilisateurs

• Solution: rajout d'équipement ou changement d'équipement (l'application ne change pas)

• Scalabilité:

• Verticale

• Horisontale (utile pour les systèmes NoSql)

11

Page 12: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Qu'est-ce que le NoSQL ?• Un système non-relationnel de gestion de bases de

données

• Fait pour des systèmes distribués avec des larges besoins de stockage (Google ou Facebook, plusieurs TO/jour)

• Pas besoin d'un schéma fixe

• Jointures à éviter

• Scalabilité horizontale

12

Page 13: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Pourquoi NoSQL ?• Volumétrie des données

• Graphs sociaux, données de géolocalisation, contenu généré par utilisateurs, logs, etc.

• Besoin d'exploiter ces données

• SQL n'est pas fait pour ce genre de tâche

13

Page 14: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

NoSQL: où ?• Données sociales

• Traitement de l'information

• Enregistrement

• Analyse géo-spatiale

• La modélisation moléculaire

• etc.14

Page 15: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

NoSQL: quand ?• Gros volume de données

• Beaucoup de lectures / écritures

• Économique

• Schéma flexible

• Pas de transactions

• ACID n'est pas important

• Pas de jointures

15

Page 16: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Exemples• Graph social

Eachrecord:UserID1,UserID2

Separaterecords:UserID,first_name,last_name,age,gender,...

Task:Findallfriendsoffriendsoffriendsof...friendsofagivenuser.

• Wikipedia

Largecollectionofdocuments

Combinationofstructuredandunstructureddata

Task: Retrieve all pages regarding athletics of Summer Olympicbefore1950.

16

Page 17: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

SRGBD vs. NoSQL

• Données structurées et organisées- Structured query language (SQL)

• Données et relations stockées séparément dans des tableaux

• LMD et LDD

• Consistence stricte

17

• Not Only SQL

• Pas de langage déclaratif pour les requêtes

• Stockage: paire clé-valeur, colonne, document, graph

• Consistence éventuelle plutôt que propriétés ACID

• Données non-structurées et imprévisibles

• La théorème CAP

• La priorité pour la haute performance, disponibilité et scalabilité

• Transaction BASE

Page 18: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Mythes

• NoSQL remplace SQL

• NoSQL est mieux / pire que SQL

• SQL vs. NoSQL: distinction claire

• Le langage / cadre décide quelle base de données

18

Page 19: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Théorème CAP (Brewer) • CAP

• Consistency

• Availability

• Partition Tolerance

• CA

• CP

• AP

19

Page 20: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

NoSQL pour / contre• Avantages

• Scalabilité élevée

• Calcul distribué

• Coût bas

• Schéma flexible, données semi-structurées

• Relations simples

20

• Désavantages

• Pas de standard

• Capabilités de requêtage limitées

• Programmation peut-être compliquée

Page 21: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

BASE

• Basically Available

• Soft state

• Eventual consistency

• (Consistence laissée de côté)

21

Page 22: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Types de bases NoSQL

• Key-value stores

• Column-oriented

• Document-oriented

• Graph-oriented

22

Page 23: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Key-valued• Le plus basique type

• Gère beaucoup de données

• Basé sur l'article Dynamo d'Amazon’s

• Stockage de données sans schéma

• Tableau hash, clé unique, valeur chaine de caractères, JSON, BLOB (basic large object) etc.

• Clés: strings, hashes, lists, ensembles, ensembles ordonnés; valeurs associées à ces clés

• Exemple: "Name" - "Robin"

• Clés-valeurs utilisés comme: collections, dictionnaires, arrays associatives, etc.

• Clé-valeur: AP de Théorème CAP

• Utile: contenu pannier, valeurs individuelles schéma de couleurs, URI d'une page, numéro de compte

• Exemples: Redis, Dynamo, Riak, etc.

23

Page 24: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Column-oriented• Fonctionne sur les colonnes, chaque colonne est traité

individuellement

• Les valeurs d'une colonne sont stockes d'une manière contiguë

• Données dans des fichiers colonne spécifiques

• Les processeurs de requêtes fonctionnent aussi sur les colonnes

• Toutes les données des fichiers colonne ont le même type, idéale pour compression

• Augmente la performance des requêtes (on peut accéder des données colonne spécifiques)

• Performance élevée pour des requêtes aggregation (e.g. COUNT, SUM, AVG, MIN, MAX).

• Entrepôts de données, business intelligence, customer relationship management (CRM)

• Exemples: BigTable, Cassandra, SimpleDB, etc.

24

Page 25: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Document-oriented• Une collection de documents

• Les données sont stockées dans des documents

• Un document est une collection clés-valeurs où la clé donne accès à sa valeur

• Les documents ne sont pas forcement, soumis à un schéma, ils sont flexibles et faciles à changer

• Documents stockés dans des collections pour grouper des different types de données

• Documents: multiple pairs de clé-valeur, clé-arrays, où documents imbriqués

• Exemples: MongoDB, CouchDB, etc.

25

Page 26: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Document-oriented

26

Modèle relationnel Document-oriented

Tableaux Collections

Lignes Documents

Colonnes Paires clé-valeur

Jointures pas disponible

Page 27: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Graph-oriented• Données stockés dans un graph

• Manière élégante de stocker et representer tout type de données

• Collection de noeuds et arcs

• Chaque noeud représente une entité et chaque arc représente une relation entre deux entités

• Chaque noeud and arc sont définis par un ID unique

• Chaque noeud connait ses noeuds adjacentes

• Le coût pour un pas local est constant, quand le nombre de noeuds augmente

• Index pour recherches

• Exemples: OrientDB, Neo4J, Titan, etc.

27

Page 28: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Graph-oriented

28

Modèle relationnel Graph-oriented

Tableaux Noeuds et arcs

Lignes Noeuds

Colonnes Paires clé-valeur

Jointures Arcs

Page 29: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Ils utilisent NoSQL• Google

• Facebook

• Mozilla

• Adobe

• Foursquare

• LinkedIn

• Digg

29

Page 30: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Tableaux SQL vs. Document NoSQL

{ISBN:9780992461225,title:"JavaScript:NovicetoNinja",author:"DarrenJones",format:"ebook",price:29.00}

{ISBN:9780992461225,title:"JavaScript:NovicetoNinja",author:"DarrenJones",year:2014,format:"ebook",price:29.00,description:"LearnJavaScriptfromscratch!",rating:"5/5",review:[{name:"AReader",text:"ThebestJavaScriptbookI'veeverread."},{name:"JSExpert",text:"Recommendedtonoviceandexpertdevelopersalike."}]}

30

Page 31: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Pas de schéma

db.book.insert(ISBN:9780994182654,title:"JumpStartGit",author:"ShaumikDaityari",format:"ebook",price:29.00);

31

• SQL: on doit créer un schéma (tableaux, clés, relations, indexes)

• NoSQL: on peut rajouter un document dans une base qui n'existe pas encore (book)

Page 32: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Normalisation vs. Dénormalisation

{ISBN:9780992461225,title:"JavaScript:NovicetoNinja",author:"DarrenJones",format:"ebook",price:29.00,publisher_id:"SP001"}{id:"SP001"name:"SitePoint",country:"Australia",email:"[email protected]"}

32

{ISBN:9780992461225,title:"JavaScript:NovicetoNinja",author:"DarrenJones",format:"ebook",price:29.00,publisher:{name:"SitePoint",country:"Australia",email:"[email protected]"}}

Page 33: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Syntaxe CRUD

33

Page 34: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Syntaxe CRUD

34

Page 35: NoSQL 101 - lis-lab.fr · Introduction • La quantité ... • Jointures à éviter ... • Exemples: OrientDB, Neo4J, Titan, etc. 27. Graph-oriented 28 Modèle relationnel Graph-oriented

Syntaxe CRUD

35