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 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 vous recommandons d'utiliser plutôt l'approche de suppression puis d'écriture.

Si vous définissez l'horodatage d'une cellule sur 0 ou toute valeur inférieure à l'heure actuelle en millisecondes et utilisez également une stratégie de récupération de mémoire basée sur l'âge, votre cellule risque d'être supprimée lors de la prochaine récupération de mémoire.

Étapes suivantes