テーブルとビュー
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 |
Writeable | いいえ | いいえ | ○ |
ストレージ | データはソーステーブルに残ります | データが複製、集計、変換され、新しい読み取り専用テーブルに保存される | データはソーステーブルに残ります |
使用料金 | クエリを実行するコンピューティング処理 | 同期時のコンピューティング処理、ストレージ費用 | クエリを実行するコンピューティング処理 |