2017-09-27 8 views
1

DynamoDBは特定の条件に基づいてTTLをサポートしていますか?たとえば、特定の属性を持つレコードでTTLを有効にし、その属性の値を持たないレコードにTTLを設定しないようにします。私は現在、この問題を調査するために読んだDynamoDBの条件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

です。

ありがとう、

答えて

1

DynamoDBはスキーマレスであることに注意してください。すべてのレコードが同じフィールドを持つ必要はありません。したがって、期限切れにしたいレコードにのみTTLフィールドを作成してください。あなたの "条件"が満たされるようにレコードが更新されたら、TTLフィールドを追加します。

0

この情報はありませんが、そのような機能はありません。

レコードに課す条件に基づいて、レコードにTTLを作成できます。これらの条件と一致しない場合は、TTLを作成したり、既存のTTLをクリーンアップしたりしないでください。

レコードは、TTLタイムスタンプ値以下に一致する場合にのみ削除されます。

ビルドイン機能の必要性についてはわかりません。

0

TTLは、DynamoDBの空でないフィールド(現在TTLフィールドに設定されている)と現在のタイムスタンプを比較し、そのTTLフィールドが現在のタイムスタンプよりも前である場合はそのアイテムを削除します。

DynamoDB TTLを使用する典型的な方法は、データオブジェクト内にフィールドを作成することです(ExpirationTimeという名前にすることもできます)。これを(currentEpochTime + TimeToLive)として追加します。 TimeToLive秒後、DynamoDBは現在のEpochTimeより小さい値を見つけ、削除アクションを実行します(遅延があると予想します)。

これは、元のデータオブジェクトに新しいフィールドを追加してこのテーブルを使用した後にTTLを有効にしたい場合に使用します。既存のデータは、そのフィールドを持たないため、影響を受けません。スクリプトを実行して、新しいフィールド値を既存のすべての項目に追加して、既存のデータに対してTTLを機能させることができます。

関連する問題