校验和 - Checksums

leveldb会为所有存储在文件系统中的数据生成checksums。提供了两个参数来控制进行什么程度的checksums验证:

  • ReadOptions::verify_checksums,这个参数设置为ture代表了对从文件系统读取的所有数据进行强制的checksum验证。但默认情况下不会进行这样的强制验证。
  • Options::paranoid_checks,这个参数可以在打开数据库之前设置为ture,这会在打开数据库时只要检测到内部损坏的话引发错误。错误产生的时机取决与数据库出现问题的部分,可能在打开数据库时引发或者在后面执行到某些数据库操作时引发。在默认情况下是不执行检查的,即使数据库的持久化存储器某些部分出现问题也可以继续使用数据库。如果数据库坏了(也许是因为设置了paranoid_checks导致数据库无法打开),leveldb::RepairDB函数可以用来恢复尽可能多的数据。