什么蚂蚁

导航

随笔分类 -  tokyo cabinet

tokyo cabinet - 删除记录
摘要:首先也是对数据库进行读锁定,然后调用tchdbbidx获取hash和index,对index所对应的树写锁定。调用tchdbgetbucket获取offset后,就执行查找节点的流程(和前面一样)。找到后就调用tchdbremoverec从文件删除记录。Tchdbremoverec首先会把记录块作为空闲块回收,再去维护二叉树。 维护二叉树时可能就有4种情况:(1) 是叶子节点;(2) 仅有左子节点... 阅读全文

posted @ 2010-07-07 10:54 蚂蚁慢慢爬 阅读(236) 评论(0) 推荐(0)

tokyo cabinet - 写入记录
摘要:写入记录相对读取来说就复杂多了Tchdbput 接口来写入记录,首先对整个DB进行读锁定,调用tchdbbidx 来获取hash bucket index 和hash,然后对index对应的树进行写锁定,接着调用tchdbputimpl 进行记录写入。Tchdbputimpl 首先tchdbgetbucket获取首个节点的偏移,随后也是和读取记录相同的查找记录。如果能找到记录,根据处置方式处理记录... 阅读全文

posted @ 2010-07-07 10:51 蚂蚁慢慢爬 阅读(294) 评论(0) 推荐(0)

tokyo cabinet HDB – 读取&查找记录
摘要:tchdbget 首先对数据库读锁定,调用tchdbbidx 获取hash和bucket的index,这个算法分布是否均匀呢,没验证。看看代码吧:static uint64_t tchdbbidx(TCHDB *hdb, const char *kbuf, int ksiz, uint8_t *hp){ assert(hdb && kbuf && ksiz >... 阅读全文

posted @ 2010-07-01 16:30 蚂蚁慢慢爬 阅读(438) 评论(0) 推荐(0)

Tokyo cabinet HDB– 初始化
摘要:看看tokyo cabinet 初始化的时候做了些什么事设置些参数(如rcnum,xmsize等)之后就可以调用tchdbopen来初始化HDB了,tchdbopen首先会对整个HDB对象进行写锁定,随后调用tchdbopenimpl进行真正初始化动作。Tchdbopenimpl首先对数据库文件用文件锁锁定,如果文件空就初始化文件,数据库文件的组织结构如下:Header(256字节)+Hash B... 阅读全文

posted @ 2010-07-01 16:21 蚂蚁慢慢爬 阅读(484) 评论(0) 推荐(0)