$30 off During Our Annual Pro Sale. View Details »

[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.

Mårten Gustafson

October 18, 2011
Tweet

More Decks by Mårten Gustafson

Other Decks in Technology

Transcript

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

    View Slide

  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

    View Slide

  3. Hej!
    Hej, jag heter Mårten Gustafson

    View Slide

  4. Här jobbar jag

    View Slide

  5. Vi kör mest Java

    View Slide

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

    View Slide

  7. Flera likadana servrar

    View Slide

  8. utmaningar...

    View Slide

  9. störningar

    View Slide

  10. service

    View Slide

  11. redundans

    View Slide

  12. tillgänglighet

    View Slide

  13. kapacitet

    View Slide

  14. traditionellt...

    View Slide

  15. View Slide

  16. Att vara beroende av en enda av vad som helst är alltid
    riskabelt

    View Slide

  17. ?

    View Slide

  18. NoSQL

    View Slide

  19. Not only SQL

    View Slide

  20. Inte bara SQL

    View Slide

  21. Inte bara
    relationsdatabaser

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  27. Det finns inga
    gratis luncher

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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?

    View Slide

  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?

    View Slide

  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?

    View Slide

  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?

    View Slide

  36. Allt handlar om
    avvägningar

    View Slide

  37. frågeställningar

    View Slide

  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?

    View Slide

  39. enkel att använda?
    Klientbibliotek i de språk ni behöver?

    View Slide

  40. sök och rapportering?
    Vilka åtkomstkrav och mönster kräver ni idag? I morgon?
    Vad kommer kunder och ledninge behöva?

    View Slide

  41. pratar den HTTP?
    För oss på Hitta.se har detta varit viktigt - vi bygger allt
    på HTTP

    View Slide

  42. tillgänglighet och redundans?
    Vilken typ av tillgänglighet?
    Hur hanteras bortfall av noder?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  47. finns det kommersiell support?

    View Slide

  48. fungerar den på dina servrar?

    View Slide

  49. fungerar den på era klienter?

    View Slide

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

    View Slide

  51. förstår du den?
    Underskatta inte detta

    View Slide

  52. sparas data tillförlitligt?
    Sparas data tillförlitligt på disk -- förutsatt att det är vad
    du behöver

    View Slide

  53. Det finns ingen
    universiell
    lösning

    View Slide

  54. Våra krav

    View Slide

  55. HTTP

    View Slide

  56. HTTP
    proxies

    View Slide

  57. HTTP
    proxies
    lastbalanserare

    View Slide

  58. HTTP
    proxies
    lastbalanserare
    caches

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  62. OS X och Linux

    View Slide

  63. Vår kategorisering

    View Slide

  64. informations-
    struktur

    View Slide

  65. graf
    eller
    nyckel/värde

    View Slide

  66. graf

    View Slide

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

    View Slide

  68. operativa
    kvalitéter

    View Slide

  69. isolerad
    eller
    skalbar

    View Slide

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

    View Slide

  71. isolerad

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

    View Slide

  72. isolerad

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

    View Slide

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

    View Slide

  74. skalbar

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

    View Slide

  75. skalbar


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

    View Slide

  76. isolerad skalbar
    graf ?
    nyckel/värde
    mycket förenklat

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  80. Scenarion

    View Slide

  81. Scenario 1
    Information från användare

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  87. View Slide

  88. View Slide

  89. View Slide

  90. bra paketering & suverän community

    View Slide

  91. enkel, på server och arbetstation

    View Slide

  92. kompetent och dedikerat team

    View Slide

  93. mycket statistik

    View Slide

  94. HTTP API

    View Slide

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

    View Slide

  96. Scenario 2
    konfigurationsdata som JSON

    View Slide

  97. Scenario 2
    åtkomst via känd nyckel

    View Slide

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

    View Slide

  99. Scenario 2
    data ändras sällan

    View Slide

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

    View Slide

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

    View Slide

  102. Scenario 2
    Vi behöver
    replikera vid behov

    View Slide

  103. Production

    View Slide

  104. Production

    View Slide

  105. Production

    View Slide

  106. Configuration master
    Production

    View Slide

  107. Configuration master
    Production
    Development

    View Slide

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

    View Slide

  109. HTTP API

    View Slide

  110. vyer för access via alternativa nycklar

    View Slide

  111. massor med statistik

    View Slide

  112. barnsligt enkel replikering

    View Slide

  113. Summering

    View Slide

  114. Summering
    • utvärdera

    View Slide

  115. Summering
    • utvärdera
    • kritisera

    View Slide

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

    View Slide

  117. Summering
    • utvärdera
    • kritisera
    • testa elakt och hänsynslöst
    • tro inte på hajpen

    View Slide

  118. @martengustafson
    http://marten.gustafson.pp.se/
    [email protected]

    View Slide