本頁面說明如何使用 Google Cloud 主控台和 Google Cloud CLI 設定時間到期 (TTL) 政策。閱讀本頁前 您應該瞭解 Cloud Firestore 資料模型。
存留時間總覽
自動使用存留時間政策 移除資料庫內的過時資料存留時間政策會將特定欄位指定為 指定集合群組中的文件到期時間。有了存留時間 清除過時資料來降低儲存空間成本系統通常會刪除資料 24 小時內。
定價
存留時間刪除作業會計入文件刪除費用。如要瞭解刪除作業的定價,請參閱 Cloud Firestore 定價。
限制
- 每個集合群組只能有一個欄位標示為「存留時間」欄位,
- 最多允許 200 個欄位層級設定。一個欄位設定可包含相同欄位的多個設定。例如: 單一欄位的索引豁免項目和存留時間政策,會計入 有一個欄位設定超出上限
- Firestore (Datastore 模式) 客戶無法將 TTL 與以下並行模式搭配使用: 具備實體群組的最佳功能。 建議將並行模式變更為「最佳化並行模式」。
刪除存留時間
請注意,以存留時間為準刪除作業的主要行為包括:
透過 TTL 刪除並非即時程序,過期文件會持續顯示在查詢和查閱要求中,直到 TTL 程序實際刪除這些文件為止。存留時間可讓您在刪除時程和刪除作業的總持有成本之間取得平衡。通常會在到期日後的 24 小時內刪除資料。
透過存留時間刪除文件,並不會刪除該文件下的子集合 文件。
對現有集合群組套用存留時間政策後,結果會大量套用 根據新的存留時間政策刪除所有過期資料。注意事項 必須處理大量資料,而且不會立即執行大量刪除作業 才會有專屬於該集合群組
如果文件設有到期時間,而你新增了存留時間政策 則系統會在 24 小時內刪除文件。 也就是存留時間政策設定完成並生效的時間。
TTL 不一定會按照 到期時間戳記。
刪除作業並非透過交易完成。到期日相同的文件 因為時間不一定同時刪除如果需要這種行為,請使用用戶端程式庫執行刪除作業。
Cloud Firestore 一律會使用最新的 TTL 欄位來判斷到期日。例如,如果文件已過期但尚未刪除, TTL 欄位已更新為較晚的日期,文件將不會過期,且 系統將使用新的日期
存留時間是設計來盡量減少對其他資料庫活動的影響。系統會以較低的優先順序處理 TTL 觸發的刪除作業。其他策略是 ,以順利消除因存留時間導向刪除作業而遽增的流量。
透過存留時間呼叫執行刪除作業 快照監聽器和觸發 Cloud Functions Cloud Firestore 觸發條件。
存留時間欄位與索引
TTL 欄位可以建立索引或未建立索引。不過,由於 TTL 欄位是時間戳記,因此為該欄位建立索引可能會影響較高流量率的效能。為時間戳記欄位建立索引可能會產生熱點,這違反最佳做法。熱點是指讀取、寫入和刪除頻率高的狹小文件範圍。
根據預設,Cloud Firestore 會為所有欄位建立單一欄位索引。 您可以建立單一欄位索引豁免設定,停用 TTL 欄位的索引。
權限
設定存留時間政策的主體必須具備 專案:
- 查看存留時間政策時必須使用
datastore.indexes.list
和「datastore.indexes.get
」權限。 - 修改存留時間政策需要
datastore.indexes.update
權限。 - 需要
datastore.operations.list
和datastore.operations.get
才能檢查存留時間作業的狀態。
如要瞭解指派這些權限的角色,請參閱 Cloud Firestore Identity and Access Management 角色相關說明。
事前準備
使用 gcloud CLI 管理存留時間政策前,請先使用
gcloud components update
敬上
指令,將元件更新為最新可用版本:
gcloud components update
建立存留時間政策
建立存留時間政策時,必須指定一個文件欄位做為到期日 集合群組中文件的時間
存留時間會使用特定欄位找出符合刪除條件的文件。
這個 TTL 欄位必須是 Date and time
類型。您可以選取一個欄位
現有的欄位,或是指定打算稍後新增的欄位。
設定 TTL 欄位值前,請考量以下事項:
TTL 欄位的值可以是未來、現在或過去的時間。如果值是時間 文件上傳後,系統會立即將文件刪除。舉例來說,您可以使用
expireAt
欄位建立 TTL 政策,然後新增至現有文件。如果您使用任何其他資料類型或未設定「TTL」欄位值,個別文件的存留時間就會停用。
如要建立 TTL 政策,請按照下列步驟操作:
Google Cloud Console
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需的資料庫。
在導覽選單中,按一下「存留時間」。
點按「建立政策」。
輸入集合群組名稱和時間戳記欄位名稱。
按一下「建立」。
控制台就會返回「存留時間」頁面。如果作業失敗 才會開始,頁面會在存留時間政策表格中新增項目。啟用 失敗時,頁面會顯示錯誤訊息。
gcloud
使用 firestore fields ttls
update
設定存留時間政策的指令加上 --async
標記可避免系統產生
gcloud CLI 等待作業完成。
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
存留時間政策啟用時長
即使是空資料庫,啟用 TTL 政策也可能需要十分鐘以上。開始作業後,關閉終端機並不會取消 作業。
查看存留時間政策
如要查看存留時間政策及其狀態,請按照下列步驟操作:
Google Cloud Console
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需資料庫。
在導覽選單中,按一下「存留時間」。
控制台會列出資料庫的存留時間政策,並列出每項政策的 狀態。
gcloud
使用
firestore fields ttls list
敬上
設定存留時間政策的指令下列指令會列出所有存留時間
再檢查有關聯的允許政策
gcloud firestore fields ttls list
如要列出特定集合群組下的存留時間政策,請按照下列步驟操作:
gcloud firestore fields ttls list --collection-group=collection_group_name
查看作業詳細資料
您可以使用 gcloud CLI 查看存留時間政策的更多詳細資料
處於 CREATING
狀態
使用 operations list
指令查看所有執行中的
近期完成的作業:
gcloud firestore operations list
回應中會包含作業進度的預估值。
停用存留時間政策
如要停用存留時間政策,請按照下列步驟操作:
Google Cloud Console
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需的資料庫。
在導覽選單中,按一下「Time-to-live」(生命週期)。
在存留時間政策表格中,找出存留時間政策的資料列。在這個資料表列中,按一下「刪除」(垃圾桶) 按鈕。
按一下「刪除」確認這項操作。
控制台就會返回「存留時間」頁面。如果成功,Cloud Firestore 會從表格中移除 TTL 政策。
gcloud
1. 使用
firestore fields ttls update
敬上
設定存留時間政策的指令新增 --async
標記,避免 gcloud CLI 為了等待作業完成而停頓。
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
監控存留時間刪除作業
您可以使用 Cloud Monitoring 查看以存留時間為準的刪除指標。 Cloud Firestore 提供下列存留時間指標:
指標類型 | 指標名稱 | 指標說明 |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | 存留時間 (TTL) 的刪除次數 |
依存留時間政策刪除的文件總數。 |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | 延遲時間的存留時間 (TTL) 已延遲 |
文件在 TTL 政策下到期,到實際刪除之間的時間長度。 |
如要設定含有 Cloud Firestore 指標的資訊主頁,請參閱「管理自訂資訊主頁」和「新增資訊主頁小工具」。