tchdbput用于向数据文件写入一条记录(record),写入的模式有很多种,比如覆盖写(overwrite)、追加写(append)、加一个整数、加一个浮点数或者调用回调函数处理,然后把结果当作记录写入等等,这个函数在执行时是直接写入硬盘中的数据文件的,和它对应有一个异步写入的函数,名为tchdbputasync,此函数暂时把记录放于drp(delayed record pool)中,在合适的时候再写回硬盘,我后面会有相应函数分析。下面我贴出tchdbput函数的代码及注释,仅当成个人学习记录:
上面的函数中,主要是通过调用tchdbputimpl来实现写入记录功能,该函数如下:
在上面查找冲突树的过程中,由于是先比较二级hash值,找到相等的值,再进行key值的比较,最终决定写入记录的位置,因此对于具有相同二级hash值的记录而言,它们可能会由于key的不同而导致与其它具有不同二级hash值的记录相互混杂,由这里我们可以知道,插入过程构造出来的冲突树是非常杂乱无章的,没有规律可言,这也许能进一步促进冲突数区域平衡吧。