Azure Cosmos DB の Time to Live (TTL)

適用対象: NoSQL

Time to Live (TTL) を使用すると、Azure Cosmos DB に、所定の期間が経過したアイテムをコンテナーから自動的に削除させることができます。 既定では、コンテナー レベルで Time to Live を設定し、項目ごとに値をオーバーライドできます。 コンテナー レベルまたは項目レベルで TTL を設定すると、項目が最後に変更されてからその期間が経過した後で、Azure Cosmos DB によってそれらの項目が自動的に削除されます。 Time to Live 値は秒数で構成します。 TTL を構成すると、その TTL 値に基づき、期限切れになったアイテムが自動的に削除されます。クライアント アプリケーションから明示的に削除操作を発行する必要はありません。 TTL の最大値は 2,147,483,647 秒で、24,855 日または 68 年に相当します。

期限切れのアイテムはバックグラウンド タスクで削除されます。 項目がコンテナーから完全に削除されていない場合でも、TTL の有効期限が切れた直後にクエリ応答に表示されなくなります。 コンテナーに削除を実行するのに十分な要求ユニット (RU) がない場合、データの削除は遅れます。 削除を完了するのに十分な RU が使用可能になると、データは削除されます。

プロビジョニング済みスループット アカウントの場合、期限切れの項目の削除では、ユーザー要求によって消費されていない残りの RU を使用します。

サーバーレス アカウントの場合、期限切れのアイテムの削除は、アイテムの削除操作と同じレートで RU で課金されます。

Note

このコンテンツは Azure Cosmos DB トランザクション ストア TTL に関連付けられています。 Azure Synapse Link 経由で NoETL HTAP シナリオを可能にする分析ストア TTL をお探しの場合、こちらをクリックしてください。

コンテナーおよび項目の Time to Live

TTL 値は秒数で設定され、アイテムに最後に変更が加えられた日時からの経過時間として解釈されます。 コンテナーまたはコンテナー内の項目に対して Time to Live を設定できます。

  1. コンテナーの Time to Live (DefaultTimeToLive を使用して設定):

    • 未設定の場合 (または設定値が null の場合)、アイテムが自動的に期限切れになることはありません。

    • 設定値があり、-1 の場合は「無限」を指すため、項目は既定では期限切れとなりません。

    • 設定値があり、何らかのゼロ以外の数値 n の場合は、項目は最終更新時間から n 秒経過後に期限切れとなります。

  2. 項目の Time to Live (ttl を使用):

    • このプロパティは、親コンテナーに対して DefaultTimeToLive が存在し、その設定値が null 以外である場合にのみ適用されます。

    • 存在する場合、これが親コンテナーの DefaultTimeToLive 値をオーバーライドします。

Time to Live の構成

  • TTL がコンテナーで "n" に設定されている場合、そのコンテナー内の項目は n 秒後に期限切れになります。 同じコンテナー内のアイテムに独自の有効期間が設定される場合は、-1 (期限切れにしない) に設定します。 コンテナーとは異なる TTL が個別に設定されているアイテムがある場合、それらは、個別に設定された TTL 値に基づいて期限切れになります。

  • コンテナーの TTL が設定されていない場合、そのコンテナー内のアイテムに設定された TTL は効力を持ちません。

  • コンテナーの TTL が -1 に設定されている場合、そのコンテナー内にあるアイテムのうち、TTL が n に設定されているものは n 秒後に期限切れになり、その他のアイテムは期限切れになりません。

このセクションでは、異なる Time to Live 値がコンテナーおよびアイテムに割り当てられたいくつかの例を示します。

Note

アイテムの TTL 値を null にする設定はサポートされていません。 アイテムの TTL 値は、0 でなく 2147483647 以下の正の整数か、期限切れにならないことを意味する -1 にする必要があります。 アイテムに既定の TTL を適用するには、そのアイテムの TTL プロパティが存在しない状態にする必要があります。

例 1

コンテナーの TTL を null に設定 (DefaultTimeToLive = null)

項目の TTL 結果
TTL プロパティがありません TTL は無効です。 項目の有効期限が切れることはありません (既定値)。
ttl = -1 TTL は無効です。 項目の有効期限が切れることはありません。
ttl = 2000 TTL は無効です。 項目の有効期限が切れることはありません。

例 2

コンテナーの TTL を -1 に設定 (DefaultTimeToLive = -1)

項目の TTL 結果
TTL プロパティがありません TTL は有効です。 項目の有効期限が切れることはありません (既定値)。
ttl = -1 TTL は有効です。 項目の有効期限が切れることはありません。
ttl = 2000 TTL は有効です。 項目の有効期限は 2,000 秒後です。

例 3

コンテナーの TTL を 1000 に設定 (DefaultTimeToLive = 1000)

項目の TTL 結果
TTL プロパティがありません TTL は有効です。 項目は 1,000 秒後に期限切れになります (既定)。
ttl = -1 TTL は有効です。 項目は無期限に設定されます。
ttl = 2000 TTL は有効です。 項目は 2,000 秒後に期限切れになります。

次のステップ

Time to Live を構成する方法について次の記事をご覧ください。