Tokyo Cabinet - biblioteka baz danych 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ę:- wysoką współbieżnością: multi-thread safe; blokady zapisu/odczytu po rekordach
- wysoką skalowalnością: hasze i b-drzewa jako struktury danych - 0(1) i 0(log N); brak limitu rozmiaru pliku bazy danych
- transakcjami: zapis przed logowaniem, właściwości ACID
- różne API: lista/hasz/drzewo w pamięci; hasz/b-drzewo/tablica/tabela w plikach
- API dla języków skryptowych: Perl, Ruby, Java, Lua, Python, PHP, Haskel, Erlang itd.
- serwer sieciowy dla bazy Tokyo Cabinet: model klient-serwer; dostęp wielu aplikacji do jednej bazy; wydajny binarny protokół
- obsługa innych protokołów: memcached i HTTP
- wysoka wydajność / współbieżność
- wysoka dostępność: backup i log aktualizacji "na gorąco"; asynchroniczna replikacja między serwerami
- efektywne operacje: aktualizacje bez odpowiedzi, pobieranie wielu rekordów; atomowe inkrementacje
- API w wielu językach skryptowych
- silnik wyszukiwania pełnotekstowego
- łączy dwa tokenizery w wyszukiwaniu (N-gram, zewnętrzny procesor języków)
- wysoka wydajność/skalowalność: obsługuje ponad 10 milionów dokumentów, wyszukuje w ciągu milisekund
- zoptymalizowany pod profesjonalne zastosowania
- wykorzystywany m.in. w wyszukiwarce znajomych na mixi.jp
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ć:Obsługa serwera Tyrant z poziomu Pythona
Z poziomu Pythona możemy wykorzystać bibliotekę pytyrant, którą zainstalujemy poprzez standardowe: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]
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.
Comment article