Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BigQuery+RedShiftの経験から見るSnowflakeの真価

Avatar for Shu Murakami Shu Murakami
December 13, 2023

 BigQuery+RedShiftの経験から見るSnowflakeの真価

このスライドは以下のイベントの登壇資料です。

SNOWFLAKE TECHNICAL ROUNDTABLE
What’s NEW in Global Technologies
〜グローバルにおけるデータ変革のトレンドをご紹介〜

Avatar for Shu Murakami

Shu Murakami

December 13, 2023
Tweet

More Decks by Shu Murakami

Other Decks in Programming

Transcript

  1. BigQuery+RedShiftの経験から見る Snowflakeの真価 SNOWFLAKE TECHNICAL ROUNDTABLE What’s NEW in Global Technologies

    〜グローバルにおけるデータ変革のトレンドをご紹介〜 村上 柊 @shu22203 CARTA HOLDINGS, fluct
  2. 自己紹介 • しゅう ◦ 村上 柊 ◦ @shu22203 ◦ 新卒入社5年目

    • 好きなもの ◦ Celeste ◦ ずっと真夜中でいいのに ◦ スノボー • 嫌いなもの ◦ データがズレること ◦ CASE式で頑張ってるSQL
  3. 今まで BigQuery • 生のログ • 調査用途・速報データ用 • 雑に加工したデータを置いておける便利な場所 ◦ Looker

    Studio 便利だよね RedShift • ウェアハウス・マート層 • レポーティング・分析用途
  4. とにかくまずロード • ELT rather than ETL ◦ https://www.getdbt.com/blog/etl-vs-elt ◦ とにかくまず1箇所にデータを集めて

    からデータ加工がしたい ▪ ETL だと加工ロジックの変更で不要な再ロードが発生する • 一度ロードしてしまえば、加工は dbt に任せられる ◦ https://www.getdbt.com
  5. AWS -> BigQuery へロードする面倒さ • S3 -> GCS へインターネットを経由したファイル転送 ◦

    ネットワークコストがかかる ◦ ストレージコストも倍 • GCS のファイルを BigQuery へ MECE にロードする仕組み ◦ ロック、リトライ機構の整備 • クラウドサービスを跨いだ権限管理 ◦ GCP の IAM, みなさんうまく扱えていますか ...? • (我々の場合) BigQuery -> RedShift へレポートデータとして集計する仕組み → 管理するものが増えて辛いんじゃ〜
  6. Snowflake だと? • Snowflake 自体が AWS (GCP / Azure) で動く

    • Snowpipe ◦ https://docs.snowflake.com/ja/user-guide/data-load-snowpipe-intro • S3 へファイルが置かれると、自動的に Snowflake にロード ◦ 計測サービスは、S3 へ正しいログを置くことだけ考えればよい • ロード時にメタデータも付与 ◦ ファイル名 ◦ パーティション ◦ ロード時刻 ◦ etc • どのファイルが入ったのかも明確
  7. Redshift • 結局クラスターにデータが依存する ◦ コンピューティングとストレージが真に分離されていない • 誰かが重いクエリを投げると他のサービスへの影響が出る • Redshift Serverless

    ◦ Datashare 周りの体験があまり良くない ◦ 作り直すと共有が消えたり • system update で予期せぬ問題が発生したりする... ◦ タイムゾーンがバグでズレたこともありました ◦ https://zenn.dev/mur0jas0n/articles/b00ec06b7f45b0 • UI が Snowflake に比べてつらい(後述)
  8. Snowflake だと? • Warehouse の概念 ◦ https://docs.snowflake.com/ja/user-guide/warehouses-overview • 役割(ロール)ごとにコンピューティングリソースを確保 ◦

    loader ◦ dbt (transform) ◦ reporting ◦ developer, etc… • 使うときだけ立ち上がって勝手に落ちる ◦ サイズ x 利用時間 単位の課金でシンプル • 使う側の関心で欲しいサイズ(パワー)を決めるだけ