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
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 1200
http://www.internetnews.com/stats/article.php/3663641
8. Reden 2: zoveel snelheid nodig
• Keten schakelingen
• Near realtime
• 24 / 24
• web 2.0 web 3.0
• Alle data is interconnected
9. Reden 3: Complexiteit van change
• Semi gestructureerd wordt steeds belangrijker
• Meer data per entiteit
• Continue changes op werkelijke entiteiten
26. 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) }
28. Some old Google stats
Aug. '04 Mar. '06 Sep. '07
Number of
29 171 2,217
jobs (1000s)
Avg.
completion 634 874 395
time (secs)
Machine years
217 2,002 11,081
used
map input
3,288 52,254 403,152
data (TB)
map output
758 6,743 34,774
data (TB)
reduce output
193 2,970 14,018
data (TB)
Avg. machines
157 268 394
per job
Unique implementations
map 395 1958 4083
reduce 269 1208 2418
30. Column / BigTable
EmpId Lastname Firstname Salary
1 Smith Joe 40000
2 Jones Mary 50000
3 Johnson Cathy 44000
1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;
31. Column / BigTable
• DHT
– Gebaseerd op Dynamo
– Column: { name , version , value, timestamp}
multi dimensionaal
– Schema less
– Column Families Consistency scope
– Super columns
44. 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
46. 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…)