面试题答案
一键面试基本策略
在CouchDB的MVCC(多版本并发控制)模式下,为避免写入冲突采用的基本策略是基于文档的修订版本号。每个文档都有一个修订版本号,每次对文档进行修改时,修订版本号都会递增。当客户端尝试写入文档时,它必须提供当前已知的修订版本号。
工作原理
- 读取文档:客户端从CouchDB读取文档时,会同时获取到文档内容以及当前的修订版本号。例如,假设初始读取文档时,版本号为
1 - abc123
。 - 修改文档:客户端在本地对文档进行修改。
- 写入文档:当客户端尝试将修改后的文档写回CouchDB时,它需要在请求中附上之前读取到的修订版本号。CouchDB在收到写入请求后,会将客户端提供的修订版本号与服务器上该文档的当前修订版本号进行比较。
- 如果两个版本号匹配,说明自客户端读取文档后没有其他客户端对该文档进行修改,CouchDB会接受此次写入,并递增修订版本号,例如变为
2 - def456
。 - 如果两个版本号不匹配,意味着在客户端读取文档后,有其他客户端已经对该文档进行了修改,此时CouchDB会拒绝此次写入,并返回一个冲突错误,告知客户端需要重新读取最新版本的文档,合并修改后再次尝试写入。
- 如果两个版本号匹配,说明自客户端读取文档后没有其他客户端对该文档进行修改,CouchDB会接受此次写入,并递增修订版本号,例如变为