本頁說明如何使用 Google Cloud 控制台和 Google Cloud CLI 設定存留時間 (TTL) 政策。閱讀本頁內容前,請先瞭解 Datastore 模式資料模型。
存留時間總覽
使用 TTL 政策,自動移除資料庫中的過時資料。存留時間政策會將特定屬性指定為特定種類中實體的到期時間。您可以使用存留時間,清除過時資料來降低儲存空間成本。通常會在到期日後的 24 小時內刪除資料。
定價
依據存留時間刪除的作業會計入實體刪除費用。如要瞭解刪除作業的定價,請參閱「Datastore 模式的 Firestore 定價」。
限制和限制
- 每個種類只能將一個屬性標示為存留時間屬性。
- 最多可設定 1,000 項存留時間政策。
依據存留時間刪除
請注意下列 TTL 驅動刪除作業的主要行為:
透過存留時間刪除資料並非立即生效,過期實體會繼續出現在查詢和查閱要求中,直到 TTL 程序實際刪除這些實體為止。TTL 會犧牲刪除作業的及時性,以減少刪除作業的總持有成本。通常會在到期日後的 24 小時內刪除資料。
透過 TTL 刪除實體時,不會一併刪除該實體的子項實體。
對現有種類套用存留時間政策,會導致系統根據新的存留時間政策,大量刪除所有過期資料。請注意,大量刪除作業也需要時間,視該類型資料量而定。
如果實體的到期時間已過,且您為該類型新增了新的 TTL 政策,系統會在 TTL 政策設定完成並啟用後的 24 小時內刪除實體。
TTL 不一定會按照實體的到期時間戳記順序刪除實體。
刪除作業並非以交易方式完成。具有相同到期時間的實體不一定會同時刪除。如要執行這項操作,請使用用戶端程式庫刪除項目。
Datastore 模式一律會採用最新的 TTL 欄位來判斷到期時間。舉例來說,如果已過期但尚未刪除的實體將 TTL 欄位更新為較晚的日期,實體就不會過期,系統會使用新日期。
只有在存留時間欄位設為
Timestamp類型時,Datastore 模式才會讓文件過期。如果將欄位留空或設為null等值,即可針對個別文件停用效期。存留時間的設計宗旨是盡量減少對其他資料庫活動的影響。系統會以較低的優先順序處理因 TTL 而刪除的資料。此外,我們也採取其他策略,以平緩 TTL 驅動的刪除作業所造成的流量尖峰。
存留時間屬性和索引
TTL 屬性可編入索引或不編入索引。不過,由於 TTL 屬性是時間戳記,為該屬性建立索引可能會影響高流量時的效能。為時間戳記屬性建立索引違反最佳做法,且可能會建立熱點。熱點是指對狹窄鍵範圍的讀取、寫入和刪除率偏高。
根據預設,Datastore 會為所有屬性建立內建索引。 您可以從索引中排除屬性,停用 TTL 屬性的索引。
權限
設定存留時間政策的主體必須具備專案的下列權限:
- 如要查看存留時間政策,必須具備
datastore.indexes.list和datastore.indexes.get權限。 - 如要修改存留時間政策,必須具備
datastore.indexes.update權限。 - 如要檢查 TTL 作業的狀態,必須使用
datastore.operations.list和datastore.operations.get。
如要瞭解指派這些權限的角色,請參閱「資料儲存區 Identity and Access Management 角色」。
建立存留時間政策
建立存留時間政策時,您會將實體屬性指定為某個種類中實體的到期時間。存留時間政策會套用至所有命名空間中的指定種類。
TTL 會使用指定屬性,找出符合刪除資格的實體。這項 TTL 屬性必須是 Date and time 類型。您可以選取現有資源,也可以指定日後要新增的資源。
設定存留時間屬性值前,請先考量下列事項:
存留時間屬性值可以是未來、現在或過去的時間。如果值是過去的時間,實體會立即符合刪除資格。舉例來說,您可能會使用
expireAt屬性建立存留時間政策,然後將該政策新增至現有實體。如果使用任何其他資料類型,或未設定存留時間屬性值,系統就會停用個別實體的存留時間。
請按照下列步驟建立存留時間政策:
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需資料庫。
在導覽選單中,按一下「存留時間」。
點按「建立政策」。
輸入種類名稱和時間戳記屬性名稱。
選用:設定「到期偏移」。輸入值並選取單位 (天、小時、分鐘或秒)。預設位移為 0。
點選「建立」。
控制台會返回「存留時間」頁面。如果作業順利啟動,頁面會在 TTL 政策表格中新增項目。如果失敗,頁面會顯示錯誤訊息。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
使用
firestore fields ttls update指令設定存留時間政策。新增--async旗標,防止 gcloud CLI 等待作業完成。gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_group_name \ --enable-ttl
如要啟用 TTL 並設定到期時間差,請新增
--expiration-offset旗標:gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_group_name \ --enable-ttl \ --expiration-offset=expiration_offset
將 expiration_offset 替換為時間長度,例如
7d(7 天) 或24h(24 小時)。如果省略這個標記,到期偏移量預設為 0。
啟用 TTL 政策至少需要十分鐘。作業開始後,關閉終端機不會取消作業。
查看存留時間政策
如要查看 TTL 政策及其狀態,請按照下列步驟操作。
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需資料庫。
在導覽選單中,按一下「存留時間」。
Google Cloud 控制台會列出資料庫的 TTL 政策,並顯示每項政策的狀態。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
使用
firestore fields ttls list指令查看存留時間政策。下列指令會列出所有 TTL 政策。gcloud firestore fields ttls list
如要列出特定種類的存留時間政策,請使用下列指令:
gcloud firestore fields ttls list --collection-group=collection_group_name
查看作業詳細資料
您可以使用 gcloud CLI,查看處於 CREATING 狀態的 TTL 政策詳細資料。
使用 operations list 指令查看所有正在執行和最近完成的作業:
gcloud firestore operations list
回覆會包含作業進度的預估值。
停用存留時間政策
如要停用 TTL 政策,請按照下列步驟操作。
Google Cloud 控制台
前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。
從資料庫清單中選取所需資料庫。
在導覽選單中,按一下「存留時間」。
在存留時間政策表格中,找到存留時間政策所屬的列。在這個資料列中,按一下「刪除」 (垃圾桶) 按鈕。
按一下「刪除」確認操作。
Google Cloud 控制台會返回「存留時間」頁面。成功後,Datastore 會從資料表中移除 TTL 政策。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
使用
firestore fields ttls update指令設定存留時間政策。新增--async旗標,防止 gcloud CLI 等待作業完成。gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
監控依據存留時間刪除的作業
您可以使用 Cloud Monitoring 查看與 TTL 驅動刪除作業相關的指標。 Datastore 提供下列存留時間指標:
| datastore.googleapis.com/entity/ttl_deletion_count | 依據存留時間刪除的數量 |
存留時間政策刪除的實體總數。 |
| datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | 存留時間到期至刪除之間的延遲時間 |
實體在存留時間政策下到期,到實際刪除之間經過的時間。 |
如要設定含有 Datastore 指標的資訊主頁,請參閱「管理自訂資訊主頁」和「新增資訊主頁小工具」。