Configure el tiempo de vida (TTL) de un índice de búsqueda con Tablestore SDK for Java. Tablestore elimina automáticamente los datos del índice cuando expira su periodo de retención.
Requisitos previos
Antes de empezar, asegúrese de que cuenta con lo siguiente:
Tablestore SDK for Java 5.12.0 o una versión posterior instalada y un cliente inicializado
Una tabla existente con un máximo de una versión de datos
Notas de uso
-
Antes de usar la gestión del ciclo de vida del índice de búsqueda, deshabilite las operaciones
UpdateRowen la tabla para evitar inconsistencias de datos entre la tabla y el índice de búsqueda.El TTL de una tabla se aplica a columnas de atributos individuales, mientras que el TTL de un índice de búsqueda se aplica a toda la fila. Con
UpdateRow, la limpieza por TTL podría eliminar solo algunas columnas de la tabla y conservar la fila completa en el índice de búsqueda.Para actualizar datos, use
PutRowy sobrescriba la fila completa. El TTL de un índice de búsqueda se mide en segundos y acepta
-1o un entero positivo de 32 bits. El valor-1almacena los datos de forma permanente. El valor positivo máximo representa un periodo de retención de aproximadamente 68 años.El TTL del índice de búsqueda y el TTL de la tabla se configuran de manera independiente, pero el TTL del índice de búsqueda debe ser menor o igual que el TTL de la tabla. Si el TTL objetivo del índice de búsqueda es mayor que el TTL actual de la tabla, aumente primero el TTL de la tabla. Si va a reducir ambos valores de TTL, reduzca primero el del índice de búsqueda.
Tablestore elimina los datos caducados del índice de búsqueda una vez al día. Hasta que finalice la siguiente limpieza, las consultas podrían seguir devolviendo datos caducados que aún no se han eliminado.
Después de actualizar el TTL de una tabla o de un índice de búsqueda, Tablestore elimina los datos que caduquen por este cambio durante el siguiente ciclo de limpieza.
Procedimiento
La gestión del ciclo de vida consiste en deshabilitar las actualizaciones UpdateRow de la tabla, configurar el TTL del índice de búsqueda y, de forma opcional, configurar el TTL de la tabla. Configurar el TTL de la tabla no siempre es la última operación. El orden de las operaciones debe garantizar que el TTL del índice de búsqueda sea menor o igual que el TTL de la tabla. Si el TTL objetivo del índice de búsqueda es mayor que el TTL actual de la tabla, aumente primero el TTL de la tabla. Si va a reducir ambos valores de TTL, reduzca primero el del índice de búsqueda.
-
Deshabilite las actualizaciones de la tabla con
UpdateRow.A continuación se muestra un ejemplo que deshabilita las actualizaciones
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 el TTL del índice de búsqueda.
Elija una opción según si el índice de búsqueda ya existe o no.
Índice nuevo
Establezca un TTL de siete días al crear un índice de búsqueda.
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
Actualice el TTL de un índice de búsqueda existente a siete días.
String tableName = "example_table"; String indexName = "example_index"; UpdateSearchIndexRequest request = new UpdateSearchIndexRequest(tableName, indexName); request.setTimeToLiveInDays(7); client.updateSearchIndex(request); -
Si es necesario, configure el TTL de la tabla.
En el siguiente ejemplo se establece el TTL de
example_tableen siete días. Ejecute esta operación antes o después de configurar el TTL del índice de búsqueda, según la restricción de TTL descrita anteriormente.String tableName = "example_table"; UpdateTableRequest request = new UpdateTableRequest(tableName); TableOptions tableOptions = new TableOptions(); tableOptions.setTimeToLiveInDays(7); request.setTableOptionsForUpdate(tableOptions); client.updateTable(request);
Una vez terminada la configuración, consulte información de la tabla y información del índice de búsqueda para comprobar ambos valores de TTL.