1 / 18

M ýtus

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)

avani
Download Presentation

M ýtus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ážemenež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???).

  15. Node.JS (DEMO)

  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

  18. Ďakujem za pozornosť. Diskusia

More Related