Firestore の有効期間(TTL)で期限切れのデータを自動削除してストレージ費用を管理する
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](https://storage.googleapis.com/gweb-cloudblog-publish/images/1_ttl.max-1900x1900.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/1_ttl.max-1900x1900.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/1_ttl.max-1900x1900.jpg)
まず、TTL フィールドとして使用するフィールドを決定する必要があり、そのフィールドにはタイムスタンプ値が含まれている必要があります。たとえば、expireAt フィールドを TTL フィールドとして指定することを選択できます。その際、ドキュメントでこのフィールドに値が含まれていなくても構いません。
TTL ポリシーを構成するには、以下の 2 つの方法があります。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/2_ttl.max-800x800.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/2_ttl.max-800x800.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/2_ttl.max-800x800.jpg](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](https://storage.googleapis.com/gweb-cloudblog-publish/images/3_ttl.max-1900x1900.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/3_ttl.max-1900x1900.jpg](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