首页 > 解决方案 > 关于基于日期时间的扫描记录

问题描述

有一个 dynamo db 表,它有一个名为“created”的列,它以纪元格式存储日期时间,我需要扫描存档。

我需要从 DynamoDB 表中归档超过 30 天的记录。但是,日期时间字段是纪元格式。

我在下面使用的代码过滤键是当前日期和时间的“创建”列和过滤值os“纪元”值。connection.scan_table(FilterExpression=Attr(filter_key).lte(filter_value))

当我尝试上面的代码时,虽然有记录,但它没有返回任何记录。可能是扫描方法不正确,因为我正在比较纪元日期和时间。有人可以帮我解决这个问题。在 DynamoDB 中使用纪元日期时间格式扫描表?

标签: amazon-dynamodb

解决方案


根本不做扫描。请尝试使用TTL

DynamoDB 的生存时间 (TTL) 允许您定义表中的项目何时过期,以便可以自动从数据库中删除它们。

TTL 是免费提供的,可作为一种减少存储使用量并降低在不使用预配置吞吐量的情况下存储不相关数据的成本的方法。在表上启用 TTL 后,您可以为每个项目设置删除时间戳,允许您将存储使用限制为仅那些相关的记录。

如果您不断累积在特定时间段后失去相关性的数据,则 TTL 很有用。例如:会话数据、事件日志、使用模式和其他临时数据。如果您有敏感数据必须根据合同或监管义务仅保留一定时间,TTL 可帮助您确保及时按计划将其删除。

看起来和你的情况一模一样。TTL 应该是一个Number带有时间格式的属性(就像你一样)。在 TTL 之后,当 TTL 到来时,您的记录将从数据库中删除。然后,您可以使用DynamoDB 流侦听已删除的记录并将其存档。阅读有关启用 TTL 的更多信息。

这种基于事件的推送方法将比扫描更好地扩展。


推荐阅读