第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ / 想定学習時間:30〜40分 / 最終確認:2026年8月

1-4. オブジェクト階層とコンテキスト

🎯 この節の学習目標

1. 階層の全体像:Organization から オブジェクトまで

Snowflake のすべてのオブジェクトは、明確な階層構造の中に位置づけられています。まず全体像を図で押さえましょう。

Organization(組織)企業・団体単位の最上位。複数のアカウントを束ねて管理する
Account(アカウント)クラウド・リージョン・エディションの単位(1-2参照)。ユーザー・ロール・ウェアハウス等もこのレベル
Database(データベース)スキーマの入れ物
Schema(スキーマ)スキーマオブジェクトの入れ物
テーブル / ビュー
ステージ / ファイルフォーマット
パイプ / ストリーム / タスク
シーケンス / 関数 / プロシージャ

図:Snowflake のオブジェクト階層。Organization → Account → Database → Schema → スキーマオブジェクト

Organization(組織)は複数のアカウントを束ねる最上位の概念で、アカウントの作成やアカウント横断の管理・請求の把握などに使われます。1-2 で学んだとおり、クラウド・リージョン・エディションはアカウント単位で決まるため、たとえば「AWS 東京リージョンのアカウント」と「Azure のアカウント」を1つの組織の下にぶら下げる、といった構成が可能です。

2. アカウントレベルオブジェクトとスキーマオブジェクト

オブジェクトには、アカウント直下に存在するものと、スキーマの中に存在するものの2種類があります。この区別は権限管理(第2章)の土台にもなるため、正確に押さえましょう。

区分主なオブジェクト
アカウントレベルオブジェクトユーザー、ロール、ウェアハウス、データベース、リソースモニター、インテグレーション、シェア
スキーマオブジェクトテーブル、ビュー、ステージ、ファイルフォーマット、シーケンス、パイプ、ストリーム、タスク、関数(UDF)、ストアドプロシージャ など

📝 試験のポイント

「ウェアハウスはどのデータベースに属するか」という問いは引っかけです。ウェアハウスはアカウントレベルのオブジェクトであり、特定のデータベースやスキーマには属しません。同様に、ユーザー・ロール・リソースモニター・シェアもアカウントレベルです。一方、ステージやパイプ、タスクは「スキーマの中」に作られる点に注意しましょう。オブジェクトがどのレベルに属するかは、試験で問われやすい論点です。

3. 完全修飾名とコンテキスト

スキーマオブジェクトは データベース名.スキーマ名.オブジェクト名 の形式で一意に指定できます。これを完全修飾名と呼びます。一方、セッションには「いま、どのロール・ウェアハウス・データベース・スキーマを使っているか」というコンテキストがあり、USE コマンドで切り替えます。

💡 具体例:コンテキストの設定と完全修飾名

-- セッションのコンテキストを設定する
USE ROLE analyst_role;          -- 使用するロール
USE WAREHOUSE analytics_wh;     -- 使用するウェアハウス
USE DATABASE sales_db;          -- 既定のデータベース
USE SCHEMA public;              -- 既定のスキーマ

-- コンテキストが設定されていれば、短い名前で参照できる
SELECT * FROM orders;

-- 完全修飾名なら、コンテキストに関係なく一意に参照できる
SELECT * FROM sales_db.public.orders;

共有するスクリプトやタスクの定義では、実行時のコンテキストに依存しない完全修飾名で書いておくと、意図しないオブジェクトを参照する事故を防げます。

なお、USE ROLE は「どの権限で操作するか」、USE WAREHOUSE は「どの計算資源でクエリを実行するか」を決めるもので、データベース・スキーマの選択とは役割が異なります。4つの USE をセットで覚えておきましょう。

4. ビューの3種類

スキーマオブジェクトの中でも、ビューには3つの種類があり、それぞれ目的が異なります。

種類特徴主な用途
標準ビュークエリ定義を保存したもの。参照のたびに定義の SQL が実行されるロジックの再利用、列の絞り込みによる簡易的なアクセス制御
セキュアビュービュー定義が他のユーザーから見えないよう秘匿され、定義を推測されうる内部最適化も制限される定義や元データを隠したい場合。データ共有(シェア)でビューを公開する際は必須級
マテリアライズドビュークエリ結果を事前計算して保存し、参照時は保存済み結果を使う。元テーブルの変更は自動でメンテナンスされる(Enterprise 以上、1-2参照)繰り返し実行される集計クエリの高速化(詳細は 4-4)

📝 試験のポイント

「ビューの定義(SQL)を他のロールから隠したい」→ セキュアビュー、「集計結果を事前計算して速くしたい」→ マテリアライズドビュー、という使い分けが問われることがあります。また、セキュアビューは定義の秘匿と引き換えに、オプティマイザの一部の最適化が適用されなくなるため、同じ定義の標準ビューより性能面で不利になる場合があるという性質も覚えておきましょう。

✅ この節のまとめ

練習問題

問1. Snowflake のオブジェクト階層として正しいものはどれか。

  1. Account > Organization > Database > Schema > テーブル
  2. Organization > Account > Schema > Database > テーブル
  3. Organization > Account > Database > Schema > テーブル
  4. Organization > Database > Account > Schema > テーブル
解答と解説を見る

正解:C

正しい階層は Organization(組織)> Account(アカウント)> Database > Schema > スキーマオブジェクト(テーブル等)です。Aは Organization と Account が逆、Bは Database と Schema が逆、Dは Account の位置が誤っています。「組織が複数アカウントを束ね、アカウントの中にデータベース、その中にスキーマ、その中にテーブル」という入れ子を確実に覚えましょう。

問2. アカウントレベルのオブジェクトはどれか(2つ選べ)。

  1. 仮想ウェアハウス
  2. ステージ
  3. リソースモニター
  4. ストリーム
解答と解説を見る

正解:A・C

仮想ウェアハウスとリソースモニターはアカウントレベルのオブジェクトで、特定のデータベースやスキーマには属しません。Bのステージと Dのストリームはスキーマの中に作られるスキーマオブジェクトです。ウェアハウスがスキーマオブジェクトだと誤解しやすいので、「計算資源や管理系(ユーザー・ロール・リソースモニター・シェア)はアカウントレベル」と整理しておきましょう。

問3. セッションで使用する仮想ウェアハウスを切り替えるコマンドはどれか。

  1. USE DATABASE analytics_wh;
  2. USE WAREHOUSE analytics_wh;
  3. USE SCHEMA analytics_wh;
  4. USE ROLE analytics_wh;
解答と解説を見る

正解:B

ウェアハウスの切り替えは USE WAREHOUSE です。USE DATABASE / USE SCHEMA は名前解決の既定(どの db.schema を省略時に補うか)を決めるもの、USE ROLE はどの権限セットで操作するかを決めるものです。4つの USE コマンドはそれぞれ役割が異なるため、対象(ロール/ウェアハウス/データベース/スキーマ)とセットで覚えましょう。

問4. データ共有(シェア)で社外にビューを公開する際、ビューの定義を受領側から秘匿したい。使用すべきビューはどれか。

  1. 標準ビュー
  2. セキュアビュー
  3. マテリアライズドビュー
  4. どのビューでも定義は自動的に秘匿される
解答と解説を見る

正解:B

セキュアビューは定義(SQL)を権限のないユーザーから秘匿し、定義を推測されうる最適化も制限されるビューで、データ共有でビューを公開する場面では必須級の選択です。Aの標準ビューは権限があれば定義を参照できてしまいます。Cのマテリアライズドビューは結果の事前計算による高速化が目的で、秘匿の仕組みではありません。Dは誤りで、秘匿はセキュアビューを明示的に選んだ場合の性質です。