如何设计DynamoDB表以便于按时间范围进行搜索,并按唯一ID进行删除

时间:2013-12-19 13:20:05

标签: amazon-dynamodb

我是DynamoDB的新手 - 我已经有了一个插入数据的应用程序,但是我一直在提取数据。

要求

  1. 每位客户必须有一张唯一的表格
  2. 将文档插入表格(每个文档都有唯一的ID和时间戳)
  3. 根据时间戳(按升序排序)获取X个文档
  4. 根据唯一ID删除单个文档
  5. 到目前为止,我已经创建了一个带有复合键的表(S:id,N:timestamp)。然而,当我来查询它时,我意识到因为我的id是唯一的,因为我不能对ID进行通配符搜索,所以我将无法提取一系列项目......

    那么,我应该如何设计我的表来满足这种情况呢?

    编辑:这就是我的想法:

    主索引将是复合索引:(s:customer_id,n:timestamp)其中客户ID在表中是相同的。这将使我能够根据时间范围访问数据。

    辅助索引将是hash(s:unique_doc_id),我可以使用此索引删除项目。

    这听起来像是正确的解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以满足以下要求:

您的主键是h:customer_id和r:unique_id。这可以确保表中的所有元素都有不同的键。

您还将拥有时间戳的属性,并在其上有一个本地二级索引。

您将使用LSI执行要求3和batchWrite API调用以对要求4执行批量删除。

此解决方案不需要(1) - 所有客户都可以停留在同一个表格中(抬头 - 每个帐户有256个表格的联系我们之前有限制)