削除
このドキュメントでは、Bigtable テーブルに保存されているデータを削除する方法、それぞれの方法を使用するタイミングについて説明し、例を示します。このページを読む前に、Bigtable の概要をよく知っており、スキーマ設計に関連するコンセプトを理解している必要があります。
内容に一貫性を持たせるため、このページの説明では、リクエストの種類ごとに使用される API メソッドを示します。ただし、REST や RPC を使用するのではなく、必ず Bigtable クライアント ライブラリのいずれかを使用して Bigtable API にアクセスすることを強くおすすめします。
このページの例では、Bigtable に保存されるデータに似たサンプルデータを使用します。
このページで説明するオペレーションを実行できる 1 日あたりの回数については、割り当てと上限をご覧ください。
Bigtable でのデータの削除
削除リクエストを送信すると、セルには削除マークが付けられ、読み取ることができません。データは、最大でも 1 週間後、コンパクション(テーブルを継続的に最適化するバックグラウンド プロセス)中に削除されます。削除リクエストを送信してから次のコンパクションが発生するまでの数日間は、削除メタデータにより、データの容量が少し多く消費される可能性があります(1 行あたり数 kb)。
クラスタがストレージ上限を超過し、読み取りと書き込みがブロックされている場合でも、削除リクエストはいつでも送信できます。
行の範囲を削除する
連続した行に保存されている大量のデータを削除する場合は、dropRowRange を使用します。このオペレーションでは、開始行と終了行、または行キー接頭辞によって識別される特定の範囲の行がすべて削除されます。
行の範囲を削除するときに指定する行キー値は、サービスデータとして扱われます。サービスデータの取り扱いについては、Cloud de Confiance のプライバシーに関するお知らせをご覧ください。
正常に削除され、レスポンスを受け取ったら、同じ行範囲にデータを安全に書き込めます。
dropRowRange オペレーションには次の制限があります。
- 承認済みビューから特定の範囲の行を削除することはできません。
dropRowRangeメソッドを非同期で呼び出すことはできません。別のリクエストが進行中のテーブルにdropRowRangeリクエストを送信すると、Bigtable はA DropRowRange operation is already ongoingというメッセージを含むUNAVAILABLEエラーを返します。エラーを解決するには、リクエストを再度送信します。- レプリケーションを使用するインスタンスでは、レプリケーションのレイテンシと 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 を使用することが、(列ファミリーではなく)列からデータを削除する唯一の方法です。
Data API メソッドは、次の 3 種類のミューテーションのいずれかを使用して 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 に設定します。
承認済みビューのデータを削除する
承認済みビューに削除リクエストを送信すると、テーブルデータを削除できます。次のいずれかを使用する必要があります。
- gcloud CLI
- Java 用 Bigtable クライアント
承認済みビューからデータを削除する場合は、テーブル ID に加えて承認済みビュー ID を指定します。
承認済みビューから削除できるデータは、承認済みビューの定義で制限されます。削除できるのは、承認済みビューに含まれるデータのみです。承認済みビューの定義外のデータや、次のルールが適用されているデータを削除しようとすると、PERMISSION_DENIED エラーが返されます。
- 管理 API では、
DropRowRangeを使用して承認済みビューから特定の範囲の行を削除することはできません。 - 行からの削除はサポートされていません。
- 承認済みビューに含まれる行に対するものであれば、列からの削除がサポートされます。
- 列ファミリーからの削除は、指定された列ファミリーが承認済みビュー内のすべての列修飾子接頭辞(
qualifier_prefixes="")を許可するように構成されている場合にのみ許可されます。
たとえば、指定した行から削除しようと試みた際に、その行に、基になるテーブルの列のうち承認済みビューにない列が含まれている場合、リクエストは失敗します。