【问题标题】:AWS DynamoDB checking uniqueness before adding new itemAWS DynamoDB 在添加新项目之前检查唯一性
【发布时间】:2019-01-25 19:40:56
【问题描述】:

我想在添加到 dynamoDB 之前检查新项目的 id(primary-key) 是否为 uniq

什么是性能和成本方面的最佳选择。


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

1) 获取(如果返回空数组,表示没有匹配的数据,也表示是uniq)

2) 扫描(显然,性能和成本都是最糟糕的想法)

3) 查询


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

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

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

有什么想法吗?

【问题讨论】:

  • 您的选项 1 和 3 是一回事,它们都是对主键进行查询操作。如果您有要查找的主键值,您的选项 2 甚至不值得考虑。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多