はじめに
ある日「Snowflakeのアーキテクチャは世界一美しい」という言葉を耳にしました。
普段よく使用しているSnowflakeがどのような背景でどのような設計思想で開発されたかを詳しく知りたいと思いました。
そこで、Snowflakeの論文「The Snowflake Elastic Data Warehouse」を読んでみることにしました。私は英語もSnowflakeの技術も詳しくないので自分なりの解釈で読んだ内容を書いてみようと思います。
INTRODUCTION
1.クラウドの普及による変化
クラウドの普及によりソフトウェアの提供形態は、自社サーバー上で動かす形からクラウド事業者(Amazon / Google / Microsoft)上で動くSaaS型へと変化しました。
クラウドには主に以下の利点があります。
- 規模の経済(大規模共有インフラ)
- 高いスケーラビリティ
- 高可用性
- 従量課金モデル(使った分だけ支払い)
しかし、重要なのは
ソフトウェア自体がクラウドに合わせて設計されていなければ、このメリットは活かせない
ということです。
従来のデータウェアハウスは以下のような問題点があります。
- 小規模で固定的なクラスター向け設計
- マシンが安定している前提
- クラウド前提ではない
つまり、アーキテクチャ的にクラウドと相性が悪いということです。
2.データの変化
昔のDWHのデータは、データ構造やデータの更新頻度、データのボリュームが決まっていたり予測ができました。一方、クラウドが普及したことでアプリログやIoTセンサーなど半構造化データであり更新頻度も不規則、データのボリュームも膨大になりました。
従来のDWHは以下のような前提でした。
- 重厚なETLパイプライン前提
- 事前の物理設計(インデックス・パーティション)
- データは予測可能で安定している前提
つまり、
「変化の激しいデータ」に弱い
ということです。
3.Big Data基盤(Hadoop / Spark)という選択肢
一部のコミュニティは、HadoopやSparkのようなBig Data基盤へ移行しました。
しかし以下のような問題があります。
- DWHほど効率的ではない
- 機能が不足している
- 導入・運用に多大なエンジニアリング労力が必要
つまり、
強力だが扱いが難しい
ということです。
Snowflake Elastic Data Warehouse
上記の1〜3の理由からSnowflakeはクラウド専用にゼロからDWHを作りました。
それが、
Snowflake Elastic Data Warehouse
です。
Snowflake Elastic Data Warehouseの特徴は以下の8つで表現されています。
①Pure SaaS Experience(完全SaaS体験)
- サーバー購入不要
- DBA不要
- ソフトインストール不要
- チューニング不要
- 物理設計不要
- ストレージメンテ不要
ユーザーは、データをクラウドに置いてクエリ実行するだけです。
② Relational(リレーショナル対応)
- ANSI SQL完全対応
- ACIDトランザクション対応
つまり、既存のOracleやPostgreSQLのSQLをほぼそのまま移行可能です。
③Semi-Structured(半構造化データ対応)
JSONやAvro形式に対応している。
そのため、普通のDWHは、ETLで整形やスキーマ定義、テーブル再設計が必要だが、
Snowflakeは、そのまま格納することができ、 SQLでアクセスが可能です。
④ Elastic(弾力性)
ストレージとコンピュートを完全分離スケール可能です。
そのため、データ可用性や他クエリに影響がないです。
例:
- データ10TB → ストレージ増やすだけ
- クエリ増加 → Warehouseサイズアップ
⑤ Highly Available(高可用)
耐障害性:
- ノード故障OK
- クラスター故障OK
- データセンター全体故障OK
さらに、 アップグレード中も停止しないです。
⑥ Durable(耐久性)
データ消失防止機能:
- Clone(ゼロコピー複製)
- Undrop(誤削除復元)
- クロスリージョンバックアップ
S3の耐久性+追加保護。
⑧ Secure(セキュリティ)
- 保存データ暗号化
- 一時ファイルも暗号化
- 通信も暗号化
- RBAC(ロールベースアクセス制御)
ユーザーデータはクラウド事業者にも見えません。
まとめ
Snowflakeは以下のような設計思想を持っています。
「クラウド時代の理想的なデータ基盤」
・従来DWH:高性能だが運用が重い
・Big Data基盤:柔軟だが扱いが難しい
・Snowflake:
✔ DWHの使いやすさ
✔ クラウドの弾力性
✔ Big Data対応
✔ 運用ゼロ思想
を融合しています。
Snowflakeは
「インフラを完全に隠した、クラウド専用データウェアハウス」
