什么蚂蚁

导航

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位操作系统

posted on 2010-07-01 16:21  蚂蚁慢慢爬  阅读(453)  评论(0编辑  收藏  举报