Amazon web services AWS DynamoDB在添加新项之前检查唯一性
在添加到dynamoDB之前,我想检查新项的id(主键)是否为uniq 就性能和成本而言,什么是最佳选择Amazon web services AWS DynamoDB在添加新项之前检查唯一性,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,在添加到dynamoDB之前,我想检查新项的id(主键)是否为uniq 就性能和成本而言,什么是最佳选择 检查主键唯一性的可能选项可以是 1) Get(如果返回空数组,则表示没有匹配的数据。这也表示它是uniq) 2) 扫描(显然是性能和成本方面最差的想法) 3) 质疑 ++我的另一个想法是,如果有任何方法可以在DynamoDB设置中强制忽略传入请求(放弃传入请求或发送错误消息),逻辑可能会简单得多 在正常的RDB中,若我们尝试使用现有主键添加新项,数据库将返回错误消息,而不会更改存储在数据
检查主键唯一性的可能选项可以是 1) Get(如果返回空数组,则表示没有匹配的数据。这也表示它是uniq) 2) 扫描(显然是性能和成本方面最差的想法) 3) 质疑
++我的另一个想法是,如果有任何方法可以在DynamoDB设置中强制忽略传入请求(放弃传入请求或发送错误消息),逻辑可能会简单得多 在正常的RDB中,若我们尝试使用现有主键添加新项,数据库将返回错误消息,而不会更改存储在数据库中的原始数据 然而,在DynamoDB中,无论我们使用现有的主键放置项还是更新项,它都只是默默地更改存储在数据库中的原始数据
有什么想法吗?如您所述,如果项目已经存在,DynamoDB将使用您提供的主键更新该项目。下面的文章向您展示了如何发出条件PUT请求,该请求在尝试插入已存在的项(基于主键)时将失败 要防止新项替换现有项,请使用包含属性_not_exists函数的条件表达式,该属性的名称用作表的分区键。由于每个记录都必须包含该属性,因此只有在不存在匹配项的情况下,attribute_not_exists函数才会成功
正如您所提到的,DynamoDB将使用您提供的主键更新项目(如果它已经存在)。下面的文章向您展示了如何发出条件PUT请求,该请求在尝试插入已存在的项(基于主键)时将失败 要防止新项替换现有项,请使用包含属性_not_exists函数的条件表达式,该属性的名称用作表的分区键。由于每个记录都必须包含该属性,因此只有在不存在匹配项的情况下,attribute_not_exists函数才会成功
选项1和3是相同的,它们都在主键上执行查询操作。如果要查找主键值,则选项2甚至不值得考虑。选项1和选项3是一样的,它们都在主键上执行查询操作。如果要查找主键值,则选项2甚至不值得考虑。