【问题标题】:Can the TTL feature on DynamoDB be used as a free alternative to actually deleting items?DynamoDB 上的 TTL 功能可以用作实际删除项目的免费替代方案吗?
【发布时间】:2020-08-10 18:59:44
【问题描述】:

我已经阅读了使用 DynamoDB TTL 使项目过期的开发人员指南,并且想知道是否可以使用 TTL 作为删除的替代方法,而不是补充。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html

由于亚马逊为您删除项目(在他们方便时)而不消耗任何写入单元,是否可以像这样完成我的所有删除操作?这个想法是创建没有 TTL 的项目,而不是删除它们,只需将 TTL 设置为当前时间。我知道我必须添加一些逻辑来说明过期但未删除的项目,但这与节省的成本相比似乎微不足道。

这可能吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb billing ttl


    【解决方案1】:

    您是正确的,因为项目本身将被删除,您无需支付任何费用,这确实使此过程可以免费删除项目。

    从 TTL 时间算起,删除过程最多可能需要 48 小时(项目作为后台操作排队),因此您需要确保您的应用程序执行逻辑以过滤掉这些项目。

    根据表的大小和活动级别,过期项目的实际删除操作可能会有所不同。因为 TTL 是一个后台进程,所以用于通过 TTL 过期和删除项目的容量的性质是可变的(但免费的)。 TTL 通常会在过期后 48 小时内删除过期项目。

    除非您要删除/更新大量数据,否则您只需使用 DynamoDB 表剩余的任何可用 WCU。

    【讨论】:

      【解决方案2】:

      这个想法是创建没有 TTL 的项目,然后代替 删除它们只是将 TTL 设置为当前时间。

      这没有意义,你需要使用 WCU 来更新项目,还不如直接删除它。

      当您可以在创建项目时设置 TTL 时,使用 TTL 免费删除项目是有意义的。

      如果您有多个 GSI,我想通过更新设置 TTL 可能会很有用。您只需为表的更新付费,删除将是免费的。而如果您删除表中的记录,您需要为表和 GSI 付费。

      【讨论】:

      • 为已删除的项目设置24hr recovery window 是否也有好处(假设启用了 Streams)?如果不值得,我不想构建它过于复杂,但我想清楚地权衡我的选择。
      • 该链接中没有任何内容提及恢复窗口......
      • 我的错,那是我使用的另一个资源。这是correct one.“如果数据恢复是一个问题,我们建议您备份您的表。对于完全托管的表备份,请使用 DynamoDB 按需备份或具有时间点恢复的连续备份。对于 24-小时恢复窗口,您可以使用 DynamoDB Streams。有关更多信息,请参阅 DynamoDB Streams 和生存时间。"
      • 24 小时窗口特定于 Streams,如果您手动删除记录,您将拥有相同的窗口。
      • 谢谢,因为我的表没有任何 GSI 删除可能会花费完全相同而没有额外的好处。这就是我要找的东西?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多