Configurez la durée de vie (TTL) d'un index de recherche avec le SDK Tablestore pour Java. Tablestore supprime automatiquement les données de l'index à l'expiration de la période de rétention.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Le SDK Tablestore pour Java version 5.12.0 ou ultérieure installé, ainsi qu'un client initialisé
Une table existante comportant au maximum une version de données
Notes d'utilisation
-
Avant d'utiliser la gestion du cycle de vie des index de recherche, désactivez les opérations
UpdateRowsur la table pour éviter toute incohérence des données entre la table et l'index de recherche.Le TTL d'une table s'applique aux colonnes d'attributs individuelles, tandis que le TTL d'un index de recherche s'applique à la ligne entière. Avec
UpdateRow, le nettoyage lié au TTL peut supprimer uniquement certaines colonnes de la table tout en conservant la ligne entière dans l'index de recherche.Pour mettre à jour les données, utilisez
PutRowafin d'écraser la ligne entière. Le TTL d'un index de recherche est exprimé en secondes et accepte la valeur
-1ou un entier positif 32 bits. La valeur-1permet de stocker les données de manière permanente. La valeur positive maximale correspond à une période de rétention d'environ 68 ans.Le TTL de l'index de recherche et le TTL de la table sont configurés indépendamment, mais le TTL de l'index de recherche doit être inférieur ou égal au TTL de la table. Si le TTL cible de l'index de recherche est supérieur au TTL actuel de la table, augmentez d'abord le TTL de la table. Si vous réduisez les deux TTL, diminuez d'abord le TTL de l'index de recherche.
Tablestore supprime les données d'index de recherche expirées une fois par jour. Jusqu'à la fin du prochain nettoyage, les requêtes peuvent encore renvoyer des données expirées non supprimées.
Après la mise à jour du TTL d'une table ou d'un index de recherche, Tablestore supprime les données dont l'expiration résulte de cette modification lors du prochain cycle de nettoyage.
Procédure
La gestion du cycle de vie consiste à désactiver les mises à jour UpdateRow pour la table, à configurer le TTL de l'index de recherche et, éventuellement, à configurer le TTL de la table. La configuration du TTL de la table n'est pas toujours la dernière opération. L'ordre des opérations doit garantir que le TTL de l'index de recherche reste inférieur ou égal au TTL de la table. Si le TTL cible de l'index de recherche est supérieur au TTL actuel de la table, augmentez d'abord le TTL de la table. Si vous réduisez les deux TTL, diminuez d'abord le TTL de l'index de recherche.
-
Désactivez les mises à jour de la table avec
UpdateRow.L'exemple suivant désactive les mises à jour
UpdateRowpourexample_table.String tableName = "example_table"; UpdateTableRequest request = new UpdateTableRequest(tableName); TableOptions tableOptions = new TableOptions(); tableOptions.setAllowUpdate(false); request.setTableOptionsForUpdate(tableOptions); client.updateTable(request); -
Configurez le TTL de l'index de recherche.
Choisissez une option selon que l'index de recherche existe déjà ou non.
Nouvel index
Définissez un TTL de sept jours lors de la création d'un index de recherche.
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);Index existant
Mettez à jour le TTL d'un index de recherche existant pour le fixer à sept jours.
String tableName = "example_table"; String indexName = "example_index"; UpdateSearchIndexRequest request = new UpdateSearchIndexRequest(tableName, indexName); request.setTimeToLiveInDays(7); client.updateSearchIndex(request); -
Configurez le TTL de la table si nécessaire.
L'exemple suivant définit le TTL de
example_tablesur sept jours. Exécutez cette opération avant ou après la configuration du TTL de l'index de recherche, en fonction de la contrainte de TTL décrite ci-dessus.String tableName = "example_table"; UpdateTableRequest request = new UpdateTableRequest(tableName); TableOptions tableOptions = new TableOptions(); tableOptions.setTimeToLiveInDays(7); request.setTableOptionsForUpdate(tableOptions); client.updateTable(request);
Après la configuration, consultez les informations sur la table et les informations sur l'index de recherche pour vérifier les deux TTL.