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.
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)
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???).