[Swedish] NoSQL at Javaforum Stockholm

[Swedish] NoSQL at Javaforum Stockholm

Slides (all in Swedish) from my presentation at Javaforum Stockholm on approaching and evaluating NoSQL as well as two high level use cases from Hitta.se.

Approx 30 minutes.

A204e1fe2002bc6d087391759c3dfab0?s=128

Mårten Gustafson

October 18, 2011
Tweet

Transcript

  1. Inte bara SQL Mårten Gustafson Javaforum Stockholm, 2011-10-18

  2. Friskrivning Jag känner inte till alla produkter Jag försöker illustrera

    ett brett resonemang Området tenderar att bli väl religiöst
  3. Hej! Hej, jag heter Mårten Gustafson

  4. Här jobbar jag

  5. Vi kör mest Java

  6. Mer än 10 olika tjänster på en server inte ovanligt

  7. Flera likadana servrar

  8. utmaningar...

  9. störningar

  10. service

  11. redundans

  12. tillgänglighet

  13. kapacitet

  14. traditionellt...

  15. None
  16. Att vara beroende av en enda av vad som helst

    är alltid riskabelt
  17. ?

  18. NoSQL

  19. Not only SQL

  20. Inte bara SQL

  21. Inte bara relationsdatabaser

  22. “NoSQL is a movement promoting a loosely defined class of

    non-relational data stores that break with a long history of relational databases” - Wikipedia
  23. “NoSQL is a movement promoting a loosely defined class of

    non-relational data stores that break with a long history of relational databases” - Wikipedia •Inte en enskild teknik
  24. “NoSQL is a movement promoting a loosely defined class of

    non-relational data stores that break with a long history of relational databases” - Wikipedia •Inte en enskild teknik •Inte för en enskild typ av data
  25. “NoSQL is a movement promoting a loosely defined class of

    non-relational data stores that break with a long history of relational databases” - Wikipedia •Inte en enskild teknik •Inte för en enskild typ av data •Inte för ett enskilt behov
  26. “NoSQL is a movement promoting a loosely defined class of

    non-relational data stores that break with a long history of relational databases” - Wikipedia •Inte en enskild teknik •Inte för en enskild typ av data •Inte för ett enskilt behov
  27. Det finns inga gratis luncher

  28. Exempel “...vår RDBMS är en SPoF som inte skalar”

  29. Exempel “...vår RDBMS är en SPoF som inte skalar” Multi-master

    flytta till?
  30. Exempel “...vår RDBMS är en SPoF som inte skalar” ACID

    Multi-master offrar? flytta till?
  31. Exempel “...vår RDBMS är en SPoF som inte skalar” distribuering

    / replikering ACID Multi-master offrar? använder? flytta till?
  32. Exempel “...vår RDBMS är en SPoF som inte skalar” distribuering

    / replikering ACID Multi-master offrar? använder? flytta till? backup försvårar?
  33. Exempel “...vår RDBMS är en SPoF som inte skalar” distribuering

    / replikering De-normalisering ACID Multi-master offrar? använder? flytta till? kräver? backup försvårar?
  34. Exempel “...vår RDBMS är en SPoF som inte skalar” distribuering

    / replikering De-normalisering ACID Multi-master offrar? använder? flytta till? kräver? integritet upplöser? backup försvårar?
  35. Exempel “...vår RDBMS är en SPoF som inte skalar” distribuering

    / replikering De-normalisering sökning ACID Multi-master offrar? använder? flytta till? försvårar? kräver? integritet upplöser? backup försvårar?
  36. Allt handlar om avvägningar

  37. frågeställningar

  38. passar lagringsmodellen nuvarande data? Underskatta inte frågan om huruvida er

    data “passar” en produkt Mängden arbete för att få den att passa?
  39. enkel att använda? Klientbibliotek i de språk ni behöver?

  40. sök och rapportering? Vilka åtkomstkrav och mönster kräver ni idag?

    I morgon? Vad kommer kunder och ledninge behöva?
  41. pratar den HTTP? För oss på Hitta.se har detta varit

    viktigt - vi bygger allt på HTTP
  42. tillgänglighet och redundans? Vilken typ av tillgänglighet? Hur hanteras bortfall

    av noder?
  43. kan du övervaka den? Hur och med vad?

  44. prestanda? Out-of-the-box vs. vertical vs. horizontal?

  45. hur lätt skalar den ut? Vad krävs för att lägga

    till fler noder?
  46. hur lätt skalar den in? Vad krävs för att ta

    bort noder?
  47. finns det kommersiell support?

  48. fungerar den på dina servrar?

  49. fungerar den på era klienter?

  50. är den vettigt paketerad? Vettiga installationspaket? Bra grundinställningar (användare, grupper

    och rättigheter)?
  51. förstår du den? Underskatta inte detta

  52. sparas data tillförlitligt? Sparas data tillförlitligt på disk -- förutsatt

    att det är vad du behöver
  53. Det finns ingen universiell lösning

  54. Våra krav

  55. HTTP

  56. HTTP proxies

  57. HTTP proxies lastbalanserare

  58. HTTP proxies lastbalanserare caches

  59. HTTP proxies lastbalanserare caches HTTP klienter (etag, if-modified-since, etc)

  60. HTTP proxies lastbalanserare caches HTTP klienter (etag, if-modified-since, etc) språk-,

    plattform- och OS-neutralt
  61. HTTP proxies lastbalanserare caches HTTP klienter (etag, if-modified-since, etc) språk-,

    plattform- och OS-neutralt MIME / Content-Type
  62. OS X och Linux

  63. Vår kategorisering

  64. informations- struktur

  65. graf eller nyckel/värde

  66. graf

  67. nyckel / värde “mårten”

  68. operativa kvalitéter

  69. isolerad eller skalbar

  70. isolerad + = få rörliga delar, enkel - = svårare

    att skala
  71. isolerad + = få rörliga delar, enkel - = svårare

    att skala
  72. isolerad  + = få rörliga delar, enkel - =

    svårare att skala
  73. skalbar + = elastiskt, “sömlös” redundans - = Aktivt kluster,

    många rörliga delar
  74. skalbar + = elastiskt, “sömlös” redundans - = Aktivt kluster,

    många rörliga delar
  75. skalbar  + = elastiskt, “sömlös” redundans - = Aktivt

    kluster, många rörliga delar
  76. isolerad skalbar graf ? nyckel/värde mycket förenklat

  77. isolerad skalbar graf ? nyckel/värde mycket förenklat Neo4J InfiniteGraph

  78. isolerad skalbar graf ? nyckel/värde mycket förenklat Neo4J InfiniteGraph CouchDB

    RavenDB Redis
  79. isolerad skalbar graf ? nyckel/värde mycket förenklat Neo4J InfiniteGraph CouchDB

    RavenDB Redis Riak Voldermort Cassandra
  80. Scenarion

  81. Scenario 1 Information från användare

  82. Scenario 1 blandning av binärt & JSON med naturlig nyckel

  83. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  84. Scenario 1 vi behöver kunna skriva och läsa från valfri

    nod
  85. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  86. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  87. None
  88. None
  89. None
  90. bra paketering & suverän community

  91. enkel, på server och arbetstation

  92. kompetent och dedikerat team

  93. mycket statistik

  94. HTTP API

  95. nästan allt går att justera (mycket per request)

  96. Scenario 2 konfigurationsdata som JSON

  97. Scenario 2 åtkomst via känd nyckel

  98. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  99. Scenario 2 data ändras sällan

  100. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  101. isolerad skalbar graf Neo4J InfiniteGraph ? nyckel/värde CouchDB RavenDB Redis

    Riak Voldemort Cassandra
  102. Scenario 2 Vi behöver replikera vid behov

  103. Production

  104. Production

  105. Production

  106. Configuration master Production

  107. Configuration master Production Development

  108. enkel, både på server och arbetstation

  109. HTTP API

  110. vyer för access via alternativa nycklar

  111. massor med statistik

  112. barnsligt enkel replikering

  113. Summering

  114. Summering • utvärdera

  115. Summering • utvärdera • kritisera

  116. Summering • utvärdera • kritisera • testa elakt och hänsynslöst

  117. Summering • utvärdera • kritisera • testa elakt och hänsynslöst

    • tro inte på hajpen
  118. @martengustafson http://marten.gustafson.pp.se/ marten.gustafson@gmail.com