Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
NoSQL 101Premiers pas
SQL vs. NoSQL1
Qui suis-je ?• Adrian-Gabriel CHIFU
• www.lsis.org/chifua
• MCF - FEG, AMU; LSIS
• Ph.D. - Recherche d’Information
• Thématiques de recherche : RI, TAL, Apprentissage, BDD
2
Objectifs (centraux) • Principes et définitions
• SQL vs. NoSQL
• Modélisation, structures
• Algorithmes
• Outils formels et technologies (MongoDB)
• Exercises3
Objectifs (aujourd’hui)• Introduction
• Définitions et principes
• NoSQL vs. SQL
• Types de NoSQL
• Exemples
4
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
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
Règles ACID - BDR
• Atomicité
• Consistence
• Isolation
• Durabilité
7
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
SD: Avantages• Fiabilité
• Scalabilité
• Partage de ressources
• Flexibilité
• Rapidité
• Système ouvert
• Performance
9
SD: Désavantages
• Dépannage
• Logiciels
• Réseau
• Sécurité
10
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
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
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
NoSQL: où ?• Données sociales
• Traitement de l'information
• Enregistrement
• Analyse géo-spatiale
• La modélisation moléculaire
• etc.14
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
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
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
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
Théorème CAP (Brewer) • CAP
• Consistency
• Availability
• Partition Tolerance
• CA
• CP
• AP
19
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
BASE
• Basically Available
• Soft state
• Eventual consistency
• (Consistence laissée de côté)
21
Types de bases NoSQL
• Key-value stores
• Column-oriented
• Document-oriented
• Graph-oriented
22
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
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
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
Document-oriented
26
Modèle relationnel Document-oriented
Tableaux Collections
Lignes Documents
Colonnes Paires clé-valeur
Jointures pas disponible
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
Graph-oriented
28
Modèle relationnel Graph-oriented
Tableaux Noeuds et arcs
Lignes Noeuds
Colonnes Paires clé-valeur
Jointures Arcs
Ils utilisent NoSQL• Google
• Mozilla
• Adobe
• Foursquare
• Digg
29
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
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)
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]"}}
Syntaxe CRUD
33
Syntaxe CRUD
34
Syntaxe CRUD
35