Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Azure Cosmos DB можно настроить время жизни (TTL) на уровне контейнера или переопределить его на уровне элемента после настройки TTL контейнера. Вы можете настроить TTL для контейнера с помощью портала Azure или пакетов SDK для конкретного языка. Переопределения TTL на уровне элементов можно настроить с помощью пакетов SDK.
Включение TTL в контейнере с помощью портала Azure
Чтобы включить TTL в контейнере без истечения срока действия, выполните следующие действия. Включение TTL на уровне контейнера позволяет переопределить то же значение на уровне отдельного элемента. Вы также можете задать TTL, введя ненулевое значение в течение секунд.
Войдите на портал Azure.
Создайте новую учетную запись Azure Cosmos DB или выберите существующую учетную запись.
Откройте область Data Explorer.
Выберите существующий контейнер, разверните вкладку "Параметры " и измените следующие значения:
- В разделе "Параметры" найдите время жизни.
- В зависимости от своих требований можно:
- Отключите этот параметр.
- Установите для него значение On (нет по умолчанию).
- Включить с указанным значением TTL в секундах.
- Выберите Сохранить, чтобы сохранить изменения.
- Если значение DefaultTimeToLive равно NULL, то ваш TTL отключен.
- Если значение DefaultTimeToLiveравно-1, то параметр TTL включен (нет по умолчанию).
- Если DefaultTimeToLive имеет любое другое целочисленное значение (кроме 0), то параметр TTL включен. Сервер автоматически удаляет элементы на основе настроенного значения.
Включение TTL в контейнере с помощью Azure CLI или Azure PowerShell
Чтобы создать или включить TTL в контейнере, ознакомьтесь со следующими сведениями:
Включение TTL в контейнере с помощью пакета SDK
- Пакет SDK версии 3 для .NET
- Пакет SDK для Java версии 4
- Пакет SDK для Node
- Пакет SDK для Python
- Пакет SDK для GO
Database database = client.GetDatabase("database");
ContainerProperties properties = new ()
{
Id = "container",
PartitionKeyPath = "/customerId",
// Never expire by default
DefaultTimeToLive = -1
};
// Create a new container with TTL enabled and without any expiration value
Container container = await database
.CreateContainerAsync(properties);
Настройка TTL в контейнере с помощью пакета SDK
Чтобы задать TTL в контейнере, необходимо указать ненулевое положительное число, указывающее период времени в секундах. Исходя из настроенного значения срока жизни, все элементы в контейнере после последнего изменения метки времени элемента _ts удаляются.
- Пакет SDK версии 3 для .NET
- Пакет SDK для Java версии 4
- Пакет SDK для Node
- Пакет SDK для Python
- Пакет SDK для GO
Database database = client.GetDatabase("database");
ContainerProperties properties = new ()
{
Id = "container",
PartitionKeyPath = "/customerId",
// Expire all documents after 90 days
DefaultTimeToLive = 90 * 60 * 60 * 24
};
// Create a new container with TTL enabled and without any expiration value
Container container = await database
.CreateContainerAsync(properties);
Настройка TTL для элемента с помощью портала Azure
Помимо настройки TTL по умолчанию в контейнере, можно задать TTL для элемента. Настройка TTL на уровне элемента переопределяет срок жизни элемента по умолчанию в этом контейнере.
Чтобы задать TTL для элемента, необходимо указать ненулевое положительное число, которое определяет период в секундах, по истечении которого срок действия элемента заканчивается после времени последнего изменения
_ts. Вы также можете предоставить-1, если элемент не должен истекать.Если у элемента нет поля TTL, то по умолчанию значение TTL, заданное контейнером, применяется к элементу.
Если TTL отключен на уровне контейнера, поле TTL в элементе игнорируется, пока TTL не будет повторно включен в контейнере.
Чтобы включить TTL для элемента, выполните следующие действия.
Войдите на портал Azure.
Создайте новую учетную запись Azure Cosmos DB или выберите существующую учетную запись.
Откройте область Data Explorer.
Выберите существующий контейнер, разверните его и измените следующие значения:
- Откройте окно Scale & Settings (Параметры масштабирования).
- В разделе "Параметр" найдите время жизни.
- Выберите Включен (не по умолчанию) или Включен и задайте значение срока жизни.
- Выберите Сохранить, чтобы сохранить изменения.
Перейдите к элементу, для которого нужно задать время жизни, добавьте
ttlсвойство и нажмите кнопку "Обновить".{ "id": "1", "_rid": "Jic9ANWdO-EFAAAAAAAAAA==", "_self": "dbs/Jic9AA==/colls/Jic9ANWdO-E=/docs/Jic9ANWdO-EFAAAAAAAAAA==/", "_etag": "\"0d00b23f-0000-0000-0000-5c7712e80000\"", "_attachments": "attachments/", "ttl": 10, "_ts": 1551307496 }
Настройка TTL для элемента с помощью пакета SDK
- Пакет SDK версии 3 для .NET
- Пакет SDK для Java версии 4
- Пакет SDK для Node
- Пакет SDK для Python
- Пакет SDK для GO
public record SalesOrder(string id, string customerId, int ttl);
Container container = database.GetContainer("container");
SalesOrder item = new (
"SO05",
"CO18009186470",
// Expire sales order in 30 days using "ttl" property
ttl: 60 * 60 * 24 * 30
);
await container.CreateItemAsync<SalesOrder>(item);
Сброс TTL с помощью SDK
Вы можете сбросить параметр TTL для элемента, выполнив операцию записи или обновления этого элемента. Операция записи или обновления задает _ts текущее время, а срок действия элемента начинается снова. Если вы хотите изменить срок жизни элемента, это поле можно обновить так же, как любое другое.
- Пакет SDK версии 3 для .NET
- Пакет SDK для Java версии 4
- Пакет SDK для Node
- Пакет SDK для Python
- Пакет SDK для GO
SalesOrder item = await container.ReadItemAsync<SalesOrder>(
"SO05",
new PartitionKey("CO18009186470")
);
// Update ttl to 2 hours
SalesOrder modifiedItem = item with {
ttl = 60 * 60 * 2
};
await container.ReplaceItemAsync<SalesOrder>(
modifiedItem,
"SO05",
new PartitionKey("CO18009186470")
);
Отключение TTL с помощью пакета SDK
Чтобы отключить TTL в контейнере и остановить фоновый процесс проверки просроченных элементов, DefaultTimeToLive необходимо удалить свойство контейнера. Удаление этого свойства отличается от присвоения ему значения -1. Если установить значение -1, новые элементы, добавленные в контейнер, будут существовать бессрочно, однако вы можете изменить это значение для определенных элементов в контейнере. При удалении свойства TTL из контейнера элементы никогда не истекают, даже если они явно переопределяют предыдущее значение TTL по умолчанию.
- Пакет SDK версии 3 для .NET
- Пакет SDK для Java версии 4
- Пакет SDK для Node
- Пакет SDK для Python
- Пакет SDK для GO
ContainerProperties properties = await container.ReadContainerAsync();
// Disable ttl at container-level
properties.DefaultTimeToLive = null;
await container.ReplaceContainerAsync(properties);
Связанный контент
- Срок жизни в Azure Cosmos DB