当前位置: 首页 > 知识库问答 >
问题:

DynamoDB:不使用主键删除项目

顾淳
2023-03-14

我正在我们的项目中实施DynamoDB。我们必须将大型数据字符串放入数据库中,所以我们将数据拆分为小块,并插入多行,其中只有一个属性值发生了更改—这是字符串的一部分。一列(范围键)包含多个零件。插入和选择数据对于大小字符串都非常有效。问题是删除项目。我了解到,当您想要删除某个项时,需要为该项指定主键(哈希键或哈希键和范围键-取决于表)。但如果我想删除对其中一个属性具有特定值的项目,该怎么办?我是否需要扫描(扫描,而不是查询)整个表,并针对每一行运行delete或batch delete?或者有没有其他不使用两个查询的html" target="_blank">解决方案?我要做的是避免扫描整个表。我认为这样的表中会有大约1亿到1亿行,所以扫描速度会非常慢。

谢谢你的帮助。

共有1个答案

郜彦
2023-03-14

没有办法删除DynamoDB中的任意元素。您确实需要知道hash_keyrange_key

如果查询不符合您的需要(例如,您甚至不知道哈希键),那么您就卡住了。

最好是重新设置您的数据建模。构建自定义索引或执行“延迟删除”。

要实现“延迟删除”,请使用表作为要删除的元素队列。定期对其运行EMR,以在一次扫描操作中完成批次中的所有删除。这确实不是最好的解决方案,但我能想到的避免重新建模的唯一方法。

太长别读:除了变通方法,没有真正的方法。我强烈建议您至少重新建模部分数据。

 类似资料:
  • 使用alter命令,我添加了主键和外键 alter table employee1添加主键(eid); alter table accounts1 add foreign key(eid)REFERENCEEE1(eid); 错误: MySQL>alter table employee1删除约束eID; 错误1064(42000):您的SQL语法中有错误;查看将ponds与您的MySQL serv

  • 问题内容: 我将quartz.net版本从1.0.3升级到2.0.2。有一个用于数据库模式的迁移脚本,该脚本是为MSSQL编写的,并且我正在尝试为其编写MYSQL版本。 但是,我无法删除主键(需要这样做)。 MSSQL的原始脚本版本: 为了简单起见,我正在尝试第一个声明 这是我尝试过的结果: ALTER TABLE BLOB_TRIGGERS DROP PRIMARY KEY; [Err] 102

  • 我正在尝试使用bash中的AWS CLI删除同时具有分区和排序键的DynamoDB表中的所有项目。到目前为止,我发现的最好的事情是: 但这对于同时具有分区键和排序键的表不起作用,而且我还不能使它对这样的表起作用。知道如何修改脚本以使其适用于具有复合键的表吗?

  • 问题内容: 我有以下表模式,它将user_customers映射到实时MySQL数据库的权限: 我想删除user_customer_id和Permission_id的主键,并保留id的主键。 当我运行命令时: 我收到以下错误: 如何删除列的主键? 问题答案: 如果没有索引,则维护自动增量列会变得太昂贵,这就是为什么要求将自动增量列作为索引的最左侧部分的原因。 您应该在删除键之前删除autoincr

  • 我一直试图通过java代码从DynamoDB中的表中删除一项,但每次尝试都会导致相同的错误: com.amazonaws.AmazonServiceException:提供的键元素与架构不匹配(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException; 我当前的尝试非常简单,如下所示: tablename只是表名,凭证已被验证为正确,cognito

  • 我有两个表,一个有复合主键,另一个有外键。它们都设置为删除时级联。问题是,当我从主表中删除一个复合键集“name:John date:02.02.2018”时,所有John行都会从带有外键的表中删除,但是可以有一个集合“name:John date:04.04.2018”以及日期为02.02的所有行。也删除了一些行,如何才能使其删除仅匹配外键集的行? 更新: