Anúncio
Anúncio

Mais conteúdo relacionado

Destaque(20)

Anúncio

Redis: a memcached gyilkos

  1. Redis, a Memcached gyilkos Bártházi András
  2. Az előadó Bártházi András mailto: andras beigli barthazi pont hu twitter: ba78 http://webakademia.hu
  3. Miről lesz szó? NoSQL törekvés Mi az a key-value adatbázis? Redis - a memória alapú adatbázis
  4. NoSQL A “NoSQL” 2009-es buzzword A “cloud” témakör hozta meg az igényt: a relációs adatbázisok segítségével nehézkesen elérhető a kívánt horizontális skálázhatóság Leginkább key-value adattárolás, az SQL komplexitása felesleges lehet
  5. NoSQL Népszerű, ismert, és kevésbé ismert projektek: Google BigTable, Amazon Dynamo Cassandra, Chordless, CouchDB, HBase, Hypertable, Keyspace, MongoDB, Neo4j, Memcache, Riak, Redis, Project Voldemort, Sherpa, SimpleDB, GigaSpaces A legnagyobbak már évek óta használják ezeket - az irány kipróbált és tesztelt
  6. Key-value adattárolás adatbázis[“kulcs”] = “érték”; az egyik legegyszerűbb adatmode), a programozási nyelvekben hash, asszociatív tömb, szótár néven fut nagyon régi a történet, de reneszánszát éli a tudatosabb, céleszközökkel dolgozó, nagy látogatottságot kiszolgáló oldalak igényeként merül fel
  7. Redis
  8. Redis
  9. Redis Alapvetően egy kulcs-érték alapú, az adatokat memóriában tároló adatbázisszerver http://code.google.com/p/redis/ Leginkább a Memcachedhez lehet hasonlítani, de szignifikáns különbségek vannak
  10. Tulajdonságok Hipergyors fejlesztés: pár hónap alatt 1.0-s kiadás Nagyon jó dokumentáció Ke)emes közösség (levlista) Jó nyelvi támogatottság (PHP, Ruby, Python, Java...)
  11. Tulajdonságok nagyon gyors kiszolgálás: másodpercenként 100.000 írás, 80.000 olvasás (hivatalosan, de ennek többszöröse is lehet) atomi, összetett műveletek: listák, halmazok támogatása perzisztens tárolás: adatbázis kiírása lemezre jól hangolhatóan
  12. Egyszerűség nem igényel különösebb konfigurációt, gyorsan kipróbálható, átlátható, telnettel lehet hozzá csatlakozni nincsenek bonyolult parancsok, nagyon könnyen és gyorsan tanulható
  13. Alapműveletek SET kulcs érték, SETNX kulcs érték GET kulcs, MGET kulcs1 kulcs2 kulcs3 EXISTS kulcs INCR kulcs, DECR kulcs INCRBY kulcs szám, DECRBY kulcs szám DEL kulcs
  14. Alapműveletek KEYS minta azon elemek listája, melyek kulcsa mintával kezdődik RANDOMKEY RENAME régikulcs újkulcs DBSIZE EXPIRE kulcs szám
  15. Listaműveletek RPUSH kulcs érték, LPUSH kulcs érték elem beszúrása a “kulcs” lista elejére, végére LLEN kulcs LRANGE kulcs kezdet vég lista egy részének lekérdezése LTRIM kulcs kezdet vég
  16. Listaműveletek LINDEX kulcs index a “kulcs” lista egy elemének lekérdezése LSET kulcs index érték adott indexű elem felülírása LREM kulcs darab érték adott értékű elemek eltávolítása a listából LPOP kulcs, RPOP kulcs
  17. Halmazműveletek SADD kulcs érték, SREM kulcs érték, SPOP kulcs SMEMBERS kulcs SMOVE kulcs1 kulcs2 érték SCARD kulcs elemek száma az adott halmazban SISMEBER kulcs érték
  18. Halmazműveletek SINTER kulcs1 kulcs2 kulcsN, SINTERSTORE célkulcs kulcs1 kulcs2 kulcsN metszet lekérése, i)etve metszet tárolása SUNION kulcs1 kulcs2 kulcsN SUNIONSTORE célkulcs kulcs1 kulcs2 kulcsN összeg lekérése, i)etve összeg tárolása SDIFF kulcs1 kulcs2 kulcsN SDIFFSTROE célkulcs kulcs1 kulcs2 kulcsN különbség lekérése, i)etve különbség letárolása
  19. Rendezés listával és halmazzal is működik SORT kulcs SORT kulcs DESC SORT kulcs LIMIT 0 10 ALPHA DESC SORT kulcs BY weight_* SORT kulcs BY weight_* GET object_* veszi kulcs lista elemeit (pl. azonosítók: 1,2,3), lekéri weight_1, weight_2, weight_3 értékeket és rendezi azokat, majd az így kapott sorrend alapján visszaadja object_3, object_2, object_1 elemeket
  20. Redis 1.1: hamarosan Egész számok bináris tárolása EXPIREAT kulcs unixtime MSET kulcs1 érték1 kulcs2 érték2 kulcs3 érték3... MSETNX kulcs1 érték1 kulcs2 érték2 kulcs3 érték3... LMOVE kulcs1 kulcs2
  21. Redis 1.1: hamarosan ZADD kulcs súly érték ZREM kulcs érték ZCARD kulcs ZRANGE kulcs kezdet vég ZREVRANGE kulcs kezdet vég ZRANGEBYSCORE kulcs súlykezdet súlyvég ZSCORE kulcs érték
  22. Mentés konfig fájlban hangolható: x másodpercenként x írás művelet után pl beá)ítható: alapból percenként, de ha volt 1000 művelet, akkor azután is SAVE, BGSAVE, LASTSAVE műveletek
  23. Replikáció Több adatbázist képes összeszinkronizálni: MASTER-SLAVE mode) Egy slave masterként is tud viselkedni, láncok, gráfok építhetőek fel Az egyik lehetőség több processzoros környezet hatékony kihasználására
  24. Backup a teljes adatbázis perzisztens része egy darab fájl bináris memórialenyomat, másra nem használható leá)ás nélkül backpuolható, mivel az adatbázis mentése atomi művelet (rename művelet)
  25. Egyebek egyszerű, saját szöveges protoko) példakódként egy egyszerű Twitter klón forrása is elérhető, kipróbálható több adatbázist (névteret) is támogat, bár nem igazán kényelmesen, érdemes inkább külön szervereket indítani
  26. Redis 1.2: a jövőben Egyszerű Redis Cluster Hozzáfűzés alapú log Hash adattípus Adatbázis JSON dumpja
  27. Redis 1.x: távoli jövő Különféle optimalizációk SORT algoritmusának javítása LOCK, TRYLOCK és UNLOCK BITMAP / BYTEARRAY típus
  28. Hasonló projektek memcached: nem perzisztens, nem kezeli az összetett értékeket memcacheDB: perzisztens, de minden műveletet egyből diszkre ír
  29. Out of memory Ha az adatbázis nem fér be a memóriába, akkor: ne használjunk Redist... félig cache szerűen használjuk
  30. Twitter klón Felhasználók üzenőfalja, az egyes felhasználók azok üzeneteit láthatják, akiket követnek A key-value adatbázis egészen más gondolkodásmódot igényel, mint a hagyományos relációs mode) Ki ismeri a normál formákat?
  31. Twitter klón Felhasználó létrehozása: INCR global:nextUserId (visszakapunk egy számot) SET uid:1000:username felhasználónév SET uid:1000:password jelszó
  32. Twitter klón De hogyan tudom meg, hogy egy adott felhasználónévhez milyen felhasználó azonosító tartozik? SET username:felhasználónév:uid 1000
  33. Twitter klón A követők adminisztrációjához felhasználónként két halmaz: uid:1000:fo)owers uid:1000:fo)owing 1000-es felhasználó követi 1001-et: SADD uid:1001:fo)owers 1000 SADD uid:1000:fo)owing 1001
  34. Twitter klón 1000-es felhasználó üzenetet ír: INCR global:nextPostId SET global:posts:123456789 szöveg LPUSH uid:1000:posts 123456789 LTRIM uid:1000:posts 0 1000
  35. Használat IWIW alkalmazásaink mögötti adattároláshoz Miner mögötti queue, 1iss bejegyzések tárolása, gyorsítása, oldal cache, stb.
  36. Köszönet Bártházi András mailto: andras beigli barthazi pont hu twitter: ba78 http://webakademia.hu/2009/10/redis-a-memcached- gyilkos/ Programozókat keresünk Miner.hu kereső projektünkhöz
Anúncio