削除

このドキュメントでは、Bigtable テーブルに保存されているデータを削除する方法、それぞれの方法を使用するタイミングについて説明し、例を示します。このページを読む前に、Bigtable の概要をよく知っており、スキーマ設計に関連するコンセプトを理解している必要があります。

内容に一貫性を持たせるため、このページの説明では、リクエストの種類ごとに使用される API メソッドを示します。ただし、REST や RPC を使用するのではなく、必ず Bigtable クライアント ライブラリのいずれかを使用して Bigtable API にアクセスすることを強くおすすめします。

このページの例では、Bigtable に保存されるデータに似たサンプルデータを使用します。

このページで説明するオペレーションを実行できる 1 日あたりの回数については、割り当てと上限をご覧ください。

Bigtable でのデータの削除

削除リクエストを送信すると、セルには削除マークが付けられ、読み取ることができません。データは、最大でも 1 週間後、コンパクション(テーブルを継続的に最適化するバックグラウンド プロセス)中に削除されます。削除リクエストを送信してから次のコンパクションが発生するまでの数日間は、削除メタデータにより、データの容量が少し多く消費される可能性があります(1 行あたり数 kb)。

クラスタがストレージ上限を超過し、読み取りと書き込みがブロックされている場合でも、削除リクエストはいつでも送信できます。

行の範囲を削除する

連続した行に保存されている大量のデータを削除する場合は、dropRowRange を使用します。このオペレーションでは、開始行と終了行、または行キー接頭辞によって識別される特定の範囲の行がすべて削除されます。

行の範囲を削除するときに指定する行キー値は、サービスデータとして扱われます。サービスデータの取り扱いについては、Google Cloud のプライバシーに関するお知らせをご覧ください。

正常に削除され、レスポンスを受け取ったら、同じ行範囲にデータを安全に書き込めます。

dropRowRange オペレーションには次の制限があります。

  • 承認済みビューから特定の範囲の行を削除することはできません。
  • dropRowRange メソッドを非同期で呼び出すことはできません。別のリクエストが進行中のテーブルに dropRowRange リクエストを送信すると、Bigtable は A DropRowRange operation is already ongoing というメッセージを含む UNAVAILABLE エラーを返します。エラーを解決するには、リクエストを再度送信します。
  • レプリケーションを使用するインスタンスでは、レプリケーションのレイテンシと CPU 使用率が増加するため、Bigtable はオペレーションの完了に長い時間を要する場合があります。レプリケーションを使用するインスタンスからデータを削除するには、Data API を使用してデータを読み取ってから削除します。

次のコードサンプルでは、行キー接頭辞 phone#5c10102 で始まる行の範囲を削除する方法を示します:

Go

Bigtable 用のクライアント ライブラリをインストールして使用する方法については、Bigtable クライアント ライブラリをご覧ください。

Bigtable で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。


import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigtable"
)

func dropRowRange(w io.Writer, projectID, instanceID, tableName string) error {
	ctx := context.Background()
	adminClient