論理ビューを作成して管理する
Bigtable では、論理ビューは、他の SQL クエリでクエリできる仮想テーブルとして機能する SQL クエリの結果です。 データはソーステーブルに残ります。
このドキュメントでは、論理ビューとその作成方法と操作方法について説明します。継続的なマテリアライズドビューと承認済みビューとの比較については、 テーブルとビューをご覧ください。
論理ビューを使用すると、Bigtable データに対して次の操作を行うことができます。
- クエリの繰り返しを回避する: 論理ビューに列マッピングとキャスト ロジックを保存して進化させることができます。追加の論理ビューでは、そのロジックをコピーして貼り付ける必要がなく、理解する必要もありません。
- リレーショナル データベースから読み取るように設計されたシステムと統合する: 論理ビューを使用すると、Bigtable データを リレーショナル データベース テーブルまたは Cassandra テーブルのように読み取ることができます。
- 多くのテーブルに対して同じ論理ビューを実行する:
FROM句を変更することで、同じビューを使用して Bigtable インスタンス内の任意のテーブルにクエリを実行できます。 - 一貫したインターフェースを提供する: ソーステーブルが変更されても、アプリケーションは論理ビューを使用できます。
- 特定の列または行への読み取りアクセスを制限する: テーブル全体へのアクセス権を付与することなく、ユーザーが読み取れる データのみを公開できます。
論理ビューはインスタンス レベルのリソースです。論理ビューを作成するには、Google Cloud CLI または コンソールの Bigtable Studio クエリエディタを使用します。 Google Cloud 論理ビューにクエリを実行するには、 Bigtable Studio クエリエディタまたは SQL をサポートする Bigtable クライアント ライブラリを使用します。
論理ビューには次の特徴があります。
- Bigtable 用の GoogleSQL でサポートされている SQL 機能を使用する必要があります。
- 読み取り専用
ReadRowsの呼び出しではなく、SQL で読み取る必要があります。- SQL をサポートする Bigtable クライアント ライブラリを使用してクエリを実行できます 。
- 定義者の権限を使用します。 ソーステーブルから読み取る権限がない場合でも、論理ビューから読み取る権限があれば、論理ビューにクエリを実行できます。
論理ビューの定義に使用する行キー、列修飾子、列の値は、サービスデータとして扱われます。そのため、機密情報を含む行キー、列修飾子、列の値を使用して論理ビューを作成しないでください。サービスデータの取り扱い方法については、Google Cloud プライバシー に関するお知らせをご覧ください。
始める前に
gcloud CLI を使用する場合は、次の手順を行います。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init
必要なロール
論理ビューを使用するには、次の権限が必要です。
論理ビューを管理するには:
- 論理ビューを作成、更新、削除するには、インスタンスに対する Bigtable 管理者(
roles/bigtable.admin)ロールが必要です。 - または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。
- 作成:
bigtable.logicalViews.create - 更新:
bigtable.logicalViews.update - 削除:
bigtable.logicalViews.delete
- 作成:
論理ビューを表示してクエリを実行するには:
- 論理ビューの一覧表示または説明の取得を行うには、インスタンスに対する Bigtable 閲覧者(
roles/bigtable.reader)ロールが必要です。 または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。
- リスト:
bigtable.logicalViews.list - 説明:
bigtable.logicalViews.get
- リスト:
論理ビューにクエリを実行するには、論理ビューに対する
bigtable.logicalViews.readRows権限が必要です。
論理ビューを作成するには:
- ソーステーブルに対する
bigtable.tables.readRows権限が少なくとも必要です。
特定のビューへの読み取りアクセス権を付与するには:
他の Bigtable 権限がない場合でも、特定の論理ビューを読み取る権限をユーザーに付与できます。これを行うには、IAM 条件を使用して、そのビューに対してのみ bigtable.logicalViews.readRows 権限を付与します。
- プロジェクトに対する
bigtable.readerロールをユーザーに付与します。 bigtable.logicalViews.readRows権限を特定の論理ビューに制限する IAM 条件を作成します。次に例を示します。resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW次のように置き換えます。
PROJECT_ID: Bigtable インスタンスが存在する Google Cloud プロジェクト 。VIEW: 新しい論理ビューの ID(最大 128 文字)。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。INSTANCE_ID: 論理ビューを作成するインスタンスの ID。
詳細については、 IAM 条件を使用してリソースへのアクセスを管理するをご覧ください。
使用可能なすべてのロールと権限の詳細については、 IAM を使用した Bigtable のアクセス制御をご覧ください。
論理ビューを作成する
コンソール
コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud
インスタンスを選択します。
ナビゲーション パネルで [Bigtable Studio] をクリックします。
をクリックして [Editor] を選択し、新しいタブを開きます。
クエリエディタでクエリを作成します。クエリが有効な SQL の場合、[有効] メッセージが表示されます。
省略可: ステートメントを SQL スタイルでフォーマットするには、[フォーマット] をクリックします。
[実行] をクリックします。クエリの結果が [結果] テーブルに表示されます。
クエリに問題がなければ、[名前を付けて保存] の展開矢印をクリックして、[論理ビューとして保存] を選択します。
[論理ビューを保存] ダイアログで、ビューの名前を入力し、[保存] をクリックします。
クエリエディタの使用方法の詳細については、データを Bigtable Studio を使用して管理するをご覧ください。
gcloud
論理ビューを作成するには、
gcloud bigtable logical-views create
コマンドを使用します。
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE --query=QUERY
次のように置き換えます。
VIEW: 新しい論理ビューの ID(最大 128 文字)。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。QUERY: Bigtable 用の有効な GoogleSQL クエリINSTANCE: 論理ビューを作成するインスタンスの ID
オプション:
- 論理ビューが削除されないように保護するには、コマンドに
--deletion-protectionフラグを追加します。この設定を適用しない場合、論理ビューは削除できます。論理ビューの削除を明示的に許可するには、--no-deletion-protectionを追加します。詳細については、このドキュメントの 論理ビューを更新するをご覧ください。
論理ビューを更新する
コンソール
コンソールで論理ビューの削除からの保護を更新することはできません。Google Cloud 削除からの保護を有効または無効にするには、Google Cloud CLI を使用します。
コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud
リストからインスタンスを選択します。
ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。
省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。
更新するビューの横にある more_vert 操作メニューをクリックし、 [定義を表示] をクリックします。
クエリを変更します。
[実行] をクリックします。
結果ペインにビューに含めるデータが表示されていることを確認したら、[名前を付けて保存] をクリックします。
ダイアログで、変更したビューの ID を入力します。
ダイアログに、既存のビューを上書きするという警告メッセージが表示されます。
[保存] をクリックします。
gcloud
別のクエリを実行するように論理ビューを更新したり、削除
保護を変更したりするには、
gcloud bigtable logical-views update
コマンドを使用します。クエリ、削除からの保護、またはその両方を指定する必要があります。
論理ビューのクエリを更新するには:
gcloud bigtable logical-views update VIEW \
--instance=INSTANCE --query=QUERY
論理ビューの削除からの保護を有効にするには:
gcloud bigtable logical-views update VIEW \
--instance=INSTANCE \
--deletion-protection=true
論理ビューの削除からの保護を無効にするには:
gcloud bigtable logical-views update VIEW \
--instance=INSTANCE \
--deletion-protection=false
次のように置き換えます。
VIEW: 更新する論理ビューの IDINSTANCE: 論理ビューを含むインスタンスの IDQUERY: 有効な GoogleSQL クエリ
論理ビューを削除する
この操作は元に戻すことができません。
論理ビューで削除からの保護が有効になっている場合は、削除できません。削除からの保護が有効になっている論理ビューを削除するには、論理ビューを更新して削除からの保護を無効にする必要があります。詳細については、このドキュメントの 論理ビューを更新するをご覧ください。
コンソール
コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud
リストからインスタンスを選択します。
ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。
省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。
[ビュー] を展開します。
削除するビューの横にある more_vert 操作メニューをクリックし、 [削除] をクリックします。
gcloud
論理ビューを削除するには、
gcloud bigtable logical-views delete
コマンドを使用します。
gcloud bigtable logical-views delete VIEW \
--instance=INSTANCE
次のように置き換えます。
VIEW: 更新する論理ビューの IDINSTANCE: 論理ビューを含むインスタンスの ID
インスタンスの論理ビューのリストを取得する
インスタンスの論理ビューのリストを表示できます。
コンソール
コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud
リストからインスタンスを選択します。
ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。
省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。
gcloud
インスタンスの論理ビューのリストを表示するには、
gcloud bigtable logical-views list
コマンドを使用します。
gcloud bigtable logical-views list --instance=INSTANCE
INSTANCE をインスタンス ID に置き換えます。
論理ビューについて説明する
論理ビューの詳細を取得するには、gcloud bigtable logical-views
describe コマンドを使用します。
gcloud bigtable logical-views describe VIEW \
--instance=INSTANCE
ターミナルに次のような詳細が表示されます。
createTime: '2025-03-07T19:49:56.316578Z'
etag: W/"/v1/17919275593532352351"
name: projects/my-project/instances/my-instance/logicalViews/my-view
query: SELECT street FROM addresses
updateTime: '2025-03-07T19:49:56.316578Z'
deletion_protection: true
論理ビューをクエリする
論理ビューを作成したら、通常のテーブルにクエリを実行するのと同じように、SQL を使用してクエリを実行できます。SELECT ステートメントの FROM 句で論理ビューを使用できます。
クエリエディタで、ビュー名を参照する GoogleSQL クエリを入力します。たとえば、ビューの名前が MyLogicalView の場合:
SELECT *
FROM MyLogicalView
LIMIT 100;
Bigtable で SQL クエリを実行する方法の詳細については、 クエリエディタで SQL を使用してデータにクエリを実行するをご覧ください。