1.はじめに

ある程度の規模を持つ企業は、当然のようにデータウェアハウスを構築し、未来の動きを高い精度で分析している昨今、数多あるニーズにこたえるため、データウェアハウス製品もたくさんの種類が世に出ております。

その中でも、現在特に注目されている「Snowflake」という製品について調べる機会がありましたので、ご紹介させて頂きたいと思います。

2.Snowflakeについて

2015年より一般公開されたSnowflake社が提供するSaaS。
OracleやSQLServer、Netezzaなどのビッグデータソフトウェア上には構築されない、独自のアーキテクチャで作られたデータウェアハウスです。

他のデータウェアハウスと多くの類似点を持っていますが、追加の機能と独自の機能も備えています。

3.Snowflakeの独自の機能

まずは性能面…の前に、Snowflakeが持つ代表的な独自機能を紹介します。
日々の運用・保守がし易くなる使いやすい機能ではないでしょうか。

1)タイムトラベル機能

Snowflakeではテーブル、スキーマ、データベースの状態を最大で90日前までの、好きな時間に巻き戻せます。
DWHの運用保守を行っていく上で以下のような問題は、いくら対策をしても必ず発生してしまいます。

  • ヒューマンエラーによる意図しない更新の修正
  • 異常な夜間バッチの動作によるデータの不整合からの切り戻し

データベースの状態をあの頃に戻せたら…という経験をされた方は多いのではないでしょうか?
Snowflakeならこういった問題を起こしてしまっても大丈夫、問題が発生する前に戻ることができます。

使用例 : 夜間バッチ障害が発生した時

2)データ共有・クローン機能

例えば新しいサービスとの連携テスト用に、本番環境と同じデータを持ったデータベースを新しく作ってほしい時
例えば障害が起きた時のデータにデータパッチを入れるため、一度開発環境で試してから本番環境に反映させたい時
例えば分析に使用するために本番データを持ったデータベースを作ってほしい時

これを実現しようとすると、AWSやAzureなどのクラウドサービスにサーバを建てて、ミドルウェアを入れて、設定を行って、権限を作って、データを入れて…

運用に慣れたエンジニアでも数日はかかってしまう作業です。

Snowflakeのデータ共有機能ならコンソール画面からの操作のみで、本番環境と性能的に切り離されたデータベースを作成することが可能です。

使用例 : テスト用にデータベースをクローン
使用例 : テスト用にデータベースをクローン

またこのデータクローン機能、データそのものを複製するアーキテクチャでないため、非常に高速でクローンできます。

3.Snowflakeの性能

ここまでの内容で、これまでのデータウェアハウスのソフトウェアには無い、独自の機能で保守面で大きなメリットがあることは分かっていただけたかと思います。

しかし、運用・保守がし易いだけではデータウェアハウスとして採用できません。

集計に使いたいけど、利用者が増えて負荷が上がるとアクセスできないということになると本末転倒です。また、高額な費用を使って短い時間で処理できる構成を用意しても、その運用費はどの部署がどの程度負担すべきなのかという問題にも発展します。

Snowflakeでは上記の問題を解決するため、ウェアハウスという単位でリソースを管理しています。

1) ウェアハウス

ウェアハウスは非常にざっくりいうとSQLクエリを処理するサーバです。大きいウェアハウスを用意すれば、より巨大なクエリを処理する際に有利だし、たくさんのウェアハウスを用意すれば、より多数のクエリを処理する際に有利です。

このウェアハウスを利用する部門に適切に配置することで、必要な時に必要な分だけのリソースを用意することが可能です。

SQLが実行されていない間は大きさ、サイズに関わらず料金はかからないため、業務に必要とするリソースにのみ適切にお金を支払うことができます。

2) ウェアハウスのスケールアップによる性能向上

ウェアハウスはいつでも(もちろん稼働中でも)スケールアップが可能です。

スケールアップによる性能向上はどの程度なのでしょうか。Snowflakeが用意するサンプルデータで実際に計測してみましょう。
以下は実際にSnoflakeへログインして1440億件超のレコードが入ったテーブルを集計した結果です。

Sサイズのウェアハウスで1億件のデータを集計した時:検索にかかった時間:11分59秒
Lサイズのウェアハウスで1億件のデータを集計した時:検索にかかった時間:4分6秒
※キャッシュ回避のため別カラムで集計

かなり小さいサイズのウェアハウスでも1440億ものレコードを12分で集計。これでも場合によっては業務に耐えられますが、ウェアハウスサイズを大きくした場合は5分と非常に高い性能を発揮しました。

データベースに対するチューニングなしにここまでの性能を発揮可能です。

3) スケールアウトによる性能向上

ウェアハウスの台数を増やして一時的に処理性能を向上させることも可能です。(負荷が増えたら自動で台数増が可能)
残念ながらスケールアウトによる性能向上については、実機での検証ができず…

4.まとめ

最新のデータウェアハウスクラウド「Snowflake」 いかがでしょうか?

  • タイムトラベルによる耐障害対処能力
  • データ複製・共有機能による外部との高速データ共有
  • ウェアハウスによる適切、かつ潤沢なリソース提供

今後のウェアハウスの在り方が大きく変わってきそうではありませんか?

実は他にもまだまだお伝えしたい機能があります。
構築プラットフォーム選択によるディザスタリカバリー、データの公開機能、Vacuum処理不要…etc

是非使ってみてはいかがでしょうか?導入の支援いたします!