-----------------------------------------------------------------
1、悲观锁和乐观锁
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性操作。
乐观锁:假定不会发生并发冲突,提交操作时检查是否违反数据完整性。
-----------------------------------------------------------------
2、elk的版本控制
内部版本控制:_version自增长,修改数据后,_version自动加1
外部版本控制:为了保持_version与外部控制数值保持一致,
使用version_type=external,
检查数据与当前的version值是否小于请求中的version值。
-----------------------------------------------------------------
3、新建数据版本是_version=1,随着对文档操作,版本号自增长。
-----------------------------------------------------------------
4、内部版本控制
请求命令:
PUT /library/books/1
{
“title”:“Black Horse”,
“name”:{
“first”:“shengqi”,
“last”:“liang”
},
"publish_date","1900/01/01",
"price":"35.99"
}
响应结果:
请求命令:
GET /library/books/1
响应结果:
{
"_index":"library",
"_type":"books",
"_id":"1",
"_version":"1",
"_found":"true",
"_source":{
"title":"black fly",
"name":{
"first":,"xxx",
"last":,"yyy"
}
"publish_date":"2015-12-06",
"price":"100"
}
}
#不带版本号的更新
POST /library/books/1/_update
{
"doc":{
"price":10
}
}
#带版本号的更新(要求一致才能更新)
POST /library/books/1/_update?version=2
{
"doc":{
"price":10
}
}
-----------------------------------------------------------------
5、外部版本控制
POST /library/books/1/_update?version=20&version_type=external
{
"doc":{
"price":10
}
}