【问题标题】:DynamoDB Triggers (Streams + Lambda) : details on TRIM_HORIZON?DynamoDB 触发器(流 + Lambda):TRIM_HORIZON 的详细信息?
【发布时间】:2016-07-09 10:42:05
【问题描述】:

我想处理 DynamoDB 表的最新更新并将它们保存在另一个表中。假设我从不定期放入 Table1 的 IoT 设备获取更新,并且我需要使用 N 个最后更新来计算 Table2 中与原始更新同步的同一设备的更新(一种滑动窗口)。

DynamoDB 触发器 (Streams + Lambda) 似乎非常适合我的需求,但我没有找到 TRIM_HORIZON 的明确定义。在某些文档中,我知道它是 Table1 中最古老的数据(可能会变得很大),但在其他文档中,它似乎是 24 小时。或者可能是流中最旧的,即 24 小时?

那么有人知道TRIM_HORIZON 的真相吗?甚至可以配置它吗?

我看到的替代方法是不使用TRIM_HORIZON,而是使用LATEST 并在Table1 上执行查询。但这有点违背了流的目的。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-lambda iot


    【解决方案1】:

    以下是您的相关方面,来自 DynamoDB 的文档(12):

    • DynamoDB Streams 中的所有数据都有 24 小时的生命周期。你可以 检索和分析任何给定表的最近 24 小时活动

    • TRIM_HORIZON - 从最后一个(未修剪的)流记录开始读取, 这是分片中最古老的记录。在 DynamoDB Streams 中,有 数据保留 24 小时限制。年龄超过的流记录 此限制可能会从流中移除(修剪)。

    所以,如果您有一个持续处理流更新的 Lambda,我建议您使用 LATEST

    此外,由于您“需要使用 N 个最后更新来计算 Table2 中的更新”,因此您必须查询 Table1 的每个更新,以便您可以将当前更新与该设备的先前更新“合并” .我认为你也不能使用TRIM_HORIZON 来解决这个问题。

    【讨论】:

    • @FrançoisLegras 是否可以将 dynamodb 流保留时间从 24 小时增加到 48 小时?
    • @NidhinDavid,我不这么认为。
    • 如果您想增加数据保留期,我认为您可以对来自 DDB 流的数据进行 lambda 副本并将其放入 KinesisData Streams,因为它可以将保留期延长至 7 天 (aws.amazon.com/kinesis/data-streams/pricing)
    • 如果您使用最新的,那么您最终会得到错误顺序的数据。最新的更改将首先写入,最旧的更改将最后写入。因此,如果您试图使两个表保持同步,您最终会得到陈旧的数据。使用TRIM_HORIZON 保留顺序。
    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2013-08-15
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多