今まで色々なデータベース製品を触りましたが、Snowflakeでの集計が高速で、データを活用するうえで非常に有用なプロダクトあることを実感しています。
SnowflakeとBI
Snowflakeにあるデータをもとに、TableauやPower BIなどのBIツールで可視化することも多いです。
大量データでデータをBI側に保持できない場合、表示やフィルタ条件などによる更新の度にデータソースにデータを取得する構成が採用されます。
Tableauでは「ライブ接続」、Power BIでは「Direct Query」と呼ばれる方法です。
データ量の問題がなければ、レスポンスが速いため、ほとんどの場合、BI側に保持する方がおすすめ。※Tableauでは「抽出」/Power BIでは「インポート」
「ライブ接続」「Direct Query」は、データ量、データソースによっては、非常にレスポンスが悪く、ユーザーの不満がたまります。
MySQLやAWSのAthenaを使っていた時は結構イライラしました。Redshiftはまだよかったです。
体感ですみませんが、億単位のテーブルを使用しても、Snowflakeは快適です。
もちろんデータ量、条件によっては待たされることもありますが、不満がたまるような処理時間は少ないです。
Snowflakeはなぜ速いか
データを高速に集計できる理由はを実現する理由がいくつかあります。
- 自動最適化とセルフオーガナイゼーションストレージ
- Snowflakeは、データの自動パーティショニングや高圧縮、クエリの最適化などを自動的に行います。ユーザーは手動での管理作業をほとんど行う必要がありません。
- データはマイクロパーティションと呼ばれる不変のデータブロックに格納され、統計メタデータと統合されています。これにより、ワークロードを効率的に分散させることができます。
- 柔軟なコンピュートリソース
- Snowflakeは、ストレージとは別にコンピュートリソースを拡張できます。ワークロードごとに専用のリソースを持ち、サイズを変更できます。
- コンピュートクラスターを瞬時に立ち上げたり、立ち下げたりすることができ、再利用も可能です。
- クエリ結果のキャッシュと永続的なクエリリザルト
- 頻繁にアクセスするデータは近くにキャッシュされ、同じ計算は再実行されません。
- 永続的なクエリリザルトを使用して、同じクエリに変更がない場合は再計算を行わないようにしています。
おわりに
BIでの集計・可視化が要件なのであれば、Snowflakeを基盤とすることは有力な選択肢になると思います。