Conserva solo il valore più recente

In questa pagina viene descritta una strategia che ti consente di mantenere solo il valore più recente in una colonna in una tabella Bigtable.

Tutte le librerie client di Cloud Bigtable consentono di utilizzare i filtri per leggere valore recente, o cella, in una determinata riga e colonna. In alcuni casi, tuttavia, potrebbe non avere mai bisogno di leggere versioni precedenti dei tuoi dati. Puoi usare un modello basato sulla versione criterio di garbage collection che specifica di mantenere una sola cella in una colonna, ma poiché può richiedere fino a un settimana affinché venga eseguita la garbage collection, in pratica la tabella potrebbe contenere dati meno recenti che non prevedi di leggere mai.

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 il valore colonna e la ricrea con un nuovo valore e un nuovo timestamp in un'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 di utilizzare l'approccio di eliminazione e scrittura.

Se imposti il timestamp di una cella su 0 o su un qualsiasi valore inferiore rispetto al tempo attuale in millisecondi e utilizza anche una garbage collection basata sull'età la cella potrebbe essere eliminata alla successiva garbage collection.

Passaggi successivi