はじめに
クラウドデータウェアハウスの Snowflake についての解説です。
Snowflake のアーキテクチャや料金体系、特徴、セキュリティについて説明しています。
概要
- Snowflake 社の提供するクラウド上で動く SaaS 型のデータウェアハウス (DWH) です。
- 類似の DWH 製品としては、以下が挙げられます。
- Amazon Redshift
- Google BigQuery
基本構造
Snowflake は3層のレイヤーから構成されています。
- Cloud Services Layer
- Query Processing Layer
- Database Storage Layer
画像参考: 重要な概念およびアーキテクチャ—snowflake
Cloud Services Layer
Snowflake の各種管理を担うレイヤーです。
認証認可、メタデータ管理を行うほか、クエリを実行前に最適化したりプルーニング (不必要なデータの読み取りを削減することで、処理の対象となるデータを少なくし、性能を向上させる技術のことです。)したりと言った SQL オプティマイザや、トランザクション管理を全般的に処理します。
Query Processing Layer
仮想ウェアハウスが稼働するレイヤーです。
💡仮想ウェアハウス
データに対してクエリを実行するマシンのことで、SQLなどの実行時に稼働します。
BigQuery におけるスロットや、Amazon Redshift Serverless における RPU (Redshift プロセッシング単位)といった概念に近いものとなります。
仮想ウェアハウスの作成には事実上制限がなく、組織の役割やプロジェクトに応じて自由に作成することができます。
ストレージレイヤーと完全に分離する形で、クエリを実行・操作するレイヤーが存在しています。
Database Storage Layer
Snowflake にロードされた全データが置かれるレイヤーです。
データはそれぞれ、内部の最適化されたマイクロパーティションとして保存されます。
このレイヤーに置かれたデータに、ユーザーが直接触れることはできません。
料金
契約形態
Snowflake の契約形態は大きく2種類用意されています。
- オンデマンド
- 基本的な契約形態
- リソースを使用した分だけ料金が発生する重課金方式
- 料金の支払いは毎月
- プリペイドキャパシティ
- 前払方式
- 事前に契約した容量から、毎月の使用量分が消費されていく仕組み
- 契約期間は年単位
- 契約容量もしくは期間が終了した後でも引き続き利用は可能ですが、その場合はオンデマンドに対応した価格が請求される
料金体系とクレジット
Snowflakeの料金は、[ウェアハウス使用料 + ストレージ使用料] で構成されています。
その中でも以下 5つのポイントを抑えておく必要があります。
- クラウドサービスとリージョン
- エディション
- クレジット
- ウェアハウス使用料
- ストレージ使用料
クラウドサービスとリージョン
「どのリージョン」で「どのクラウドサービスを利用するか」で料金が変わります。
2023年4月現在、対応しているクラウドサービスは以下です。
ただし、日本国内のリージョンに対応しているのはAWSとAzureのみとなっています。
最新の対応状況については、Snowflakeの公式ドキュメントを確認ください。
サポートされているクラウドリージョン | Snowflake Documentation
- Amazon Web Service(AWS)
- 東京・大阪リージョンが対応
- Microsoft Azure
- 東日本 (東京)リージョンが対応
- Google Cloud
エディション
Snowflake には4つのエディションが用意されています。
スタンダードエディションが一番基本で、そこからグレードアップしていく形式となっています。
- スタンダード
- エンタープライズ
- ビジネスクリティカル
- バーチャルプライベート
クレジット
ここでは「Snowflake のリソース使用量の単位」を意味しています。
Snowflake の仮想ウェアハウスを「どの程度使用したのか」をクレジットという単位で表し、
1クレジットあたりの価格が上記の選択(クラウドサービス、リージョン、エディション)によって定義されます。
ウェアハウス使用料
仮想ウェアハウスをどの程度使用したかを表します。
仮想ウェアハウスは、XS、S、M、L、XLといったサイズが用意されており、サイズによってクエリの実行速度が決まります。
重要なのは、クレジットが消費されるのは稼働した分に対してのみということです。
つまり、待機時間中にウェアハウスを停止させておけば、その分の費用は発生しません。
ストレージ使用料
Snowflakeに保存しているデータ容量のことです。
1ヶ月あたりの平均バイト数に基づいて計算され、以下のデータが対象です。
- バルクデータのロード/アンロードのためにステージングされているファイル
- データベーステーブルに保存されたデータ
- タイムトラベル機能用に保持される履歴データも含む
- フェールセーフ機能のために保持される履歴データ
特徴
Snowflake の特徴はいくつかありますが、その中から特に大きなものを4つ紹介します。
SQLやGUIによる分析が可能
Snowflake では、ANSI 準拠の SQL が使用可能となっています。
さらに、Snowsightと呼ばれるwebインターフェイスが用意されていて、SQL の扱いに慣れていないユーザーでも画面操作でテーブルの作成やデータの抽出・分析をすることができます。
その他にも、Spark コネクタ の提供や UDFs (ユーザー定義関数)と呼ばれる Python や Javascript 等を利用した高度な分析をサポートしています。
高速なパフォーマンス
各々独立したクラスターが並列で処理しており、負荷に応じてクラスタ数やサイズを最適化できます。
また、複数の層でキャッシュを保持できるため、これを利用してユーザーに結果をすぐに返答することができ、キャッシュを利用し面倒なチューニングなしに検索を最適化が可能です。
ステージを使ったデータロード
Snowflake にデータをロードする際は、データを一旦ステージに配置し、ステージから Snowflake にロードする形を取っています。
ステージとは、Snowflake 用のファイルリポジトリのことで、Snowflake にとってデータをロード・アンロードしやすい環境となっています。
ステージは 2種類存在します。
- Internal Stage (内部ステージ): Snowflake の内部に作るステージ
- External Stage (外部ステージ): Snowflake の外に作るステージ
External Storageとして扱えるクラウドストレージは以下の 3つになります。
- Amazon S3
- Azure Blob
- Google Cloud Storage
過去データにアクセス
Snowflake にはタイムトラベルという機能があり、過去データに対してアクセスが可能です。
データベース、テーブル、スキーマといった各種過去データに対して以下が行えます。
- クエリの実行
- 複製
- リストア
遡れる日数は契約しているエディションによって異なり、スタンダードとプレミアムでは最大 1日、エンタープライズ以上では最大 90日遡ることが可能です。
また、タイムトラベル機能の有効期間を過ぎたデータに対して、さらに 7日間保持するフェールセーフ機能も備えています。
ただし、フェールセーフ機能は Snowflake 社の担当者のみが実行でき、復元には別途手続きが必要となります。
セキュリティ
セキュリティ機能の概要 — Snowflake Documentation
以下のようなカテゴリと機能に分かれており、契約するエディションによって利用できる機能も異なります。
カテゴリ | 機能 | 利用可能なエディション |
---|---|---|
ネットワーク/サイトへのアクセス | IP 許可リストとブロックリストによって制御されるサイトアクセスは、ネットワークポリシー によって管理されます。 | すべて |
セッションポリシー を介した、アカウントまたはユーザーの構成可能なアイドルセッションタイムアウト。 | Enterprise Edition | |
VPC/VNet と Snowflake サービス 間のプライベート通信 | Business Critical Edition | |
Snowflake 内部ステージ へのプライベート通信 | Business Critical Edition | |
ユーザーおよびグループ管理 | SCIM ユーザーIDとグループ(つまり、ロール)を管理します。 | すべて |
アカウント/ユーザー認証 | クライアント認証によるセキュリティ強化のための キーペア認証およびキーローテーション。 | すべて |
MFA (多要素認証)ユーザーによるアカウントアクセスのセキュリティ強化。 | すべて | |
OAuth ユーザーのログイン認証情報を共有または保存せずに認証されたアカウントにアクセス。 | すべて | |
フェデレーション認証によるユーザー SSO(シングルサインオン)のサポート。 | すべて | |
複数のアクティブなキーをサポートするための基本認証(つまり、ユーザー名とパスワード)およびキーペアローテーションの代替としての キーペア認証。 | すべて | |
オブジェクトセキュリティ | DAC (随意アクセス制御)と RBAC (ロールベースのアクセス制御)のハイブリッドモデルを経由した、アカウントに含まれるすべてのオブジェクトへの制御されたアクセス(例: ユーザー、ウェアハウス、データベース、テーブル)。 | すべて |
データセキュリティ | Snowflake テーブルに保存されているすべてのインジェスト済みデータは、 AES-256 の強力な暗号化を使用して 暗号化 されます。 | すべて |
データのロードおよびアンロードのために内部ステージに保存されているすべてのファイルは、 AES-256 の強力な暗号化を使用して自動的に暗号化されます。 | すべて | |
暗号化されたデータの 定期的なキー更新 。 | Enterprise Edition | |
顧客管理キー を使用したデータ暗号化のサポート。 | Business Critical Edition | |
セキュリティの検証 | Soc 1タイプ II およびSoc 2タイプ II コンプライアンス。 | すべて |
HIPAA コンプライアンス。 | Business Critical Edition | |
HITRUST CSF コンプライアンス。 | Business Critical Edition | |
PCI DSS コンプライアンス。 | Business Critical Edition | |
FedRAMP 中程度のコンプライアンス(指定された US 政府リージョン 内)。 | Business Critical Edition | |
IRAP 保護コンプライアンス(指定された アジア太平洋リージョン 内)。 | Business Critical Edition |
参考
最後に
今回は、Snowflake の概要や特徴について解説しました。
記載した内容は Snowflake についてのごく一部の情報です。他にも様々な機能や特徴がありますので、実際に利用する際は公式ドキュメントや紹介記事等を見てみることをお勧めします。
「Snowflake が今話題とは聞くけれど、どういったサービスなのだろう?」と思った方への一助になりましたら幸いです。