我想处理DynamoDB表上的最新更新,并将它们保存在另一个表中。假设我从表1中不定期放置的IoT设备获得更新,我需要使用N个最后更新来计算表2中的更新,以便与原始更新同步设备(滑动窗口的类型)
DynamoDB触发器(Streams + Lambda)似乎非常适合我的需求,但我没有找到TRIM_HORIZON
的明确定义。在一些文档中,我理解它是Table1中最早的数据(可以变得很大),但在其他文档中,它似乎是24小时。或者也许是流中最古老的,也就是24小时?
所以任何人都知道TRIM_HORIZON
的真相?甚至可以配置它吗?
我看到的替代方法是不使用TRIM_HORIZON
,而是使用LATEST
并对Table1执行查询。但它有点挫败了溪流的目的。
答案 0 :(得分:7)
DynamoDB Streams中的所有数据都有24小时的生命周期。您可以 检索并分析任何给定表格的最近24小时活动
TRIM_HORIZON - 开始读取最后一条(未修剪的)流记录, 这是碎片中最古老的记录。在DynamoDB Streams中,有 24小时的数据保留限制。流式传输年龄超过的记录 此限制可以从流中删除(修剪)。
因此,如果您有一个持续处理流更新的Lambda,我建议您使用LATEST
。
此外,由于您需要使用N个最后更新来计算表2和#34;中的更新,因此您必须在每次更新时查询Table1,以便您可以合并'当前更新与该设备的先前更新。我不认为你也可以使用TRIM_HORIZON
解决这个问题。