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