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 une colonne dans 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 table
  • COLUMN_FAMILY : famille de colonnes qui contient la colonne
  • COLUMN_QUALIFIER : qualificatif de colonne à supprimer et à recréer
  • TIMESTAMP : nouvel horodatage
  • VALUE : 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