SlideShare a Scribd company logo
1 of 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.
REDIS - REmote DIctionary Server key-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)
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.
InénoSQL Document store  Graph DB Key-value store (memcached) Hierarchický key-value store
SQL vsnoSQL SQL noSQL fixná š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 podmienky taž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ázenie súzviazané plnenezabezpečuje ACID relatívneľahkodistribuovateľne
REDIS vsMemcached redis - je zložitejší ako memcacheddb (viacoperá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
Mýtus Databázový server musí byť poriadne zložitý a plný zložitých algoritmov aby bol rýchly.
REDIS inside(jednoduchší,ako by sadalo č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)
REDIS - Multiuser server redis 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)
Mýtus Pre obslúženie mnoho úloh a userov potrebujem mnoho threadov.
Event Libraryhttp://redis.io/topics/internals-eventlib jedna veľká slučka (Event Loop) rad eventovs prioritou rozdelený podľa zdrojov (napr. IO) vytváram eventy (napr. počúvam zo siete), hádžem ichdo zoznamu eventov spolu s časmi pre scheduler Vo volaníeventuneblokujemhlavnévlákno.Akčakám nanejakýzdroj, volanie robím znovuako event v event loop (asynchrónne). Iny spôsob myslenia, napr. nemám stack trace aniprirekurzívnomvolaní (nevýhoda pre debug)
Mýtus V dnešných viacjadrových serveroch musí mať proces viac threadov, aby bol efektívny. Nemusí. Môže mať viac procesov.
Event Library Vhodné pre “mega multi”-user servere (napr. REDIS) Je ale použiteľnyajinde?
Mýtus Rý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???).
Node.JS (DEMO)
Aky rýchly je redis? http://redis.io/topics/benchmarks SET GET 100007 requests completed in 0.88 seconds  50 parallel clients  3 bytes payload 58.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 clients 3 bytes payload 43.12% <= 0 milliseconds 96.82% <= 1 milliseconds 98.62% <= 2 milliseconds 100.00% <= 3 milliseconds  81234.77 requests per second
Budúcnosťdatabáz? množstvo dát (GB, TB) sociálne siete – silné väzby, interaktivita veľa RAM - ako ju vôbec využiť? SSD disky – vhodné pre redis
Ďakujem za pozornosť. Diskusia

More Related Content

Similar to MONOGRAM Tech Mondays: REDIS

Záverečná úloha KPI
Záverečná úloha KPIZáverečná úloha KPI
Záverečná úloha KPIfernandoKPI
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Jano Suchal
 
Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Jano Suchal
 
Cassandra: Indexing and discovering similar images
Cassandra: Indexing and discovering similar imagesCassandra: Indexing and discovering similar images
Cassandra: Indexing and discovering similar imagestkramar
 
Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ RubyslavaIvan Srba
 
Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Drahoslav Madar
 
Model driven story
Model driven storyModel driven story
Model driven storyBoris Bucha
 
Drupal ako nízkonákladová platforma pre business web aplikácie
Drupal ako nízkonákladová platforma pre business web aplikácieDrupal ako nízkonákladová platforma pre business web aplikácie
Drupal ako nízkonákladová platforma pre business web aplikácieJozef Toth
 

Similar to MONOGRAM Tech Mondays: REDIS (11)

Analytika
AnalytikaAnalytika
Analytika
 
Záverečná úloha KPI
Záverečná úloha KPIZáverečná úloha KPI
Záverečná úloha KPI
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?
 
Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?
 
Dátové sklady
Dátové skladyDátové sklady
Dátové sklady
 
Cassandra: Indexing and discovering similar images
Cassandra: Indexing and discovering similar imagesCassandra: Indexing and discovering similar images
Cassandra: Indexing and discovering similar images
 
Ro r
Ro rRo r
Ro r
 
Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ Rubyslava
 
Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?
 
Model driven story
Model driven storyModel driven story
Model driven story
 
Drupal ako nízkonákladová platforma pre business web aplikácie
Drupal ako nízkonákladová platforma pre business web aplikácieDrupal ako nízkonákladová platforma pre business web aplikácie
Drupal ako nízkonákladová platforma pre business web aplikácie
 

MONOGRAM Tech Mondays: REDIS

  • 1. 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.
  • 2. REDIS - REmote DIctionary Server key-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)
  • 3. 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.
  • 4. InénoSQL Document store Graph DB Key-value store (memcached) Hierarchický key-value store
  • 5. SQL vsnoSQL SQL noSQL fixná š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 podmienky taž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ázenie súzviazané plnenezabezpečuje ACID relatívneľahkodistribuovateľne
  • 6. REDIS vsMemcached redis - je zložitejší ako memcacheddb (viacoperá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
  • 7. Mýtus Databázový server musí byť poriadne zložitý a plný zložitých algoritmov aby bol rýchly.
  • 8. REDIS inside(jednoduchší,ako by sadalo č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)
  • 9. REDIS - Multiuser server redis 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)
  • 10. Mýtus Pre obslúženie mnoho úloh a userov potrebujem mnoho threadov.
  • 11. Event Libraryhttp://redis.io/topics/internals-eventlib jedna veľká slučka (Event Loop) rad eventovs prioritou rozdelený podľa zdrojov (napr. IO) vytváram eventy (napr. počúvam zo siete), hádžem ichdo zoznamu eventov spolu s časmi pre scheduler Vo volaníeventuneblokujemhlavnévlákno.Akčakám nanejakýzdroj, volanie robím znovuako event v event loop (asynchrónne). Iny spôsob myslenia, napr. nemám stack trace aniprirekurzívnomvolaní (nevýhoda pre debug)
  • 12. Mýtus V dnešných viacjadrových serveroch musí mať proces viac threadov, aby bol efektívny. Nemusí. Môže mať viac procesov.
  • 13. Event Library Vhodné pre “mega multi”-user servere (napr. REDIS) Je ale použiteľnyajinde?
  • 14. Mýtus Rý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???).
  • 16. Aky rýchly je redis? http://redis.io/topics/benchmarks SET GET 100007 requests completed in 0.88 seconds 50 parallel clients 3 bytes payload 58.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 clients 3 bytes payload 43.12% <= 0 milliseconds 96.82% <= 1 milliseconds 98.62% <= 2 milliseconds 100.00% <= 3 milliseconds 81234.77 requests per second
  • 17. Budúcnosťdatabáz? množstvo dát (GB, TB) sociálne siete – silné väzby, interaktivita veľa RAM - ako ju vôbec využiť? SSD disky – vhodné pre redis