Tokyo Cabinet Abstract Database APIメモ

TTのページが英語なので。失敗か成功かがboolで分かるというのがいい。「滅多に失敗しないよ」という自信が窺える。

沢山あるなぁ。。。

シグネチャ 何する?
TCADB *tcadbnew(void); 抽象データベースのオブジェクトを作る。メモリ確保もしてくれる。
void tcadbdel(TCADB *adb); 抽象データベースオブジェクトを削除する。メモリ解放もしてくれる。DBをクローズしてくれるのかな。
bool tcadbopen(TCADB *adb, const char *name); DBをオープンする。名前にオプションを仕込む。詳細は後で。
bool tcadbclose(TCADB *adb); DBをクローズする。
bool tcadbput(ry 上書きで任意のバイト列を書き込む。
bool tcadbput2(ry 上書きで文字列を書き込む。nullターミネートで停止。かな。
bool tcadbputkeep(ry キーが存在しなければ任意のバイト列を書き込む。キーがあると何もしない。
bool tcadbputkeep2(ry キーが存在しなければ文字列を着込む。キーがあると何もしない。
bool tcadbputcat(ry キーがあろうがなかろうが、valueをappend(concatinate)する。
bool tcadbputcat2(ry キーがあろうがなかろうが、引数の文字列をappend(concatinate)する。
bool tcadbout(ry レコードを削除する。
bool tcadbout2(ry レコードを削除する。キーが文字列の場合。
void *tcadbget(ry レコードのvalueをとってくる。返り値がメモリ領域を指すポインタ(その領域はnull terminateされている)。freeする必要あり。*spにメモリ領域の長さが格納される。
char *tcadbget2(TCADB *adb, const char *kstr); 同上。返り値も引数も文字列。
int tcadbvsiz(TCADB *adb, const void *kbuf, int ksiz); valueのサイズをとってくる。レコードがない場合は-1が返るっぽい。
int tcadbvsiz2(TCADB *adb, const char *kstr); 同上。引数が文字列。
bool tcadbiterinit(TCADB *adb); DBの全レコードに対する列挙子を用意する。
void *tcadbiternext(TCADB *adb, int *sp); 列挙子が指す値を返す。もうレコードがない場合はNULLを返す。イテレーションの間にレコードを削除したりアプデートしたりできる。
char *tcadbiternext2(TCADB *adb); 同上。返り値が文字列。
TCLIST *tcadbfwmkeys(ry 前方一致するキーに対するリストを返す。全レコードをスキャンするので遅くなるかも。
TCLIST *tcadbfwmkeys2(ry 同上。キーの前方一致が文字列。
int tcadbaddint(TCADB *adb, const void *kbuf, int ksiz, int num); valueに値numを足す。レコードがない場合はnumが格納される。
double tcadbadddouble(TCADB *adb, const void *kbuf, int ksiz, double num); 同上。ただしdouble。
bool tcadbsync(TCADB *adb); syncする。っぽい。
bool tcadboptimize(TCADB *adb, const char *params); paramに従ってoptimizeする。This function is useful to reduce the size of the database storage with data fragmentation by successive updating.
bool tcadbvanish(TCADB *adb); レコード全削除する。
bool tcadbcopy(TCADB *adb, const char *path); DBファイルをコピーする。バックアップみたいな感じ。
bool tcadbtranbegin(TCADB *adb); トランザクション開始。隔離レベルはserializable。If the database is closed during transaction, the transaction is aborted implicitly.
bool tcadbtrancommit(TCADB *adb); トランザクジョンコミット。
bool tcadbtranabort(TCADB *adb); トランザクションのアボート。ロールバックのこと?
const char *tcadbpath(TCADB *adb); DBファイルのパスを返す。
uint64_t tcadbrnum(TCADB *adb); DBのサイズ。サイズって何だ。レコード数?
TCLIST *tcadbmisc(ry DBがサポートしているオペレーションを教えてくれる。

tcadbopenのオプションについて

`name' specifies the name of the database. If it is "*", the database will be an on-memory hash database. If it is "+", the database will be an on-memory tree database. If its suffix is ".tch", the database will be a hash database. If its suffix is ".tcb", the database will be a B+ tree database. If its suffix is ".tcf", the database will be a fixed-length database. If its suffix is ".tct", the database will be a table database. Otherwise, this function fails. Tuning parameters can trail the name, separated by "#". Each parameter is composed of the name and the value, separated by "=". On-memory hash database supports "bnum", "capnum", and "capsiz". On-memory tree database supports "capnum" and "capsiz". Hash database supports "mode", "bnum", "apow", "fpow", "opts", "rcnum", and "xmsiz". B+ tree database supports "mode", "lmemb", "nmemb", "bnum", "apow", "fpow", "opts", "lcnum", "ncnum", and "xmsiz". Fixed-length database supports "mode", "width", and "limsiz". Table database supports "mode", "bnum", "apow", "fpow", "opts", "rcnum", "lcnum", "ncnum", "xmsiz", and "idx".
If successful, the return value is true, else, it is false.
The tuning parameter "capnum" specifies the capacity number of records. "capsiz" specifies the capacity size of using memory. Records spilled the capacity are removed by the storing order. "mode" can contain "w" of writer, "r" of reader, "c" of creating, "t" of truncating, "e" of no locking, and "f" of non-blocking lock. The default mode is relevant to "wc". "opts" can contains "l" of large option, "d" of Deflate option, "b" of BZIP2 option, and "t" of TCBS option. "idx" specifies the column name of an index and its type separated by ":". For example, "casket.tch#bnum=1000000#opts=ld" means that the name of the database file is "casket.tch", and the bucket number is 1000000, and the options are large and Deflate.