// you’re reading...

software development

Open source key-value databases

A hétvégén belemélyedtem kicsit a kulcs-érték adatbázisok megkutatásába, illetve a map/reduce (mint funkcionális programozási teória, és napjainkban már gyakorlat) mikéntjébe. Megnéztem egy marék nyílt forráskódú adatbázist, idemásolom a jegyzeteimet, egyrészt, hogy nekem meglegyen, másrészt hátha segítség lesz egyszer valakinek. Dőlt betűvel azok a dolgok, ami miatt (számomra, és egyenlőre) kiesett az adott termék:

Scalaris: Google: 194.000. Erlang. Transactions. Only Java & JSON-RPC api?

Tokyo Cabinet: Google: 130.000. no PHP API? (presentation said there is one, but I haven’t found it.) GNU LGPL license.

Project Voldemort: Google: 6.210. Apache2 license. Java. Only Java client. Good resilience, read/write load balancing. R/W: ~10000-20000

Redis: Google: 756.000. BSD license. Telnet. Language: C. API: PHP, python, ruby, java, etc. Master/slave.No FreeBSD port, no Ubuntu package. R: ~114000, W: ~81000. List, sets, incr, decr, etc. Dataset is limited to memory size.

CouchDB: Google: 442.000. Erlang. Apache2 license. RESTful/HTTP. Futon! Views. Two-way replication, but triggered. Relatively slow and CPU hungry?

MemcacheDB: Google: 2.600.000. Memcached API. Telnet. BSD license. Master/slave, automatic. Incr/decr. W: ~18000, R: ~45000

Röviden, a mi team-ünk számára jelenleg a CouchDB és a MemcacheDB opció, és a szemünket rajta tartjuk a Redis-en és a Tokyo Cabinet-en. Megjegyzem, ha elsődlegesen Javában fejlesztenénk, akkor belemásznék jobban a Project Voldemort-ba.

Az említett kettőt fel is tettem és kicsit kísérleteztem velük. A következőre jutottam:

CouchDB-ben baromi jó és kellemes a Futon web-es user felület, biztos hogy a fejlesztést nagyon megkönnyíti. Nagyon jók és kényelmesek a javascriptben írható map/reduce view-k, amik kicsit “visszateszik” a struktúráltságot a kulcs-érték tárolásba. Adott esetben jó lehet, hogy ha cluster-ezi az ember, akkor minden szerver írható olvasható, viszont hogy a sync-et külön kell hívni, az kicsit rémisztő, de adott típusú projectekre azért jó lehet.

MemcacheDB irtózatosan gyors, nagyon sok klienst bír el egyszerre, és nagyon jó ötlet, hogy a memcached protokollját használja, így minden ahhoz írt kliens könyvtárral használható. Az, hogy bele lehet telnet-elni, és ott írni/olvasi az adatot, könnyít a fejlesztésen. (De nem annyira, mint a CouchDB Futon-ja.) Tud értékeket atomikusan növelni/csökkenteni, és vannak benne szinkronicítást segítő atomikus parancsok (replace, set-if-exists, stb). Nincs benne semmiféle keresés vagy map/reduce, csak a kulcs alapján visszakeresés.

Egyenlőre ennyi, remélem, segítség valakinek. :)

About the author: Kristóf Kovács is a freelance computer technology architect and project leader. You can rent his brain as your advisor, or you can hire him to help you in your projects. His ventures include a mobile entertaiment company (Mobile Planet Ltd), and a boutique software development house (Online Projects Ltd). Follow him on Twitter!

Discussion


One brilliant comment for “Open source key-value databases”

  1. szerintem erdemes meg megnezni a MongoDB-t is, gyors, sokféle kliens api van hozzá alapból http://www.mongodb.org

    Posted by yaanno | October 2, 2009, 09:14

Post a comment

Spam Protection by WP-SpamFree

Keep in touch!