Loading…
Transcript

NoSQL

SQL er kjekt fordi ...

Hva er NoSQL?

Fordeler med distribuering

Agenda

- SQL

- Hva er NoSQL

- Eksempel

- Fordeler / ulemper

- Oppsummering

- Not only SQL

- Er en samlebetegnelse på lagringsteknologi som organiserer data

på alternative måter i forhold til relasjonelle databaser

- Sentralisert skjema

- Normaliserte data

- Standardisert

- Ingen konsistensproblemer, det finnes kun en kopi

- Lett å lage ad-hoc spørringer

- Lett å indeksere

- Verktøystøtte

- Alle kan SQL

Oppsummering

  • Man kan skalere!
  • Reduserer flaskehalser
  • Høyere tilgjengelighet
  • Man kan plassere datasenter rundt omkring i verden

og velge det nærmeste

- Relasjonelle databaser kommer ikke til å forsvinne med det første

- NoSQL løser visse typer problem bedre enn relasjonelle databaser, men medfører nye, ikke-trivielle utfordringer

NoSQL - teknologier

Ulemper med distribuering

.. men det skalerer ikke i det uendelige,

databasen blir flaskehalsen til slutt

HVIS man har ekstreme behov

Key-Value

Grafdatabaser

Kolonnebasert

Dokumentlager

  • Konsistens er et problem
  • Man må håndtere konflikter med forretningsregler

Memcached

Applikasjon

I tillegg så er det kjedelig når databasen går ned

Sammenligning av operasjoner

Database

NoSQL

SQL

  • Insert
  • Select
  • Update
  • Delete
  • Put
  • Get("key")
  • Delete
  • Søk betyr typisk table scan

Hadde det ikke vært kjekt om man kunne gjøre dette?

Applikasjon

NoSQL-søking

- Man kan typisk ikke gjøre joins / tilfeldig søk

- Triks: gjør om søk til get-operasjoner

  • prekalkuler søk
  • lagre resultatet

  • Ut over det er søk = distribuert table scan

Database

Hva er NoSQL?

Database

  • NoSQL-løsninger lemper typisk på begrensningene til relasjonelle databaser for å løse problemer som er vanskelig å løse med SQL
  • Typisk velger man bort konsistens for å få skalerbarhet og tilgjengelighet
  • Skjemafri

Database

CAP-teoremet

Det er umulig for et distribuert system å oppfylle følgende samtidig:

  • Consistency
  • Availability
  • Partition Tolerance

Eksempel - Key Value

Memcached

Applikasjon

Spørringene mine er trege!

Relasjonell DB

Eksempel - Key Value

Memcached

1:

get("sisteNyttFraBloggen")

Applikasjon

3:

Memcached

put("sisteNyttFraBloggen",

CACHE_LEVETID)

2:

sql("SELECT * FROM blogg LIMIT 1000")

Relasjonell DB

Memcache-klienter