Snowflakeの概要を整理してみた

# 背景・目的
先日、データ基盤系のMeetupでSnowflakeの優秀さを聞いたこと、そして、以前から気になっていたこともあり簡単に調べてみたいと思います。

# まとめ
下記に特徴を整理します。

|特徴 |説明 |
|:--|:--|
|概要| セルフマネージドサービスのSQLクエリエンジン<BR>クラウドネイティブに設計されているアーキテクチャ|
|セルフマネージドサービス|・HWの管理不要<BR>・SWのインストールや管理は不要<BR>・メンテナンス、管理、アップグレード、チューニングはSnowflakeで行われる|
|アーキテクチャ|・シェアドナッシングDBアーキテクチャと共有ディスクアーキテクチャのハイブリッド<BR>・プラットフォーム内のすべてのコンピュートノードからアクセスできる永続データ用の中央リポジトリを有する<BR>・MPPクラスタを使用してクエリを処理|
|Database Storage|下記について、Snowflakeが処理する。利用者はSQLを通してアクセスするのみ。ファイルにアクセスはできない<BR>　・Organization<BR>　・ファイル<BR>　・サイズ<BR>　・構造<BR>　・圧縮<BR>　・メタデータ|
| Query Processing|・クエリの実行は Processing Layerで実行される。<BR>・仮想ウェアハウスは、クラウドプロバイダーのコンピューティングノードで構成されるMPPクラスタ<BR>・各仮想ウェアハウスは、他の仮想ウェアハウスとコンピューティングリソースを共有しない独立したコンピューティングクラスタ<BR>・他の仮想ウェアハウスから影響受けない（ノイジネイバーは起きない|
|Cloud Services|・Snowflake全体のアクティビティを調整するサービスのコレクション<BR>・下記のサービスを有する<BR>・ 認証<BR>・ インフラ管理<BR>・ メタデータ管理<BR>・ クエリの解析と最適化<BR>・ アクセス制御|
|Connecting to Snowflake|下記により接続できる。 <BR>・Web<BR>・コマンドライン<BR>・ODBC/JDBCドライバ<BR>・ネイティブコネクタ<BR>・ETLやBIなどのサードパーティコネクタ|
|Supported Cloud Platforms|・AWS<BR>・GCP<BR>・Azure|
|Data Loading|下記の場所に配置されたファイルからデータの読み込みをサポートする<BR>・Snowflake 内部ストレージ<BR>・S3<BR>・Google Cloud Storage<BR>・Azure blob storage|
|Pricing|・Standard（2.85 USD / credit）<BR>・Enterprise（4.30 USD / credit）<BR>・Buysiness Critical（5.70 USD / credit）<BR>・Virtual Private Snowflake　（記載なし）<BR><BR>※カッコ内は、AWSのap-northeast-1の料金<BR><BR>OPTIMIZED STORAGEの料金も発生する。<BR>圧縮後のストレージの平均量に対して月額で料金がかかる|
|Standard Edition|・入門レベル<BR>・すべての標準機能への完全かつ無制限アクセス<BR>・コストバランスが優れている|
|Enterprise Edition|・Standardの機能を包含している<BR>・大規模な企業や組織のニーズに合わせて設計された追加機能を提供|
|Buysiness Critical|・Enterprise Editionの機能を包含している<BR>・強化されたセキュリティとデータ保護が追加されている<BR>・DBのフェールオーバー、フェールバックが可能<BR>・機密性高いデータ<BR>・HIPPA、HITRUST CSF規制に準拠する必要があるPHIデータを扱う組織のニーズをサポートするために高いレベルのデータ保護を提供|
|Virtual Private Snowflake|・Business Criticalの機能を包含している<BR>・最高レベルのセキュリティ<BR>・他のすべてのSnowflakeアカウントから分離された完全に別のSnowflake環境に含まれる|

# 概要
## Key Concepts & Architecture
[Key Concepts & Architecture](https://docs.snowflake.com/en/user-guide/intro-key-concepts)を元に整理します。

> Snowflake のデータ クラウドは、セルフマネージド サービスとして提供される高度なデータ プラットフォームを利用しています。 Snowflake は、従来の製品よりも高速で使いやすく、はるかに柔軟なデータ ストレージ、処理、分析ソリューションを可能にします。

- セルフマネージドサービス

> Snowflake データ プラットフォームは、既存のデータベース テクノロジーや Hadoop などの「ビッグ データ」ソフトウェア プラットフォーム上に構築されていません。代わりに、Snowflake は、まったく新しい SQL クエリ エンジンと、クラウド向けにネイティブに設計された革新的なアーキテクチャを組み合わせています。 Snowflake は、エンタープライズ分析データベースのすべての機能に加え、多くの追加の特別な機能や独自の機能をユーザーに提供します。

- SQLクエリエンジン
- クラウド向けに設計された革新的なアーキテクチャ

### Data Platform as a Self-managed Service
> Snowflake は真の自己管理型サービスであり、次のことを意味します。
> - ハードウェア (仮想または物理) を選択、インストール、構成、または管理する必要はありません。
> - 事実上、ソフトウェアのインストール、構成、管理は必要ありません。
> - 継続的なメンテナンス、管理、アップグレード、チューニングは Snowflake によって処理されます。

- HWの管理不要
- SWのインストールや管理は不要
- メンテナンス、管理、アップグレード、チューニングはSnowflakeで行われる

> Snowflake は完全にクラウド インフラストラクチャ上で実行されます。 Snowflake のサービスのすべてのコンポーネント (オプションのコマンド ライン クライアント、ドライバー、コネクタを除く) は、パブリック クラウド インフラストラクチャで実行されます。
> Snowflake は、コンピューティングのニーズに仮想コンピューティング インスタンスを使用し、データの永続的なストレージにストレージ サービスを使用します。 Snowflake は、プライベート クラウド インフラストラクチャ (オンプレミスまたはホスト型) では実行できません。
> Snowflake は、ユーザーがインストールできるパッケージ化されたソフトウェア製品ではありません。 Snowflake は、ソフトウェアのインストールと更新のあらゆる側面を管理します。

### Snowflake Architecture

> Snowflake のアーキテクチャは、従来の共有ディスク アーキテクチャとシェアードナッシング データベース アーキテクチャのハイブリッドです。共有ディスク アーキテクチャと同様に、Snowflake は、プラットフォーム内のすべての計算ノードからアクセスできる永続データ用の中央データ リポジトリを使用します。ただし、シェアードナッシング アーキテクチャと同様に、Snowflake は、クラスター内の各ノードがデータ セット全体の一部をローカルに保存する MPP (超並列処理) 計算クラスターを使用してクエリを処理します。このアプローチでは、共有ディスク アーキテクチャのデータ管理の簡素化を実現しながら、シェアード ナッシング アーキテクチャのパフォーマンスとスケールアウトの利点も得られます。

- 下記のハイブリッドなアーキテクチャ
    - シェアドナッシングDBアーキテクチャ
    - 共有ディスクアーキテクチャ
- プラットフォーム内のすべてのコンピュートノードからアクセスできる永続データ用の中央リポジトリを有する
- MPPクラスタを使用してクエリを処理

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/79a9fac7-c1b9-b915-c2a6-c4534f579b56.png)
※出典：[Snowflake Architecture](https://docs.snowflake.com/en/user-guide/intro-key-concepts#snowflake-architecture)より抜粋

#### Database Storage
> データが Snowflake にロードされると、Snowflake はそのデータを内部的に最適化された圧縮された列形式に再編成します。 Snowflake は、この最適化されたデータをクラウド ストレージに保存します。

- データは内部的に最適化された列形式に再編成し、ストレージに保存する

> Snowflake は、このデータの保存方法のすべての側面を管理します。編成、ファイル サイズ、構造、圧縮、メタデータ、統計、およびデータ ストレージのその他の側面は、Snowflake によって処理されます。 Snowflake によって保存されたデータ オブジェクトは、顧客が直接表示したりアクセスしたりすることはできません。これらには、Snowflake を使用して実行される SQL クエリ操作を通じてのみアクセスできます。

- 下記についてSnowflakeにより処理される
    - Organization
    - ファイル
    - サイズ
    - 構造
    - 圧縮
    - メタデータ
- 利用者はSQLを通してアクセスするのみ。ファイルにアクセスはできない

#### Query Processing
> クエリの実行は処理層で実行されます。 Snowflake は、「仮想ウェアハウス」を使用してクエリを処理します。各仮想ウェアハウスは、クラウド プロバイダーから Snowflake によって割り当てられた複数のコンピューティング ノードで構成される MPP コンピューティング クラスターです。

- クエリの実行は Processing Layerで実行される
- 仮想ウェアハウスは、クラウドプロバイダーのコンピューティングノードで構成されるMPPクラスタ

> 各仮想ウェアハウスは、他の仮想ウェアハウスとコンピューティング リソースを共有しない独立したコンピューティング クラスターです。その結果、各仮想ウェアハウスは他の仮想ウェアハウスのパフォーマンスに影響を与えません。

- 各仮想ウェアハウスは、他の仮想ウェアハウスとコンピューティングリソースを共有しない独立したコンピューティングクラスタ
- 他の仮想ウェアハウスから影響受けない（ノイジネイバーは起きない）

#### Cloud Services
> クラウド サービス レイヤーは、Snowflake 全体のアクティビティを調整するサービスのコレクションです。これらのサービスは、ログインからクエリのディスパッチまでのユーザー要求を処理するために、Snowflake のさまざまなコンポーネントをすべて結び付けます。クラウド サービス レイヤーは、クラウド プロバイダーから Snowflake によってプロビジョニングされたコンピューティング インスタンスでも実行されます。

> この層で管理されるサービスには次のものが含まれます。
> - 認証
> - インフラ管理
> - メタデータ管理
> - クエリの解析と最適化
> - アクセス制御

- Snowflake全体のアクティビティを調整するサービスのコレクション
- 下記のサービスを有する
    - 認証
    - インフラ管理
    - メタデータ管理
    - クエリの解析と最適化
    - アクセス制御

### Connecting to Snowflake
Snowflake は、サービスに接続する複数の方法をサポートしています。
> - Snowflake の管理と使用のあらゆる側面にアクセスできる Web ベースのユーザー インターフェイス。
> - Snowflake の管理と使用のあらゆる面にアクセスできるコマンド ライン クライアント (SnowSQL など)。
> - 他のアプリケーション (Tableau など) が Snowflake に接続するために使用できる ODBC および JDBC ドライバー。
> - Snowflake に接続するアプリケーションの開発に使用できるネイティブ コネクタ (Python、Spark など)。
> - ETL ツール (Informatica など) や BI ツール (ThoughtSpot など) などのアプリケーションを Snowflake に接続するために使用できるサードパーティのコネクタ。

- 接続する複数の方法をサポートする
    - Web
    - コマンドライン
    - ODBC/JDBCドライバ
    - ネイティブコネクタ
    - ETLやBIなどのサードパーティコネクタ

## Supported Cloud Platforms
[Supported Cloud Platforms](https://docs.snowflake.com/en/user-guide/intro-cloud-platforms)を元に整理します
> Snowflake は、完全にクラウド インフラストラクチャ上で実行されるセルフマネージド サービスとして提供されます。これは、 Snowflake のアーキテクチャの 3 つのレイヤー(ストレージ、コンピューティング、クラウド サービス) がすべて、選択されたクラウド プラットフォーム上で完全にデプロイおよび管理されることを意味します。
> Snowflake アカウントは、次のいずれかのクラウド プラットフォームでホストできます。
> - アマゾン ウェブ サービス (AWS)
> - Google クラウド プラットフォーム (GCP)
> - マイクロソフトアジュール（Azure）


### Pricing
> クレジットとデータストレージの単価の差は、各クラウドプラットフォームの地域ごとに計算されます。特定の地域およびプラットフォームに関連する価格の詳細については、 (Snowflake Web サイト上の)価格ページを参照してください 。

- クラウドプラッフォームのRegionごとに計算される

#### Snowflake pricing
[Snowflake pricing](https://www.snowflake.com/en/data-cloud/pricing-options/)を元に整理します

4つのエディションがある（カッコ内は、AWSのap-northeast-1の料金）
- Standard（2.85 USD / credit）
- Enterprise（4.30 USD / credit）
- Buysiness Critical（5.70 USD / credit）
- Virtual Private Snowflake　（記載なし）

##### OPTIMIZED STORAGE
> Snowflake は、プラットフォームに保存されたデータに対して月額料金を請求します。 Snowflake に取り込まれたデータについて、圧縮後の月ごとに使用されるストレージの平均量を使用して計算されます。

- 圧縮後のストレージの平均量に対して月額で料金がかかる
    - オンデマンドストレージ （25USD /TB/月額）
    - Capacity Storage （25USD /TB/月額）
- Capacity Storageは、大容量顧客向けの割引ストレージ


### Data Loading
> Snowflake は、Snowflake アカウントのクラウド プラットフォームに関係なく、次のいずれかの場所にステージングされたファイルからのデータの読み込みをサポートします。

> - Internal (i.e. Snowflake) stages
> - Amazon S3
> - Google Cloud Storage
> - Microsoft Azure blob storage


> Snowflake は、一括データ読み込みと継続的データ読み込み (Snowpipe) の両方をサポートします。同様に、Snowflake は、テーブルから上記のステージング場所のいずれかへのデータのアンロードをサポートします。

- 下記の場所に配置されたファイルからデータの読み込みをサポートする
    - Snowflake 内部ストレージ
    - S3
    - Google Cloud Storage
    - Azure blob storage

### HITRUST CSF 認証
> この認定は、規制順守およびリスク管理における Snowflake のセキュリティ体制を強化し、Business Critical (またはそれ以上) の Snowflake エディションに適用されます。詳細については、「Snowflake セキュリティおよびトラスト センター」を参照してください。

- HITRUST CSFとは、規制遵守とリスク管理のための、業界を問わない認証フレームワーク
- Business Critical以上のSnowflakeエディションに適用される

### Partner Applications
> 多くのパートナー アプリケーションは Snowflake アカウントで動作します。詳細については、「Snowflake エコシステム」を参照してください。

- 多くのパートナーアプリケーションがSnowflakeアカウントで動作する



## Snowflake Editions
[Snowflake Editions](https://docs.snowflake.com/en/user-guide/intro-editions)を元に整理します
### Overview of Editions


4つのエディションがあります
- Standard
- Enterprise
- Buysiness Critical
- Virtual Private Snowflake

#### Standard
> Standard Edition は入門レベルの製品で、Snowflake のすべての標準機能への完全かつ無制限のアクセスを提供します。機能、サポートのレベル、コストのバランスが優れています。

- 入門レベル
- すべての標準機能への完全かつ無制限アクセス
- コストバランスが優れている

#### Enterprise
> Enterprise Edition は、 Standard Editionのすべての機能とサービスに加えて、大規模な企業や組織のニーズに合わせて特別に設計された追加機能を提供します。

- Standardの機能を包含している
- 大規模な企業や組織のニーズに合わせて設計された追加機能を提供


#### Buysiness Critical
> 以前は Enterprise for Sensitive Data (ESD) として知られていた Business Critical Edition は、非常に機密性の高いデータ、特に HIPAA およびHITRUST CSF規制に準拠する必要がある PHI データを扱う組織のニーズをサポートするために、さらに高いレベルのデータ保護を提供します 。

> これには、 Enterprise Editionのすべての機能とサービスが含まれており、強化されたセキュリティとデータ保護が追加されています。さらに、データベースのフェイルオーバー/フェイルバックにより、ビジネス継続性と災害復旧のサポートが追加されます。

> 注記
HIPAA およびHITRUST CSF規制の要求に従って、PHI データを Snowflake に保存するには、事前に代理店/組織と Snowflake Inc との間で署名済みの業務提携契約 (BAA) を締結する必要があります。

- Enterprise Editionの機能を包含している
- 強化されたセキュリティとデータ保護が追加されている
- DBのフェールオーバー、フェールバックが可能
- 機密性高いデータ
- HIPPA、HITRUST CSF規制に準拠する必要があるPHIデータを扱う組織のニーズをサポートするために高いレベルのデータ保護を提供


#### Virtual Private Snowflake
> Virtual Private Snowflake は、機密性の高いデータを収集、分析、共有する金融機関やその他の大企業など、最も厳しい要件を持つ組織に最高レベルのセキュリティを提供します。

> Business Critical Editionのすべての機能とサービスが含まれていますが、他のすべての Snowflake アカウントから分離された完全に別個の Snowflake 環境に含まれます (つまり、VPS アカウントは VPS 外部のアカウントとリソースを共有しません)。ただし、VPS 以外の顧客とのデータ共有を有効にすることもできます。詳細については、「Virtual Private Snowflake での自動フルフィルメントのサポート」を参照してください。


- Business Criticalの機能を包含している
- 最高レベルのセキュリティ
- 他のすべてのSnowflakeアカウントから分離された完全に別のSnowflake環境に含まれる


# 考察
今回、Snowflakeのドキュメントを元に概要を整理してみました。概要レベルではSnowflakらしさを感じるとるところまで到達できませんでした。
製品本体だけではなく、周辺の製品や機能なども優秀とも聞いていますので、今後は実際に触って感じ取ってみたいと思います。


# 参考
https://docs.snowflake.com/en/user-guide/intro-key-concepts

https://www.snowflake.com/en/data-cloud/pricing-options/

https://docs.snowflake.com/en/user-guide/intro-editions