【问题标题】:Dynamodb infrequently scheduled scanDynamodb 不经常计划的扫描
【发布时间】:2022-03-29 23:13:55
【问题描述】:

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

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

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

1) 仅为该计划例程更新表到更高容量,并且在扫描完成后,只需将表容量减少到其原始值。

2) 执行扫描,并在读取 x*MB 后检索“LastEvaluatedKey”时,创建启动延迟(不消耗所有读取/秒单位),然后使用“ExclusiveStartKey”继续扫描。

【问题讨论】:

    标签: node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

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

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

    【讨论】:

    • 我提出了第三个想法,只是想知道...将哈希设置为日期,并将范围设置为 uuid,然后像这样使用 查询:hash == ' 16/1' & 范围 > 0
    【解决方案2】:

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

    现在有更好的原生解决方案:DynamoDB Time to Live

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

    在该时间戳的大约 24 小时内,该项目将被删除,无需额外费用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2016-10-15
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2012-06-19
      • 2012-12-18
      相关资源
      最近更新 更多