承認済みビューの概要
Bigtable の承認済みビューを使用すると、基盤となるテーブルとは別に、テーブルデータの特定のサブセットに対するきめ細かいアクセス権を付与できます。
これらのビューを使用して、マルチテナント テーブル内のデータを分離し、読み取りアクセスと書き込みアクセスの両方を制御できます。他のストレージ システムの更新可能なビューやフィルタされたエイリアスと同様に、何千ものビューをプログラムで作成することもできます。
始める前に、Bigtable ストレージ モデルを理解しておいてください。設定手順については、承認済みビューの作成と管理をご覧ください。
承認済みビューの定義
承認済みビューを作成する場合は、次のいずれかのパラメータを使用して承認済みビューに含めるデータを指定することでビューを定義します。
- 行キーの接頭辞 -
examplepetstore1#で始まるすべての行など - 列修飾子の接頭辞 - 指定された列ファミリー内の、修飾子が
order#で始まるすべての列など - 列修飾子 - 指定された列ファミリー内の
order-examplepetstore列のみなど - 行キー接頭辞と列修飾子を組み合わせたもの
複数の列ファミリーで同じ列修飾子が使用されており、その修飾子を持つすべての列をビューに含める場合は、ビューを定義するときに列修飾子と列ファミリーのすべての組み合わせを個別に指定する必要があります。
承認済みビューの定義に使用する行キーと列修飾子の値は、サービスデータとして扱われます。このため、機密情報を含む行キーまたは列修飾子の値を使用して、承認済みビューを作成しないでください。サービスデータが取り扱われる方法については、Google Cloud のプライバシーに関するお知らせをご覧ください。
ファミリーまたはすべての行に列を含める
基になるテーブルの列ファミリーに追加した列が承認済みビューにも含まれるようにするには、空の文字列("")を列修飾子の接頭辞として指定する必要があります。たとえば、定義ファイルのファミリー サブセットには "qualifierPrefixes": [""] が含まれます。
同様に、テーブルのすべての行を含む承認済みビューを定義する場合は、行キーの接頭辞として空の文字列("")を指定します。定義ファイルでは、ビューのサブセットで "rowPrefixes": [""] と記述されます。
承認済みビューが過度に複雑になるのを防ぐため、Bigtable では最大 10 個の異なる修飾子接頭辞を指定できます。つまり、承認済みビューでは、10 個の修飾子接頭辞を持つ 1 つの列ファミリー、1 つの修飾子接頭辞を持つ 10 個の列ファミリー、または修飾子の合計数が 10 個以下であれば、その間の任意の数を指定できます。
ベスト プラクティスとして、JSON オブジェクトごとにキーを 1 回だけ指定します。列ファミリー名などのキーを複数回指定すると、キーの最後のエントリによって、キーの以前のエントリが上書きされます。
定義ファイルの例
このセクションでは、承認済みビュー定義ファイルの JSON 形式の例を示します。
以下は、承認済みビューの定義ファイルの例です。この承認済みビューには、行キー接頭辞が examplepetstore1# である行の customer 列ファミリーの address 列と、tel で始まる列が含まれます。
{
"subsetView":
{
"rowPrefixes": ["examplepetstore1#"],
"familySubsets":
{
"customer":
{
"qualifiers":["address"],
"qualifierPrefixes":["tel"]
}
}
},
"deletionProtection": true
}
以下は、order 列ファミリーの skus 列と customer 列ファミリーのすべての列を含む承認済みビューの定義ファイルの例です。
{
"subsetView": {
"rowPrefixes": [""],
"familySubsets": {
"order": {
"qualifiers": ["skus"]
},
"customer": {
"qualifierPrefixes": [""]
}
}
}
}
以下は、承認済みビューの定義ファイルの例です。この承認済みビューには、行キー接頭辞が examplepetstore1# である行内の order 列ファミリーの skus 列のデータのみを含みます。
{
"subsetView": {
"rowPrefixes": ["examplepetstore1#"]
"familySubsets": {
"order": {
"qualifiers": ["skus"]
}
}
}
}
以下は、承認済みビューの定義ファイルの例です。この承認済みビューには、order 列ファミリーの skus 列と agents 列のデータ、pet_id 列ファミリーの dog 列、cat 列、bird 列のデータのみが含まれます。
{
"subsetView": {
"rowPrefixes": [""]
"familySubsets": {
"order": {
"qualifiers": ["skus", "agents"]
"pet_id": {
"qualifiers": ["dog", "cat", "bird"]
}
}
}
}
}