码迷,mamicode.com
首页 > 数据库 > 详细

DynamoDB 有条件写入

时间:2019-10-02 22:33:20      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:div   ODB   methods   覆盖   upd   项目   增量   iss   更新   

  • 默认情况下,DynamoDB 写入操作(PutItemUpdateItem 和 DeleteItem)是无条件的:其中每项操作都会覆盖带指定主键的现有项目。
  • DynamoDB 可以选择性地对这些操作支持有条件写入。有条件写入仅在项目属性满足一个或多个预期条件时才会成功。否则,它会返回错误。有条件写入在很多情况下很有用。例如,您可能希望 PutItem 操作仅在尚不存在具有相同主键的项目时成功。或者,如果某个项目的其中一个属性具有一个特定值,您可以阻止 UpdateItem 操作修改该项目。
  • 有条件写入在多个用户尝试修改同一项目的情况下很有用。请考虑下图,其中两位用户(Alice 和 Bob)正在处理 DynamoDB 表中的同一项目。
技术图片

有条件写入幂等性

如果条件检查位于同一个要更新的属性上,则条件写入可以是幂等 的。这意味着,仅当项目中的某些属性值与您在请求时期望它们具有的值匹配时,DynamoDB 才执行给定的写入请求。

例如,假设您发出一个 UpdateItem 请求来以 3 为递增量提高某个项目的 Price,但仅在 Price 当前为 20 时才执行此操作。在已发送该请求但尚未获得返回的结果之间的时间内,网络出现了错误,您不知道该请求是否成功。由于此条件写入是幂等的,您可以重试同一 UpdateItem 请求,而 DynamoDB 将仅在 Price 当前为 20 时更新项目。

 

什么是幂等性

HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同

Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

这里需要关注几个重点:

  1. 幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。

  2. 幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。

  3. 幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。

  4. 网络超时等问题,不是幂等的讨论范围。

幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。

DynamoDB 有条件写入

标签:div   ODB   methods   覆盖   upd   项目   增量   iss   更新   

原文地址:https://www.cnblogs.com/cloudrivers/p/11618585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!