Dynamodb 不经常安排的扫描

Dynamodb infrequently scheduled scan

我正在使用 nodejs 实现一个会话 table,它将增长到大量项目。每个散列键都是代表用户的 uuid。

为了删除过期会话,我必须扫描 table 过期属性并删除旧会话。我打算几天扫描一次,除此之外,我真的不需要高读取能力。

我提出了 2 个解决方案,我想听听有关它们的一些反馈。

1) UpdateTable 到更高的容量仅用于计划的例程,扫描完成后,只需将 table 容量减少到其原始值。

2) 执行扫描,在 x*MB 读取后检索 'LastEvaluatedKey' 时,创建启动延迟(不消耗所有 read/sec 单位),然后继续扫描'ExclusiveStartKey'.

如果您正在进行扫描,选项 1 是您最好的选择。这是保证在扫描过程中不会影响应用程序性能的唯一真正方法。

您唯一需要确定的是,您每天只能 运行 此操作一次——我相信您每天只能将 DynamoDB 上的吞吐量单位 table 降低 2 倍(最多)。

这是一个老问题,不过我是通过相关问题看到的

现在有一个更好的本机解决方案:DynamoDB Time to Live

它允许您为每个 table 指定一个属性,作为每个项目的生存时间值。然后,您可以使用 Unix-Timestamp 设置每个项目的属性,指定何时应删除该项目。

在该时间戳的大约 24 小时内,将免费删除该项目。