3

硬盘位腐烂确实发生。我将 SQLite 用于具有相当关键数据的项目。显然,我会定期备份数据库,但SQLite 会校验其数据吗?

我已经阅读了关于PRAGMA 完整性检查的信息,但不能真正说出它是否对实际数据进行完整性检查。“如何损坏 SQLite 数据库文件”页面并没有真正提到硬盘驱动器上的位腐烂这一事实,这就是我问的原因。

此外,我正在处理的数据库将是一个可索引的仅附加日志。一种选择是我定期轮换数据库并为每个轮换文件创建一个 MD5 和。但也许工作量太大了...

任何输入表示赞赏。

4

2 回答 2

3

通过阅读完整性检查文档,我会说不能保证检测到仅影响用户数据的损坏(由于媒体上未检测到的位错误)。

由于您的数据是仅附加的日志,因此您很容易做到。一种方法是在单独的硬盘驱动器上写入文本文件日志,其中包含每行数据的哈希值(MD5 或其他)。然后您可以使用该哈希日志来验证真实数据库的内容。显然,备份将是您计划中不可或缺的一部分。

于 2012-07-15T07:33:30.653 回答
2

只是偶然发现了这一点;我可以使用fzec Python 包来恢复损坏的数据。每行将有多个“fzec 块列”以从损坏中恢复。看起来很整洁。

于 2012-07-15T07:44:09.477 回答