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.
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 em2016-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.
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.
Para informações sobre como configurar Max Versions ou TTL ao criar uma tabela de dados, consulte Operações de tabela.
Console
CLI
SDKs
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.