投稿者:ビッグデータ編集者

Snowflakeという製品をご存知でしょうか。
Snowflakeとは、クラウド上で稼働するSaaSデータウェアハウス製品となります。
(オンプレミスのSnowflakeはありません。)

 
■特徴

Snowflakeのアーキテクチャは以下の図のよう、「Database storage」、「Query processing」、「Coud service」のレイヤーで構成されております。
 
0_1_2_dataload_new.png

各レイヤーの役割は以下の通りとなります。
「Data storage」
 Snowflakeではデータがロードされると、このレイヤーにカラムナー形式でデータを圧縮して保管します。
 データについての圧縮率、構造、メタデータ、統計情報は全てSnowflake側で管理されます。
 また、外部からこのデータを直接参照することはできず、SQL操作でのみデータアクセスが可能となります。

 

「Query processing」
 Snowflake上でSQLが実行された際は、このQuery processingレイヤーで計算されます。
 クエリを処理する際の各コンピュータノードをSnowflakeでは「仮想warehouse」と呼び、
 ユーザはこの「仮想warehouse」を自由に設計することにより、処理時間の調整をすることができます。

 

「Cloud service」
 Cloud serviceレイヤーは、Snowflake全体のアクティビティを調整するサービスのコレクションです。
 これらのサービスは、ログインからクエリディスパッチまでのユーザーリクエストを処理するために、Snowflakeのさまざまなコンポーネントをすべて結び付けます。

  

このような特徴を持つSnowflakeをトライアル版で使ってみた所感等をまとめました。

 

 

■前提

・トライアル環境について

Snowflakeは以下のURLから簡単に作成ができ、30日間の無料トライアル環境が作成できます。
(E-mailアドレスの登録のみでOKとなります!)

 

https://signup.snowflake.com/?utm_cta=website-homepage-bottom-page-free-trial

 

・環境情報について

Snowflakeでは環境リソースについてwarehouse機能により自分で設定ができます。
warehouse機能とはSnowflake上で計算をする際にどれほどのリソースを使用するかを自身で設定できます。
以下がSnowflakeでのwarehouse設定画面となります。

1-1.png

上記のwarehouseのリソース設定ではリソース設定を最小にしております。
ウェアハウスの詳細については以下をご参考ください。
https://docs.Snowflake.com/ja/user-guide/warehouses-overview.html
 
無料枠でもリソース設定は変更可能となりますが、今回の検証では最小環境での検証となります。
 
■機能一覧
DBの一般的な機能についてSnowflakeで実施可能かをまとめた表になります。

2-1_new.png

 

■機能検証
Snowflake 無料トライアル環境で以下の操作を確認してみました!
・ログイン
・コマンドラインからのSQL実行
・データロード
・ウェアハウス
 
 
 
・ログイン

Snowflakeのトライアル版を登録すると環境のURLがメールで送られてきます。
ここでSnowflakeを登録した際のUserとPasswordを入力するとログインできます。

3_1_login.png

ログイン画面は以下のようになります。
以下の画面からSQL操作を実行が可能です。

3_2_top_page.png

 
・コマンドラインからのSQL実行について
snowsqlコマンドをダウンロードするとローカル環境からSnowflakeにコマンド実行可能となります。
※snowsqlのダウンロード先はこちら
https://docs.Snowflake.com/en/user-guide/snowsql-install-config.html

3-3.png

インストーラーを実行してインストールします。
インストール時はデフォルト設定でNextで問題ありません。

3-4.png

インストール完了です。

3-5.png

インストール完了するとexeファイルができますので、こちらをクリックすることでコマンドラインが起動します

3-6.png

snow sqlコマンドラインとなります。
-aオプションでロケーション名 -uオプションでユーザ名を入力してログインできます。

3-7.png

 

・データロード
Snowflakeでは以下のロケーションのデータをロードすることが可能です。

  ローカルデータ
  Amazon S3
  Google Cloud Storage
  Microsoft Azure

データロードの以下の2つのステップにより実行されます。

ステップ1
PUT コマンドを使用して、データファイルをデータロードの中間領域にアップロード(ステージング)します。

ステップ2
COPY INTO <テーブル> コマンドを使用して、ステージングされたファイルの内容をSnowflakeデータベーステーブルにロードします。

0_1_arthitecture_new.png

 

ローカルファイルシステムのデータファイルからロードする場合でも、Snowflakeの外部のクラウドストレージ(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)でもロードする場合でロード手順は同じとなります。

こちらではローカルデータをSnowflakeにロードする方法をご案内します。

まずはsnowsqlを起動し、Snowflakeに接続し、createコマンドで内部ステージ(データベースへのデータロードの中間領域)を作成します。

3-9.png

内部ステージにロードファイルをputコマンドでアップロードします。

3-10.png

copyコマンドで内部ステージからデータベースへloadを行います。

3-11.png

 
・ウェアハウス

ウェアハウスはSnowflakeの計算リソースのクラスターとなります。ウェアハウスは、SnowflakeセッションでDML操作を実行するために、 CPU、メモリ、一時ストレージなどの必要なリソースを提供します
Snowflakeではこのウェアハウスの設定をユーザで自由に設定できる事が特徴となります。

ウェアハウスの設定はGUI画面の[Warehaouse]から設定作成可能です。

3-12.png

size・・・・・リソース環境のサイズを選択可能となります。。
max clusters・・・・・sizeで選択したリソース環境をクラスター化が可能。
           クエリの負荷に応じてMaxで指定した値までリソース環境を使用します。
min clusters・・・・・sizeで選択したリソース環境をクラスター化が可能。
           クエリの負荷に応じてMinで指定した値までリソース環境を節約します。

3-13.png

 

■性能検証
・個別の機能を踏まえた性能検証
以下の条件下での性能検証を実施しました所、28秒となりました。
 
環境:  XSクラスタ 1
検証データ:
・会員情報(1千万件)
・会員のPOSデータ(2億件)
実施した処理:

「会員情報」と「会員のPOSデータ」のから各会員の購入履歴を調査し、優良顧客を検索する。
※下記ルールにて会員に得点を追加していき、得点の高いユーザが優良顧客となります。

4-1.png

 

■所感

〇よいところ
 ・リソース/料金
  1)ウェアハウス機能により使用していない時間帯は自動的にサスペンド状態となり料金発生しない。
  2)クエリの複雑さや処理数により使用するリソースを制御し、軽い処理ならばリソースを少なく使用する。
  3)ウェアハウス機能によりリソースを自由に設定でき、且つシステム停止を伴わずにリソース変更が可能である。
 ・使い易さ
  1)管理コンソール画面が視覚的で分かりやすい。
  2)マニュアルが日本語でも記載してある。索引も充実している。
 ・運用
  1)タイムトラベル機能を使用により、テーブル/スキーマ/データベース単位において
   直近90日間までの自由な時間にデータを戻すことが可能。
  2)cloneコマンドによりタイムトラベル機能で取得している過去データをSQL一つで複製することが可能。
 
〇改善してほしいところ
 ・月額使用料金の見積もりが難しい。(見積もりシミュレータ的なものを期待したい所)
 ・自動サスペンド機能によりサスペンド状態になると、サスペンド後に始めて実行されるSQLの処理時間が遅くなる。
   (サスペンド状態から起動するのに時間がかかるため) 

■総評
Snowflakeトライアル版を使用してみて、一般的なクラウドDWHと比較した総評としては以下の表のように感じました。

5-1.png

まだ、日本に導入されて間もない製品なので、今後のバージョンアップに期待したいところです!!