NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali

1,819 views

Published on

Seconda parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Presentata un'introduzione sulle basi di dati non relazionali e sulle implicazioni che le loro caratteristiche hanno nello sviluppo di applicazioni enterprise.

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

No Downloads
Views
Total views
1,819
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
66
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali

  1. 1. NoSQL Data Stores Introduzione alle basi di dati non relazionaliDiTeDi, Udine - Italia 15-12-2012
  2. 2. Architettura Web ‘Classica’
  3. 3. Architettura Web ‘Classica’
  4. 4. 4
  5. 5. 5
  6. 6. 6
  7. 7. Termine Usurpato! Carlo Strozzi http://www.strozzi.it/users/carlo/vitae.html
  8. 8. Concetti totalmente nuovi?!?
  9. 9. Concetti totalmente nuovi?!? DBM
  10. 10. Le origini di Tokyo Cabinet DBM
  11. 11. Chi conosce questo signore?
  12. 12. E questo?
  13. 13. E questo? Ken Thompson http://en.wikipedia.org/wiki/Ken_Thompson
  14. 14. Eppure...
  15. 15. PERCHÈ QUESTA HYPE?
  16. 16. MOLTI PIÙ DATI
  17. 17. Big Datahttp://blog.thomsonreuters.com/index.php/big-data-graphic-of-the-day/
  18. 18. VARIABILITÀ DEI DATI
  19. 19. Progresso tecnologico Costo 1MB DRAM http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/12_MassStorage.html
  20. 20. CONNESSIONI
  21. 21. MOLTI PIÙ ACCESSI
  22. 22. Dynamo BigTable
  23. 23. Implementazione di Dynamo
  24. 24. Cenni su Riak• Database key-value• Interfaccia HTTP• Usando i link si possono collegare chiavi fra di loro• CAP «configurabile» (si può decidere fra coerenza e disponibilità per ciascuna richiesta)• Supporta ricerca full-text
  25. 25. Clustering Fonte: http://wiki.basho.com/28
  26. 26. Persistenza Configurabile N numero nodi del R cluster in cui replicare il dato W29
  27. 27. Replicazione Fonte: http://wiki.basho.com/30
  28. 28. Persistenza Configurabile N numero nodi da cui R il dato deve essere letto affinchè sia W considerato valido31
  29. 29. Persistenza Configurabile N numero nodi in cui il dato deve essere R scritto affinchè la scrittura sia W considerata valida32
  30. 30. Coerenza eventuale W + R <= N33
  31. 31. Quorum W+R>N34
  32. 32. Recap su Riak: • Interfaccia HTTP • Adatto alle situazioni in cui c’è bisogno di HA • Senza rinunciare ad alcune comode operazioni sui dati (usando links, pre/post commit hooks) • Non adatto se c’è necessità di eseguire query complesse35
  33. 33. Implementazione di BigTable http://hadoop-hbase.blogspot.it/2011/12/introduction-to-hbase.html
  34. 34. Salvataggio dei dati
  35. 35. Salvataggio dei dati Es. Data Location: Stefano Valle/Profilo:Paese
  36. 36. Cenni su HBase• Controllo di versione incorporato• Compressione• Garbage collection• Tabelle in memoria• Coerenza (no availability)• Write Ahead Logging• Basato su Hadoop• Pensato per cluster grandi (5-20 nodi)
  37. 37. SCALABILITÀ ORIZZONTALE
  38. 38. ACID BASEAtomic BasicConsistent AvailableIsolated Soft StateDurable Eventually Consistent
  39. 39. Concentriamoci sull’Atomicità Aggiornamento ordine Ordine Oggetto 1 Oggetto 2 Cliente43
  40. 40. DA ENTITÀ RELAZIONI
  41. 41. AD AGGREGATI
  42. 42. Aggregate data model order_id = 1001 date = 2012-11-10 total_amount = 10.00€ name = Johnny surname = Appleseed product_name: Pear quantity: 2 item_price: 2.50€ total_price: 5.00€ product_name: Mango quantity: 1 item_price: 5.00€ total_price: 5.00€
  43. 43. ACID con gli aggregati Aggiornamento ordine Ordine order_id = 1001 date = 2012-11-10 Oggetto 1 total_amount = 10.00€ name = Johnny Oggetto 2 surname = Appleseed product_name: Pear quantity: 2 Cliente item_price: 2.50€ total_price: 5.00€ product_name: Mango quantity: 1 item_price: 5.00€ total_price: 5.00€47
  44. 44. COME SONO I DATI SU RDBMS?
  45. 45. COME LI VORREMMO UTILIZZARE?
  46. 46. Impedence MismatchFilm Genere Drammatico:Titolo Anno VisioniSchindler’s List 1993 3454Pulp Fiction 1994 2114Il Padrino 1972 3873Film Genere Western:Titolo Anno VisioniIl buono, il brutto, il cattivo 1966 7834Film Genere Commedia:Titolo Anno VisioniMamma ho perso l’aereo 1990 3555
  47. 47. Impedence Mismatch
  48. 48. Impedence Mismatch JOIN per evitare molteplici query
  49. 49. Dati in forma aggregata: { "genere":"Drammatico", "film":[ { "titolo":"Schindlers List", "visioni":3454, "anno":1993 }, { "titolo":"Pulp Fiction", "visioni":2114, "anno":1994 }, { "titolo":"Il Padrino", "visioni":3873, "anno":1972 } ] }
  50. 50. SCHEMALESS IS A LIE!
  51. 51. Da... Pannello Analisi Room TV Controllo Statistiche Dati55
  52. 52. A... Pannello Analisi Room TV Controllo Statistiche API Dati56
  53. 53. O meglio... Pannello Analisi Room TV Controllo Statistiche API API API Metadati Dati hotel Statistiche57
  54. 54. Domain Driven Design58
  55. 55. Fonte: http://www.domainlanguage.com/ddd/patterns/59
  56. 56. + CQRS Fonte: http://www.domainlanguage.com/ddd/patterns/60
  57. 57. POLYGLOT PERSISTANCE
  58. 58. Come scegliere?
  59. 59. TRADEOFFS
  60. 60. PERSISTENZA VS SPEED
  61. 61. DISPONIBILITÀ VS COERENZA
  62. 62. TCO, CONOSCENZE INTERNE
  63. 63. TEMPO, RISORSE, FATICA
  64. 64. SOLIDITÀ
  65. 65. Hosting69
  66. 66. MODELLO DATI
  67. 67. Modello datiDimensione Key Value Colonne Documentale A grafo > 90% dei casi d’uso Complessità Fonte: http://www.slideshare.net/emileifrem/an-overview-of-nosql-jfokus-2011
  68. 68. KEY/VALUE
  69. 69. Esempi73
  70. 70. Confronto replication sharding multi-master support support Memcached No (use Yes (through No (use repcached client library) repcached instead) instaed) Project Async Yes Yes Voldemort Redis Async No No Riak Async Yes Yes Peer-based74
  71. 71. Confronto (2) data concurrency data types durability storage control Memcached RAM Lock-free Blob n.a. Project RAM, BDB, MVCC Typed Data Voldemort MySql, storage others dependant Redis RAM + disk Locks Semi-typed Append- only log Riak RAM, disk MVCC Semi-typed Durable (Vector- write clocks) quorum75
  72. 72. Confronto (3) requires transactions secondary compaction indexex Memcached No No No Project Data storage No No Voldemort dependant Redis Snapshot Yes (multi No operations queues) Riak No No Yes76
  73. 73. Confronto (4) security interface query language protocol support Memcached Via SASL TCP, UDP Commands C Project None Protocol Commands Java Voldemort Buffers, Thrift, Avro and Java Serialization Redis Passwords Simple text Commands C/C++ over TCP Riak None HTTP, Map reduce Erlang protobuf (weak support)77
  74. 74. DOCUMENTALE
  75. 75. Esempi79
  76. 76. Confronto replication sharding multi-master support support CouchDB Master-master Yes (with filters Yes in BigCouch) MongoDB Master-slave Yes No (replica sets) OrientDB Master-master Dec. 2012 / Yes Jan. 2013 RavenDB Master-master Yes Yes80
  77. 77. Confronto (2) data concurrency data types durability storage control CouchDB Disk Lock-free JSON Crash-only MVCC MongoDB Disk Write lock BSON Write-ahead log, safe mode OrientDB Disk MVCC JSON Write-ahead log RavenDB RAM, Disk Configurable JSON Write-ahead optimistic log, snapshot concurrency (via ESE)81
  78. 78. Confronto (3) requires transactions secondary compaction indexex CouchDB Yes, file rewrite No Yes MongoDB No No Yes OrientDB No Yes No RavenDB No Yes Yes82
  79. 79. Confronto (4) security interface query language protocol support CouchDB Users HTTP Map reduce Erlang (REST) (weak support) MongoDB Users Binary over Commands, C++ TCP map reduce OrientDB Users, HTTP SQL(+), Java ACL (REST), Tinkerpop Binary over TCP RavenDB Users .NET API, LINQ C# HTTP (REST)83
  80. 80. COLONNE
  81. 81. Esempi85
  82. 82. GRAFO
  83. 83. Esempi Flock87
  84. 84. COSA PORTARE A CASA
  85. 85. ONE SIZE DOES NOT FIT ALL
  86. 86. DATABASE RELAZIONALI
  87. 87. DATASTORE NOSQL
  88. 88. GRAZIE
  89. 89. DOMANDE?
  90. 90. http://www.mvassociati.it/
  91. 91. http://www.hubme.in/
  92. 92. Per Approfondire:96
  93. 93. Per Approfondire:97
  94. 94. Per Approfondire:98
  95. 95. Per Approfondire: • Links: – http://nosql.findthebest.com/ – http://www.dzone.com/mz/nosql – newsletter Nosql Weekly – http://www.nosql-database.org/ – http://couchdb.apache.org/ – http://www.mongodb.org/ – http://redis.io/ – http://www.orientdb.org/ – http://www.draftq.com/ebooks/DraftQ/the-little-mongodb-book99
  96. 96. Photo Credits • http://www.flickr.com/photos/kunel/246544081/ • http://www.flickr.com/photos/lordcolus/5977615749/ • http://www.flickr.com/photos/gewitterhexer/5540504147/ • http://blog.thomsonreuters.com/index.php/big -data-graphic-of-the-day/ • http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/12_MassStorage.html • http://www.nathaninfocus.com/2011/01/social-networking-phenomenon/facebook-growth-chart/ • http://www.flickr.com/photos/phuonglovejesus2782010/5055970759/ • http://www.flickr.com/photos/kalexanderson/5944050340/ • http://www.flickr.com/photos/arichards-gallery/3578048793/ • http://www.flickr.com/photos/jabb/6956142046/ • http://www.flickr.com/photos/druclimb/47310529/ • http://www.flickr.com/photos/miggslives/5351504116/ • http://www.flickr.com/photos/polkadotcreations/2480587587/ • http://www.flickr.com/photos/wien/418840561/ • http://www.flickr.com/photos/heartlover1717/2605609803/ • http://www.flickr.com/photos/sepehrehsani/5766453552/ • http://www.flickr.com/photos/47108884@N07/6949078701/ • http://www.flickr.com/photos/ricephotos/354939144/ • http://www.flickr.com/photos/toptechwriter/3069396941/ • http://www.flickr.com/photos/djnordic/167433120/ • http://www.flickr.com/photos/jpstanley/69523927/ • http://www.flickr.com/photos/lodigs/2833648828/ • http://www.flickr.com/photos/ppym1/387781444/ • http://www.flickr.com/photos/freefoto/3844247553/ • http://www.flickr.com/photos/31492524@N00/3801200094/ • http://www.flickr.com/photos/sararah/2119107500/ • http://www.flickr.com/photos/wlef70/7507679760/ • http://www.flickr.com/photos/wold/369244351/ • http://www.flickr.com/photos/ilri/7839428936/ • http://www.flickr.com/photos/dhwright/8012651441/ • http://www.flickr.com/photos/birminghammag/7979485144/ • http://www.flickr.com/photos/capcase/4970062870/ • http://www.flickr.com/photos/aidanwojtas/5879866927/100
  97. 97. Stefano Maraspin Stefano Valle@maraspin @stefanovalles.maraspin@mvassociati.it s.valle@mvassociati.it

×