Configure o tempo de vida (TTL) de um índice de pesquisa com o Tablestore SDK for Java. O Tablestore remove automaticamente os dados do índice após o término do período de retenção.
Pré-requisitos
Antes de começar, verifique se você tem:
Tablestore SDK for Java 5.12.0 ou posterior instalado e um cliente inicializado
Uma tabela existente com no máximo uma versão de dados
Observações de uso
-
Antes de usar o gerenciamento de ciclo de vida do índice de pesquisa, desative as operações
UpdateRowna tabela para evitar inconsistências de dados entre a tabela e o índice de pesquisa.O TTL da tabela aplica-se a colunas de atributos individuais, enquanto o TTL do índice de pesquisa aplica-se à linha inteira. Com
UpdateRow, a limpeza por TTL pode remover apenas algumas colunas da tabela, mantendo toda a linha no índice de pesquisa.Para atualizar dados, use
PutRowpara sobrescrever a linha inteira. O TTL do índice de pesquisa é medido em segundos e aceita
-1ou um inteiro positivo de 32 bits. O valor-1armazena os dados permanentemente. O valor positivo máximo representa um período de retenção de aproximadamente 68 anos.Os TTLs do índice de pesquisa e da tabela são configurados independentemente, mas o TTL do índice de pesquisa deve ser menor ou igual ao TTL da tabela. Se o TTL desejado para o índice de pesquisa for maior que o TTL atual da tabela, aumente primeiro o TTL da tabela. Caso reduza ambos os TTLs, diminua primeiro o TTL do índice de pesquisa.
O Tablestore remove os dados expirados do índice de pesquisa uma vez por dia. Até a conclusão da próxima limpeza, as consultas ainda podem retornar dados expirados pendentes de remoção.
Após a atualização do TTL da tabela ou do índice de pesquisa, o Tablestore remove os dados expirados devido à alteração durante o próximo ciclo de limpeza.
Procedimento
O gerenciamento de ciclo de vida consiste em desativar atualizações via UpdateRow para a tabela, configurar o TTL do índice de pesquisa e, opcionalmente, configurar o TTL da tabela. A configuração do TTL da tabela nem sempre é a última operação. A ordem das operações deve garantir que o TTL do índice de pesquisa seja menor ou igual ao TTL da tabela. Se o TTL desejado para o índice de pesquisa for maior que o TTL atual da tabela, aumente primeiro o TTL da tabela. Caso reduza ambos os TTLs, diminua primeiro o TTL do índice de pesquisa.
-
Desative as atualizações da tabela com
UpdateRow.O exemplo a seguir desativa as atualizações via
UpdateRowparaexample_table.String tableName = "example_table"; UpdateTableRequest request = new UpdateTableRequest(tableName); TableOptions tableOptions = new TableOptions(); tableOptions.setAllowUpdate(false); request.setTableOptionsForUpdate(tableOptions); client.updateTable(request); -
Configure o TTL do índice de pesquisa.
Escolha uma opção conforme a existência do índice de pesquisa.
Novo índice
Defina um TTL de sete dias ao criar um índice de pesquisa.
String tableName = "example_table"; String indexName = "example_index"; IndexSchema indexSchema = new IndexSchema(); indexSchema.setFieldSchemas(Arrays.asList( new FieldSchema("category", FieldType.KEYWORD), new FieldSchema("price", FieldType.LONG))); CreateSearchIndexRequest request = new CreateSearchIndexRequest(); request.setTableName(tableName); request.setIndexName(indexName); request.setIndexSchema(indexSchema); request.setTimeToLiveInDays(7); client.createSearchIndex(request);Índice existente
Atualize o TTL de um índice de pesquisa existente para sete dias.
String tableName = "example_table"; String indexName = "example_index"; UpdateSearchIndexRequest request = new UpdateSearchIndexRequest(tableName, indexName); request.setTimeToLiveInDays(7); client.updateSearchIndex(request); -
Configure o TTL da tabela, se necessário.
O exemplo a seguir define o TTL de
example_tablecomo sete dias. Execute esta operação antes ou depois de configurar o TTL do índice de pesquisa, conforme a restrição de TTL descrita acima.String tableName = "example_table"; UpdateTableRequest request = new UpdateTableRequest(tableName); TableOptions tableOptions = new TableOptions(); tableOptions.setTimeToLiveInDays(7); request.setTableOptionsForUpdate(tableOptions); client.updateTable(request);
Após a configuração, consulte as table information e as search index information para verificar ambos os TTLs.