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

时间:2019-01-25 07:55:13

标签: amazon-web-services amazon-dynamodb

在添加到dynamoDB中之前,我想检查新项目的id(主键)是否唯一

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


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

1)获取(如果返回空数组,则意味着没有匹配的数据。这也意味着它是唯一的)

2)扫描(对于性能和成本而言,显然是最糟糕的主意)

3)查询


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

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

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

有什么主意吗?

1 个答案:

答案 0 :(得分:3)

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

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

  

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