Todos os produtos
Search
Central de documentação

Tablestore:Versões de dados e TTL

Última atualização: Jun 23, 2026

Use o versionamento de dados e o Time to Live (TTL) para gerenciar dados com eficiência, reduzir o uso de armazenamento e diminuir os custos de armazenamento.

Max Versions

Max Versions especifica o número máximo de versões de dados a serem retidas em cada coluna de atributo. Quando o número de versões em uma coluna de atributo excede esse limite, o sistema exclui de forma assíncrona as versões mais antigas.

null

Atualmente, o Tablestore não aplica um limite para Max Versions. No entanto, para desempenho e usabilidade ideais, recomendamos manter o número de versões em 500 ou menos.

Se você não especificar o parâmetro Max Versions ao criar uma tabela de dados, o valor padrão será 1. É possível modificar esse valor posteriormente chamando a operação UpdateTable.

Versões de dados que excedem o limite de Max Versions tornam-se inválidas. Não é possível ler essas versões, mesmo que o sistema ainda não as tenha excluído.

  • Se você diminuir o valor de Max Versions, o sistema excluirá de forma assíncrona as versões mais antigas que excedam o novo limite.

  • Se você aumentar o valor de Max Versions, versões mais antigas anteriormente inacessíveis poderão se tornar legíveis novamente, caso estejam dentro do novo limite e ainda não tenham sido excluídas.

Número de versão

Após configurar Max Versions para uma tabela de dados, o Tablestore cria uma nova versão do valor cada vez que você o atualiza em uma coluna de atributo. Essa versão recebe um número de versão, que é um timestamp em milissegundos.

Ao gravar dados em uma coluna de atributo, você pode especificar um número de versão ou permitir que o sistema gere um automaticamente. Como os números de versão são timestamps em milissegundos, eles precisam ser divididos por 1.000 para conversão em segundos nos cálculos de TTL e Max Version Offset.

  • Quando o sistema gera automaticamente um número de versão, ele utiliza a hora atual como um timestamp em milissegundos, calculado a partir de 1970-01-01 00:00:00 UTC.

  • Ao especificar um número de versão personalizado, ele deve ser um timestamp de 64 bits em milissegundos dentro do intervalo de versão válido.

Os números de versão possibilitam os seguintes recursos:

  • TTL

    O número de versão define o ciclo de vida dos valores em uma coluna de atributo. O sistema exclui de forma assíncrona uma versão de dados quando sua idade excede o TTL configurado.

    Por exemplo, se uma versão de dados tiver o número de versão 1468944000000 (correspondente a 2016-07-20 00:00:00 UTC+8) e o TTL da tabela de dados estiver definido como 86400 (um dia), essa versão expira em 2016-07-21 00:00:00 UTC+8, e o sistema a exclui de forma assíncrona.

  • Ler dados por versão

    Ao ler dados de linha, você pode especificar o número máximo de versões a serem lidas por coluna ou um intervalo específico de números de versão. Para mais informações, consulte Ler dados.

TTL

TTL é uma propriedade de uma tabela de dados que especifica o período de retenção de dados em segundos. O sistema exclui de forma assíncrona uma versão de dados em uma coluna de atributo quando sua idade excede o TTL configurado. Se todas as versões de dados em todas as colunas de atributo de uma linha expirarem, o sistema excluirá de forma assíncrona a linha inteira.

Por exemplo, se o TTL de uma tabela de dados estiver definido como 86400 (um dia), em 2016-07-21 00:00:00 UTC+8, todos os dados de colunas de atributo com número de versão inferior a 1468944000000 expiram. Esse timestamp corresponde a 2016-07-20 00:00:00 UTC+8 após a conversão para segundos. O sistema então exclui de forma assíncrona os dados expirados.

Se você não definir um TTL ao criar uma tabela de dados, o valor padrão será -1, o que significa que os dados nunca expiram. É possível modificar o TTL posteriormente chamando a operação UpdateTable.

null

O TTL de uma tabela de dados e o TTL de um índice secundário são independentes. No entanto, o TTL da tabela de dados deve ser maior ou igual ao TTL de seus índices secundários. Ao modificar o TTL de uma tabela de dados que possui índices secundários, siga as etapas adequadas para o seu cenário:

  • Se o novo TTL da tabela de dados for menor que o TTL de seu índice secundário, primeiro utilize um SDK para chamar a operação UpdateTable e altere o TTL do índice secundário para um valor menor ou igual ao valor desejado. Em seguida, modifique o TTL da tabela de dados para o valor desejado.

  • Se o novo TTL da tabela de dados for maior ou igual ao TTL de seu índice secundário, modifique diretamente o TTL da tabela de dados para o valor desejado.

Os dados que excedem o TTL são considerados expirados e não podem ser lidos, mesmo que o sistema ainda não os tenha excluído.

  • Se você diminuir o valor do TTL, alguns dados na tabela de dados poderão expirar, e o sistema excluirá de forma assíncrona os dados expirados.

  • Se você aumentar o TTL, versões mais antigas que expiraram com o TTL anterior poderão se tornar legíveis novamente, caso estejam dentro do novo período de TTL e ainda não tenham sido excluídas.

Max Version Offset

Para evitar que os dados expirem imediatamente após a gravação — o que pode ocorrer se um timestamp personalizado for mais antigo que o TTL da tabela — configure um Max Version Offset.

Max Version Offset é o desvio máximo permitido, em segundos, entre um número de versão personalizado e a hora atual do sistema. O valor é um número inteiro positivo.

Para garantir uma operação de gravação bem-sucedida, o sistema verifica o número de versão dos dados de cada coluna de atributo. Os dados só são gravados se o número de versão, convertido de milissegundos para segundos, estiver dentro do intervalo de versão válido: [max{write_time - Max Version Offset, write_time - TTL}, write_time + Max Version Offset).

Por exemplo, se o Max Version Offset de uma tabela de dados for 86400 (um dia), em 2016-07-21 00:00:00 UTC+8, só é possível gravar dados com número de versão maior que 1468944000000 (correspondente a 2016-07-20 00:00:00 UTC+8 após a conversão para segundos) e menor que 1469116800000 (correspondente a 2016-07-22 00:00:00 UTC+8 após a conversão para segundos). Se o número de versão de uma coluna de atributo em uma linha for 1468943999000 (correspondente a 2016-07-19 23:59:59 UTC+8 após a conversão para segundos), a operação de gravação dessa linha falhará.

Se você não configurar Max Version Offset ao criar uma tabela de dados, o valor padrão será 86400. É possível modificar esse valor posteriormente chamando a operação UpdateTable.

Métodos de configuração

É possível configurar parâmetros como Max Versions e TTL ao criar uma tabela de dados. Também é possível modificar esses parâmetros após a criação da tabela. Os exemplos a seguir mostram como modificar a configuração de uma tabela existente.

null

Para informações sobre como configurar Max Versions ou TTL ao criar uma tabela de dados, consulte Operações de tabela.

Console

Use o console para modificar Max Versions, TTL e Max Version Offset de uma tabela de dados.

  1. Faça login no console do Tablestore.

  2. Na página Overview, na coluna Actions da instância que você deseja gerenciar, clique em Manage Instance.

  3. Na aba Instance Details, na seção Tables, clique no nome da tabela de dados.

  4. Na aba Basic Information, na seção Description, clique em Modify Attributes.

  5. Na caixa de diálogo Modify Attributes, configure os parâmetros conforme descrito na tabela a seguir.

    Parâmetro

    Descrição

    Time to Live

    O período de retenção de dados na tabela de dados, em segundos. Quando a idade dos dados excede o TTL configurado, o sistema os exclui automaticamente.

    Valores válidos: um valor maior ou igual a 86400 (um dia) ou -1 (os dados nunca expiram).

    null

    Se você utiliza índices na tabela de dados, o TTL deve atender a uma das seguintes condições:

    • O TTL da tabela de dados é -1 (os dados nunca expiram).

    • O TTL da tabela de dados não é -1 e as atualizações na tabela de dados estão desativadas.

      Se você já criou um índice para a tabela de dados, defina Allow Updates como No antes de modificar o TTL.

    Max Versions

    O número máximo de versões a serem retidas em cada coluna de atributo. Quando o número de versões excede esse limite, o sistema exclui automaticamente as mais antigas.

    O valor deve ser um número inteiro diferente de zero.

    null

    Se você utiliza índices na tabela de dados, Max Versions deve ser definido como 1. Se já existe um índice na tabela de dados, não é possível modificar Max Versions.

    Max Version Offset

    O desvio máximo permitido, em segundos, entre um número de versão especificado e a hora atual do sistema. O valor deve ser um número inteiro positivo.

    Os dados só são gravados com sucesso se a diferença entre o número de versão de cada coluna e a hora de gravação estiver dentro do Max Version Offset configurado.

    O intervalo de versão válido para uma coluna de atributo é [max{write_time - Max Version Offset, write_time - TTL}, write_time + Max Version Offset).

    Allow Updates

    Especifica se a gravação de dados pela operação UpdateRow é permitida. O padrão é Yes.

    Se você criou um índice para uma tabela de dados e deseja modificar o TTL, primeiro defina Allow Updates como No.

    null

    Para usar o recurso TTL do Search Index, defina esse parâmetro como No, o que impede gravações de dados pela operação UpdateRow. Para mais informações sobre o TTL de índices de pesquisa, consulte TTL de índices de pesquisa.

  6. Clique em OK.

CLI

Execute os comandos a seguir para modificar a configuração.

Use o comando alter para modificar Max Versions ou TTL de uma tabela de dados. Para mais informações, consulte Atualizar uma tabela.

O exemplo a seguir modifica o TTL da tabela de dados mytable para 86400 segundos (1 dia) e define Max Versions como 1.

alter -t mytable --ttl 86400 --version 1

SDKs

Use o Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK e PHP SDK para atualizar propriedades da tabela, como Max Versions, TTL e Max Version Offset. O exemplo a seguir usa o Java SDK para atualizar uma tabela.

O exemplo a seguir define Max Versions de uma tabela de dados como 5, TTL como -1 e Max Version Offset como 86400.

private static void updateTable(SyncClient client) {
    // The expiration time of data, in seconds. A value of -1 means the data never expires.
    int timeToLive = -1;
    // Update Max Versions to 5.
    int maxVersions = 5;
    // Update Max Version Offset to 86400, in seconds.
    int maxTimeDeviation=86400;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions,maxTimeDeviation);
    // Set the table name.
    UpdateTableRequest request = new UpdateTableRequest("<TABLE_NAME>");
    request.setTableOptionsForUpdate(tableOptions);
    client.updateTable(request);
}

Faturamento

  • O uso de várias versões de dados aumenta os custos de armazenamento, pois há cobrança pelo armazenamento dos números de versão e dos dados de cada versão.

  • A limpeza de dados com base no TTL é gratuita. No entanto, a ativação do TTL adiciona um timestamp como número de versão a cada coluna de atributo, o que aumenta o uso de armazenamento.

Para mais informações, consulte Armazenamento de dados.

FAQ