什么是一 .cdb 文件?
CDB 文件用于电子邮件等任务关键型应用程序。 CDB 代表“常量数据库",它是一种用于创建或读取常量数据库的快速、可靠且简单的软件包。数据库替换对系统崩溃是安全的。用户不必在重写期间暂停。 CDB 作为关联数组(磁盘上)执行,将键映射到值,并允许将多个值存储在单个键中。
CDB 文件格式
CDB 文件格式将数字、偏移量、长度和散列值以小端格式存储为无符号 32 位整数。键和数据被认为是不透明的字节串,没有特殊处理。在数据库的开头,固定大小的标头通过列出它们在文件中的位置以及它们在槽中的长度来表示 256 个哈希表。通常将数据存储为一系列记录,每条记录存储key length、data length、key和data。没有排序或对齐规则。记录后面是一组 256 个不同长度的哈希表。由于零是有效长度,因此数据库中物理存储的哈希表可能少于 256 个,但没有任何东西被认为是 256 个表。哈希表由一系列槽组成,每个槽都包含一个哈希值和一个记录偏移量。 “空槽"的偏移量为零。
### 结构 CDB 数据库由单个计算机文件中的整个数据集组成。它包含三个部分:
- 一个固定大小的标题
- 数据
- 一组哈希表。
查找仅适用于精确键。查找使用以下算法进行操作:
- 散列密钥。
- 确定该记录应位于哪个哈希表和插槽。
- 测试哈希表中的指定槽。
对于具有多个值的键的查找,可以通过简单地在下一个槽处恢复搜索来找到其他值。
#### 特征
CDB 数据库结构提供了几个特性:
快速查找
在大型数据库中成功查找通常只需要两次磁盘访问,而不成功的查找只需要一次。
低开销
数据库使用 2048 字节,每条记录 24 字节以及用于键和数据的空间。
没有随机限制
CDB 可以管理高达 4 GB 的任何数据库。由于没有其他限制,记录甚至不必放入内存。数据库以独立于机器的格式存储。
快速原子数据库替换
命令 cdbmake 可以将整个数据库重写为两个数量级,比其他散列包更快。
快速数据库转储
cdbdump 可以以与 cdbmake 兼容的格式打印数据库的内容。