RkBlog

Hardware, programming and astronomy tutorials and reviews.

Tokyo Cabinet - biblioteka baz danych klucz-wartość

Opis bibliotek Tokyo Cabinet, Tyrant i Dystopia oferujących zbiór narzędzi do bardzo wydajnej obsługi baz danych działających na zasadzie klucz-wartość

Tokyo Cabinet to biblioteka do zarządzania bazami danych klucz-wartość rozwijana przez Mikio Hirabayashi. Stosowana jest m.in. na mixi.jp - serwisie, który według Alexy jest 2-3 razy większy od Onetu (określany japońskim Facebookiem). Tokyo Cabinet jest prostym i skalowalnym narzędziem do przechowywania danych. Dodatkowo dostępne jest kilka dodatkowych bibliotek - Tokyo Tyrant będący serwerem dla baz Cabinet, Tokyo Dystopia będąca biblioteką do pełnotekstowego wyszukiwania w tych bazach. Biblioteki te napisane są w C i wydawane na licencji LGPL.

Tokyo Cabinet charakteryzuje się: Tokyo Tyrant oferuje: Tokyo Dystopia oferuje:

Instalacja

W przypadku systemów Linux/Unix potrzebujemy aby sam kompilator. Pobieramy źródła Cabinet, Tyranta i Dystopii (jeżeli potrzebujemy) i w tej kolejności kompilujemy i instalujemy standardowym:
./configure --prefix=/usr
make
make install

Obsługa bazy

Do obsługi baz danych poprzez serwer Tyrant służy polecenie ttserver. Najprościej "ttserver start". By odpalić serwer w tle dla podanej bazy danych można użyć:
ttserver -dmn -pid /tmp/ttserver.pid /tmp/moja_baza.tch

Obsługa serwera Tyrant z poziomu Pythona

Z poziomu Pythona możemy wykorzystać bibliotekę pytyrant, którą zainstalujemy poprzez standardowe:
python setup.py install
Oto prosty skrypt zapisujący i odczytujący dane z plikowej bazy "moja_baza.tch":
import pytyrant
t = pytyrant.PyTyrant.open('127.0.0.1', 1978)
t['__test_key__'] = 'foo'
t.concat('__test_key__', 'bar')
print t['__test_key__']

del t['__test_key__']

for i in range(1, 100000):
	key = 'k%s' % i
	t[key] = str(i)
	print i

print
print 'odczyt'
for i in range(1, 100000):
	key = 'k%s' % i
	print t[key]
Czas wykonywania tych operacji jest uwarunkowany od wybranego formatu przechowywania danych i ich miejsca (RAM lub plik).

Dostępna jest także biblioteka pytc będąca nakładką na Tokyo Cabinet, lecz brak do niej lepszej dokumentacji. Dostępne są np. przykłady jej zastosowania.

Na slideshare znajdziemy też kilka ciekawych prezentacji: Building TweetReach with Sinatra, Tokyo Cabinet and Grackle: Austin on Rails, Pylons + Tokyo Cabinet, Introduction to Tokyo Products. Plurk wykorzystał Tokyo Cabinet w swojej bazie LightCloud, którą używa jako (lepsze) zastępstwo Memcached.

RkBlog

Programowanie Sieciowe, 4 October 2009,

Comment article