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

Scalable Customer Journey Orchestration (CJO)

Scalable Customer Journey Orchestration (CJO)

Avatar for Kai Sasaki

Kai Sasaki

April 24, 2024
Tweet

More Decks by Kai Sasaki

Other Decks in Programming

Transcript

  1. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 自己紹介 •

    佐々木海 (ささきかい) • 2015年トレジャーデータ入社 • Hadoop, Prestoなど大規模データのための 分散システムの開発 • 現在はCDPを使ったデジタルマーケティング のためのアプリケーション開発に従事 2
  2. © 2022 Treasure Data, Inc. Confidential—Internal Use Only トピック •

    Customer Journey Orchestration (CJO)とは • CDPアプリに求められるスケーラビリティ • ソリューション • SQLを使った関係代数演算 • 集約演算を用いた状態遷移 • サンプリングベースの一貫性チェック • まとめ 3
  3. © 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder

    8 stage step goal exit criteria entry criteria Profile
  4. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 1

    : Relational Database 17 1 2 3 4 5 7 6 8 customer_id position e00f1d60 1 e408be80 5 e8572200 3
  5. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 2

    : NoSQL (e.g. KVS) 19 e00f1d60 1 e408be80 4 e8572200 3 1 2 3 4 5 7 6 8
  6. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 3:

    OLAP Database (Plazma) 1 2 3 4 5 7 6 8 customer_id time_1 time_2 time_3 e00f1d60 1213421 1413311 1413432 e408be80 1213421 1723421 NULL e8572200 1113421 NULL NULL
  7. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 各選択肢の比較 RDMS

    KVS OLAP (Plazma) 一貫性 ⭕ (部分的) ❌ ❌ リアルタイム性 ⭕ ⭕ ❌ スループット ❌ ❌ ⭕
  8. © 2022 Treasure Data, Inc. Confidential—Internal Use Only ユースケースとの対応 RDMS

    KVS OLAP (Plazma) 一貫性 ⭕ (部分的) ❌ ❌ リアルタイム性 ⭕ ⭕ ❌ スループット ❌ ❌ ⭕ RDMS KVS OLAP (Plazma) ユースケースの拡張 ⭕ ❌ ❌ 即時コミュニケーション ⭕ ⭕ ❌ 大規模データ ❌ ❌ ⭕
  9. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 疎なテーブル Goal

    Stage 1 Stage 2 Stage 3 exit exit exit exit customer_id stage1 stage1_exit_1 stage1_exit_2 stage2 … 1 t1 t1 NULL NULL 2 t1 t1 NULL NULL 3 t1 NULL NULL t2
  10. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 疎なテーブル custom

    er_id stage1 stage1_exit_1 stage1_step_1 stage_1_step_2 stage_1_step3 stage_1_step4 stage_1_step_5 … a t1 t1 a t1 t1 a t1 t1 a t1 a t1 t1 一時テーブルへの追加(append)で計算を続ける
  11. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 集約演算を使った更新 Goal

    Stage 1 Stage 2 Stage 3 exit exit exit exit SELECT min(...) FROM … GROUP BY customer_id
  12. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 一貫性チェック Aggregation

    GROUP BY customer_id SELECT COUNT(invalid) FROM journey_1 TABLESAMPLE BERNOULLI (50) WHERE <Invalid Condition>
  13. © 2022 Treasure Data, Inc. Confidential—Internal Use Only CJOを支えるスケーラビリティ -

    集合演算を使った状態計算 - SQLで計算できる条件が利用可能 - SELECT, INSERTベースで計算できる - とり得る状態を全て含めた疎な状態管理 - 集約関数で更新可能 - 過去の履歴を含むのでOLAPデータベースの特性を生かした分析が可能 - 効率的な一貫性チェック - アプリケーションが要求する一貫性を担保 - サンプルテーブルを使うことで計算量を抑える