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

Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!

Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!

ikeda-masashi

October 19, 2023
Tweet

More Decks by ikeda-masashi

Other Decks in Technology

Transcript

  1. Kayac. Inc Amazon Aurora MySQL と Amazon Redshift の Zero-ETL

    Integration について使い所を考えてみた! AWS for Games Live: これからのゲームデータ分析環境を考える 2023/10/19 19:35-20:05 面白法人カヤック 池田将士 (@mashiike)
  2. Kayac. Inc @mashiike 面白法人カヤック その他事業部 SREチーム データエンジニア Amazon S3 Amazon

    Kinesis Data Firehose Amazon Redshift 好きなAWSサービス 最近ハマったゲーム • ARMORED CORE VI • City Skylines • Pay Day 2
  3. Kayac. Inc アジェンダ • Zero ETL Integrationとは? • 使い所は? ◦

    VPC超えが必要な場合 ◦ VPC超えが不要な場合 • まとめ
  4. Kayac. Inc 既存手法2. VPC Peering を活用 • VPC Peering: 2

    つの VPC 間でト ラフィックをルーティングするこ とを可能にするネットワーク接続 • Redshift Federated Queryや Binlog Clientを使うことができ る。 • しかし、IP Range等の設定で気 をつける必要があり、結構面倒。
  5. Kayac. Inc 『VPC超え』が必要なケースの旨味 Aurora MySQLも RedshiftもStorageは AWS Managedな管理 AWS Managedな領域で

    ニアリアルタイム転送を やってくれるので 異なるネットワークに あることを考えなくていい。
  6. Kayac. Inc CREATE TABLE game_action_log ( action_timestamp TIMESTAMP,   player_id BIGINT,

    action_type VARCHAR(50), — 省略 purchase_value BIGINT, purchase_unit VARCHAR(6), PRIMARY KEY (action_timestamp, player_id, action_type) ); Aurora MySQLにこんなテーブルを用意
  7. Kayac. Inc OLTPなクエリはFederated Queryで SELECT * FROM federated.game_action_log WHERE action_timestamp

    >= getdate() - interval ’1 hour’ AND player_id IN (1234, 5678) MySQLのKeyやIndexが 有効的である。
  8. Kayac. Inc OLAPなクエリはZero-ETLで WITH game_action_log as ( SELECT action_timestamp ,

    player_id, purchase_value , purchase_unit FROM zero_etl.prod.game_action_log WHERE action_timestamp >= getdate() - interval '1 year' AND action_type = 'purchase' ), monthly_player as ( SELECT DATE_TRUNC ( 'MONTH', DATE(action_timestamp ) ) AS action_month, player_id, purchase_unit , SUM(purchase_value ) AS total_purchase_value FROM game_action_log GROUP BY 1,2,3 ) SELECT action_month , COUNT(distinct player_id) as paid_players, AVG(total_purchase_value ) as arppu FROM monthly_player GROUP BY 1
  9. Kayac. Inc まとめ • Zero-ETL IntegraionはAWS Managedな領域で CDC(Change Data Capture)をして

    Aurora MySQLからRedshiftへ ニアリアルタイムにデータを運んでくれるすごい機能 • この機能の旨味は… ◦ VPC超えが必要だった場合は、単純に楽になる! ◦ Federated Queryとの併用でHTAPな使い方ができる。