シャローム!Sato-Gです。
久しぶりの投稿になるけど、この2ヶ月の間に実に色んなことがあった。

まずニュースの一つめとして、ヘヴィなSisense開発案件(月間トランザクション件数15億件)に携わった。
ビッグデータに強いBIとして多くの企業様からお問い合わせをいただき、BIで扱えるデータ件数とはーということを改めて考えさせられた2ヶ月だった。
僕の持論としてはビッグデータをいかにスモールデータのデータセットとして扱えるかーその技術こそがビッグデータで最高のパフォーマンスを得るための腕の見せどころだと考えている。
今回はTealiumというデータ連携・統合基盤(DWHはRedshift)をデータソースとして広告効果を測定するための分析基盤を構築してみた。
どんな時にサーバのリソースを消費するのか?どんな時にデータの前処理をすべきなのか?などなど…トライ&エラーの連続だったけど、ElastiCubeの限界にチャレンジし続けた2ヶ月だった。

次のニュース。
10月中旬にSnowflakeの勉強会を特別に開催していただき、SisenseのElastiCubeでは扱えないボリュームのデータをライブ接続で接続してみたい!という欲求が高まった。
実は以前SisenseのイスラエルのエンジニアとTreasure Dataの件で話す機会があった。当時はTreasure Dataを使用したプロジェクトが進行していたこともあり、Treasure Dataの遅さにうんざりしてたので「Treasure Dataから高速にデータロードするにはどうするの?」「どうやったらライブ接続できるの?」と質問したんだけど、「Treasure Data?知らねえなあ。それはSnowflakeみたいなやつ?」という回答が返ってきた。
こっちにすれば、国内では知名度の低いこのSnowflakeっていうDWHは何者だって感じだったんだけど、2019年9月にSnowflake Japanができ、ついに日本市場に参入するというタイミングで、今回の勉強会を受講してみると、これはやっとかないと!という義務感みたいなものが膨れ上がってきた。

というわけで、3回に分けてSnowflake – Sisense連携を解説していく。

1. Snowflakeとは

2012年の創業のSnowflake Inc.が提供すフルマネージドのDWHサービスだ。資金調達総額は既に1,000億円以上、評価額は約4,200億円で、2018年には米国最初のユニコーン企業となった。
収益、アクティブ顧客数、従業員数とも前年比3倍以上とその成長性は、まさに飛ぶ鳥を落とす勢いだ。
既にGartner, ForesterのDWH領域での評価は既にLeaderとして位置づけられている。
ではなぜ、国内での知名度が低いのかー
それはやはり日本リージョンでのインフラがないためだろうが、Snowflake社はこの1年で20ヵ国以上でSnowflakeを利用できるようにする計画で、東京リージョンも来春までにはサポートされる予定と聞く(2019年11月現在)。

1.1 Snowflakeの特長

Snowflakeは一般的なMPP(Massively Parallel Processing=超並列処理)と比較して以下の点で優れている。
【性能上のメリット】
・コンピュートリソースとストレージリソースを分離しており、複数のワークロードを競合なく、同時に処理できる
・停止しなくても瞬時にスケールアップ・スケールアウト可能
・重い処理はスペックを倍にすれば単純に2分の1の時間で済む
・特に同時実行性能は他のDWH(BigQuery, Redshift, Azure Datawarehouse)を大きく凌駕している
(他にもたくさんあるが、ここでは割愛)
【価格上のメリット】
・他のDWH(BigQuery, Redshift, Azure Datawarehouse)に比較して価格性能比が最も高い
・秒単位で課金され、設定により使用しないときは自動的に停止させ、費用を削減できる

※性能面での検証結果はFivetran社のベンチマークを参考されたい。
https://fivetran.com/blog/warehouse-benchmark

1.2 価格

Snowflakeでは、上に述べたようにウェアハウス(コンピュート)リソースとストレージリソースが分離されているため、別々に課金される。
またSnowflakeは見た目ではSnowflake自体が独自のクラウドサービスにように見えるが、Amazon AWS, Google GCP, Microsoft Azure上で提供されている。
価格体系は以下の基準となる(2019年11月現在)。

・ウェアハウスは以下のクレジットで秒単位で課金される(ウェアハウスサイズ、クラスタ数によって異なる)

Warehouse size Servers / Cluster Credits / h
X-Small 1 1
Small 2 2
Medium 4 4
Large 8 8
X-Large 16 16
2X-Large 32 32
3X-Large 64 64
4X-Large 128 128

・クレジット当りの費用はクラウドプロバイダ、リージョン、Snowflakeのエディションによって異なる。
・料金体系は秒単位の従量課金のオンデマンドと事前購入するキャパシティ(クレジット数に応じて割引がある)の2種類。

Standard Edition Premier Edition Enterprise Edition Business Critical Virtual Private Snowflake
オンデマンド – US
コンピュート $2.00/hr $2.25/hr $3.00/hr $4.00/hr Contact
ストレージ $40/TB/mo
キャパシティ – US
コンピュート Contact Contact
ストレージ $23/TB/mo

尚、30日のフリートライアル期間($400以内)がある。

1.3 Snowflakeのまとめ

どうだろうか。今、クラウドDWHに関して”Snowflake”を選ばないという手はないなと思うのは僕だけではないだろう。
海外では一気にメジャーになったSnowflakeだが、どのようにユーザが増えていったのか聞いてみると、フリートライアルを通して、ユーザー自身が評価して採用され、気づいたらこんなにユーザ数が増えていたというのが実態らしい。
そんなSnowflakeがついに日本上陸!
2020年は国内のクラウドDWH市場に新しい風が吹きそうな予感がする。

2. Snowflakeを立ち上げる

ここまで書いて、Snowflakeを評価しないわけにはいかない。
さっそく無料のアカウントを使用してSnowflakeを立ち上げてみよう。

2.1 Snowflakeのアカウント作成

https://trial.snowflake.com/のサイトにアクセスし、アカウントを作成する。
まず最初の画面では氏名、Email、会社名を登録する。
・First Name
・Last Name
・Email
・Company

次にアカウント情報を入力する。
・Country
・Snowflake Edition(評価用であればEnterpriseでよいと思う)
・Cloud Provider(Amazon Web ServiceかMicrosoft Azureから選択。Google Cloud Platformは2020年にサポート予定)
・Region(AWSの場合、東京リージョンは未サポートのためUS-Westがベター、シンガポールよりレイテンシ、コストとも良いとのこと)
・Phone Number
電話番号を入力したが、今のところ電話は来ていないからおそらくうるさくつきまとわれることはないと思う。

以上の登録が完了すると以下の画面が表示される。

この画面になったら、15分以内にアクティベートメールが送信されるはずだ。

2.2 Snowflakeのユーザ作成

アクティベートメールが届いたら、メール内の「CLICK TO ACTIVATE」をクリックする。

ユーザ情報登録画面が表示されるので、ログインするユーザ名とパスワードを登録する。

2.3 Databases

ユーザ登録が完了すると「Worksheets」タブが自動的に開かれるのだが、タブの左側から説明していく。
一番左の「Databases」タブを開くと以下の画面が表示される。


スキーマ、テーブル、ビューなどを参照できる。
Tablesを開くと、上のように各テーブルのレコード数とサイズが表示されるが、SNOWFLAKE_SAMPLE_DATAというデータベースには、トライアルで使えるかなりのサイズのデータが予め準備されているのはうれしい。”TPCDS_SF100TCL”は100TBで、STORE_SALESテーブルには2880億件ものレコードがあり性能評価には十分、ちょっとウキウキする。

2.4 Shares

プロバイダ(データ提供者)がコンシューマ(データ利用者)に対して、Snowflake内で容易にデータベースの共有が可能で、コンシューマはプロバイダのデータベースを自分のWarehouseから利用することができる(参照のみ)。もしコンシューマがSnowflakeアカウントを持っていない場合でも、プロバイダがReaderアカウントを作成することでコンシューマに利用させることもできるようだ。

2.5 Warehouses

Warehousesではコンピュートリソースを作成し、それぞれのコンピュートリソースの設定を行う。

設定したいWarehouseを選択し、「Configure」をクリックすると、Warehouseを停止することなくSizeやCluster数を変更することができるのでスケールアップ、スケールアウトも自由自在だ。Sizeはデフォルトで”X-Large”に設定されているので、最も小さいX-Smallから評価してみたい。
また「Auto Suspend」により、一定時間利用がない場合、自動的にSuspend状態に移行させることができる(5分~3時間)。
もちろん、クエリが実行されればWarehouseは瞬時に再起動され「Started」になるため、Auto Suspendをうまく利用すればコストを大幅に抑えることができるはずだ。

2.6 Worksheets

Worksheetsはデータベースを操作する時に利用する。SQLを入力し、[Run]ボタンで実行すると「Results」に結果が表示される。また左ペインからテーブル名などを引用することも可能だ。

テーブルを選択し「Preview data」をクリックするとテーブル内をプレビューすることができる。

2.7 Auto Suspend

ちょっとコーヒーを飲んでいたら15分経った。Auto Suspend=10分で設定していたので、Warehouseのステータスを確認すると「Suspend」になっている。

ではここで先ほど同じクエリを実行してみよう。

あれ?まだSuspend状態だ。
SnowflakeはResult Cacheを持っており、約24時間、クエリの実行結果をキャッシュに保持しているため、Warehouseを起動することなく、キャッシュから取得しているようだ。またSnowflakeのLocal Disk Cacheは、クエリ実行時にスキャン対象データをWarehouse内のディスクにキャッシュしており、ストレージのデータと比較して差分をストレージから取得するようだ。

では、SQLを変更して実行してみる。

…起きた。

3. まとめ

Snowflakeを立ち上げ、評価環境ができあがった。
ここまで1時間くらいかな。ほとんど「アカウントを作成すればすぐ使える」レベル。
また、最低限必要な設定はコンソールでできそうだ。
「早くSisenseで繋げよ!」と言われそうだが、今日のところはここまで。
次回、実際にライブ接続でSnowflakeにつないでみる。
ではまた!

この記事が気に入ったら
いいね ! しよう