2010 iska - tim m - nosql iska

405 views

Published on

Public session given about NoSQL databases

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
405
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2010 iska - tim m - nosql iska

  1. 1. NoSQL ISKA Tim Mahy
  2. 2. NoSQL ISKA• Wat is het• Waarom is het er• Welke vormen zijn er• Voorbeeld (RavenDb)• Toekomst
  3. 3. Wat ?
  4. 4. Wat het NIET is• Een sales term (nog niet)• Elke database die maar niet relationeel is• Een haat beweging tegen SQL databases• Een idee dat in de kinderschoenen staat
  5. 5. Wat het WEL isNot Only SQL
  6. 6. Waarom?
  7. 7. Reden 1: zoveel data ExaBytes per jaar 2010 988 2009 623 2008 397 Exabytes 2007 253 2006 161 0 200 400 600 800 1000 1200http://www.internetnews.com/stats/article.php/3663641
  8. 8. Reden 2: zoveel snelheid nodig• Keten schakelingen• Near realtime• 24 / 24• web 2.0  web 3.0• Alle data is interconnected
  9. 9. Reden 3: Complexiteit van change• Semi gestructureerd wordt steeds belangrijker• Meer data per entiteit• Continue changes op werkelijke entiteiten
  10. 10. Reden 4: achitectuur1980’s: Applicatie Database
  11. 11. Reden 4: achitectuur1990’s: Applicatie Applicatie Applicatie Database
  12. 12. Reden 4: achitectuur2000’s: Service Service Service Database Database Database
  13. 13. Reden 4: achitectuur> 2000: Queue Service Service Service Database Database Database
  14. 14. Reden 4: architectuur• Binnenkort? – Command Query Responsibility Seggregation – Business Event Sourcing
  15. 15. Waarom nu ?• Reden 1: schaal• Reden 2: connectivity• Reden 3: semi structured data• Reden 4: achitectuur
  16. 16. CAP theorie Availability Kies er tweeConsistency Partitioning
  17. 17. CAP theorie AvailabilityRelationaldatabases Kies er twee Consistency Partitioning
  18. 18. RDBMS problemen  patches • Transacties  nolock • Structured  Xml fields • Size  filegroup partitioning • Performance  replication and master slave
  19. 19. Waarom niet db type per serviceSOA geeft vrijheid Service Service Service RDBMS GraphDb Document Db
  20. 20. Andere data structuren• Key-Value• Graph• Column / BigTable• Document• Geo• Object• Xml• Array• Memory• Disk• Grid (P2P)
  21. 21. Key-Value
  22. 22. Key-Value• Consistent hashing of key• Distributed• Alles gebeurd op basis v/d key• Doet denken aan een persisted cache
  23. 23. Key-Value• Query / put mogelijkheden: – map / reduce – key• Azure table storage• Amazon SimpleDb• MemcacheDB• Tokyo Cabinet
  24. 24. Map / Reduce?
  25. 25. Wat is die map / reduce?• 2 functies (voorbeeld) Map: from order in docs.Orders from line in order.Lines select new{ line.Album, line.Quantity } Reduce from result in results group result by result.Album into g select new{ Album = g.Key, Quantity = g.Sum(x=>x.Quantity) }
  26. 26. Wat is dan eigenlijk het nut van M/R?
  27. 27. Some old Google stats Aug. 04 Mar. 06 Sep. 07Number of 29 171 2,217jobs (1000s)Avg.completion 634 874 395time (secs)Machine years 217 2,002 11,081usedmap input 3,288 52,254 403,152data (TB)map output 758 6,743 34,774data (TB)reduce output 193 2,970 14,018data (TB)Avg. machines 157 268 394per jobUnique implementationsmap 395 1958 4083reduce 269 1208 2418
  28. 28. Column / BigTable
  29. 29. Column / BigTable EmpId Lastname Firstname Salary1 Smith Joe 400002 Jones Mary 500003 Johnson Cathy 440001,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;
  30. 30. Column / BigTable• DHT – Gebaseerd op Dynamo – Column: { name , version , value, timestamp}  multi dimensionaal – Schema less – Column Families  Consistency scope – Super columns
  31. 31. Column familiesKey Column Column Column ColumnKey ColumnKey Column Column Column Voorbeeld: • Groen = Persoon • Rood = Studies
  32. 32. Column families{ "mccv":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"foo@bar.com"}, "webSite":{"name":"webSite", "value":"http://bar.com"} }, "Stats":{ "visits":{"name":"visits", "value":"243"} } }, "user2":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"user2@bar.com"}, "twitter":{"name":"twitter", "value":"user2"} } }}
  33. 33. Super columnsKey Column ColumnKey ColumnKey Column Column Column
  34. 34. Super columns{ "mccv": { "Tags": { "cassandra": { "incubator": {"incubator": "http://incubator.apache.org/cassandra/"}, "jira": {"jira": "http://issues.apache.org/jira/browse/CASSANDRA"} }, "thrift": { "jira": {"jira": "http://issues.apache.org/jira/browse/THRIFT"} } } }}
  35. 35. Column / BigTable• Query: map / reduce• Voordelen: – Sneller te aggregeren voor queries – Geen seeks• Cassandra• Hypertable• Google Tables (gemakkelijk/gratis)• Hadoop
  36. 36. Graph
  37. 37. Graph• Voor complexe relaties• Populair op social websites moeder werkt samen met zuster vader vader
  38. 38. Graph
  39. 39. Document based
  40. 40. Document based• Full document storage
  41. 41. Document based• Query: – Map / Reduce – Indexes• Formaat is meestal JSON of Binary JSON• Totaal andere manier van moduleren• Demo: – RavenDb• Popular: – MongoDb, Solr, CouchDb, ….
  42. 42. RavenDb
  43. 43. Nadelen? Actually NoSQL Sucks!• Query is niet op basis van standaarden• Query is meestal via map/reduce in een functionele programmeertaal• Basis standaard tooling ontbreekt meestal• Slechts bruikbaar in 10% v/d cases (scale, …)• Migraties• Bijna nooit authenticatie / authorisatie voorzien• Datastorage in eigen formaten• Enkel RavenDb zit op de MS stack
  44. 44. 1 stap terug om 2stappen vooruit te zetten
  45. 45. Voordelen• Bijna allemaal via REST/http API (authenticatie/authorisatie zelf te regelen)• Zijn beter voor systemen waarbij het relationele model niet goed past• Is meestal proven technologie (Cassandra  Facebook, etc…)
  46. 46. Use the right tool for the right job!

×