【问题标题】:DynamoDB condition ttlDynamoDB 条件 ttl
【发布时间】:2017-09-27 21:40:28
【问题描述】:

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

这两个文档都没有指明这方面的具体信息。

谢谢,

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        我不确定是否需要内置功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-10
          • 1970-01-01
          • 1970-01-01
          • 2018-06-26
          • 2016-05-12
          • 1970-01-01
          • 2021-05-31
          相关资源
          最近更新 更多