标签:div ODB methods 覆盖 upd 项目 增量 iss 更新
PutItem
、UpdateItem
和 DeleteItem
)是无条件的:其中每项操作都会覆盖带指定主键的现有项目。PutItem
操作仅在尚不存在具有相同主键的项目时成功。或者,如果某个项目的其中一个属性具有一个特定值,您可以阻止 UpdateItem
操作修改该项目。如果条件检查位于同一个要更新的属性上,则条件写入可以是幂等 的。这意味着,仅当项目中的某些属性值与您在请求时期望它们具有的值匹配时,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.
这里需要关注几个重点:
幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。
幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。
幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。
网络超时等问题,不是幂等的讨论范围。
幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。
标签:div ODB methods 覆盖 upd 项目 增量 iss 更新
原文地址:https://www.cnblogs.com/cloudrivers/p/11618585.html