Elasticsearch Document 的 _version 元数据
文字内容整理自 B 站中华石杉的 Elasticsearch 顶尖高手系列课程核心知识篇
对于为什么需要并发控制,我觉的不需要解释(如果你想听,那么可以留言,我补一篇),和所有的数据库系统所面临的问题是一样的。乐观锁、悲观锁,这些也都是常见的概念。
悲观锁
优点:方便,直接加锁,对应用程序透明,不需要额外操作
缺点:并发能力很低,同一时间只能有一个线程操作数据
乐观锁
优点:并发能力很高,不给数据加锁,大量线程并发操作
缺点:麻烦?每次更新的时候,都要先比对版本号,然后可能需要重新加载数据,再次修改,然后再写;这个过程可能重复好几次。
_version 元数据
复制代码
Elasticsearch 第一次创建一个 document 的时候,它的_version 内部版本号就是 1;以后,每次对这个 document 执行修改或者删除操作,都会对这个_version 版本号自动加 1;哪怕是删除,也会对这条数据的版本号加 1
复制代码
们会发现,在删除一个 document 之后,可以从一个侧面证明,它不是立即物理删除掉的,因为它的一些版本号等信息还是保留着的。先删除一条 document,再重新创建这条 document,其实会在 delete version 基础之上,再把 version 号加 1
参考资料
optimistic concurrency control
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/fff3ffd3c9bde6f1bab0879f3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论