Mantenere solo il valore più recente

Questa pagina descrive una strategia che ti consente di conservare solo il valore più recente in una colonna di una tabella Bigtable.

Tutte le librerie client di Cloud Bigtable ti consentono di utilizzare i filtri per leggere il valore o la cella più recente in una determinata riga e colonna. In alcuni casi, tuttavia, potresti non dover mai leggere le versioni precedenti dei tuoi dati. Puoi utilizzare un criterio di garbage collection basato su versione che specifica di conservare una sola cella in una colonna, ma poiché l'operazione può richiedere fino a una settimana, in pratica la tabella potrebbe contenere dati precedenti che non prevedi mai di leggere.

Per conservare solo il valore più recente, ti consigliamo di utilizzare un approccio di eliminazione e scrittura per limitare le colonne della tabella a una sola cella.

Elimina, quindi scrivi

Per conservare un solo valore in una colonna, puoi inviare una richiesta che elimini la colonna e la ricrei con un nuovo valore e un nuovo timestamp in un'unica azione atomica.

Il seguente esempio di pseudocodice Java mostra come funziona. L'ordine è importante: l'eliminazione deve avvenire prima della scrittura.

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);

Fornisci quanto segue:

  • TABLE: l'ID della tabella
  • COLUMN_FAMILY: la famiglia di colonne che contiene la colonna
  • COLUMN_QUALIFIER: il qualificatore di colonna da eliminare e ricreare
  • TIMESTAMP: il nuovo timestamp
  • VALUE: il nuovo valore per la colonna

Timestamp pari a zero

In precedenza, consigliavamo una strategia di invio sempre di scritture con un timestamp di 0. Puoi comunque utilizzare questo approccio, ma poiché i timestamp validi sono utili, consigliamo l'approccio di eliminazione e successiva scrittura.

Se imposti il timestamp di una cella su 0 o su un valore inferiore al tempo corrente in millisecondi e utilizzi anche un criterio di garbage collection in base alla data, la cella potrebbe essere eliminata alla successiva garbage collection.

Passaggi successivi