为什么DJ Bernstein CDB(常数据库)使用256个哈希表?

时间:2014-11-10 19:05:29

标签: cdb

为什么DJB CDB(常量数据库)被设计为使用256个哈希表?

为什么不单个更大的252 * 256哈希表?

只是为了节省空间还是有其他原因?

1 个答案:

答案 0 :(得分:4)

DJB CDB使用两级哈希表。第一个表在文件开头是固定大小2K。第二组表位于文件的末尾,并且在数据流入cdb时内置在内存中。一旦所有数据都流入cdb,第二组哈希表将流式传输到磁盘,然后第一个表(在文件的开头)填充第二组中每个表的偏移量。

换句话说,多级哈希表允许流式创建cdb,除了在cdb创建结束时写入文件的开头2K这个简单的例外。

访问cdb很快,点击第一个表(文件开头的2K),找到cdb文件末尾的第二个表(在第二组表中)的偏移量,这提供了位置cdb中的数据。

更多信息可以在https://github.com/gstrauss/mcdb/的NOTES中找到,这是DJB的古老cdb的重写。 mcdb比cdb更快,并且除了其他好处之外还消除了4GB cdb限制。