vrt*_*234 4 amazon-web-services amazon-dynamodb
Amazon DynamoDB 是否有锁定行读取的机制?类似于https://www.2ndquadrant.com/en/blog/what-is-select-skip-locked-for-in-postgresql-9-5/上对 PostgresQL 的描述
我找不到任何文档,因此想确认一下。
编辑:我想锁定一行,以便“读取”在锁定时不会获取该行。当锁被释放时,它可以再次读取。
EDIT2:目的是模拟分布式处理的队列。不同的客户端需要从表中取出一个项目进行处理。请参阅上面的链接以了解如何在 PostgresQL 中实现这一点。
DynamoDB 不支持此功能。
RDMBS 将行锁与事务相关联,并将事务与数据库的单个客户端连接相关联(如果持有这些锁的连接消失,则会自动释放这些锁),但 DynamoDB 是无连接的——代码和数据库之间的所有操作都发生在一系列操作中。不相关的 HTTPS 请求。(当然,DynamoDB 也不是 RDBMS)。
因此,DynamoDB 没有类似的概念SELECT ... FOR UPDATE(通过隐式读取阻塞或显式行跳过来锁定找到的行并防止其他事务看到它们),并且不具备由此产生的任何功能。
最接近的事情——诚然不是特别接近——将使用一致的读取和条件写入(仅当属性已经与预期状态匹配时才允许更新属性)来检查、设置和清除用户定义的锁定属性标记每个记录的状态,并可能留下记录如何处于该状态的踪迹(例如填充“记录由主机 z 上的 pid y 的线程 x 在时间戳 w 锁定”),在计算时很有帮助如果记录陷入锁定状态会发生什么)。
| 归档时间: |
|
| 查看次数: |
13825 次 |
| 最近记录: |