201301 - Panorama NoSQL

885 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
885
On SlideShare
0
From Embeds
0
Number of Embeds
209
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

201301 - Panorama NoSQL

  1. 1. LE SPEAKERRÉMY GIRODON+ FOLLOW ME ! • • @rgirodon
  2. 2. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  3. 3. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  4. 4. LE CONSTAT ACTUELRELATIONNEL EVERYWHERE+ UN DATA MODEL NATUREL ET INTUITIF PROPRE : NORMALISATION DES DONNÉES
  5. 5. LE CONSTAT ACTUELRELATIONNEL EVERYWHERE+ STANDARDISATION ET RICHESSE DU LANGAGE SQL •Création des tables •Définition des contraintes •Manipulation des données REQUÊTES INSERT UPDATE DELETE PROCÉDURES STOCKÉES •Définition d’Index
  6. 6. LE CONSTAT ACTUELRELATIONNEL EVERYWHERE+ DESIGNED FOR ACID ATOMICITÉ COHÉRENCE ISOLATION DURABILITÉ
  7. 7. LE CONSTAT ACTUELRELATIONNEL EVERYWHERE+ UNE OFFRE TRÈS VASTE
  8. 8. LE CONSTAT ACTUELLES LIMITES DU RELATIONNEL+ DATA CHANGE
  9. 9. LE CONSTAT ACTUELLES LIMITES DU RELATIONNEL+ DATA CHANGE
  10. 10. LE CONSTAT ACTUELLES LIMITES DU RELATIONNEL+ DATA CHANGE
  11. 11. LE CONSTAT ACTUELLES LIMITES DU RELATIONNEL+ EN UN MOT LE RELATIONNEL C’EST SUPER !
  12. 12. LE CONSTAT ACTUELLES LIMITES DU RELATIONNEL+ MAIS PAS POUR TOUT !
  13. 13. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  14. 14. LA PERCÉE NOSQL1 TERME, 1000 POSSIBILITÉS+ WELCOME TO THE JUNGLE BABY !
  15. 15. LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
  16. 16. LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
  17. 17. LA PERCÉE NOSQLQUELQUES POINTS DE CONVERGENCE
  18. 18. LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS+ 4 GRANDES FAMILLES DE STORES •Key-Value Stores •Column-Oriented Stores •Document-Oriented Stores •Graph-Oriented Stores+ DIFFÉRENCES FONDAMENTALES •Dans le Data Model •Dans la façon de requêter la base+ ADAPTÉ À DES USE-CASES DIFFÉRENTS !
  19. 19. LA PERCÉE NOSQLKEY-VALUE STORES
  20. 20. LA PERCÉE NOSQLCOLUMN-ORIENTED STORES
  21. 21. LA PERCÉE NOSQLDOCUMENT-ORIENTED STORES
  22. 22. LA PERCÉE NOSQLGRAPH-ORIENTED STORES
  23. 23. LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS+ CONNAÎTRE A MINIMA LES DIFFÉRENTS PRODUITS •Data Model •Features de Requêtage
  24. 24. LA PERCÉE NOSQLBEAUCOUP DE DISPARITÉS+ FAIRE LE BON CHOIX POUR SON USE-CASE MÉTIER !
  25. 25. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  26. 26. FOCUS PRODUITSREDIS+ DESCRIPTIF RAPIDESimplicity Speed Reliability
  27. 27. FOCUS PRODUITSREDIS+ LE DATA MODEL Database 5 Data Types id_14 String String commands Row id_15 List List commands Row id_16 Set Set commands Row id_17 Sorted Set Sorted Set commands Row id_18 Hash Hash commands Row
  28. 28. FOCUS PRODUITSREDIS+ STRING COMMANDS+ USAGE •Cache Provider •Session Manager •Counters •ID Generators
  29. 29. FOCUS PRODUITSREDIS+ LIST COMMANDS+ USAGE •Real lists •Time Series •Queues / Workers
  30. 30. FOCUS PRODUITSREDIS+ SET COMMANDS+ USAGE •Real Sets •Relations
  31. 31. FOCUS PRODUITSREDIS+ ZSET COMMANDS+ USAGE •Scores •Inverted Index
  32. 32. FOCUS PRODUITSREDIS+ HASHES COMMANDS+ USAGE •Structured Data
  33. 33. FOCUS PRODUITSREDIS+ ADDITIONNAL FEATURES •Transactions •Publish / Subscribe •Write to Disk CLASSIC DUMP APPEND ONLY •Replication MASTER / SLAVES
  34. 34. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  35. 35. FOCUS PRODUITSCASSANDRA+ HISTORIQUE RAPIDE
  36. 36. FOCUS PRODUITSCASSANDRA+ LE DATA MODEL Keyspace : userAppKeyspace Column Family : users id_14 { company_name : "SQLI", Row company_agence : “Lyon", company_standard : "0472405353“ user_firstname: "Rémy", user_lastname: "Girodon", Columns user_skill_1: ”java”, user_skill_2: ”cassandra” } id_15 { … Row } id_16 { … Row }
  37. 37. FOCUS PRODUITSCASSANDRA+ LE DATA MODEL FAÇON SIMPLE •Column TRIPLET NAME / VALUE / TIMESTAMP •Row UNE CLÉ UN ENSEMBLE DE COLUMNS TRIÉ PAR NAME •Column families UN ENSEMBLE DE ROWS
  38. 38. FOCUS PRODUITSCASSANDRA+ MAIS PAS SI SIMPLE ! •Column L E N A M E P E U T S T O C K E R D E L’ I N F O R M AT I O N ( PA S U N I Q U E M E N T U N E S T R I N G ! ) •R o w PEUT CONTENIR PLUSIEURS MILLIONS DE COLONNES PA S D E S C H E M A I M P O S É
  39. 39. FOCUS PRODUITSCASSANDRA+ LE DATA MODEL Keyspace : serverAppKeyspace Column Family : serverConnections id_14 { Row name : “www.sqli.com", 2012-09-19 11:36:12:134 : “10.33.198.67", 2012-09-19 11:36:12:628 : “10.33.198.68", 2012-09-19 11:36:12:981 : “10.33.198.67", Columns 2012-09-19 11:36:13:062 : “10.33.198.69", } id_15 { … Row } id_16 { … Row }
  40. 40. FOCUS PRODUITSCASSANDRA+REQUÊTAGE VIA L’API •Au niveau Row RÉCUPÉRER TOUTES LES ROWS RÉCUPÉRER UNE ROW VIA SA KEY RÉCUPÉRER UNE LISTE DE ROWS VIA UNE LISTE DE KEYS
  41. 41. FOCUS PRODUITSCASSANDRA+REQUÊTAGE VIA L’API •Au niveau Column RÉCUPÉRER TOUTES LES COLUMNS RÉCUPÉRER UNE COLUMN VIA SON NAME RÉCUPÉRER UNE LISTE DE COLUMNS VIA UNE LISTE DE NAMES RÉCUPÉRER UN RANGE DE COLUMNS
  42. 42. FOCUS PRODUITSCASSANDRA+REQUÊTAGE VIA CQL •SELECT * FROM users WHERE KEY = "id_14"; • •UPDATE users •SET "email" = "rgirodon@example.com", • "phone" = "0472405353" •WHERE KEY = "id_14";
  43. 43. FOCUS PRODUITSCASSANDRA+REQUÊTAGE VIA CQL •SELECT "2012-09-19 00:00:00:000" • .. "2012-09-19 23:59:59:999" •FROM serverConnections •WHERE KEY = "id_14";
  44. 44. FOCUS PRODUITSCASSANDRA+REQUÊTAGE VIA CQL •CREATE INDEX email_key ON users (email); •SELECT * FROM users •WHERE "email" = "rgirodon@example.com";
  45. 45. FOCUS PRODUITSCASSANDRA+ BUILT-IN CLUSTERING Keys Keys 20..30 10..20 N2 N3Keys Keys N1 N4 30..400..10 N6 N5 Keys Keys 40..50 50..60
  46. 46. FOCUS PRODUITSCASSANDRA+TUNABLE REPLICATION Replication N2 N3 K1 Factor = 2 N1 N4 N6 N5 K1
  47. 47. FOCUS PRODUITS CASSANDRA +TUNABLE CONSISTENCY Client N2 N3Reads on any node N1 N4 Indicates aConsistency level Read repair N6 N5
  48. 48. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  49. 49. FOCUS PRODUITSMONGODB+ DERRIÈRE LE PRODUIT, UNE COMPANY
  50. 50. FOCUS PRODUITSMONGODB+ UN DATA MODEL SIMPLE Database : userAppDb Collection : users id_14 { Document firstname: "Rémy", lastname: "Girodon", company: { name : "SQLI", agence : “Lyon", standard : "0472405353“ }, skills: [‘java’, ‘mongodb’] }
  51. 51. FOCUS PRODUITS MONGODB + DES FEATURES DE REQUÊTAGE AVANCÉESdb.users.find( {age: {$gte: 30} } )db.users.find( {“company.name": ‘SQLI} )db.users.update( {lastname: ‘Girodon} , {$set: {age : 34})db.users.remove({firstname: ’Girodon’})db.users.ensureIndex( {“age”: 1} )db.users.ensureIndex( {“skills”: 1, “company.agence”:1 } )
  52. 52. FOCUS PRODUITSMONGODB+ SUPPORT API CLIENTES
  53. 53. FOCUS PRODUITSMONGODB+ BUILT-IN REPLICATION
  54. 54. FOCUS PRODUITSMONGODB+ BUILT-IN SHARDING
  55. 55. SOMMAIREPANORAMA NOSQLLE CONSTAT ACTUEL AVANTAGES ET LIMITES DU RELATIONNELLA PERCÉE NOSQL QUELQUES POINTS DE CONVERGENCE BEAUCOUP DE DISPARITÉSFOCUS PRODUITS FOCUS REDIS FOCUS CASSANDRA FOCUS MONGODB FOCUS NEO4J
  56. 56. FOCUS PRODUITSNEO4J+ DERRIÈRE LE PRODUIT, UNE COMPANY
  57. 57. FOCUS PRODUITSNEO4J+ LE DATA MODEL Database : userAppDb ID: 7152 Name: Rémy Age: 34 Twitter: @rgirodon WORKS WITH From: 01/11/2008 Project: STMicro LYS ID: 10097 Name:Nicolas Age: 29 Twitter: @nmoret
  58. 58. FOCUS PRODUITSNEO4J+ LE DATA MODEL •Les nœuds ont un ID •Les nœuds ont des propriétes key - value •Les arêtes ont un Label •Les arêtes ont une direction •Les arêtes ont des propriétes key - value •
  59. 59. FOCUS PRODUITSNEO4J+ LE REQUÊTAGE •Par Index APPLICABLE AUX PROPRIÉTÉS DES NŒUDS ET ARÊTES EX: RÉCUPÉRATION D’UN NŒUD PAR LA VALEUR DE SA PROPRIÉTÉ « NAME »
  60. 60. FOCUS PRODUITSNEO4J+ LE REQUÊTAGE •Par Traversal NAVIGATION DANS LE GRAPHE À PARTIR D’UN NŒUD CONSTRUCTION DE CHEMINS DE PARCOURS EN FONCTION D’OPTION
  61. 61. FOCUS PRODUITSNEO4J+ LE REQUÊTAGE •Exemple de Traversal (Les amis de mes amis sont mes amis…)
  62. 62. FOCUS PRODUITSNEO4J+ LE REQUÊTAGE •Exemple de Traversal (Les amis de mes amis sont mes amis…)
  63. 63. FOCUS PRODUITSNEO4J+ LE REQUÊTAGE •Par Cypher (Declarative Graphe Query Language)
  64. 64. FOCUS PRODUITSNEO4J+ LES MODES D’EXÉCUTION •Mode Embarqué ÉCRITURE EN FICHIER SUPPORT DES TRANSACTIONS API JAVA NATIVE PERFORMANCE++ CLIENT UNIQUE À LA BASE
  65. 65. FOCUS PRODUITSNEO4J+ LES MODES D’EXÉCUTION •Mode Server API REST UNIVERSELLE CLIENTS MULTIPLES À LA BASE
  66. 66. FOCUS PRODUITSNEO4J+ LES FEATURES •Haute disponibilité ENTERPRISE EDITION SLAVE DATABASE •Online backup ENTERPRISE EDITION
  67. 67. CONCLUSIONTOUS LES PROBLÈMES NE SONT PAS DES CLOUS !
  68. 68. Merci !NOM DU CLIENT

×