模擬儲存格層級存留時間
在 Bigtable 中,垃圾收集政策是在資料欄系列層級設定,您無法指定儲存格層級垃圾收集政策。不過,您可以變更垃圾收集設定,來在儲存格層級模擬存留時間 (TTL) 政策。本頁面說明您可以使用的一些不同方法。
閱讀本頁面之前,請先閱讀垃圾收集總覽。如要瞭解如何傳送寫入要求 (包括時間戳記),請參閱「Bigtable 寫入作業」。
一秒到期時間
在此方法中,設定垃圾收集規則以讓資料在一秒後過期。當您寫入資料時,可將儲存格的時間戳記設定為您想讓值過期的時間。壓縮期間,Bigtable 會刪除時間戳記為過去至少一秒的任何儲存格。舉例來說,如果您將儲存格的時間戳記設為 4 月 30 日上午 9:00:00,系統會在 4 月 30 日上午 9:00:01 之後刪除該儲存格。此方法可讓您針對相同資料欄系列中的不同儲存格設定不同的到期值。
一秒到期時間的優點
- 時間戳記具有實際意義:到期時間。
一秒到期時間的缺點
將資料寫入此 Bigtable 資料欄系列的每個應用程式都需要設定為遵循此規則。如果您在寫入時忘記設定,且使用了預設伺服器時間戳記,該資料會立即過期,並且會在下次壓縮時刪除。
由於時間戳記並非「實際時間戳記」,因此,您無法將時間戳記用於其他任何使用案例,例如判斷值的寫入時間。解決方法是,您可以將實際時間戳記寫入單獨的資料欄,但這將增加您儲存的資料量。
您無法針對資料具有實際時間戳記的資料欄系列實作此策略。如果現有資料具有實際時間戳記,或者您意外寫入具有實際時間戳記的新資料,該資料將在下一次壓縮時刪除。
您無法指定特定資料列與資料欄的多個儲存格在相同的時間過期。新資料將覆寫具有相同時間戳記的舊資料。
由於垃圾收集可能需要最多一週的時間,因此,讀取資料時,一律需要使用篩選器。
預設到期時間
假設您想讓大多數資料都有預設存留時間,但想針對部分資料設定不同的每個儲存格到期時間值。
例如,您可能將十位客戶的點擊事件儲存在一個資料表中。大多數點擊事件應在 2 天後到期,但有一位客戶的點擊事件應在一小時後到期,而另一位客戶的點擊事件應在 3 天後到期。
在此方法中,您可以建立資料欄系列,並將垃圾收集的時間限制設定為預設存留時間。針對您想讓到期時間早於預設值的資料,請將時間戳記設定為早於資料實際寫入的時間。針對您想讓到期時間更晚的資料,請將時間戳記設定為晚於資料實際寫入的時間。
預設到期時間的優點
針對沒有自訂存留時間的寫入,將使用預設存留時間。
此方法可安全套用至既有資料表。
預設到期時間的缺點
時間戳記在語意上沒有意義,因為儲存格的時間戳記可能是實際時間戳記或人工時間戳記。這表示您無法將儲存格的時間戳記用於其他任何使用案例,例如判斷值的寫入時間。解決方法是,您可以將實際時間戳記寫入單獨的資料欄,但這將增加您儲存的資料量。
您可能會無意中寫入與指定資料欄中的實際時間戳記衝突的自訂時間戳記。
由於垃圾收集是非同步的,因此,使用此策略時,仍需要在讀取資料時一律使用篩選器。
後續步驟
- 瞭解時間戳記為序號的垃圾收集。
- 瞭解一律讀取最新資料欄值的策略。
- 查看說明如何設定垃圾收集的程式碼範例。
- 進一步瞭解儲存空間定價。