introduction nosql 201406 - lbroudoux
DESCRIPTION
Légère mise à jour de l'introduction aux bases de données NoSQL faite pour l'Ensim (Ecole Nationale Supérieure d'Ingénieurs du Mans), niveau Master en Janvier 2014. Ajout d'exemples et d'une présentation rapide des APIs majeures.TRANSCRIPT
![Page 1: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/1.jpg)
IntroductionNoSQL
Laurent Broudoux (@lbroudoux) | Juin 2014
![Page 2: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/2.jpg)
Quelques mots...
Laurent Broudoux
Le jour ...
Architecte IT Senior chez MMA
Mots-clés : Java, SOA, Agile, Software factories
La nuit …
Coder, geek, open source comitter (voir http://github.com/lbroudoux)
Me joindre / suivre
@lbroudoux
http://lbroudoux.wordpress.com
![Page 3: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/3.jpg)
SQL vs NoSQLComprendre
??????????
![Page 4: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/4.jpg)
Les bases relationnelles et SQL ?
● Modèle prédominant pour stocker de l'information depuis + de 30 ans !
Nécessité de nombreuses lectures / écritures en simultané. Les RDBMS proposent un système de gestion de transaction efficace permettant d'éviter le pire !
Ecosystème riche et collaboration indispensable. L'écriture puis les lectures dans un RDBMS est un modèle fréquent d'intégration applicative.
Les RDBMS ont imposé un paradigme de modélisation et un lanqage de requêtage (SQL) standards globalement partagés entre tous les vendeurs.
![Page 5: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/5.jpg)
Les limites des bases relationnelles (i)
Impedance mismatch
id : 1001customer : lbroudouxline items :
payment details :
bird 8 3.25 € 26 €
rabbit 4 22 € 88 €
cat 2 112 € 224 €
card Master Card
card number 1234-5678-9101
expiry 12/2014
orders
customers
order lines
credit cards
![Page 6: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/6.jpg)
Les limites des bases relationnelles (ii)
Scalabilité
Le modèle de consistance des RDBMS empêche l'utilisation de plusieurs machines pour répartir la charge (au moins en écriture)
Pour augmenter la performance d'accès à la base, pas d'autres moyens que d'acheter un plus gros serveur, puis un autre, puis un autre, …
![Page 7: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/7.jpg)
Eléments de contexte
● Plusieurs tendances forment le terreau d'un changement
– La SOA (Service Oriented Architecture)● Intégration applicative maintenant basée sur la notion de service
– Le cloud et les besoins en très haute disponibilité● Prédominance des clusters● Approche commodity hardware
– La réalité économique● Coût des machines très haute performance● Facturation « au cœur » par les vendeurs
![Page 8: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/8.jpg)
NoSQL ? Terme apparu en 2009 avec plusieurs interprétations possibles :
– No SQL
– Not Only SQL
Pas de définition formelle mais des caractéristiques communes partagées par les bases dites NoSQL :
– N'utilise pas de modèle relationnel et donc pas le langage SQL
– Conçu pour être exécutée dans un cluster,
– Tendance à être Open Source,
– Généralement sans schéma et donc permettant de stocker n'importe quelle donnée dans n'importe quelle « ligne »
NoSQL s'écarte du modèle de données relationnel pourgénéralement proposer un
modèle par agrégat.
![Page 9: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/9.jpg)
Relations & Agrégats (i)
● Soit un modèle relationnel exemple, exprimé en UML, en utilisant des associations
![Page 10: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/10.jpg)
Relations & Agrégats (ii)
Id Name
123 Broudoux
Id Name Price
27 Rabbit 3.25
Id City Street
66 Parigne Le Polin
Id OrderId ProductId Quantity Price
991 99 27 3 9.75
Id CustomerId AddressId
55 123 66
Customers
Products
Address
BillingAddress
Id CustomerId ShippingAddressId
99 123 66
Orders
Items
Id OrderId CardNumber TxnId BillingAddressId
991 99 1234-4567-8910 a23ef75cd65b78 66
Payments
● Soit sa projection sur le modèle relationnel physique
– Normalisation, pas de répétition, agnostique à l'usage
![Page 11: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/11.jpg)
Relations & Agrégats (iii)
● Reprenons le même modèle selon l'approche « agrégat »
– On utilisera plutôt des compositions pour marquer les agrégats
Un agrégat représente une
unité de manipulation des
données et de gestion de la cohérence
![Page 12: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/12.jpg)
Relations & Agrégats (iv)
● Soit sa projection en JSON (notation communément utilisé dans le monde NoSQL)
– Dénormalisation
– 2 agrégats principaux
– Relations entre agrégats arbitraires et assurées applicativement
![Page 13: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/13.jpg)
Conséquences de l'approche agrégats
● L'approche agrégat règle les problèmes d'impédance mismatch mais :
– Difficile de déterminer clairement les limites entre agrégats● Le coté schemaless est un + mais à double tranchant
– Difficile de réaliser certaines requêtes non prévues (penser à l'analytique)
● L'approche agrégat présente tout de même l'énorme avantage de limiter le vérouillage transactionnel à l'agrégat
– ACID pour RDBMS
– BASE pour NoSQL● Basic Availability Soft-state Eventually consistent
![Page 14: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/14.jpg)
DistributionModèles de
![Page 15: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/15.jpg)
Sharding (i)
Chaque shard lit et écrit ses propres données
![Page 16: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/16.jpg)
Sharding (ii)
● Bénéfices
– Performance ● En écriture car scaling horizontal● En lecture lorsque géolocalisation des données
– Espace disque des machines
– Résilience partielle voire localisée
● Préoccupations
– Répartition équitable des données
– Localisation des accès communs - d'où les agrégats ;-)
– Sharding as application logic ?!
![Page 17: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/17.jpg)
Réplication Maître / Esclave (i)
Lectures peuvent être faites depuis le maître ou les esclaves
Toutes les écritures sontfaites sur le maître
Maître
Esclaves
Les changements se propagent vers les esclaves
![Page 18: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/18.jpg)
Réplication Maître / Esclave (ii)
● Bénéfices
– Pour les applications avec beaucoup de lectures● Performance● Résilience
– Elasticité par le provisioning de nouveaux esclaves
● Préoccupations
– Inconsistance possible en lecture (local read-write à gérer par le driver)
– Résilience pour l'écriture fonction de la capacité de changement de rôle (maître est un SPOF)
– Algorithme de vote automatique et split brain !
![Page 19: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/19.jpg)
Réplication Peer to Peer (i)
Tous les nœuds lisent et écrivent toutes les données
Noeud
Noeud
Les nœuds communiquent uniquement leurs écritures
![Page 20: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/20.jpg)
Réplication Peer to Peer (ii)
● Bénéfices
– Résilience en lecture comme en écriture
– Elasticité par le povisionning transparent
– Performances des lectures
● Préoccupations
– Inconsistances car écritures simultanées possibles
– Performances des écritures● Voir les quorums et versions vectors ...
– Volume de données à synchroniser et sens de synchro !
![Page 21: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/21.jpg)
Combinaison Sharding & Réplication Maître / Esclave
Maître pour 2 shards
Maître pour 1 shard – Esclave pour 1 shard
Esclave pour 2 shards
Esclave pour 1 shard
Esclave pour 2 shards
Maître pour 2 shard
![Page 22: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/22.jpg)
Combinaison Sharding & Réplication Peer to Peer
![Page 23: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/23.jpg)
Théorème CAP
« Il est impossible pour un système distribué de satisfaire plus de 2 des 3 propriétés suivantes : Cohérence, Disponibilité et Résistance au morcellement »
- Eric Brewer, 2000
![Page 24: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/24.jpg)
Théorème CAP
Cohérence
[Consistancy]
Disponible
[Availability]
Résistance au morcellement
[Partition tolerance]
Tous les clients voient les mêmes données
Un nœud recevant une requête doit répondre (et non : le système est ok si panne de noeuds)
Le système continue de fonctionner même en cas d'échec de communication entre noeuds
CA
APCP
![Page 25: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/25.jpg)
« Relâcher la consistance »
● Ecritures inconsistantes
– Classiquement : pessimiste (verrou) ou optimiste (versionning)
– NoSQL : Ces approches ne fonctionnent pas si le système est distribué !
● Lectures inconsistantes
– Classiquement : transaction et verrouillage de plusieurs tables
– NoSQL : Cette approche ne fonctionne pas si les données sont réparties sur plusieurs agrégats !
![Page 26: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/26.jpg)
« Relâcher la consistance »
● Stratégies alternatives
– Enregistrer les écritures inconsistantes, résoudre plus tard (ex : Amazon Cart)
– Réduire la fenêtre d'inconsistance en relâchant la durabilité
– Les Quorums● « Combien de nœuds participants pour considérer la
consistance comme forte ? »● Soit W le nombre de nœuds devant acquitter une écriture● Soit N le nombre de réplicats d'une donnée (replication factor)● Soit R le nombre de nœuds devant acquitter une lecture
Consistance forte quand : W > N / 2 et R + W > N
![Page 27: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/27.jpg)
Map Reduce Computation
![Page 28: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/28.jpg)
Map Reduce ?
● L'avènement des agrégats est en grande partie due aux clusters
– Compromis dans la façon de stocker les données mais pas seulement …
– Nécessité de revoir la façon dont les données sont manipulées !
● Dans « l'ancien monde », il y avait 2 choix :
– Faire le traitement sur le client : liberté dans la plate-forme, délestage du serveur mais seulement si peu de données
– Faire le traitement sur le serveur : contrainte environnement, peu de données à transférer mais charge !
![Page 29: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/29.jpg)
Map Reduce ?
● Avec un cluster :
– Plein de puissance car plein de machines !
– Mais encore plus la nécessité de transférer le moins de données possible et de réaliser le travail sur le nœud possédant les données !
● Map-Reduce est un pattern inspiré de la programmation fonctionnelle
map reduce
Map transforme chaque élément d'une collection et émet des paires clé / valeur
Reduce récolte toutes les paires ayant la même clé et réalise le calcul pour retourner un résultat
K V
K V
K V K R
![Page 30: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/30.jpg)
bird :
Mon premier Map Reduce (i)
id : 1001customer : lbroudouxline items :
shipping address : ...payment details : ...
bird 8 3.25 € 26 €
rabbit 4 22 € 88 €
cat 2 112 € 224 €
map
Agrégat représentant une facture client : « Quel est le total des ventes par produit ? »
Price : 26 €
quantity : 8
rabbit :Price : 88 €
quantity : 4
cat :Price : 224 €
quantity : 2
La fonction « map » lit les enregistrements depuis la base et émet des paires de clés / valeurs. On choisit la clé en fonction du critère de regroupement voulu.
![Page 31: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/31.jpg)
Mon premier Map Reduce (ii)
bird :
price : 26
quantity : 8
price : 13 €
quantity : 4
price : 7.5 €
quantity : 2
reduce bird :price : 46.5 €
quantity : 14
La fonction « reduce » prend plusieurs paires de clés / valeurs ayant la même clé et les aggrège en une seule.
Le système rassemble toutes les paires ayant la même clé avant de les transmettre à la fonction de réduction
![Page 32: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/32.jpg)
Partitionnement et combinaison
● Sous la forme la plus simple, un job map-reduce exécute la fonction reduce une seule fois …
● … mais n'oublions pas qu'un système NoSQL est naturellement distribué ...
● Que se passe t-il quand il y a plusieurs millions d'agrégats à traiter ?
– Quelle quantité de données à transférer ?
– Quelle performance ?
Il est possible d'augmenter le parallélisme en partitionnant les résultats de la fonction map.
![Page 33: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/33.jpg)
Map Reduce partitionné
m
m
bird 12
rabbit 2
rabbit 4
cat 6
bird 3
rabbit 3
fish 20
fish 6
bird 12
cat 6
rabbit 2
rabbit 4
bird 3
rabbit 3
fish 20
fish 6
bird 12
bird 3
cat 6
r
rabbit 2
rabbit 4
rabbit 3
fish 20
fish 6
r{
{
Le partitionnement permet à la fonction « reduce » de s'exécuter en parallèle sur différentes clés, voir sur différents noeuds
![Page 34: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/34.jpg)
Partionnement et combinaison
● La plupart des données transférées est répétitive
– Même ensemble de clés
Il est possible de diminuer le volume de données en combinantles résultats de la fonction map avant de les transférer.
combine reducemap
Local Potentiellement distant
![Page 35: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/35.jpg)
Map Reduce combiné
m
bird 3
rabbit 3
fish 20
cat 2
fish 6
rabbit 2
bird 12
cat 1
combine
bird 15
rabbit 5
fish 26
cat 3
r
r
La fonction « combine » permet de réduire les données à transférer au travers du réseau avant la réduction. Une telle fonction est aussi par nature une fonction de réduction.
![Page 36: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/36.jpg)
Implémentons !
Bases NoSQLPanorama
![Page 37: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/37.jpg)
Panorama des solutions
En mémoire
Column family
Persistante sur disque
DocumentClé / valeurs Graph
Neo4j
FlockDB
![Page 38: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/38.jpg)
Bases clés / valeurs (i)
● Grossièrement : une simple hash table où tous les accès se font en utilisant la clé primaire
● Seulement 3 opérations possibles :
– Put : donner une valeur à une clé
– Get : récupérer la valeur d'une clé
– Delete : effacer la clé et sa valeur
● Support de structures basiques (list, hash, set)
● Parfois, notion de bucket ou couplage à un moteur d'indexation (ex : Riak)
● Très haute performance (in-memory possible)
● RESTful !
C'est quoi ?
![Page 39: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/39.jpg)
Bases clés / valeurs (ii)
– De l'information très volatile● Session utilisateur, données d'un panier d'achat
– De l'information très peu volatile et accédée très fréquemment● Descriptions produits, paramétrage applicatif
A utiliser pour ...
A éviter pour ...
– Des données possédant des relations● Relations entre agrégats ou corrélation entre données de
différents ensemble de clés– Des opérations impliquant de multiples clés
– Des besoins de requêtage par les données
![Page 40: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/40.jpg)
Bases clés / valeurs (iii)
Comment ?
Ecriture d'une paire clé/valeur
Lecture d'une valeur
Construction d'un objet domain complexe
![Page 41: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/41.jpg)
Bases clés / valeurs (iv)
Comment ?
Interface REST : écriture
Interface REST : lecture
![Page 42: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/42.jpg)
Bases document (i)
● Bases stockant des documents qui peuvent être des arbres Xml, JSON, BSON, etc …
– Pensez à des bases clés-valeurs où le contenu est examinable
● Documents souvent regroupés par Collection
– 2 documents de la même Collection ne possèdent pas nécessairement la même structure
● Requêtes possibles en utilisant des syntaxes analogues à Xpath, Xquery, Javascript, JXPath
● Parfois, fonctions d'agrégation : sum, count, group
C'est quoi ?
![Page 43: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/43.jpg)
Bases document (ii)
– Données avec partie structurée et partie non structurée ● Evénements des applicatifs (sharding possible par application)
– Données de publication variables● CMS, Blogging avec commentaires, contenu dynamique, etc …
– Données de suivi temps réel ou analytiques
A utiliser pour ...
A éviter pour ...
– Opérations nécessitant consistance sur plusieurs agrégats
– Des structures d'agrégat très changeante avec des besoins de requêtage forts
● Inconvénient du schemaless
![Page 44: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/44.jpg)
Bases document (iii)
Comment ?
Ecriture d'un document
Requête : Query by example
![Page 45: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/45.jpg)
Bases document (iv)
Comment ?
MapReduce : moyenne des notes des articles d'un blog
![Page 46: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/46.jpg)
Bases column-family (i)
● Données définies par une clé à laquelle peut correspondre plusieurs familles de colonnes étant elles même des maps de données
● Langage de requête souvent pauvre
C'est quoi ?
name ''broudoux''
billingAddress data ...
payment data ...
odr1001 data ...
odr1002 data ...
odr1003 data ...
odr1004 data ...
123
Clé de ligne
Famille de colonnes « profile »
Famille de colonnes « orders »
Clé de colonne Valeur de colonne
![Page 47: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/47.jpg)
Bases column-family (ii)
– Données avec partie structurée et partie non structurée ● Evénements des applicatifs (sharding possible par application)
– Données de publication variables● CMS, Blogging avec commentaires, contenu dynamique, etc …
– Compteurs et analytiques
– Données avec TTL
A utiliser pour ...
A éviter pour ...
– Des besoins de requêtage complexes
– Des besoins de calcul d'agrégation simples (nécessité de passer systématiquement par Map-Reduce aujourd'hui)
![Page 48: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/48.jpg)
Bases column-family (iii)
Comment ?
Création d'un schéma en CQL
![Page 49: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/49.jpg)
Bases column-family (iv)
Comment ?
Requête en CQL
![Page 50: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/50.jpg)
Bases graph (i)
● Stockage sous forme d'entités (nodes) et d'associations (edges)
● Les nodes possèdent des propriétés (penser à un objet)
● Les edges possèdent un type (likes, author)
● Optimisées pour traverser le graph rapidement dans n'importe quel sens
– « Quelles sont les personnes employées par X dont les amis aiment le film Y ? »
● Modèle de distribution contraint : souvent pas de sharding automatique, seulement réplication
● Langages de requête « exotiques » : Gremlin, Cypher
● Parfois, complété par un moteur d'indexation
C'est quoi ?
![Page 51: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/51.jpg)
Bases graph (ii)
– Les moteurs de recommandations● « Les autres clients ayant acheté ce produit ont aussi acheté ... »
– Les données naturellement connectées● Réseaux sociaux
– Les services basés sur la localisation ou le calcul d'itinéraires
A utiliser pour ...
A éviter pour ...
– Les cas où de nombreux nœuds doivent être mis à jour
![Page 52: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/52.jpg)
Bases graph (iii)
Comment ?
Neo4j
Création de nœuds et de relations
Recherche simple et parcours des relations
![Page 53: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/53.jpg)
Bases graph (iv)
Comment ?
Neo4j
Recherche de tous les nœuds liés, transitivement
Recherche des chemins possibles entre 2 nœuds
![Page 54: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/54.jpg)
Get lucky with API ?
● Des initiatives pour tenter d'uniformiser, abstraire le développement avec bases NoSQL ?
– Spring Data : nouvelle API● Support correct de MongoDB, Neo4j, Redis, Riakn, Gemfire, JPA (?)● Support émergent de Hadoop/HTable, CouchDB, Elasticsearch,
Cassandra
– Hibernate OGM : construit sur JPA● Support de Infinispan, MongoDB, Neo4j
– GORM : origine Grails, maintenant utilisable en standalone● Support natif de Hibernate et MongoDB● Autres bases via encapsulation de Spring Data
![Page 55: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/55.jpg)
Au delà de NoSQL...« Polyglot Persistence » from Thoughtworks NoSQL Intro
![Page 56: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/56.jpg)
Au delà de NoSQL...BigData et Hadoop FileSystem– Principes analogues mais appliqués à un file system
● Sharding, replication, quorums pour la lecture / écriture● Map/Reduce pour la manipulation des données
![Page 57: Introduction NoSql 201406 - lbroudoux](https://reader033.vdocuments.net/reader033/viewer/2022051208/5475297fb4af9fa30a8b59f2/html5/thumbnails/57.jpg)
Merci !