面试题答案
一键面试常见冲突类型及原因
- 文档冲突
- 原因:当多个节点同时对同一文档进行修改时,由于各节点无法即时知晓其他节点的操作,就会产生文档冲突。例如,节点A和节点B都获取了文档X的副本,然后各自对文档中的不同字段进行了更新并尝试同步,CouchDB无法直接判断哪个更新应该被保留,从而产生冲突。
- 删除冲突
- 原因:若一个节点尝试删除某个文档,而另一个节点同时对该文档进行修改操作并尝试同步。CouchDB面临是保留修改后的文档还是执行删除操作的矛盾,进而产生删除冲突。比如节点A准备删除文档Y,与此同时节点B对文档Y的内容进行了更新并试图同步,这就导致了冲突。
- 历史冲突
- 原因:CouchDB通过版本历史来跟踪文档的变化。在多节点同步时,如果各节点的文档版本历史出现差异,例如不同节点上文档的编辑顺序不同,就会产生历史冲突。例如,节点1上文档Z先进行了操作A,然后操作B;而节点2上文档Z先进行了操作B,然后操作A,当同步时就可能引发历史冲突。