monogram tech mondays: redis

18
Mýtus Relačné databázy (spolu s objektovými a OR) sú najvyspelejšou formou databáz. Nie je dôvod uvažovať o ničom lepšom.

Upload: tomas-majer

Post on 27-May-2015

973 views

Category:

Technology


3 download

DESCRIPTION

Prvá prezentácia z prvého a jedinečného eventu MONOGRAM Tech Mondays

TRANSCRIPT

Page 1: MONOGRAM Tech Mondays: REDIS

MýtusRelačné databázy (spolu s objektovými a

OR) sú najvyspelejšou formou databáz. Nie je dôvod uvažovať o ničom lepšom.

Page 2: MONOGRAM Tech Mondays: REDIS

REDIS - REmote DIctionary Serverkey-value store alebo data structure server

(string, hash, list, set, sorted set) patrí do skupiny NoSQL DB (not-SQL, noRel) dnes je silne vžité SQL – jednoduché pre

programátora a analytyka, zložité pre server ACID (atomicity, consistency, isolation, durability)

Page 3: MONOGRAM Tech Mondays: REDIS

ACID (v REDISe)Atomicity - je zabezpečené Consistency, Isolation - transakcie vo forme

blokovania všetkých ostatných volaní (transakcia sa nezastaví ani kvôli chybe)

Durability – všetko v RAM, môže sa robiť záloha na disk ako append-only súbor. Po reštarte sa znovu načíta do RAM.

Page 4: MONOGRAM Tech Mondays: REDIS

Iné noSQLDocument store Graph DBKey-value store (memcached)Hierarchický key-value store

Page 5: MONOGRAM Tech Mondays: REDIS

SQL vs noSQLSQL noSQLfixná štruktúra (tabuľky,

typy)časté krátke read/write

transakcie alebo dlhé batch jobs hlavne s čitanim cross veľa tabuliek

veľké BLOB dáta JOIN spĺňa ACID podmienkytažko distribuovateľné

(dáta sú zviazané už v DB)

univerzálne typyčasté krátke read alebo

write transakcie s malými dátami

dáta v databáze nie sú zviazané

plne nezabezpečuje ACIDrelatívne ľahko

distribuovateľne

Page 6: MONOGRAM Tech Mondays: REDIS

REDIS vs Memcachedredis - je zložitejší ako memcacheddb (viac

operácií aj funkcií)Keys - (navyše expirácia, hash keys - kľúč je

tabuľka, lists - kľúč je zoznam s operáciami insert, append, remove atď)

Sets - kľúč je množina Sorted Sets - utriedený zoznam Pub/Sub - publish, subscribe, channel Transactions – blokujúce (serialized)pipelining – šetrí sieťový roundtrip

Page 7: MONOGRAM Tech Mondays: REDIS

MýtusDatabázový server musí byť poriadne zložitý

a plný zložitých algoritmov aby bol rýchly.

Page 8: MONOGRAM Tech Mondays: REDIS

REDIS inside(jednoduchší, ako by sa dalo čakať)REDIS = len 20k riadkov kódu append only file, všetko je v RAM (a VM) dva druhy protokolov

jednoduchý textový veľmi jednoduchý textový

=> široká podpora klientov (možno viac ako MySQL)

Page 9: MONOGRAM Tech Mondays: REDIS

REDIS - Multiuser serverredis obsluhuje mnoho userov (rádovo 10k)

Znamená to mnoho threadov? Ako dokáže menežovať toľko threadov? Nemusí – redis je single threaded (event

library)

Page 10: MONOGRAM Tech Mondays: REDIS

MýtusPre obslúženie mnoho úloh a userov

potrebujem mnoho threadov.

Page 11: MONOGRAM Tech Mondays: REDIS

Event Libraryhttp://redis.io/topics/internals-eventlib

jedna veľká slučka (Event Loop)rad eventov s prioritou rozdelený podľa zdrojov

(napr. IO)vytváram eventy (napr. počúvam zo siete),

hádžem ich do zoznamu eventov spolu s časmi pre scheduler

Vo volaní eventu neblokujem hlavné vlákno. Ak čakám na nejaký zdroj, volanie robím znovu ako event v event loop (asynchrónne).

Iny spôsob myslenia, napr. nemám stack trace ani pri rekurzívnom volaní (nevýhoda pre debug)

Page 12: MONOGRAM Tech Mondays: REDIS

MýtusV dnešných viacjadrových serveroch musí

mať proces viac threadov, aby bol efektívny.

Nemusí. Môže mať viac procesov.

Page 13: MONOGRAM Tech Mondays: REDIS

Event LibraryVhodné pre “mega multi”-user servere (napr.

REDIS)

Je ale použiteľny aj inde?

Page 14: MONOGRAM Tech Mondays: REDIS

MýtusRýchly server (web, TCP, file, ...) musí byť

špecializovaný software.Programovať takýto server v javascripte je

čistá samovražda (prečo by som to vlastne robil???).

Page 15: MONOGRAM Tech Mondays: REDIS

Node.JS

(DEMO)

Page 16: MONOGRAM Tech Mondays: REDIS

Aky rýchly je redis? http://redis.io/topics/benchmarks

SET GET100007 requests

completed in 0.88 seconds 50 parallel clients 3 bytes payload58.50% <= 0 milliseconds

99.17% <= 1 milliseconds 99.58% <= 2 milliseconds 99.85% <= 3 milliseconds 99.90% <= 6 milliseconds 100.00% <= 9 milliseconds

114 293.71 requests per second

100000 requests completed in 1.23 seconds

50 parallel clients3 bytes payload43.12% <= 0 milliseconds

96.82% <= 1 milliseconds 98.62% <= 2 milliseconds 100.00% <= 3 milliseconds

81 234.77 requests per second

Page 17: MONOGRAM Tech Mondays: REDIS

Budúcnosť databáz?množstvo dát (GB, TB)sociálne siete – silné väzby, interaktivitaveľa RAM - ako ju vôbec využiť?SSD disky – vhodné pre redis

Page 18: MONOGRAM Tech Mondays: REDIS

Ďakujem za pozornosť.

Diskusia