amazon-dynamodb - DynamoDB 是否公开 API 以查询或检测何时合并项目数据发生冲突
解决方案
你的问题是基于错误的前提。虽然 DynamoDB 的名称,以及一些目标和实现细节,与原始的“Dynamo”论文并不太接近,尤其是数据模型完全不同。
而在 Dynamo 论文中,多个客户端可以同时为一个项目存储多个不同的值 - 以后的读者需要解决冲突 - DynamoDB 做的事情非常不同:
- 如果两个客户端替换了一个项目,DynamoDB 会提供“最后一次写入获胜” - 其中一个写入将获胜,您不知道也不关心哪个。
- 如果两个客户端同时修改同一个项目的不同属性,这两个更改将被合并。我从未发现这是明确承诺的,但它似乎以这种方式工作。
- 您还有一个强大的条件更新功能,它可以根据该项目的旧值的某些条件对单个项目进行修改。这些条件更新保证是隔离的,因此可以用来确保安全的并发修改。例如,条件更新可用于实现所谓的乐观锁定:一个项目在其他属性中具有版本属性,客户端读取旧项目,决定将其更改为什么,然后根据条件进行写入版本仍然没有改变。如果条件失败(因为其他一些客户端与我们竞争),写入失败并且客户端再次尝试整个过程(再次读取,应用更改,然后写回)。
- DynamoDB 还具有完整(多项)事务的新功能。Dynamo 中根本不存在此功能。
推荐阅读
- java - Android 中的回收视图和查看器适配器的错误
- html - 如何使网站适合屏幕宽度?
- c++ - 没有重载函数 AddSnapshotListener 的实例与参数列表匹配
- javascript - 数组排序和值同时变化
- excel - 根据下拉列表选择更改双向单元格的目标
- javascript - 反应原生组件异常元素类型无效
- javascript - 如何使用flask框架从html文件访问变量到python文件?
- javascript - 当我尝试显示对象属性或 console.log - React & Hooks 时,对象属性未定义
- postgresql - 如何将 csv 数据集导入 postgres。我在其他页面上尝试了解决方案,但它们不起作用
- r - Ubuntu上的R基础包未导出对象