Snowflake はクラウドベースの データウェアハウス(DWH)サービス であり、AWS、Azure、GCP といったパブリッククラウド上でフルマネージド型として提供される。
最大の特徴は コンピューティングリソースとストレージの分離(Separation of Compute and Storage) にあり、柔軟な拡張性とコスト効率を両立する。利用者はインフラ管理を意識することなく、SQLベースでデータの分析・共有・統合を実行できる。
1.登場の背景
-
オンプレミスDWHの限界
- サーバー容量が固定 → トラフィック増加時の拡張が困難
- 保守・ライセンスコストの増大
- Hadoopなど分散システムは柔軟だが運用管理が複雑
-
クラウド移行の潮流
- AWS Redshift、Google BigQuery、Azure Synapse などクラウドDWHが登場
- しかし多くは ストレージとコンピューティングの完全分離 が不十分、または同時実行性能に制約あり
-
Snowflakeの登場(2012年設立)
- クラウドネイティブ設計
- ストレージとコンピューティングを完全分離、必要に応じて独立した Virtual Warehouse(コンピューティングクラスター)を作成可能
- データ共有機能、半構造化データ(JSON, Avro, Parquet)への対応
これらの差別化要素により、Snowflake は急速に普及し、SaaS型データ分析基盤の標準の一つとなった。
利用方法
① 基本構造
- Storage Layer: データ保存(カラム形式・圧縮・自動最適化)
- Compute Layer: Virtual Warehouse(クエリ実行単位)。独立してスケールアップ/ダウン可能
- Services Layer: 認証、メタデータ管理、最適化、クエリプラン制御
② 主な特徴
- サーバーレス管理: インフラ構築不要
- 無制限の同時実行性: 複数の Virtual Warehouse が同時に同一データへアクセス可能
- データ共有: アカウント間で安全にデータを共有できる
-
半構造化データ対応:
VARIANT
型により JSON/Avro/Parquet を直接処理可能
③ 基本的な操作例
A. アカウント作成・接続
Web UI、CLI(snowsql
)、Python Connector などからアクセス可能
B. スキーマ・テーブル作成
CREATE DATABASE MY_DB;
USE DATABASE MY_DB;
CREATE SCHEMA MY_SCHEMA;
CREATE TABLE MY_SCHEMA.USERS (
ID INT,
NAME STRING,
CREATED_AT TIMESTAMP
);
C. データロード(Stage経由)
CREATE STAGE my_stage URL='s3://my-bucket/data/';
COPY INTO MY_SCHEMA.USERS
FROM @my_stage/users.csv
FILE_FORMAT=(TYPE=CSV FIELD_OPTIONALLY_ENCLOSED_BY='"');
D. クエリ実行
SELECT NAME, COUNT(*)
FROM MY_SCHEMA.USERS
GROUP BY NAME;
E. Virtual Warehouse管理
CREATE WAREHOUSE MY_WH WITH WAREHOUSE_SIZE = 'XSMALL';
USE WAREHOUSE MY_WH;
F. データ共有
CREATE SHARE my_share;
GRANT USAGE ON DATABASE MY_DB TO SHARE my_share;
GRANT SELECT ON ALL TABLES IN SCHEMA MY_SCHEMA TO SHARE my_share;
まとめ
- 定義: クラウドネイティブなDWHサービス
- 背景: オンプレDWHの限界とクラウド移行の流れの中で、ストレージ・コンピューティング分離アーキテクチャを採用
- 利用法: SQLによる定義・ロード・クエリ、Virtual Warehouseの柔軟な拡張、Stageによる外部データ連携、安全なデータ共有
データウェアハウス(DWH)の定義
データウェアハウス(Data Warehouse, DWH) とは、企業の 意思決定(Decision Making) を支援するために、ERP、CRM、Webログ、外部データなど複数の業務システムから収集したデータを一元的に蓄積し、分析・参照に最適化したデータベースシステム
その本質的な特徴は以下の通り:
- 主題志向(Subject-Oriented): 売上・顧客・製品・組織など分析テーマ別に設計
- 統合性(Integrated): 異なるソースデータを一貫した形式に変換・統合
- 時系列性(Time-Variant): 過去から現在までの推移を時系列で保持
- 非揮発性(Non-Volatile): 運用DBと異なり頻繁に更新されず、主に参照・分析用途に利用