Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No Azure Cosmos DB, você pode optar por configurar o tempo de vida (TTL) no nível do contêiner ou pode substituí-lo em um nível de item depois de definir o TTL para o contêiner. Você pode configurar o TTL para um contêiner usando o portal do Azure ou os SDKs específicos do idioma. As substituições de TTL a nível de item podem ser configuradas utilizando os SDKs.
Habilitar TTL em um contêiner usando o portal do Azure
Use as etapas a seguir para habilitar o TTL em um contêiner sem expiração. Habilitar o TTL no nível do contêiner permite que o mesmo valor seja substituído no nível de um item individual. Você também pode definir o TTL inserindo um valor diferente de zero por segundos.
Inicie sessão no portal Azure.
Crie uma nova conta do Azure Cosmos DB ou selecione uma conta existente.
Abra o painel Explorador de Dados.
Selecione um contêiner existente, expanda a guia Configurações e modifique os seguintes valores:
- Em Definições, localize Tempo de Viver.
- Com base na sua exigência, você pode:
- Desative essa configuração.
- Defina-o como Ativado (sem padrão).
- Ative com um valor TTL especificado em segundos.
- Selecione Guardar para guardar as alterações.
- Quando DefaultTimeToLive é null, então seu TTL é Off.
- Quando DefaultTimeToLive é -1 , sua configuração TTL está On (Sem padrão).
- Quando DefaultTimeToLive tem qualquer outro valor inteiro (exceto 0), sua configuração TTL é On. O servidor exclui automaticamente os itens com base no valor configurado.
Habilitar TTL em um contêiner usando a CLI do Azure ou o Azure PowerShell
Para criar ou habilitar o TTL em um contêiner, consulte:
Habilitar TTL em um contêiner usando um SDK
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);
Definir TTL em um contêiner usando um SDK
Para definir o TTL em um contêiner, você precisa fornecer um número positivo diferente de zero que indique o período de tempo em segundos. Com base no valor TTL configurado, todos os itens no contêiner após o carimbo de data/hora da última modificação do item _ts são excluídos.
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);
Definir TTL em um item usando o portal do Azure
Além de definir um TTL padrão em um contêiner, você pode definir um TTL para um item. A configuração do TTL no nível do item substitui o TTL padrão do item nesse contêiner.
Para definir o TTL em um item, você precisa fornecer um número positivo diferente de zero, que indica o período, em segundos, para expirar o item após o carimbo de data/hora da última modificação do item
_ts. Você também pode fornecer um-1quando o item não deve expirar.Se o item não tiver um campo TTL, então, por padrão, o TTL definido para o contêiner se aplica ao item.
Se o TTL estiver desabilitado no nível do contêiner, o campo TTL no item será ignorado até que o TTL seja reativado no contêiner.
Use as seguintes etapas para habilitar o TTL em um item:
Inicie sessão no portal Azure.
Crie uma nova conta do Azure Cosmos DB ou selecione uma conta existente.
Abra o painel Explorador de Dados.
Selecione um contêiner existente, expanda-o e modifique os seguintes valores:
- Abra a janela Scale & Settings .
- Em Configuração, localize Tempo de Viver.
- Selecione Ativado (sem padrão) ou selecione Ativado e defina um valor TTL.
- Selecione Guardar para guardar as alterações.
Navegue até o item para o qual você deseja definir o tempo de vida, adicione a
ttlpropriedade e selecione Atualizar.{ "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 }
Definir TTL em um item usando um SDK
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);
Redefinir TTL usando um SDK
Você pode redefinir o TTL em um item executando uma operação de gravação ou atualização no item. A operação de gravação ou atualização define o _ts para o tempo atual, e o TTL para o item expirar reinicia. Se desejar alterar o TTL de um item, pode atualizar o campo tal como atualiza qualquer outro campo.
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")
);
Desabilitar o TTL usando um SDK
Para desabilitar o TTL em um contêiner e impedir que o processo em segundo plano verifique se há itens expirados, a DefaultTimeToLive propriedade no contêiner deve ser excluída. Excluir essa propriedade é diferente de defini-la como -1. Quando você o define como -1, os novos itens adicionados ao contêiner vivem para sempre, no entanto, você pode substituir esse valor em itens específicos no contêiner. Quando você remove a propriedade TTL do contêiner, os itens nunca expiram, mesmo que substituam explicitamente o valor TTL padrão anterior.
ContainerProperties properties = await container.ReadContainerAsync();
// Disable ttl at container-level
properties.DefaultTimeToLive = null;
await container.ReplaceContainerAsync(properties);