面试题答案
一键面试在CouchDB使用HTTP API更新文档过程中,通常会遇到以下两种类型的冲突:
- 修订版本冲突(Revision Conflict):
- 产生原因:CouchDB使用多版本并发控制(MVCC)机制,每个文档都有一个修订版本号。当多个客户端尝试同时更新同一文档时,它们基于的可能是相同的旧版本。先完成更新的客户端会使文档的修订版本号增加,后进行更新的客户端由于基于旧版本,CouchDB会检测到这种差异,从而抛出修订版本冲突错误。例如,客户端A和客户端B同时获取到文档的修订版本号为1,客户端A先完成更新,文档修订版本号变为2,此时客户端B再尝试更新,CouchDB就会发现客户端B使用的是旧版本1,进而产生修订版本冲突。
- 文档不存在冲突(Document Not Found Conflict):
- 产生原因:当客户端尝试更新一个不存在的文档时,就会发生此冲突。这可能是由于在更新操作之前文档被意外删除,或者客户端误将不存在的文档ID作为更新目标。比如,客户端尝试更新一个ID为“abc123”的文档,但该文档已被其他操作删除,CouchDB在处理更新请求时找不到该文档,就会返回文档不存在冲突错误。