DynamoDB上的TTL功能可以作为实际删除项目的免费替代方案吗



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

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

既然亚马逊在不消耗任何写入单元的情况下(在他们方便的时候(为您删除项目,那么我的所有删除都可以这样完成吗?这个想法是创建没有TTL的项目,然后不删除它们,只将TTL设置为当前时间。我知道我必须添加一些逻辑来说明过期但未删除的项目,但与节省的费用相比,这似乎微不足道。

这可能吗?

您是正确的,项目本身将被删除,而不会产生任何成本,这确实使该过程可以免费删除项目。

删除过程可能需要从TTL时间起长达48小时(项目作为后台操作排队(,因此您需要确保您的应用程序执行逻辑以筛选出这些项目。

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

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

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

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

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

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

2023年6月更新
我想在这个答案中补充一点,如果您使用全局表,则TTL删除仅在原始表上是免费的。您仍然要为复制的删除付费。