DynamoDB条件ttl

时间:2017-09-27 21:40:29

标签: java amazon-web-services amazon-dynamodb

DynamoDB是否支持基于特定条件的TTL?例如,我希望在具有特定属性的记录上启用TTL,并且在没有该属性值的记录上没有TTL。

我目前阅读的文档是

  1. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html
  2. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-how-to.html
  3. 这两个文档都没有提供具体信息。

    谢谢,

3 个答案:

答案 0 :(得分:8)

请记住,DynamoDB是无模式的。所有记录不必具有相同的字段。因此,只在您希望过期的记录上创建TTL字段。更新记录时,您的条件为"满足,添加TTL字段。

答案 1 :(得分:1)

TTL将DynamoDB中的非空字段(已设置为TTL字段)与当前时间戳进行比较,如果其TTL字段早于当前时间戳,则删除该项目。

使用DynamoDB TTL的一种典型方法是在数据对象中创建一个字段(可能将其命名为ExpirationTime),将其设置为(currentEpochTime + TimeToLive)。在 TimeToLive 秒之后,DynamoDB将找到小于当前EpochTime的值,并执行删除操作(预计会有一些延迟)。

话虽如此,如果要在使用此表后通过向原始数据对象添加新字段来启用TTL。现有数据不会受到影响,因为它们没有该字段。您可能希望运行脚本以将新字段值添加到所有现有项目,以使TTL适用于现有数据。

答案 2 :(得分:0)

信息不存在,没有这样的功能。

您可以根据您希望在记录上施加的任何条件在记录上创建TTL。如果它与这些条件不匹配,则不要创建TTL或清理现有的TTL。

只有匹配TTL时间戳值或更低时才会删除记录。

我不确定是否需要内置功能。<​​/ p>