DynamoDBのTTL(Time To Live)の使い方
TTL(time to live)とは生存時間を意味します。
これはpingコマンドなどのパケットの生存時間でも出てくる言葉なので聞いたことがあるかもしれません。
このTTLがDynamoDBのテーブルの項目に対しても適用することができます。DynamoDBではTTLを有効期限と呼んでいるようです。
このTTLを利用して、テーブルの項目の有効期限が切れたら、DynamoDBから自動的に項目を削除できるように定義することができます。RDBならデータがたまっていくので夜間バッチで削除しないといけない、など考慮がいるのですが、DynamoDBの場合、TTLを指定して例えば7年後の秒を指定すると7年後に項目を勝手に削除してくれるという非常に便利な機能です。
TTLの有効化
TTLの有効化はテーブル単位で行います。
「TTLの管理」をクリックします。
上記ではTTL属性を「ttl」としていますが、属性名はttlである必要もなく、例えばexpire_timeなどでもよく、要するに任意の名前でいけます。
TTL属性にした項目はNumber型にする必要があります。(ダブルクォーテーションで囲まない)
また、秒単位(UTC)で値を指定します。ミリ秒で指定してしまうと、以下のようにとんでもない数字になってしまいますので気を付けてください。
ttlと言う属性に(TTL)とマークされるようになります。また、カーソルをあてると秒が表示されるので、便利ですね。どうもリージョンの時間ではなくLocalの時間で削除されるようです。LocalはUTC+9なのでJSTとなりますね。ということはTTL属性に指定する時間はUTCで計算した秒を指定すれば日本時間で削除されることになります。
有効期限と削除時間の間の潜在的な遅延
DynamoDBはバックグラウンドでその項目が有効期限切れかどうかを確認します。
但し、ベストエフォート(なるべく頑張るみたいな)のようで、通常48時間以内には削除されるようです。テスト的に簡単なテーブルで実行したところ、3~5分ほどの遅延があって削除されることを確認しました。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント