面试题答案
一键面试- 策略一:乐观并发控制
- 工作原理:CouchDB默认使用乐观并发控制。在这种策略下,当客户端读取文档时,会获取到该文档的一个版本号(通常是一个修订ID)。当客户端尝试写入修改后的文档时,它必须在请求中包含这个版本号。CouchDB会将客户端提供的版本号与服务器上当前文档的版本号进行比较。如果版本号匹配,说明在客户端读取文档后没有其他客户端修改过该文档,写入操作就会成功,同时服务器会更新文档的版本号。如果版本号不匹配,意味着在客户端读取文档后有其他客户端修改了文档,写入操作将失败,客户端会收到一个冲突错误,此时客户端需要重新读取最新版本的文档,合并修改后再次尝试写入。
- 策略二:使用
_conflicts
属性 - 工作原理:当发生写入冲突时,CouchDB会在冲突的文档中添加一个
_conflicts
属性。这个属性包含了所有冲突版本的修订ID列表。客户端可以通过读取包含_conflicts
属性的文档,获取冲突的版本信息,然后决定如何解决冲突。解决冲突的常见方法包括手动合并不同版本的修改、选择一个版本覆盖其他版本等。一旦冲突解决,客户端可以再次尝试写入修改后的文档,CouchDB会根据乐观并发控制机制来处理新的写入请求。