NoSQL
Des grands du Web aux entreprises




20/10/2010
Speaker

     @mfiguiere
     blog.xebia.fr



     Michaël Figuière


                        NoSQL UG
 JUGs
A propos de NoSQL




             No SQL
A propos de NoSQL


          Not       Only




             No SQL
A propos de NoSQL


          Not       Only




             No SQL
                       Relational
Contrairement aux idées reçues

• NoSQL n’est pas un remplaçant des SGBDR

        The right tool for the right job

• NoS...
Au commencement

Des cas d’usage différents mais des
besoins similaires :                  - Création de Dynamo
          ...
Amazon : naissance de Dynamo



                                       Besoin en requêtes complexes,
                     ...
Comment assurer la scalabilité avec un SGBDR ?

       Mise en oeuvre
  typique avec MySQL




                           ...
Sharding avec un SGBDR
Sharding avec un SGBDR


Sur serveur A




   Sur serveur B
Sharding avec un SGBDR


Sur serveur A




   Sur serveur B
                          ?
                         ?
Sharding avec un SGBDR


Sur serveur A                     Dénormalisation




   Sur serveur B


                Dénormal...
Sharding avec un SGBDR


Sur serveur A                       Dénormalisation




   Sur serveur B


                Dénorm...
Sharding avec un SGBDR : les problèmes

• Pour garder de bonnes performances, les relations many-to-many et
  many-to-one ...
D’une table de hachage à une BDD clé-valeur


 Ensemble des clés
 partitionnées selon
         leur préfixe
D’une table de hachage à une BDD clé-valeur


                              Ensemble des clés


     Consistent hashing
D’une table de hachage à une BDD clé-valeur




       Une partition par   Multiples partitions
           instance       ...
La répartition en anneau
La répartition en anneau
Que devient ACID ?

• Tout accès réseau est faillible


• Des concessions doivent être faites sur le modèle de données


•...
Le théorème CAP



                                               BDD relationnelles
   Utopique
                 Consista...
Consistance éventuelle

                          R+W<N



   4 réplicas




Lecture avec attente de              Ecriture...
Consistance éventuelle

                          R+W=N




Lecture avec attente de           Ecriture avec attente
 répon...
Consistance éventuelle

                          R+W>N




Lecture avec attente de           Ecriture avec attente
 répon...
Atomicité et Isolation

• Les données ne sont plus co-localisées
         Localisation non prédictible dans le temps

• Le...
Durabilité

• Ecriture sur un ou plusieurs disques
         La réplication permet de renforcer la durabilité



• Ecriture...
Base de données orientées clé-valeur




                              = HashMap !
Exemple avec Riak
Base de données orientées document



                       La BDD est consciente du
                       contenu. Les ...
Exemple avec MongoDB
Base de données orientées colonnes

    A chaque ID de ligne correspond
     une liste de couples clé-valeur




         ...
Exemple avec Cassandra
A propos de Cassandra
Base de données orientées graphe
Exemple avec Neo4j
L’intérêt pour l’entreprise

• Stockage polyglotte : une meilleure adéquation entre la BDD et les données


• Scalabilité ...
Cas d’usage : batch distribué


                   Stockage des
                 informations en           Traitement batc...
Cas d’usage : stockage polyglotte

             Recherche des
                                                 Lucene
    ...
Questions / Réponses




                       ?
Prochain SlideShare
Chargement dans…5
×

Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises

2 428 vues

Publié le

Publié dans : Technologie, Voyages, Business
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 428
Sur SlideShare
0
Issues des intégrations
0
Intégrations
9
Actions
Partages
0
Téléchargements
37
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises

  1. 1. NoSQL Des grands du Web aux entreprises 20/10/2010
  2. 2. Speaker @mfiguiere blog.xebia.fr Michaël Figuière NoSQL UG JUGs
  3. 3. A propos de NoSQL No SQL
  4. 4. A propos de NoSQL Not Only No SQL
  5. 5. A propos de NoSQL Not Only No SQL Relational
  6. 6. Contrairement aux idées reçues • NoSQL n’est pas un remplaçant des SGBDR The right tool for the right job • NoSQL reste un domaine d’innovation Mais déjà déployé en production ! • NoSQL est un écosystème riche et complexe « Le diable est dans le détail »
  7. 7. Au commencement Des cas d’usage différents mais des besoins similaires : - Création de Dynamo - Dernier incident majeur en 2004 • Performance - < 40 min d’indisponibilité par an • Disponibilité (> 99.99 %) • Résilience • Scalabilité horizontale - Création de BigTable + MapReduce - Toutes les pages Web du monde - Fonctionnement online et offline
  8. 8. Amazon : naissance de Dynamo Besoin en requêtes complexes, indisponibilité temporaire acceptable Fill cart Checkout Payment Process order Prepare Send Stockage clé-valeur suffisant, disponibilité en écriture
  9. 9. Comment assurer la scalabilité avec un SGBDR ? Mise en oeuvre typique avec MySQL Réplication synchrone ou asynchrone
  10. 10. Sharding avec un SGBDR
  11. 11. Sharding avec un SGBDR Sur serveur A Sur serveur B
  12. 12. Sharding avec un SGBDR Sur serveur A Sur serveur B ? ?
  13. 13. Sharding avec un SGBDR Sur serveur A Dénormalisation Sur serveur B Dénormalisation
  14. 14. Sharding avec un SGBDR Sur serveur A Dénormalisation Sur serveur B Dénormalisation On perd alors beaucoup de l’intérêt du relationnel !
  15. 15. Sharding avec un SGBDR : les problèmes • Pour garder de bonnes performances, les relations many-to-many et many-to-one nécessitent d’être dénormalisées • Gestion du resharding • Code applicatif complexifié
  16. 16. D’une table de hachage à une BDD clé-valeur Ensemble des clés partitionnées selon leur préfixe
  17. 17. D’une table de hachage à une BDD clé-valeur Ensemble des clés Consistent hashing
  18. 18. D’une table de hachage à une BDD clé-valeur Une partition par Multiples partitions instance par instance
  19. 19. La répartition en anneau
  20. 20. La répartition en anneau
  21. 21. Que devient ACID ? • Tout accès réseau est faillible • Des concessions doivent être faites sur le modèle de données • Des concessions doivent être faites sur la consistance
  22. 22. Le théorème CAP BDD relationnelles Utopique Consistance Disponibilité Tolérance aux partitions BDD NoSQL
  23. 23. Consistance éventuelle R+W<N 4 réplicas Lecture avec attente de Ecriture avec attente réponse de 2 noeuds d’accusé d’un seul noeud
  24. 24. Consistance éventuelle R+W=N Lecture avec attente de Ecriture avec attente réponse de 2 noeuds d’accusé de 2 noeuds
  25. 25. Consistance éventuelle R+W>N Lecture avec attente de Ecriture avec attente réponse de 3 noeuds d’accusé de 2 noeuds
  26. 26. Atomicité et Isolation • Les données ne sont plus co-localisées Localisation non prédictible dans le temps • Les transactions distribuées nuiraient à la disponibilité et aux performances • Atomicité et Isolation par opération sur une clé
  27. 27. Durabilité • Ecriture sur un ou plusieurs disques La réplication permet de renforcer la durabilité • Ecriture multiples en mémoire La réplication apporte la durabilité • En mémoire avec écriture asynchrone sur disque Pas de durabilité
  28. 28. Base de données orientées clé-valeur = HashMap !
  29. 29. Exemple avec Riak
  30. 30. Base de données orientées document La BDD est consciente du contenu. Les requêtes complexes sont possibles
  31. 31. Exemple avec MongoDB
  32. 32. Base de données orientées colonnes A chaque ID de ligne correspond une liste de couples clé-valeur BDD relationnelle BDD orientée colonnes
  33. 33. Exemple avec Cassandra
  34. 34. A propos de Cassandra
  35. 35. Base de données orientées graphe
  36. 36. Exemple avec Neo4j
  37. 37. L’intérêt pour l’entreprise • Stockage polyglotte : une meilleure adéquation entre la BDD et les données • Scalabilité linéaire : être à même de répondre aux besoins les plus gourmands • Haute disponibilité : du multi-serveurs au multi-datacenters • Elasticité : une intégration naturelle à la logique du Cloud Computing • Curseur pour s’adapter : + de consistence ou + de fiabilité (R + W > N) • Et finalement... la possibilité crée le besoin !
  38. 38. Cas d’usage : batch distribué Stockage des informations en Traitement batch production distribué Application HBase Hadoop Exploitation Stockage des résultats des résultats
  39. 39. Cas d’usage : stockage polyglotte Recherche des Lucene produits Stockage du catalogue produits MySQL Application Stockage des Cassandra comptes clients Stockage du réseau social clients Neo4j
  40. 40. Questions / Réponses ?

×