Utilisez le versionnement des données et la durée de vie (TTL) pour gérer efficacement vos données, réduire l'utilisation du stockage et diminuer les coûts associés.
Max versions
Le paramètre Max Versions définit le nombre maximal de versions de données à conserver pour chaque colonne d'attribut. Lorsque le nombre de versions dans une colonne d'attribut dépasse cette limite, le système supprime de manière asynchrone les versions les plus anciennes.
Actuellement, Tablestore n'applique pas de limite stricte sur Max Versions. Toutefois, pour garantir des performances et une utilisation optimales, nous vous recommandons de maintenir le nombre de versions à 500 ou moins.
Si vous ne spécifiez pas le paramètre Max Versions lors de la création d'une table de données, sa valeur par défaut est 1. Vous pouvez modifier cette valeur ultérieurement en appelant l'opération UpdateTable.
Les versions de données qui dépassent la limite Max Versions sont considérées comme invalides. Vous ne pouvez pas lire ces versions, même si le système ne les a pas encore supprimées.
Si vous réduisez la valeur de Max Versions, le système supprime de manière asynchrone toutes les versions plus anciennes qui dépassent désormais la nouvelle limite.
Si vous augmentez la valeur de Max Versions, d'anciennes versions précédemment inaccessibles peuvent redevenir lisibles si elles entrent dans la nouvelle limite et n'ont pas encore été supprimées.
Numéro de version
Après avoir configuré Max Versions pour une table de données, Tablestore crée une nouvelle version d'une valeur chaque fois que vous la mettez à jour dans une colonne d'attribut. Cette version reçoit un numéro de version, qui correspond à un horodatage en millisecondes.
Lorsque vous écrivez des données dans une colonne d'attribut, vous pouvez soit spécifier un numéro de version, soit laisser le système en générer un automatiquement. Étant donné que les numéros de version sont des horodatages basés sur les millisecondes, ils doivent être divisés par 1 000 pour être convertis en secondes aux fins des calculs de TTL et de Max Version Offset.
Lorsque le système génère automatiquement un numéro de version, il utilise l'heure actuelle sous forme d'horodatage en millisecondes, calculé à partir de
1970-01-01 00:00:00 UTC.Lorsque vous spécifiez un numéro de version personnalisé, il doit s'agir d'un horodatage en millisecondes sur 64 bits qui se situe dans la plage de versions valide.
Les numéros de version permettent les fonctionnalités suivantes :
-
TTL
Le numéro de version peut être utilisé pour définir le cycle de vie des valeurs dans une colonne d'attribut. Le système supprime de manière asynchrone une version de données dès que son âge dépasse la valeur TTL configurée.
Par exemple, si une version de données possède un numéro de version de 1468944000000 (qui correspond à
2016-07-20 00:00:00 UTC+8) et que le TTL de la table de données est défini sur 86400 (un jour), cette version expire le2016-07-21 00:00:00 UTC+8et le système la supprime de manière asynchrone. -
Lire les données par version
Lors de la lecture des données d'une ligne, vous pouvez spécifier le nombre maximal de versions à lire par colonne ou une plage spécifique de numéros de version. Pour plus d'informations, consultez la rubrique Read data.
TTL
Le TTL est une propriété d'une table de données qui spécifie la période de conservation des données en secondes. Le système supprime de manière asynchrone une version de données dans une colonne d'attribut lorsque son âge dépasse la valeur TTL configurée. Si toutes les versions de données de toutes les colonnes d'attributs d'une ligne expirent, le système supprime la ligne entière de manière asynchrone.
Par exemple, si le TTL d'une table de données est défini sur 86400 (un jour), alors à 2016-07-21 00:00:00 UTC+8, toutes les données des colonnes d'attributs dont le numéro de version est inférieur à 1468944000000 expirent. Cet horodatage correspond à 2016-07-20 00:00:00 UTC+8 après conversion en secondes. Le système supprime ensuite les données expirées de manière asynchrone.
Si vous ne définissez pas de TTL lors de la création d'une table de données, la valeur par défaut est -1, ce qui signifie que les données n'expirent jamais. Vous pouvez modifier ultérieurement le TTL en appelant l'opération UpdateTable.
Le TTL d'une table de données et le TTL d'un index secondaire sont indépendants. Toutefois, le TTL de la table de données doit être supérieur ou égal au TTL de ses index secondaires. Lors de la modification du TTL d'une table de données disposant d'index secondaires, suivez les étapes appropriées selon votre scénario :
Si le nouveau TTL de la table de données est inférieur au TTL de son index secondaire, utilisez d'abord un SDK pour appeler l'opération UpdateTable afin de modifier le TTL de l'index secondaire vers une valeur inférieure ou égale à la valeur cible. Ensuite, modifiez le TTL de la table de données vers la valeur cible.
Si le nouveau TTL de la table de données est supérieur ou égal au TTL de son index secondaire, vous pouvez modifier directement le TTL de la table de données vers la valeur cible.
Les données qui ont dépassé leur TTL sont considérées comme expirées et deviennent illisibles, même si le système ne les a pas encore supprimées.
Si vous réduisez la valeur TTL, certaines données de la table de données peuvent expirer et le système supprimera les données expirées de manière asynchrone.
Si vous augmentez le TTL, d'anciennes versions qui avaient expiré sous le TTL précédent peuvent redevenir lisibles si elles entrent dans la nouvelle période TTL et n'ont pas encore été supprimées.
Max version offset
Pour éviter que les données n'expirent immédiatement après leur écriture, ce qui peut se produire si un horodatage personnalisé est antérieur au TTL de la table, vous pouvez configurer un Max Version Offset.
Le Max Version Offset représente l'écart maximal autorisé, en secondes, entre un numéro de version personnalisé et l'heure système actuelle. Il s'agit d'un entier positif.
Pour garantir le succès d'une opération d'écriture, le système vérifie le numéro de version des données pour chaque colonne d'attribut. Les données ne peuvent être écrites que si leur numéro de version, converti de millisecondes en secondes, se situe dans la plage de versions valide [max{write_time - Max Version Offset, write_time - TTL}, write_time + Max Version Offset).
Par exemple, si le Max Version Offset d'une table de données est de 86400 (un jour), à 2016-07-21 00:00:00 UTC+8, vous ne pouvez écrire que des données dont le numéro de version est supérieur à 1468944000000 (qui correspond à 2016-07-20 00:00:00 UTC+8 après conversion en secondes) et inférieur à 1469116800000 (qui correspond à 2016-07-22 00:00:00 UTC+8 après conversion en secondes). Si le numéro de version d'une colonne d'attribut dans une ligne est 1468943999000 (qui correspond à 2016-07-19 23:59:59 UTC+8 après conversion en secondes), l'opération d'écriture pour cette ligne échoue.
Si vous ne configurez pas Max Version Offset lors de la création d'une table de données, la valeur par défaut est 86400. Vous pouvez modifier cette valeur ultérieurement en appelant l'opération UpdateTable.
Méthodes de configuration
Vous pouvez configurer des paramètres tels que Max Versions et TTL lors de la création d'une table de données. Vous pouvez également modifier ces paramètres après la création de la table. Les exemples suivants montrent comment modifier la configuration d'une table existante.
Pour savoir comment configurer Max Versions ou TTL lors de la création d'une table de données, consultez la rubrique Table operations.
Console
CLI
SDKs
Facturation
L'utilisation de plusieurs versions de données augmente les coûts de stockage, car vous êtes facturé pour le stockage des numéros de version ainsi que des données de chaque version.
Le nettoyage des données basé sur le TTL est gratuit. Toutefois, l'activation du TTL ajoute un horodatage en tant que numéro de version à chaque colonne d'attribut, ce qui augmente l'utilisation du stockage.
Pour plus d'informations, consultez la rubrique Data storage.