Googleが提供するGoogle BigQuery、AWSのAmazon Redshift、MicrosoftのAzure Synapse Analyticsなど安価で導入可能なクラウド型のDWH(データウェアハウス)が次々と登場し、ごく小規模なデータから従来の技術では困難だったビッグデータまでデータ活用の幅は大きく広がりました。

そして、2010年代に登場したばかりのサービスながら、データエンジニアリングの世界でいま注目を浴びているDWHが本記事のテーマ「Snowflake」です。

DWHはいずれも各サービスごとの独自機能やアーキテクチャに特徴があり、得意とするデータの処理も異なります。自社の課題、データ用途に合わせて最適なDWHを選択することが重要ですが、一方データエンジニアリングのノウハウがない担当者にとってDWHの比較検討は困難な課題です。

本記事でSnowflakeの特徴をおさえ、DWHの選定に役立てましょう。

Snowflakeとは

Snowflakeは自社のWebサイト(https://www.snowflake.com/?lang=ja)においてSnowflakeのもつ機能を以下の6つとしています。

  1. データエンジニアリング
  2. データレイク
  3. データウェアハウス
  4. データサイエンス
  5. データアプリケーション
  6. データシェアリング

Snowflakeは一般的にDWHサービスと捉えられていますが、この定義ではDWHサービスはあくまでSnowflakeがもつ機能の一部でしかありません。

データ活用におけるDWHは膨大なデータを蓄積して外部からの命令を高速で処理するという目的に特化しており、命令を書き込んだりデータを他のユーザーと共有したりする機能は別のサービスが補うという形が一般的です。

Snowflakeは、DWHに付随する機能も単一のデータプラットフォームとして実装した、多機能なDWHであるのが大きな特徴です。

Snowflakeのアーキテクチャ

DWHとしてのSnowflakeの特徴はSnowflakeのアーキテクチャにあります。

一見ほかのDWHと同様のアーキテクチャに思えるSnowflakeですが、ほかのDWHにはない特徴としては以下の2つを採用している点です。

  • マイクロパーティション
  • ストレージ層とコンピュート層の分離

ここからは、この2つの特徴について説明していきます。

マイクロパーティション

データへの命令はそのデータがあるテーブル全体を読み込んでから上から順に処理されるのが一般的です。

そのため、たとえば100行のデータから「10行目のデータを抽出する命令」と、「90行目のデータを抽出する命令」とでは処理のパフォーマンスが異なります。この場合、より多くの検索が走る分、後者の命令のほうが遅い処理になります。

ひとつのテーブルが抱えるデータ量が大きくなるほど、この処理パフォーマンスの低下も大きくなりますが、日付などで細かくテーブルを分けて無駄な処理を減らし、パフォーマンスを高めるテクニックがパーティション(区切り)です。

またこのパーティションは、行った命令に対して読み込んだデータ量に応じて料金が発生するDWHではコストを押さえるテクニックとしても知られています。

Snowflakeはこのパーティションの考えをさらに発展させ、内部的には無数の細かいテーブルにパーティションしつつ、ユーザーからは単一のテーブルのように扱えるマイクロパーティションを取り入れています。

マイクロパーティションされたそれぞれのテーブルはあらかじめメタデータ(データの最大値・最小値、行数など)が取得されており、データ全体を検索せずメタデータに対して検索をかけることで処理に必要なデータを最小限読み込む構造を実現しています。

メタデータを利用してマイクロパーティション化したテーブルを検索するイメージ

ストレージ層とコンピュート層の分離

DWHはデータを保存するストレージ領域とデータを処理するコンピュート領域が密結合で、膨大なデータに複雑な処理をかけようとするとパフォーマンスが低下するのが一般的です。

Snowflakeではこのパフォーマンス低下を防ぐためにマイクロパーティション化したデータベースを保管するストレージ領域と、ストレージ領域に命令を下すコンピュート層とを完全に分離させています。

ストレージ層はデータの保管、読み出しと書き出しに特化しており、実際に処理を行うのはすべてコンピュート層という構造です。

ストレージ層とコンピュート層は疎結合な状態に保たれているため、ある2つの層のパフォーマンスはお互いの影響を受けません。また同じデータに複数のコンピュート層からアクセスしてもパフォーマンスが落ちにくい特徴があります。

Snowflakeの活用

DWHの処理能力は各社大きな差はありません。またデータに対するセキュリティも高い水準にあります。それをふまえ、上述のアーキテクチャ以外では料金体系とTimeTravel機能が検討の軸になります。

Snowflakeのコスト

Snowflakeはデータを処理する仮想ウェアハウスのサイズ(処理能力)と起動時間に応じて利用料金が決定されます。

そのため、データの規模に応じたサイズのウェアハウスを選び、短時間でデータの処理を終えると料金を押さえることが可能です。

Googleが提供するGoogle BigQueryはストレージ領域とコンピュート領域の大きさを自動で設定するためスケールを設定する余地はありませんが、Snowflakeはウェアハウスのサイズと起動時間をうまく設定することで最小限のリソース・コストでデータの処理が可能です。
データエンジニアリングの知見があり、ウェアハウスの管理ができるのであればコストを押さえてデータを処理できるSnowflakeがおすすめです。

SnowflakeのTimeTravel機能

DWHを運用するなかで致命的なダメージになるのが意図しないデータの削除です。うっかり重要なデータを消してしまい、二度と復旧できなくなってしまうケースはしばしば起こります。
このような事態を防ぐために、SnowflakeはほかのDWHに先駆けてTimeTravelというデータの復元機能を提供しています。

削除されたデータも最大90日間は完全には削除しないため、サポートに問い合わせることでデータを復旧させることができます。
またストレージ層が独立した構造のため、大規模なデータの復旧でもデータベースを停止させることなく復旧が可能な点も魅力のひとつです。

データをロストしてしまうリスクを事前に回避でき、安定してデータを運用したければSnowflakeのTimeTravel機能を軸に選定してもよいかもしれません。

trocco®とSnowflake

弊社はデータ分析基盤構築サービスtrocco®を提供しており、Snowflakeのパートナー企業として、Snowflakeへのデータ統合(ETL)をサポートしています。

Snowflakeとtrocco®を組み合わせることで非エンジニアでも自動で、かつ簡単にデータの扱いが可能です。手動でのデータ転送の必要がなくなることで、より有効にデータを活用することができるでしょう。

以下の記事では例としてtrocco®を利用して画面上の設定のみでSalesforceのデータをSnowflakeへ統合する手順を解説しています。興味をお持ちの方はぜひこの機会にご覧ください。

まとめ

Snowflakeの特徴的なアーキテクチャやほかのDWHにはないTimeTravel機能などを解説しました。

Snowflakeはまだ比較的歴史の浅いDWHですが、ほかのDWHに並ぶほど普及したサービスとなったのは先進的なアーキテクチャによる高い処理能力、ほかのDWHでカバーできない細かいニーズに応えたサービスが大きな要因ではないでしょうか。

モダンな手法を取り入れたDWHを利用してみたい方はぜひSnowflakeの導入を検討してみましょう。

trocco®は、ETL/データ転送・データマート生成・ジョブ管理・データガバナンスなどのデータエンジニアリング領域をカバーした、分析基盤構築・運用の支援SaaSです。trocco®について詳しく知りたいという方は、以下より資料をご覧ください。

trocco® ライター

trocco®ブログの記事ライター データマネジメント関連、trocco®の活用記事などを広めていきます!