僅保留最新值

本頁面說明的策略可讓您僅保留 Bigtable 資料表中資料欄的最新值。

所有 Cloud Bigtable 用戶端程式庫都可讓您使用篩選器,讀取指定資料列與資料欄的最新值或儲存格。不過,在某些情況下,您可能永遠不需要讀取舊版資料。您可以採用以版本為準的垃圾收集政策,指定只保留資料欄中的一個儲存格,但由於垃圾收集作業最多可能需要一週時間,因此實際上資料表中可能包含您從未打算讀取的舊資料。

如要只保留最新值,建議您使用「先刪除再寫入」方法,將表格中的資料欄限制為只有一個儲存格。

刪除,然後撰寫

如要只保留資料欄中的一個值,可以傳送要求刪除資料欄,然後在一個不可分割的動作中,以新值和時間戳記重新建立資料欄。

以下 Java 虛擬程式碼範例說明運作方式。順序很重要:必須先刪除,才能寫入。

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

請提供下列資訊:

  • TABLE:資料表 ID
  • COLUMN_FAMILY:包含資料欄的資料欄系列
  • COLUMN_QUALIFIER:要刪除及重新建立的資料欄限定詞
  • TIMESTAMP:新的時間戳記
  • VALUE:資料欄的新值

零的時間戳記

先前,我們建議一律以時間戳記 0 傳送寫入作業。您仍可使用該方法,但由於有效時間戳記很有用,因此建議改用先刪除再寫入的方法。

如果您將儲存格的時間戳記設為 0 或任何小於目前時間 (以毫秒為單位) 的值,且使用以時間為準的垃圾收集政策,系統可能會在下次垃圾收集時刪除儲存格。

後續步驟