Ne conserver que la valeur la plus récente
Cette page décrit une stratégie qui vous permet de ne conserver que la valeur la plus récente dans une colonne d'une table Bigtable.
Toutes les bibliothèques clientes Cloud Bigtable vous permettent de lire la valeur la plus récente ou une cellule, sur une ligne et une colonne données en utilisant des filtres. Dans certains cas, il est possible que vous n'ayez jamais besoin de lire les anciennes versions de vos données. Vous pouvez utiliser une règle de récupération de mémoire basée sur la version qui permet de ne conserver qu'une seule cellule dans une colonne. Cependant, la récupération de mémoire pouvant prendre jusqu'à une semaine, en pratique, votre table peut contenir des données plus anciennes que vous ne prévoyez jamais de lire.
Pour ne conserver que la valeur la plus récente, nous vous recommandons d'utiliser une approche suppression-écriture pour limiter les colonnes de votre table à une seule cellule.
Supprimer, puis écrire
Pour conserver une seule valeur dans une colonne, vous pouvez envoyer une requête qui supprime la colonne, puis la recrée avec une nouvelle valeur et un horodatage en une seule action atomique.
L'exemple de pseudo-code Java suivant illustre ce fonctionnement. L'ordre est important : la suppression doit avoir lieu avant l'écriture.
RowMutation mutation = RowMutation.create(TABLE, ROW_KEY)
.deleteCells(COLUMN_FAMILY, COLUMN_QUALIFIER, Range.TimestampRange.unbounded())
.setCell((COLUMN_FAMILY, COLUMN_QUALIFIER, TIMESTAMP, VALUE);
dataClient.mutateRow(mutation);
Indiquez les éléments suivants :
TABLE
: ID de la tableCOLUMN_FAMILY
: famille de colonnes qui contient la colonneCOLUMN_QUALIFIER
: qualificatif de colonne à supprimer et à recréerTIMESTAMP
: nouvel horodatageVALUE
: nouvelle valeur de la colonne
Définir l'horodatage sur zéro
Auparavant, nous recommandions une stratégie d'envoi systématique des écritures avec un horodatage de 0. Vous pouvez toujours utiliser cette approche, mais comme des horodatages valides sont utiles, nous recommandons l'approche de suppression puis d'écriture à la place.
Si vous définissez l'horodatage d'une cellule sur 0 ou sur une valeur inférieure que l'heure actuelle en millisecondes et utiliser une fonction de récupération de mémoire en fonction de l'âge votre cellule pourrait être supprimée lors de la prochaine récupération de mémoire.
Étape suivante
- Lisez la présentation des requêtes d'écriture.
- Affichez d'autres exemples de requêtes d'écriture.
- Explorez la documentation de référence sur le client Cloud Bigtable pour Java.