AWS DynamoDB 在添加新项目之前检查唯一性


我想

在添加到dynamoDB之前检查新项目的id(主键)是否是uniq

对于性能和成本而言,什么是最佳选择。


检查主键唯一性的可能选项可以是...

1)get(如果空数组返回,则表示没有匹配的数据,这也意味着它是Uniq)

2)扫描(对于性能和成本来说,显而易见,最糟糕的想法)

3) 查询


++ 我的另一个想法是,如果有任何方法可以强制忽略 DynamoDB 设置中的传入请求(丢弃传入请求或发送错误消息),逻辑可能会简单得多。

在普通RDB中,如果我们尝试使用现有主键添加新项目,数据库将返回错误消息,而不会更改存储在数据库中的原始数据。

但是,在 DynamoDB 中,无论我们使用现有主键放置项目还是更新项目,它都只是静默更改存储在数据库中的原始数据。

有什么想法吗?

如您所提到的,DynamoDB 将使用您提供的主键更新项目(如果该项目已存在)。下面的文章向您展示了如何发出条件 PUT 请求,该请求在尝试插入已存在的项(基于主键)时将失败。

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_PutItem.html

若要防止新项替换现有项,请使用包含 attribute_not_exists 函数的条件表达式,该函数的名称用作表的分区键。由于每条记录都必须包含该属性,因此 attribute_not_exists 函数只有在不存在匹配项时才会成功。

最新更新