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

Scalable Customer Journey Orchestration (CJO)

Scalable Customer Journey Orchestration (CJO)

Kai Sasaki

April 24, 2024
Tweet

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データベースの特性を生かした分析が可能 - 効率的な一貫性チェック - アプリケーションが要求する一貫性を担保 - サンプルテーブルを使うことで計算量を抑える