使用重复值删除Dynamodb表中的项目

时间:2017-03-10 22:35:09

标签: amazon-dynamodb

我有一个具有以下结构的dynamodb表:

{  
  accountId: string,//PRIMARY KEY 
  userId: string,//SORT KEY
  email: string,
  dateCreated: number // timestamp
}

我想执行一项操作,删除表中包含重复电子邮件的所有项目,但具有最早dateCreated属性的项目除外。

DynamoDB中是否可以执行此操作?

由于

1 个答案:

答案 0 :(得分:2)

首先,您需要分区和排序键才能从DynamoDB中删除项目。除非您知道accountIduserId,否则您无法执行删除项操作。

在上述用例中,emaildateCreated属性都不是关键属性的一部分。

此外,排序功能仅适用于排序键属性。

方法1: -

首选一次性活动

  1. 根据客户端的dateCreated
  2. 获取数据并识别旧值
  3. 根据accountIduserId
  4. 删除DynamoDB上的数据

    方法2: -

    首选经常需要

    1. 使用散列密钥email创建GSI,并将密钥排序为dateCreated

    2. 假设您知道要查询的电子邮件ID并确定其是否有重复项,您可以将查询API 与索引名称,电子邮件ID值和ScanIndexForward结合使用值为false(即降序)

    3. 结果集的电子邮件ID将在顶部显示最新记录。您可以忽略热门记录,并使用accountIduserId为其余项目运行删除API

      方法3: -

      首选方法,如果数据可以在平面文件中管理并运行某些程序以查找重复项

      1. 您可以使用AWS Data Pipeline将数据导出到S3存储桶
      2. 运行一些程序来读取文件以查找重复项并执行DynamoDB删除查询以删除项目
      3. 方法4: -

        如果数据很大,则为首选方法

        1. 您可以使用AWS Data Pipeline将数据导出到AWS EMR
        2. 运行一些查询以查找重复项并执行DynamoDB删除查询以删除项
        3. 注意: -

          请注意,如果您希望使用带有子查询的SQL之类的内容来识别最新更新的记录并删除其余记录,那么在DynamoDB上

          Export data to S3