やりたいこと
DynamoDBのTTLの動作確認をしたい
やってみる!
まず、「2024-02-26 13:30:00」頃から作業スタート!
テストテーブルを作成し、expiration項目を作り、画像のようにデータを入れる
expiration項目は、ただの項目名であり、自由に命名できるから、expirationじゃなくても大丈夫~
テーブル作成時に、デフォルトTTLがオフになってますが、後で「オン」に変更したいと思う
expiration項目には、「有効期限」をUnixtime形式で格納し、後でTTLを「expiration項目」に紐づける
今回は試しに、「2024-02-26 14:00:00」を有効期限にする
データを永遠に残し続けたい場合、expiration項目には0を格納する
そして、TTLの設定を~
TTL属性名に、先ほど作っておいたexpirationを記入
プレビューを押すと、「これから削除されるデータ」を洗い出してくれるね~
そして、以下の記載もあって、
「TTL の有効化がすべてのパーティションに適用されるまでに最大 1 時間かかることがあります。この更新が完了するまで、追加の TTL の変更を行うことはできません。」
要は、TTLは既存のデータの適用できるけど、適用するのに最大1hかかるよってこと
「TTLをオンにする」を押すと、画面がこう遷移し、設定完了!
再び、テーブルのデータ内容をみると、表示が「expiration (数値) (TTL)」になった
「適応に最大1hかかる」ということに気になって、「2024-02-26 13:30:00」の作業で「2024-02-26 14:00:00」の削除は間に合うか心配で、、、
14時になったら、さっそくデータを確認しようと
あれっ、まだいるね、、、
やはり、適用するのに間に合わないか、といろいろ調べたら、
AWSの公式ドキュメントに以下の記載があった!
「DynamoDB は、有効期限から数日以内に期限切れの項目を自動的に削除します。」
要は、リアルタイムの削除ではなくて、有効期限になって数日以内にどっかのいいタイミングで削除するということか!?
そのあと、1分間隔でチェックすると、「2024-02-26 14:09:00」頃データがなくなった!
終わりに
以前テキストでTTLの仕組みを勉強したことあったが、今回動作確認することで、削除のタイミングやTTLの設定方法など、改めて理解を深めることができた。
今回はデータが1行しかなくて結構少ないので、適用に1hもかからなかったが、データが大量にあった場合、TTLを適用するのにもっと時間かかるかもしれませんね。
そして、時間になってすぐ削除ではないことも気をつけないといけないかなと思って、データ削除の即時反映が絶対要件の場合、TTLが不適切かもしれないと感じた
参考サイト