Snowflake vs BigQuery徹底比較

はじめに

近年のDX化に伴い、企業が保有するデジタルデータは増える一方となりました。そこで重要となるのはそのデータの活かし方となってきますが、データの適切な管理をしないと宝の持ち腐れとなってしまいます。本記事ではデータ管理の代表となりつつあるBigQuerySnowflakeをみていくことでこれら自体のパフォーマンスの理解とデータの管理方法について理解を深めていきたいと思います。

まず、BigQueryとSnowflakeはDWH(データウェアハウス)の一種となります。このDWHはわかりやすく説明するとデータの空箱であり、箱からの活用をしやすくする仕組みとなり、いわゆるサービスで扱うトランザクションデータベースとは別に分析などの目的で設定されるデータベースの一種となります。中でもBigQueryとSnowflakeは近年人気のDWHとなっています。扱えるデータ容量に対して安価に済み、と同時に機械学習ツールやデータシェアリング機能などを扱うことでデータの流動性や活用スピードを上げてくれます。

では、以下でBigQueryとSnowflakeの比較をみていきましょう

SnowflakeとBigQueryの比較

それぞれの大きく異なる点を抜粋した表となります。ここからSnowflakeの方がチューニングポイントが多いということがみてとれるかと思います。では、詳細を述べていきます。

コンピューティングチューニング

Snowflakeでは図のようにsize変更が任意で可能となっており、持っているデータのサイズや集計頻度に応じて最適なサイズを選択することが可能です。

パーティション

パーティションは参照スピードをあげるために、参照時によく使うカラムを事前に予約しておくことで別途容量を確保し、参照対象をソートなどして確保しておく方法になります。Snowflakeではマイクロパーティション単位でのデータの管理をすることでデータの参照スピードをあげることができます。具体的には下に示すようにCREATE文における CLUSTER文で表すクラスターキーを使ってテーブル定義として参照しやすいカラムを指定しておくことで可能となります。

CREATE TABLE <name> ... CLUSTER BY ( <expr1> [ , <expr2> ... ] )

一方で、BIgQueryではPARTITION文を使った運用となります。

CREATE TABLE <name> ... PARTITION BY <colummn>

これは従来のデータベースで行われるなじみのある方法とわかります。このように対比するとSnowflakeの方が柔軟な運用ができることがわかります。

ウォームキャッシュ

SnowflakeではResult cacheをする機能があります。

同じSQLの結果を再利用できるためツール利用料としてもリーズナブルになるし、結果を返すスピードが早くなります。データ更新したと言った時はキャッシュをオフするために以下のコマンドを利用することでキャッシュ利用をコントロールできます。

一方、BigQueryにはこのような機能がないため、毎回データのスキャンが走ることになります。

alter session set use_cached_result = false

インフラ

BigQueryはGoogle CloudのファミリーなのでGCPのインスタンス上で機能してるものになり、これを変更することはできません。一方でSnowflakeはAWS, Azure, Google Cloudのどれでも選択が可能となります。インスタンス料金や他のクラウドサービス利用状況か選べるものになります。これが意味するところとしてはBigQueryはあくまで(Googleの)クラウドサービスなのに対してSnowflakeはSaaSという理解ができます。これはSnowflakeがデータシェアリングやそれを元にしたマーケットプレイス機能といったデータの流動性を高めることに特化していることからくる設計だと思えます。

図はSnowflake上に作られたテーブルをシェアしている図になります。このように任意のアカウントに対して参照権限をつけるだけで、あたかもデータを持っているかのように扱えます。

snowflakeのデータシェア図<a href=httpsdocssnowflakecomjauser guidedata sharing introhtml target= blank rel=noreferrer noopener>httpsdocssnowflakecomjauser guidedata sharing introhtml<a>

まとめ

DWHとしての機能としてはSnowflakeの方がチューニングポイントが多いことがわかりました。このおかげでスケーラビリティ高い運用が可能となります。またSnowflakeは高いデータ流動性機能(データシェアリング)を持っています。グループ会社間でデータシェアしたい時などに活きる機能になります。またBigQueryはGoogle Cloudのクラウドサービスとなっており、他のGoogle Cloudサービスとの相性が非常に良いことが挙げられます。Snowflakeにない点として機械学習による予測をしたい時にBigQuery MLをつかってもいいし、Vertex AIという機械学習ツールにデータを渡して利用もできます。このようにデータの活用をメインにした時もBigQueryは非常に有用な選択肢になると思われます。

当社のETLツールである「Reckoner(レコナー)」は、SnowflakeやBigQueryと連携し、文字列変換、結合・グループ化、フォーマット変換、バリデーション・フィルター、集計・四則演算などTRANSFORMATION(データの変形)を得意としており、CRM(kintone,Salesforce)やDB(AWS Aurora, CloudSQL, AzureSQL)、ストレージ(S3, Cloud Storage)などと合わせることでより強力なデータ基盤を構築することが可能になります。

Reckonerでは現在、14日間無料トライアルをご提供しておりますので、ぜひご活用ください。

ETLツールについて詳しく知りたい、ETLツールの選び方を知りたいという方はこちらの「ETLツールとは?選び方やメリットを解説」をぜひご覧ください。

ブログ一覧へ戻る