Amazon Web Services ブログ

新機能 – Time to Live (TTL) を使用した DynamoDB 項目の管理

AWS のお客様は Amazon DynamoDB を十分に活用しています。お客様は、その速度と柔軟性を気に入り、一貫性がある数ミリ秒台のレイテンシーを活かした広告技術 (リファレンスアーキテクチャ)、ゲーム(リファレンスアーキテクチャ)、IoT (リファレンスアーキテクチャ)、およびその他のアプリケーションを構築しています。また、DynamoDB はマネージ型のサーバーレスデータベースとして、数テラバイトというサイズのテーブルに対する 1 秒あたり数百万件ものリクエストを処理するようにスケールできる点も好評です。多くの DynamoDB ユーザーは、有効期限があるデータや、時間とともにアクセス頻度が低くなるデータを保存している場合があります。最近のログイン、トライアルのサブスクリプション、またはアプリケーションのメトリクスを追跡する場合もあります。保存期間が規制または契約で制限されるデータを保存している場合もあります。このような場合、これまでは独自の時間ベースのデータ管理を導入していました。大規模なケースでは、DynamoDB 項目のスキャン、データ属性のチェック、不要になった項目の削除リクエストの発行などを行うためだけに、数個の Amazon Elastic Compute Cloud (EC2) インスタンスを実行することもありました。これに伴って、アプリケーションのコストと複雑さが増大しました。

新しい Time to Live (TTL) による管理
この一般的で重要なユースケースを効率化するため、当社は本日から、新しい Time to Live (TTL) 機能の提供を開始します。この機能をテーブルごとに有効にし、項目の有効期限を含む項目属性を指定できます。項目属性を指定して TTL 管理を有効にすると (1 回の API コールで両方のオペレーションを実行できます)、DynamoDB が、有効期限が切れた項目を見つけて削除します。この処理は自動的にバックグラウンドで実行され、テーブルに対する読み取りまたは書き込みトラフィックに影響を与えることはありません。DynamoDB ストリーム(詳細については、「Sneak Preview – DynamoDB Streams」を参照) を使用して、実際の削除を処理またはアーカイブできます。削除は、ストリームの他の更新レコードのように、ローリング期間の 24 時間ベースで使用できます。有効期限が切れた項目については、AWS Lambda および DynamoDB トリガーを使用してコールドストレージへの移動、ログへの記録、または他のテーブルの更新を行うことができます。テーブルに対して TTL を有効にし、必要な属性を指定する方法を次に示します。

属性は DynamoDB の数値データ型とする必要があり、UNIX エポック時間形式に従って秒数として解釈されます。上記のスクリーンショットからおわかりのように、DynamoDB ストリームを有効にして、TTL を有効にしたときに削除される項目のプレビューを表示することもできます。また、コードから UpdateTimeToLive 関数を呼び出すか、 update-time-to-live コマンドを AWS Command Line Interface (CLI) から使用することもできます。

TUNE での TTL
AWS のお客様である TUNE は、既にこの機能を自社製品である HasOffers の一部として十分に活用しています。

HasOffers-Dashboard-Phone

HasOffers を使用すると、顧客はマーケティングキャンペーンの効果を分析し、そのプロセスで大量の広告エンゲージメントデータを保存できます。顧客が定義したキャンペーンの時間枠が経過すると、データは必要なくなり、削除できます。当社が TUNE に対して TTL 機能を提供する前は、古くなったデータを手動で識別して削除していました。これは大量の作業と演算を伴う作業であり、テーブル用にプロビジョニングされたスループットの一部を消費していました。現在では、各項目の有効時間を設定するだけで、後は DynamoDB に任せることができます。古くなったデータは自動的に消え、利用可能なスループットに影響はありません。その結果、TUNE は古くなった 85 テラバイトのデータを消去し、アプリケーションロジックを簡略化しながら、年間 20 万 USD を超えるコストを節約しています。

主要事項 お客様のアプリケーションで TTL の利用を検討する際は、以下のことを念頭に置いてください。TTL 属性 – TTL 属性はインデックス化または射影できますが、JSON ドキュメントの要素とすることはできません。前に示したように、数値データ型が必要です。その他の属性と同様に、IAM を使用してこの属性へのアクセスを制御できます。TTL 属性が指定されていない項目は、削除対象とは見なされません。TTL の値が正しい形式ではないために誤って削除される可能性を避けるため、5 年より古いと思われる項目は削除されません。テーブル – 新しいテーブルまたは既存のテーブルに TTL を適用できます。テーブルに対して TTL を有効にするプロセスは最大で 1 時間かかり、一度にテーブルに対して行うことができる変更は 1 つのみです。バックグラウンド処理 – スキャンと削除はバックグランドで実行され、プロビジョニングされたスループットに対してはカウントされません。削除時間は、期限切れの項目の数と特性によって異なります。項目は、有効期限が切れてから実際に削除されるまでテーブルに残り、読み取りやスキャンで表示されます。インデックス – 項目はローカルセカンダリインデックスから直ちに削除され、グローバルセカンダリインデックスからは結果的に整合性のある形式で削除されます。料金 – 内部スキャンオペレーションまたは削除に対して料金は発生しません。項目が実際に削除されるまでのストレージ分のみ、お支払いいただくだけです。

今すぐ利用可能
この機能は今すぐ使い始めることができます。詳細については、DynamoDB 開発者ガイドの「Time to Live」を参照してください。

Jeff;