tcerlインストール成功
tcerlのインストールに成功したっぽい。うっはー。
前回との違いは、
tokyocabinetを、aptitudeではなくソースからいれたことと、
tcerlのバージョンもいつのまにか新しくなってて1.3.1だったこと。
tcerlのhow to install にはaptitude install libtokyocabinet-dev
でubuntuならいけるって書いてあるんだけどなぁ。
pkg-configとのからみあたりが原因のような気もするが、
まぁうまくインストールできたのでよし。
ちなみにtokyocabinetは1.3.2を入れました。
あと、
Google Code Archive - Long-term storage for Google Code Project Hosting.
のExample:hello worldもうまくいかない。mnesia:create_tableのところでこける。
だけど、mnesiaを使う予定は無く、直接tcerlを使うだけのつもりなので、
tcbdb:open("test.tc",[writer,create]).
でうまくいったのでよし。
■
- couch_btree と dets の速度比較couch_btree と dets の速度比較 - cooldaemonの備忘録
tcerlとの速度比較もしてみたい。
tcerl
tcerlを試してみた。ソースを読みながら試行錯誤している段階なので、
おかしな使い方をしているところがある可能性が高いが、使用できた。
tcは、ハッシュ、B+木、固定長、の3種類のDBを提供しているが、
いままで調べた限りでは、tcerlではB+木だけを提供しているようだ。
ハッシュや固定長もあるとありがたいが、パフォーマンスを気にしなければB+木で
当座は事足りる。
-module(test). -compile(export_all). test()-> Filename="abc", tcerl:start(), {ok,Wr} = tcbdb:open(Filename,[writer,create,term_store]), tcbdb:vanish(Wr), put(Wr,{1,1.0},23), put(Wr,{1,1.0},24), put(Wr,{2,3.0},25), put(Wr,{2,3.0},25), put(Wr,{3,3.0},25), tcbdb:close(Wr), {ok,Rd} = tcbdb:open(Filename,[reader,term_store]), [23,24] = get(Rd,{1, 1.0}), [X1] = next(Rd,{1,1.0}), {2,3.0} = X1, [X2] = next(Rd,X1), {3,3.0} = X2, [] = next(Rd,X2). print(X,Y)-> io:format("~w ~w~n",[X,Y]). print(X)-> io:format("~w~n",[X]). next(R,K)-> map_t2b(tcbdb:next(R,term_to_binary(K))). put(R,K,V)-> tcbdb:put_dup( R, term_to_binary(K), term_to_binary(V)). map_t2b(XS)-> lists:map(fun(X)-> binary_to_term(X) end,XS). get(R,K)-> map_t2b(tcbdb:get(R,term_to_binary(K))).