More Related Content
Similar to 20210421 snow villagelive(intage technosphere) (20)
More from INTAGEGROUP (6)
20210421 snow villagelive(intage technosphere)
- 2. 2
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
自己紹介
川口 真
かわぐち まこと
✓ 2001年入社
✓ 最初はWeb開発から
✓ サーバーやDBなどのチューニング・ト
ラブルシューティングや、製品・技術
選定などを行う技術統括部門で色
々学ぶ
✓ 所属:株式会社インテージテクノスフィア
✓ 部署:リサーチテクノロジー本部
✓ 業務:主にインテージ向けシステムの開発
張替 裕矢
はりがえ ゆうや
✓ 2011年入社
✓ 配送系業務システム運用保守を
担当し、その後グループ向けパネル
集計運用保守、小売店POS集計
分析開発に従事
✓ 現在は全国小売店パネル調査の
集計システム開発
綾小路 法孝
あやのこうじ のりたか
✓ 2013年入社
✓ 入社以来、グループ向けパネル集
計開発運用保守に従事
✓ 現在は全国小売店パネル調査の
集計システム開発
- 3. 6
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
インテージグループは「生活者を最もよく知る企業」
日本市場で最も信頼される
「売上 No.1」
最近ニュースでよく見る混雑統計
日本最大のリサーチデータ、リサーチプラットフォームを揃え 「どの商品がいつからどのくらい売れているのか」「どんな人が
買っているのか」など、市場推移やブームの兆しなど、生活者を360°理解できるデータ・幅広く深い生活者インサイトを提供し、
クライアント企業様や報道機関各社様のCMや番組、記事の中でご活用いただいています。
約4,000店
日本最大規模
50,000人
- 4. 7
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
Snowflakeとの出会い
再会は2019年夏(実は2017年に一度出会っていた)
2つのパワーワード
✓ Unlimited Performance
✓ Near Zero Management
しかしこのアーキテクチャならば…という希望
←実はめちゃくちゃ疑っていた!
今日のお話は、これまでの地味だけどリアルな
Snowflakeを使ったプロダクト開発のお話をお届けします
やってみた→圧倒的だった!
東京リージョンも爆誕→即採用!
そこから約1年半・・・諸々ありましたが、ようやくひと段落つき今に至る
- 5. 8
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
本日、お話しすること
Snowflakeは運用の手間がほとんどかからない
✓ リアルな話#1 Cloneでスマートなデータ公開
AWSやアプリの運用のなかでSnowflakeをどう使っているか
✓ リアルな話#2 Snowflakeを使ったDynamoDBのログ分析
✓ リアルな話#3 Snowsightを使ったSnowflakeの監視
✓ リアルな話#4 高負荷に備えた、ウェアハウスのクラスター数の変更
Snowflakeのチューニング
✓ リアルな話#5 ウェアハウスはかなりの台数使い分けてる
✓ リアルな話#6 クラスタリングキーとクエリプロファイルを活用しよう
- 6. 9
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
ターゲットとなるプロダクト
「パネルデータ提供分析システム」の大規模リニューアル
ポイント①
より広く、より精度の高いデータへ
ポイント②
市場変化に対応可能な設計へ
・収集されるデータがさらに多く
・データ粒度もさらに細かく
・ロジックがより複雑に
・高頻度でデータ更新
この要件をクリアできる「集計エンジン」を
構築することが我々のチャレンジ
ポイント③
求められる高い性能要件
・FMCGのお客様が公開日めがけて一気
にアクセスしてくる
- 7. 10
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
大まかなシステム構成
集計システム
集計エンジン
顧客提供
システム
・
・
・
API
タスク
タスク
タスク
お客様 販売店
集計用データ
や各種マスタ
参照 更新
EDI基盤
基幹システム
確定処理
処理A
処理B
処理X
・
・
・
参照処理が最大のターゲットで、
全体の9割以上を占める
ここが我々のスコープ
社内提供
システム
営業・アナリスト
キュー
- 8. 13
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#1:Cloneでスマートなデータ公開
要件:データ公開はトリガーにより行われる
✓ スキーマのBlue/Green
✓ さらにBASEとなるスキーマを準備
• 最新データは常にBASEにロードしていく
• なぜならばTime Travelを利用したいから
→BASEを参照すればどの時点にでも遡れる
✓ 最新データのロード(COPY)はBASEへ
✓ BASEからBlue/GreenへはCloneで瞬時に
BASE
集計
エンジン
BASE
集計
エンジン
BASE
集計
エンジン
最新データ
公開中
1世代前
最新データ
公開中
公開前最新
1世代前
公開中
CLONE
CLONE
①公開中状態
②最新データロード
③公開トリガー
COPY
COPY
✓ CloneとTime Travelで安定のデータ運用
✓ 原則守ればロードもすごく速い
- 9. 14
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#2:Snowflakeを使ったDynamoDBのログ分析
現状、集計ログをDynamoへ格納している
Dynamoにいれたままでは分析しにくい
Snowflakeだと半構造化データ(Json)の分析もしやすい (クエリも直感的
Snowpipeを用いて、DynamoのデータをSnowflakeへ
1日あたりの集計数などredashで可視化
Snowpipe
DynamoDB Lambda S3 redash
- 10. 15
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#3:Snowsightを使ったSnowflakeの監視
Snowsight
✓ 現在のSQLワークシートに代わるものでダッシュボードの作成が可能
集計ログとQUERY_HISTORYを使って、全体の処理時間の詳細な内訳を可視化
✓ QUERY_HISTORY : Snowflakeクエリ履歴
✓ クエリのコンパイル時間、ウェアハウスキューでの待ち時間など
✓ クエリタグ:クエリに付与できるタグでクエリのグルーピング可能
✓ クエリタグに集計ログのUIDを付与し、結合キーとする
✓ ウェアハウスのモニターをより詳細に
あれ、ちょっと遅いなというときに確認する → ボトルネックがわかる
- 11. 16
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#4:高負荷に備えた、ウェアハウスのクラスター数の変更
基本はSnowflakeのオートスケーリングにお任せ
負荷の高い時間帯に備えたい
✓ 新しいデータが公開されるタイミングで集計が一気に増える
クラスタがスケールアウトする時間をできるだけ避けたい
事前にクラスター数のMin/Maxを上げる
✓ Minのクラスター数が3である場合、3クラスターでresume
CloudWatchEvent Lambda
Snowflake
ALTER WAREHOUSE XXX
SET MIN_CLUSTER_COUNT = YYY,
MAX_CLUSTER_COUNT = ZZZ;
- 12. 17
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
本日、お話しすること
Snowflakeは運用の手間がほとんどかからない
✓ リアルな話#1 Cloneでスマートなデータ公開
AWSやアプリの運用のなかでSnowflakeをどう使っているか
✓ リアルな話#2 Snowflakeを使ったDynamoDBのログ分析
✓ リアルな話#3 Snowsightを使ったSnowflakeの監視
✓ リアルな話#4 高負荷に備えた、ウェアハウスのクラスター数の変更
Snowflakeのチューニング
✓ リアルな話#5 ウェアハウスはかなりの台数使い分けてる
✓ リアルな話#6 クラスタリングキーとクエリプロファイルを活用しよう
- 13. 18
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
プロダクト開発初期の課題
数年間分のトランザクションデータの分析が頻繁に行われる
✓ 1本あたりの速度は速いが、スキャンコストだけでNG
✓ 同時実行数が増えると1本当たりの速度が大幅に落ち込んでしまったり・・・
現行の分析機能担保のため処理が複雑になる
✓ アドホックな分析なので、ほぼ同じクエリになることがない
✓ キャッシュも効きにくい
同時実行数と1集計あたりの速度を
どのように担保するのかが大きな課題
- 14. 19
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
Snowflakeの登場
データ構造、テーブル設計、クエリも変えずに性能検証を実施
✓ やったこと
• コネクタ入れ替え
• データをシンガポールリージョンSnowflakeへロード
集計システム
集計エンジン
性能検証
セット
・
・
・
API
タスク
タスク
タスク
参照
他社
DWH
参照
Snow
flake
スループット(1時間あたりの処理可能本数)が
3~4倍
ほぼほぼ目標達成!
1本当たりの処理時間も
3~4倍程度高速に!
- 16. 21
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#5:ウェアハウスはかなりの台数使い分けてる
本番系で30ウェアハウス程度
✓ タグやWebUIのフィルタ欲しい…
マルチクラスタウェアハウスを複数並べて負荷分散
✓ 1ウェアハウス10クラスタでも足りない
✓ クラスタ数多くするとCloudServicesの負荷増加
✓ ウェアハウス横に並べたほうが性能出る!
1ユーザーあたりのセッション数に注意
✓ デフォルトで最大50
✓ ストレージとコンピュートの分離の恩恵をモロに享受
✓ ウェアハウスどんどん利用すべし(コストには注意)
Storage Layer
集計エンジン
…
…
… …
…
1サービスのためのウェアハウス群
多数の集計処理(クエリ)
- 17. 22
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#5:ウェアハウスはかなりの台数使い分けてる
同時実行数と処理速度のスウィートスポット(最適解)を見つけよう
✓ WHを最大10WH用意してワークロードの検証
✓ 1WH内のクラスター数も1~10とし、それぞれで同時実行数もコントロール
- 19. 24
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#6:クラスタリングキーとクエリプロファイルを活用しよう
Snowflakeの最大のメリットであるマイクロパーティショニングやナチュラルクラスタリングによ
って何も考えずに速度は速い
ただし、DMLによってクラスタリング具合が理想的でなかったり、実行速度が遅くなってきて
しまった場合には、クラスタリングキーを指定するとよい!
✓ フィルタリング述語でデータスキャン効率向上したり
✓ 列圧縮向上でデータ量減ったり
✓ ただし、自動クラスタリングが実行されるとその分のクレジットがかかることも注意
✓ Snowflakeのクラスタリングキー推奨は以下
• 選択フィルターで最もアクティブに使用されるクラスタ列
• 結合述語で使用される列も検討するとよい
https://docs.snowflake.com/ja/user-guide/tables-clustering-keys.html#what-is-a-clustering-key
- 22. 27
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#6:クラスタリングキーとクエリプロファイルを活用しよう
ざっくりの1リクエスト中クエリの流れ
✓ 販売実績データをファクトデータとして、商品属性や店舗属性のマスタのディメンジョンを結合しサマリーす
るよくあるスタースキーマ
✓ その後にクロス表作成したりトレンド表作成したり特殊な処理したりしてます
販売実績データ
販売日
店舗コード
商品コード
金額
個数
商品マスタ
商品コード
商品名称
商品属性コード
商品属性名称
店舗マスタ
店舗コード
店舗名称
店舗属性コード
店舗属性名称
- 23. 28
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#6:クラスタリングキーとクエリプロファイルを活用しよう
クラスタリングキー戦略
✓ これまで販売日の列へクラスタリングキーを指定していた
• 日付でデータをフィルターすることが多いため
• しかし、再三述べている通り、それなりのスキャン量が要求される
✓ 集計リクエスト処理内訳の大部分が、トランザクションデータをスキャン
• ∵ユーザーは数年間の集計をするのがよくある集計
✓ Snowflakeサポートの方々からのアドバイス
• 「商品コード, 販売日でクラスタリングキーを指定してはどうか?」
• =結合述語で頻繁に使用される列でのクラスタリング
• 商品マスタはユーザーごとにカスタマイズされた商品マスタ
• 飲料系市場と雑貨系市場ではスキャンしたいデータ異なる
• 盲点でした。。。
- 24. 29
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#6:クラスタリングキーとクエリプロファイルを活用しよう
結合述語をクラスタリングキーに指定したときのざっくりスキャンイメージ
販売日のWHERE句のみで
スキャン
結合述語でフィルターした
場合のスキャン
スキャンに関わる
コストが下げられる
- 28. 33
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
リアルな話#6:クラスタリングキーとクエリプロファイルを活用しよう
基本的には速いので何も考えなくてよいです
同時実行数が求められる場合
✓ WH数の調整を検討(分析・ロードを分けるだけでなく様々なロールで考えられるのもよい)
✓ クラスター数の調整を検討
✓ WHのサイズの調整を検討
1本当たりの処理速度が求められる場合
✓ クエリプロファイルとにらめっこしてボトルネックを特定する😇
✓ WHのサイズ調整を検討
✓ クラスタリングキーを検討
• 業務要件やクエリによっては劇的に速くなる可能性も秘めています
- 29. 34
Copyright© INTAGE TECHNOSPHERE Inc. All Rights Reserved.
本日のおさらい
基本的にはSnowflakeに全てお任せで無問題
✓ 何もしなくても普通に速い
✓ 運用の手間がほとんどかからない
✓ とりあえずデータ突っ込んでおけばいい感じにやってくれる
✓ マイクロパーティション最高!
その一歩先を目指す場合でも、Snowflakeならそれを可能にする懐の深さがある
✓ 「コレやれたら良いなぁ」と思ったことが実現できる
Snowflakeで新たな世界へ一歩踏み出してみませんか?