为什么DJB CDB(常量数据库)被设计为使用256个哈希表?
为什么不使用单个更大的 252 * 256 哈希表?
只是为了节省空间还是有其他原因?
DJB CDB 使用两级哈希表。第一个表在文件开头固定大小 2K。第二组表位于文件末尾,当数据流入 cdb 时在内存中构建。一旦所有数据都流入 cdb,第二组哈希表就会流出到磁盘,然后第一个表(位于文件的开头)将填充第二组中每个表的偏移量。
换句话说,多级哈希表允许流式创建 cdb,但有一个简单的例外:在 cdb 创建结束时写入文件的开头 2K。
访问cdb很快,命中第一个表(文件开头2K)找到第二个表(第二组表中)在cdb文件末尾的偏移量,它提供了数据的位置在国开行。
更多信息可以在https://github.com/gstrauss/mcdb/的注释中找到,它是 DJB 的古老 cdb 的重写。除其他优点外,mcdb 比 cdb 更快,并且消除了 4GB cdb 限制。
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |