刪除次數
本文說明如何刪除 Bigtable 資料表儲存的資料,並討論何時應使用每種方法,以及提供範例。閱讀本頁面之前,請先熟悉 Bigtable 總覽,並瞭解結構定義設計相關概念。
為確保一致性,本頁面的說明會提及用於各類型要求的 API 方法。不過,我們強烈建議您一律使用 Bigtable 用戶端程式庫存取 Bigtable API,而非使用 REST 或 RPC。
本頁面的範例使用範例資料,類似於您可能儲存在 Bigtable 中的資料。
如要瞭解每天可使用本頁面所述作業的次數,請參閱「配額與限制」。
Bigtable 如何刪除資料
傳送刪除要求後,系統會將儲存格標記為待刪除,且無法讀取。系統會在最多一週後進行壓縮,這是持續最佳化資料表的背景程序,屆時就會移除資料。在您傳送刪除要求後,刪除中繼資料可能會導致資料佔用稍微多一點空間 (每列幾 KB),直到下次壓縮為止。
即使叢集超出儲存空間上限,導致讀取和寫入作業遭到封鎖,您還是可以傳送刪除要求。
刪除特定範圍內的資料列
如要刪除儲存在連續資料列中的大量資料,請使用 dropRowRange。這項作業會刪除由起始和結束資料列或資料列索引鍵前置字串識別的資料列範圍內的所有資料列。
刪除資料列範圍時提供的資料列索引鍵值會視為服務資料。如要瞭解服務資料的處理方式,請參閱Cloud de Confiance 隱私權聲明。
成功刪除資料並收到回應後,您就可以安全地將資料寫入相同的列範圍。
dropRowRange 作業有下列限制:
- 您無法從授權檢視畫面中捨棄列範圍。
- 您無法以非同步方式呼叫
dropRowRange方法。如果您在另一個要求進行期間,傳送dropRowRange要求至資料表,Bigtable 會傳回UNAVAILABLE錯誤,並顯示A DropRowRange operation is already ongoing訊息。如要解決這個錯誤,請再次傳送要求。 - 如果執行個體使用複製功能,請注意,由於複製延遲和 CPU 使用量增加,Bigtable 可能需要很長時間才能完成作業。如要從使用複寫功能的執行個體刪除資料,請使用 Data API 讀取資料,然後刪除資料。
下列程式碼範例顯示如何捨棄以資料列索引鍵前置字元 phone#5c10102 開頭的資料列範圍:
Go
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
使用 Data API 方法刪除資料
如要刪除少量不連續的資料,通常最好使用呼叫 Cloud Bigtable API (Data API) 的方法刪除資料。如果要求刪除的資料量為 MB,而非 GB,請使用這些方法。 只有使用 Data API,才能刪除資料欄 (而非資料欄系列) 中的資料。
資料 API 方法會呼叫 MutateRows,並使用下列其中一種變動類型:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
使用 Data API 提出的刪除要求是不可分割的作業:要求成功時,所有資料都會遭到刪除;要求失敗時,則不會移除任何資料。
在大多數情況下,請避免使用 CheckAndMutate 方法刪除資料。在極少數需要同步一致的情況下,您可能會想使用這種方法,但請注意,這會耗用大量資源,且效能可能會受到影響。
如要使用 MutateRows 刪除資料,請傳送 readRows 要求,並使用篩選器判斷要刪除的內容,然後傳送刪除要求。如需可用篩選器清單,請參閱「篩選器」。
本節範例假設您已決定要刪除哪些資料。
從資料欄中刪除
下列程式碼範例示範如何刪除資料列中某個資料欄的所有儲存格:
Go
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python asyncio
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
從資料欄系列中刪除
以下程式碼範例示範如何刪除資料列中資料欄系列的儲存格:
Go
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python asyncio
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
從資料列中刪除
下列程式碼片段示範如何刪除資料列中的所有儲存格:
Go
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python asyncio
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
透過串流和批次刪除
如要刪除大量資料,通常最好採用串流和批次處理刪除要求。如果資料保留要求比垃圾回收政策允許的更精細,這項策略就非常實用。
如果應用程式是以 Java 編寫,向 Bigtable 傳送批次刪除作業時,可以啟用批次寫入流程控制。詳情請參閱「批次寫入流量控制」和「啟用批次寫入流量控制」。
下列程式碼範例會啟動資料串流 (讀取資料列)、批次處理資料,然後逐一處理批次資料,並刪除 cell_plan 資料欄系列中 data_plan_01gb1 資料欄的所有儲存格:
Go
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python asyncio
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。
如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
刪除授權檢視表中的資料
您可以將刪除要求傳送至授權 view,藉此刪除資料表資料。你必須使用下列其中一項:
- gcloud CLI
- Java 適用的 Bigtable 用戶端
從授權檢視表刪除資料時,除了資料表 ID 之外,您還需要提供授權檢視表 ID。
您可以從授權檢視表刪除的資料,會受到授權檢視表定義的限制。您只能刪除授權 view 中的資料。如果您嘗試刪除授權檢視定義以外的資料,或刪除受下列規則限制的資料,系統會傳回 PERMISSION_DENIED 錯誤:
- 系統不支援使用 Admin API 中的
DropRowRange,從授權 view 刪除一系列資料列。 - 系統不支援從資料列中刪除。
- 只要資料列位於授權 view 中,系統就支援從資料欄中刪除資料。
- 只有在指定資料欄系列已設定為允許授權 view 中的所有資料欄限定詞前置字元 (
qualifier_prefixes="") 時,才能從資料欄系列中刪除資料。
舉例來說,如果您嘗試從指定資料列刪除資料,但該資料列包含基礎資料表中不在授權 view 中的資料欄,則要求會失敗。