Срок жизни в Azure Cosmos DB

ПРИМЕНИМО К: API SQL

В Azure Cosmos DB можно задать срок жизни, чтобы элементы автоматически удалялись из контейнера по прошествии определенного времени. По умолчанию можно задать срок жизни на уровне контейнера и переопределить значения по элементу. После установки срока жизни на уровне контейнера или элемента Azure Cosmos DB будет автоматически удалять эти элементы по прошествии периода времени с момента их последнего изменения. Значение срока жизни настраивается в секундах. Если срок жизни настроен, система на основе этого значения будет автоматически удалять элементы с истекшим сроком действия — в отличие от операции удаления, которую явно выдает клиентское приложение. Максимальное значение срока жизни — 2147483647.

Удаление элементов с истекшим сроком действия — это фоновая задача, использующая остаточные единицы запросов, не потребленные запросами пользователей. Если срок жизни истек, но контейнер перегружен с запросами и доступных единиц запросов недостаточно, удаление данных откладывается. Данные удаляются, если для выполнения операции удаления достаточно единиц запросов. Но даже если удаление отложено, данные с истекшим сроком жизни не возвращаются никакими запросами (API).

Примечание

Этот контент относится к сроку жизни в транзакционном хранилище Azure Cosmos DB. Если вас интересует срок жизни в аналитическом хранилище для активации сценариев NoETL HTAP с использованием Azure Synapse Link, щелкните здесь.

Срок жизни для контейнеров и элементов

Значение срока жизни задается в секундах и интерпретируется как разница со временем последнего изменения элемента. Вы можете установить срок жизни для контейнера или элемента в контейнере:

  1. Срок жизни контейнера (устанавливается с использованием значения DefaultTimeToLive):

    • Если свойство отсутствует (или имеет значение NULL), срок действия элементов не истекает автоматически.

    • Если свойство присутствует и имеет значение –1, оно приравнивается к бесконечности и по умолчанию элементы имеют неограниченный срок жизни.

    • Если свойство присутствует и имеет значение n, отличное от нуля, элементы удаляются по истечению n секунд после последнего изменения.

  2. Срок жизни элемента (устанавливается с использованием значения ttl):

    • Это свойство применимо, только если значение DefaultTimeToLive присутствует и оно не имеет значения NULL для родительского контейнера.

    • Если свойство присутствует, оно переопределяет значение DefaultTimeToLive родительского контейнера.

Настройки срока жизни

  • Если для контейнера задан срок жизни n, элементы в нем будут удалены по истечении n секунд. Если для элементов в том же контейнере задан собственный срок жизни в виде значения –1 (т. е. их срок действия не истекает) или если некоторые элементы переопределили параметр срока жизни, заменив его другим значением, они будут существовать столько, сколько позволяет настроенное для них значение срока жизни.

  • Если для контейнера не задан срок жизни, срок жизни элемента в этом контейнере не будет действовать.

  • Если срок жизни контейнера имеет значение -1, элемент в этом контейнере, срок жизни которого равен n, будет действителен в течение n секунд, а срок действия оставшихся элементов не истечет.

Примеры

В этом разделе приведено несколько примеров, где контейнеру и элементам присваиваются разные значения срока жизни.

Пример 1

В качестве срока жизни контейнера задано значение NULL (DefaultTimeToLive = null)

Срок жизни элемента Результат
Срок жизни = null Срок жизни отключен. Срок действия элемента не ограничен (по умолчанию).
Срок жизни = –1 Срок жизни отключен. Срок действия элемента не ограничен.
Срок жизни = 2000 Срок жизни отключен. Срок действия элемента не ограничен.

Пример 2

В качестве срока жизни контейнера задано значение –1 (DefaultTimeToLive = –1)

Срок жизни элемента Результат
Срок жизни = null TTL включен. Срок действия элемента не ограничен (по умолчанию).
Срок жизни = –1 TTL включен. Срок действия элемента не ограничен.
Срок жизни = 2000 TTL включен. Срок действия элемента истечет через 2000 секунд.

Пример 3

В качестве срока жизни контейнера задано значение 1000 (DefaultTimeToLive = 1000)

Срок жизни элемента Результат
Срок жизни = null TTL включен. Срок действия элемента истечет через 1000 секунд (по умолчанию).
Срок жизни = –1 TTL включен. Срок действия элемента не ограничен.
Срок жизни = 2000 TTL включен. Срок действия элемента истечет через 2000 секунд.

Дальнейшие действия

Чтобы узнать, как настроить срок жизни, ознакомьтесь со статьей: