Tokyo cabinet HDB– 初始化
看看tokyo cabinet 初始化的时候做了些什么事
设置些参数(如rcnum,xmsize等)之后就可以调用tchdbopen来初始化HDB了,tchdbopen首先会对整个HDB对象进行写锁定,随后调用tchdbopenimpl进行真正初始化动作。Tchdbopenimpl首先对数据库文件用文件锁锁定,如果文件空就初始化文件,数据库文件的组织结构如下:
Header(256字节)+ Hash Bucket(配置)+ Free Block Pool(配置)+ 记录
每个hash bucket里保存一个offset,bucket的数目不宜太大
Free block pool保存在堆里,默认最大40。见下面代码:
hdb->fbpmax = 1 << hdb->fpow;
if(omode & HDBOWRITER){
TCMALLOC(hdb->fbpool, hdb->fbpmax * HDBFBPALWRAT * sizeof(HDBFB));
} else {
hdb->fbpool = NULL;
}
由于保存在堆中,安全性方面可能会有问题,这样做可能是从性能方面考虑的。
使用8字节对齐
支持32位,64位操作系统