面试题答案
一键面试基本原理
CouchDB采用最终一致性模型,在自动合并冲突时,基于文档版本向量来判断。每个文档都有一个修订版本号,每次文档更新,修订版本号递增。当冲突发生时,CouchDB会识别出不同版本的文档。它会保留所有冲突版本,允许用户后续手动解决冲突或按一定规则自动合并。CouchDB主要依据“last write wins”(LWW)原则,即最新写入的版本优先,不过这并非严格按时间戳,而是按修订版本号。
关键数据结构与算法
- 版本向量:每个文档都有一个修订版本号,记录文档修改历史。这个版本号在文档每次更新时递增,以标识文档的不同版本状态。在冲突检测和合并时,版本号用于判断哪些版本是较新的,以及是否存在冲突。
- 冲突记录结构:当冲突发生,CouchDB会将冲突的文档版本以特定结构保存。这些冲突版本被包含在一个数组中,置于主文档结构内,便于后续处理。
- LWW算法应用:虽然不是传统意义严格基于时间戳的LWW算法,但依据修订版本号,CouchDB将具有更高修订版本号的文档作为最新版本,用于自动合并时的选择。