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