Como funciona: DynamoDB Vida útil TTL - Amazon DynamoDB

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso haja qualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

Como funciona: DynamoDB Vida útil TTL

Quando o TTL é habilitado em uma tabela do DynamoDB, é necessário identificar um nome de atributo específico que o serviço procurará ao determinar se um item está qualificado para expiração. Depois de habilitar o TTL em uma tabela, um processo de varredura por partição, executado em segundo plano, avalia de forma automática e contínua o status de expiração dos itens na tabela.

O processo de varredura, executado em segundo plano, compara a hora atual no formato de tempo do Unix epoch em segundos com o valor armazenado no atributo definido pelo usuário de um item. Se o atributo for um Number tipo de dados, o valor do atributo é um carimbo de data/hora Formato de período de tempo Unix em segundose o valor da amp-hora é mais antigo do que a hora atual mas não com cinco anos ou mais (para evitar uma possível eliminação acidental devido a um valor TTL mal formado), então o item está definido para expirado. Para mais informações sobre a formatação dos atributos TTL, consulte Formatting an item’s TTL attribute. Um segundo processo em segundo plano verifica se há itens expirados e os exclui. Os dois processos ocorrem automaticamente em segundo plano, não afetam o tráfego de leitura ou gravação na tabela e não têm um custo monetário.

À medida que os itens são excluídos da tabela, duas operações em segundo plano acontecem simultaneamente:

  • Os itens são removidos de qualquer índice secundário local e índice secundário global da mesma forma que uma operação DeleteItem.

  • Uma operação de exclusão para cada item entra no DynamoDB Stream, mas é marcada como uma exclusão do sistema e não como uma exclusão regular. Para obter mais informações sobre como usar essa exclusão do sistema, consulte Streams e vida útil do DynamoDB.

Importante
  • Dependendo do tamanho e do nível de atividade de uma tabela, a operação de exclusão real de um item expirado pode variar. Como o TTL deve ser um processo em segundo plano, a natureza da capacidade usada para expirar e excluir itens via TTL é variável (mas gratuita). O TTL geralmente exclui os itens expirados em até 48 horas após a expiração.

  • Itens que expiraram, mas ainda não foram excluídos pelo TTL, ainda aparecem em leituras, consultas e varreduras. Se você não quiser itens expirados no conjunto de resultados, deverá filtrá-los. Para isso, use uma expressão de filtro que retorne apenas itens nos quais o valor de expiração da vida útil seja maior que a hora atual no formato epoch. Para obter mais informações, consulte Expressões de filtro de Scan.

  • Os itens que passaram da expiração, mas ainda não foram excluídos poderão ser atualizados, e atualizações bem-sucedidas para alterar ou remover o atributo de expiração serão respeitadas.

É possível monitorar as taxas de TTL na guia de métricas do CloudWatch para uma tabela e ver quando e a taxa em que os itens são excluídos.


            Captura de tela do console mostrando o TTL e o CloudWatch.

Vida útil Exemplo

Por exemplo, considere uma tabela chamada SessionData que controla o histórico de sessão dos usuários. Cada item em SessionData é identificado pela chave de partição (UserName) e a chave de classificação (SessionId). Atributos adicionais, como UserName, SessionId, CreationTime e ExpirationTime controlam as informações das sessões. O atributo ExpirationTime é definido como o atributo TTL na tabela (nem todos os atributos em cada item são mostrados).

SessionData
UserName SessionId CreationTime ExpirationTime (TTL) SessionInfo
user1 74686572652773 1571820360 1571827560 JSON Document ...
user2 6e6f7468696e67 1571820180 1571827380 JSON Document ...
user3 746f2073656520 1571820923 1571828123 JSON Document ...
user4 68657265212121 1571820683 1571827883 JSON Document
user5 6e6572642e2e2e 1571820743 1571831543 JSON Document ...
... ... ... ... ...

Neste exemplo, cada item tem um valor de atributo ExpirationTime definido quando o item foi criado. Considere o item da tabela a seguir.

SessionData
UserName SessionId CreationTime ExpirationTime (TTL) SessionInfo
user1 74686572652773 1571820360 1571827560 JSON Document ...

Neste exemplo, o item CreationTime é definido como quarta-feira, 23 de outubro 08:46 UTC 2019, e o ExpirationTime é definido como 2 horas depois na quarta-feira, 23 de outubro 10:46 UTC 2019. O item expirará quando a hora atual, no formato epoch, for maior que a hora do atributo ExpirationTime. Neste caso, o item com a chave { Username: user1, SessionId: 74686572652773} expira as 10:46 AM (1571827560).