0

在研究couchDB的durability时,我发现couchDB使用crash-only设计来获得durability。但我不知道couch-only和durability有什么关系。

4

2 回答 2

3

通过阅读CouchDB的Wiki

CouchDB 文件布局和提交系统具有所有 Atomic Consistent Isolated Durable (ACID) 属性。在磁盘上,CouchDB 永远不会覆盖已提交的数据或相关结构,从而确保数据库文件始终处于一致状态。这是一个“仅崩溃”的设计,其中 CouchDB 服务器不经历关闭过程,它只是被终止。

持久性是由 DB 始终处于一致状态这一事实给出的,而这是由 DB 的结构是仅附加 ( CouchDB never overwrites committed data or associated structures) 的事实给出的。这使得错误处理变得非常容易:如果出现错误,它可能会立即崩溃。

我不认为是“仅碰撞”赋予了耐用性。我认为耐久性允许使用“仅崩溃”。

于 2013-08-22T08:20:15.507 回答
1

反之则意味着要变得聪明并添加错误恢复代码。这要求您正确识别错误并在您对恢复算法的假设中保持正确。恢复过程的每个部分都可能引入错误。您可能认为错误是某种类型的错误,但实际上它是另一种错误,或者在您已经进行恢复时可能会发生新的意外错误。

错误恢复还意味着不仅要尝试重做失败的事务。您还必须找到可能来自某些意外程序或硬件状态的原始错误,并修复该状态。否则同样的错误可能会再次发生。

仅崩溃可以降低错误的可能性,您无需查找出现问题的所有边缘情况,并且可以轻松地通知您的系统管理员有关错误(可能是硬件错误!)。考虑到这一点,在某些情况下,仅崩溃可能是一种合理的软件设计原则。至少它更容易保证您的数据完整性。

于 2013-08-22T08:13:21.117 回答