コンテンツに移動
データベース

Firestore の有効期間(TTL)で期限切れのデータを自動削除してストレージ費用を管理する

2022年10月25日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 10 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。

このたび、Firestore ネイティブと Datastore のどちらのモードにも、有効期間(TTL)のサポートが追加されました。

Firestore の TTL ポリシーを使用すると、データベースから古いデータを削除できます。これは、Firestore に組み込みの管理された削除メカニズムと考えることができます。ドキュメントやエンティティが期限切れとみなされると、それらは削除の対象となります。直接 DELETE を実行するときと同じように、削除イベントが発生した場合には、すべての外部サービス(例:関数トリガーなど)に通知も届きます。

一般的なユースケース

  • ガベージ コレクション。TTL は、ドキュメントのライフサイクルが明確に定義されたデータがある場合に便利です。

  • 時間関連の機能をネイティブにサポートします。エフェメラル データに依存する機能を構築する場合、TTL を活用できます。

  • セキュリティとプライバシーのコンプライアンス。一部の規制では、一定期間を超えるデータの保持が禁じられます。TTL にはドキュメント レベルで異なる有効期限を構成できる柔軟性が備わっているため、さまざまなソースの要件に対応できます。

サンプルのチュートリアル

TTL はあなたのアプリケーションにとって有力な候補になりそうでしょうか。TTL の全体的な仕組みについて、例を見ていきましょう。以下の例ではドキュメントとコレクションを使用していますが、エンティティと種類の場合でも同様に機能します。

Chat コレクションとして多くのドキュメントが保存されているデータベースがあり、そのうちのいくつかは今後役に立たなくなると仮定します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_ttl.max-1900x1900.jpg

まず、TTL フィールドとして使用するフィールドを決定する必要があり、そのフィールドにはタイムスタンプ値が含まれている必要があります。たとえば、expireAt フィールドを TTL フィールドとして指定することを選択できます。その際、ドキュメントでこのフィールドに値が含まれていなくても構いません。

TTL ポリシーを構成するには、以下の 2 つの方法があります。

  • gcloud CLI を使用する。TTL ポリシーを表示および変更するためのサンプル コマンドがいつくか用意されています。

  • Google Cloud コンソールを使用する。Firestore の有効期間(TTL)の構成ページに移動し、新しいポリシーを構成できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_ttl.max-800x800.jpg

以上で TTL ポリシーの構成が完了し、ドキュメントの TTL フィールドがまだ更新されていない場合は、更新されます。この例では、expireAt が TTL フィールドとして機能します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_ttl.max-1900x1900.jpg

必要な作業は以上です。ドキュメントは有効期間が過ぎると削除の対象となり、Firestore がユーザーに代わって削除を実行します。

ご関心をお持ちの方は、ドキュメントをご参照いただき、データベース管理にご活用ください。


この投稿に協力してくれた Firestore のリード プロダクト マネージャーの Minh Nguyen、ならびにソフトウェア エンジニアの Joseph Batchik に感謝します。

- Firestore ソフトウェア エンジニア Hansi Mou

- Firestore ソフトウェア エンジニア Josué Urbina
投稿先