Tokyo Cabinet的Abstract Database API
你知道就算大雨让这座城市颠倒 我会给你怀抱 受不了看见你背影来到 写下我度秒如年难捱的离骚
简介
抽象データベースは、オンメモリハッシュデータベースとオンメモリツリーデータベースとハッシュデータベースとB+木データベースと固定長データベースとテーブルデータベースを同一のAPIで抽象化したデータベースです。それを扱うのが抽象データベースAPIです。`tcadb.h' にAPIの仕様の完全な記述があります。
Tokyo Cabinet的数据结构分为
- 1.Hash结构
- 2.B+Tree
- 3.定长数据库
但无论哪种数据结构,最后都会抽象为以下操作,以及分别对应不同的API
- put Hash: bool tchdbput2(TCHDB *hdb, const char *kstr, const char *vstr);
- get Hash: char *tchdbget2(TCHDB *hdb, const char *kstr);
B+Tree: bool tcbdbput2(TCBDB *bdb, const char *kstr, const char *vstr);
Table: bool tctdbput3(TCTDB *tdb, const char *pkstr, const char *cstr);
B+Tree: char *tcbdbget2(TCBDB *bdb, const char *kstr);
Table: char *tctdbget3(TCTDB *tdb, const char *pkstr);
TCADB *adb = tcadbnew();
if(!tcadbopen(adb, dbname)) {
fprintf(stderr, "open error: %s\n", dbname);
}
tcadbput2(adb, key, value);
if(!tcadbclose(adb)){
fprintf(stderr, "close error:");
return 0;
}
tcadbdel(adb);
- Hash: .tch
- B+Tree: .tcb
- 定长数据库: .tcf
特殊API的调用
在特殊情况下,不同的数据结构,又提供了一些自己独有的API,例如B+Tree,可以添加重复的key,这时就需要用到tcbdbputdup2方法,用adb如何调用呢,看代码TCADB *adb = tcadbnew();
if(!tcadbopen(adb, dbname)) {
fprintf(stderr, "open error: %s\n", dbname);
}
tcbdbputdup2(adb->bdb, key, value);
if(!tcadbclose(adb)){
fprintf(stderr, "close error:");
return 0;
}
tcadbdel(adb);
- Hash: adb->hdb
- B+Tree: adb->bdb
- 定长数据库: adb->fdb
qingfeng at me.com