• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
MONOGRAM Tech Mondays: REDIS
 

MONOGRAM Tech Mondays: REDIS

on

  • 1,039 views

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

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

Statistics

Views

Total Views
1,039
Views on SlideShare
772
Embed Views
267

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 267

http://blog.monogram.sk 267

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    MONOGRAM Tech Mondays: REDIS MONOGRAM Tech Mondays: REDIS Presentation Transcript

    • 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