MONOGRAM Tech Mondays: REDIS

1,182 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,182
On SlideShare
0
From Embeds
0
Number of Embeds
327
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MONOGRAM Tech Mondays: REDIS

  1. 1. Mýtus<br />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.<br />
  2. 2. REDIS - REmote DIctionary Server<br />key-value store alebo data structure server (string, hash, list, set, sorted set) <br />patrí do skupiny NoSQL DB (not-SQL, noRel) <br />dnes je silne vžité SQL – jednoduché pre programátora a analytyka, zložité pre server ACID (atomicity, consistency, isolation, durability)<br />
  3. 3. ACID (v REDISe)<br />Atomicity - je zabezpečené <br />Consistency, Isolation - transakcie vo forme blokovania všetkých ostatných volaní (transakcia sa nezastaví ani kvôli chybe) <br />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.<br />
  4. 4. InénoSQL<br />Document store <br />Graph DB<br />Key-value store (memcached)<br />Hierarchický key-value store<br />
  5. 5. SQL vsnoSQL<br />SQL<br />noSQL<br />fixná štruktúra (tabuľky, typy)<br />časté krátke read/write transakcie alebo dlhé batch jobs hlavne s čitanim cross veľa tabuliek<br />veľké BLOB dáta <br />JOIN <br />spĺňa ACID podmienky<br />tažko distribuovateľné (dáta sú zviazané už v DB) <br />univerzálne typy<br />časté krátke read alebo write transakcie s malými dátami<br />dáta v databázenie súzviazané<br />plnenezabezpečuje ACID<br />relatívneľahkodistribuovateľne<br />
  6. 6. REDIS vsMemcached<br />redis - je zložitejší ako memcacheddb (viacoperácií aj funkcií)<br />Keys - (navyše expirácia, hash keys - kľúč je tabuľka, lists - kľúč je zoznam s operáciami insert, append, remove atď)<br />Sets - kľúč je množina <br />Sorted Sets - utriedený zoznam <br />Pub/Sub - publish, subscribe, channel<br />Transactions – blokujúce (serialized)<br />pipelining – šetrí sieťový roundtrip<br />
  7. 7. Mýtus<br />Databázový server musí byť poriadne zložitý a plný zložitých algoritmov aby bol rýchly.<br />
  8. 8. REDIS inside(jednoduchší,ako by sadalo čakať)<br />REDIS = len 20k riadkov kódu <br />append only file, všetko je v RAM (a VM) <br />dva druhy protokolov <br />jednoduchý textový <br />veľmi jednoduchý textový <br />=> široká podpora klientov (možno viac ako MySQL) <br />
  9. 9. REDIS - Multiuser server<br />redis obsluhuje mnoho userov (rádovo 10k)Znamená to mnoho threadov?<br /> Ako dokáže menežovať toľko threadov? <br />Nemusí – redis je single threaded (event library)<br />
  10. 10. Mýtus<br />Pre obslúženie mnoho úloh a userov potrebujem mnoho threadov.<br />
  11. 11. Event Libraryhttp://redis.io/topics/internals-eventlib<br />jedna veľká slučka (Event Loop)<br />rad eventovs prioritou rozdelený podľa zdrojov (napr. IO)<br />vytváram eventy (napr. počúvam zo siete), hádžem ichdo zoznamu eventov spolu s časmi pre scheduler<br />Vo volaníeventuneblokujemhlavnévlákno.Akčakám nanejakýzdroj, volanie robím znovuako event v event loop (asynchrónne).<br />Iny spôsob myslenia, napr. nemám stack trace aniprirekurzívnomvolaní (nevýhoda pre debug)<br />
  12. 12. Mýtus<br />V dnešných viacjadrových serveroch musí mať proces viac threadov, aby bol efektívny.<br />Nemusí. Môže mať viac procesov.<br />
  13. 13. Event Library<br />Vhodné pre “mega multi”-user servere (napr. REDIS)<br />Je ale použiteľnyajinde?<br />
  14. 14. Mýtus<br />Rýchly server (web, TCP, file, ...) musí byť špecializovaný software.<br />Programovať takýto server v javascripte je čistá samovražda (prečo by som to vlastne robil???).<br />
  15. 15. Node.JS<br />(DEMO)<br />
  16. 16. Aky rýchly je redis? http://redis.io/topics/benchmarks<br />SET<br />GET<br />100007 requests completed in 0.88 seconds <br />50 parallel clients <br />3 bytes payload<br />58.50% <= 0 milliseconds 99.17% <= 1 milliseconds 99.58% <= 2 milliseconds 99.85% <= 3 milliseconds 99.90% <= 6 milliseconds 100.00% <= 9 milliseconds <br />114 293.71 requests per second<br />100000 requests completed in 1.23 seconds<br />50 parallel clients<br />3 bytes payload<br />43.12% <= 0 milliseconds 96.82% <= 1 milliseconds 98.62% <= 2 milliseconds 100.00% <= 3 milliseconds <br />81234.77 requests per second<br />
  17. 17. Budúcnosťdatabáz?<br />množstvo dát (GB, TB)<br />sociálne siete – silné väzby, interaktivita<br />veľa RAM - ako ju vôbec využiť?<br />SSD disky – vhodné pre redis<br />
  18. 18. Ďakujem za pozornosť.<br />Diskusia<br />

×