Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MONOGRAM Tech Mondays: REDIS

1,302 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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 />

×