テーブルとビュー

Bigtable では、データをテーブルに格納し、テーブルのビューをいくつか作成できます。使用するビューのタイプは、ユースケースによって異なります。

テーブル

Bigtable のテーブル は、行と列にデータを格納する並べ替えられた Key-Value マップです。各行は、一意の行キー でインデックスに登録されます。相互に関連する列は通常、列ファミリー としてグループ化されます。

Bigtable には柔軟なデータモデルがあり、テーブルはスパースです。 つまり、行で列が使用されていない場合、その列にはデータが格納されません。リレーショナル データベースのように、未使用の列に NULL 値を格納する必要はありません。Bigtable テーブルでは、特定の行に 1 つの列があり、その隣の行に 100 個の列がある場合があります。

行では、列に複数のセルを含めることができます。各セルは、4 タプル(行キー、列ファミリー、列修飾子、タイムスタンプ)で識別されます。複数のセルを列に格納すると、その行と列に対して保存されたデータの経時変化を記録できます。

Bigtable テーブルは結合をサポートしていません。トランザクションは 1 つの行内でのみサポートされます。

テーブルはインスタンス レベルのリソースであり、インスタンス内のすべてのクラスタに自動的にレプリケートされます。データ保持は、列ファミリー レベルで設定されるガベージ コレクション ポリシー によって制御されます。

詳細については、 Bigtable の概要スキーマ設計のベスト プラクティスをご覧ください。

ビュー

Bigtable は、論理ビュー、継続的マテリアライズド ビュー、承認済みビューの 3 種類のテーブルビューをサポートしています。ビューを使用すると、元のソースデータへのアクセスを許可することなく、テーブルデータを特定のユーザーやグループと共有できます。

論理ビュー

論理ビュー (単にビュー と呼ばれることもあります)は、SQL クエリの結果です。他の SQL クエリでクエリできる仮想テーブルとして機能します。 詳細については、 論理ビューの作成と管理をご覧ください。

継続的マテリアライズド ビュー

継続的マテリアライズド ビュー は、Bigtable テーブルに対して SQL クエリを継続的に実行することで作成されます。Bigtable は、クエリ出力に基づいて新しいテーブルを作成し、ソーステーブルと同期します。

継続的マテリアライズド ビューは、クエリのパフォーマンスの向上に役立ちます。新しいテーブル(継続的マテリアライズド ビュー)は、ソーステーブルとは異なるスキーマを持ち、ソーステーブルで使用されるクエリとは異なるクエリ用に最適化された事前集計または変換されたデータが含まれています。

継続的マテリアライズド ビューは読み取り専用です。継続的マテリアライズド ビューのストレージと、2 番目のテーブルの作成、ソーステーブルとの同期、レプリケートを行う処理に対して課金されます。

詳細については、継続的マテリアライズド ビューをご覧ください。

承認済みビュー

承認済みビュー は、特定のテーブルデータを含むように構成し、ソーステーブルへのアクセスとは別にアクセス権を付与するテーブルのビューです。承認済みビューは、JSON 形式の定義ファイルで定義されます。

継続的マテリアライズド ビューや論理ビューとは異なり、Bigtable 承認済みビューは、読み取りと書き込みの両方のアクセスを制御するために使用できます。

承認済みビューは、複数の顧客のデータを Bigtable テーブルに保存し、各顧客に自分のデータを含むテーブルのサブセットへのアクセス権のみを付与する場合に便利です。

承認済みビューには、追加のストレージ費用は発生しません。

詳細については、 承認済みビューの概要をご覧ください。

比較

次の表に、Bigtable テーブルビューの違いについて説明します。

論理ビュー 継続的マテリアライズド ビュー 承認済みビュー
構成 SQL クエリの結果を表す仮想テーブル ソーステーブルに基づく読み取り専用テーブル テーブルのサブセット
定義 SQL クエリ SQL クエリ JSON 定義ファイル
ソーステーブルとの整合性 クエリの実行時に整合する 結果整合性 クエリの実行時に整合する
クエリ オプション SQL を使用する必要がある SQL または Bigtable Data API Bigtable Data API
書き込み可能 いいえ いいえ はい
ストレージ データはソーステーブルに残る データが複製、集計、変換され、新しい読み取り専用テーブルに保存される データはソーステーブルに残る
使用料金 クエリを実行するためのコンピューティング処理 同期時のコンピューティング処理、ストレージ費用 クエリを実行するためのコンピューティング処理

次のステップ