GMOプライベートDMPで挑戦した 
アドテク&ビッグデータのシステム
2 
●自己紹介片野道雄 
▪ GMOインターネット株式会社 
▪ 次世代システム研究室 
• チーフアーキテクト 
▪ 元はデータベースエンジニア 
• Oracle RAC, MySQL, PostgreSQL (with Slony-I), XtraDB (on 
Fusion-io), MySQL Cluster, MariaDB Galera Cluster 
• CDH (Hive, HBase, Impala) 
• 検証でCassandraとMongoDB
3 
●目次 
▪ プライベートDMPとは? 
▪ GMOプライベートDMP 
▪ 1st Party Cookie Syncに挑戦 
▪ Hadoopと発火の工夫 
▪ システム設計のノウハウ
4 
プライベートDMPとは? 
DWHとの違い 
タグ発火と 
広告配信 
用語集 
DMPの概要 
リタゲ(DSP) 
との違い
5 
先ず、アドテクについて用語を整理
6 
アドテク用語 
リスティング広告検索エンジンでの検索ワードに連動した広告。 
Google、Yahoo。 
ディスプレイ広告サイト上の広告。テキスト、バナー、動画の 
広告など。 
RTB (Real-Time 
Bidding) 
ディスプレイ広告におけるリアルタイム入札。 
→後述 
DSP (Demand-Side 
Platform) 
RTBの広告主側システム。→後述 
SSP (Supply-Side 
Platform) 
RTBの広告掲載側システム。→後述
7 
アドテク用語 
タグ 
サイトに仕込むimgタグやjavascriptタグ。 
サーバーにリクエストが送られ、トラッキン 
グや効果測定などで利用。 
発火タグを呼び出し、サーバーにリクエストが送 
られること。 
Cookie Sync 
ドメインが異なるCookieのIDをリダイレクト 
させて紐付けること。→後述 
DMP (Data 
Management 
Platform) 
様々なサイトの行動ログなどを蓄積し、広告 
配信などに活用するプラットフォームのこと。 
→後述
8 
アドテク用語 
オーディエンスサイト来訪者のこと。 
セグメントオーディエンスの属性や趣味嗜好、行動特性 
で層を区分したもの。 
ターゲティング特定のセグメントに狙いを絞って、広告を打 
つこと。 
リターゲティング 
(リタゲ) 
サイトに訪れた行動履歴などから、オーディ 
エンス(セグメント)を絞って、広告を打つこと。 
→後述
9 
RTB でのオークションの流れ 
SSP / DSP
10 
RTB - DSP / SSP
11 
プライベートDMPとは? 
DWHとの違い 
タグ発火と 
広告配信 
用語集 
DMPの概要 
リタゲ(DSP) 
との違い
12 
DMP = Data Management Platform 
データをためて活用する「箱」 
▪ パブリックDMP 
▪ プライベートDMP 
※2種類のDMPがある
13 
パブリックDMPとプライベートDMP
14 
パブリックDMP 
ボリュームが多い 
インターネットユーザーをセグメント 
化して、広告配信や調査に活用 
提携する媒体からCookie IDを収集、 
IDを統合して利用または販売
15 
プライベートDMP 
ボリュームが少ない 
サイトに来た人をセグメント化して、 
広告・メール配信や顧客分析に活用 
ロイヤリティ向上 
サイトの会員属性・購買履歴・オフラ 
インデータなどを取り込んで利用
16 
DMP = Data Management Platform 
データをためて活用する「箱」 
▪ ターゲティング/リタゲ広告 
▪ CRM連携、メール配信、LPO 
▪ 顧客分析
17 
プライベートDMPとは? 
DWHとの違い 
タグ発火と 
広告配信 
用語集 
DMPの概要 
リタゲ(DSP) 
との違い
18 
DSPのリタゲで十分では? 
DSPのリタゲができない・しないこと 
▪ 会員属性、購買履歴などの取り込み 
▪ 行動ログの蓄積、任意の集計 
▪ 詳細なセグメント作成 
▪ 広告配信以外へのセグメント活用
19 
プライベートDMPとは? 
DWHとの違い 
タグ発火と 
広告配信 
用語集 
DMPの概要 
リタゲ(DSP) 
との違い
20 
DWH = Data WareHouse 
直訳「データの倉庫」 
直訳したところの意味に、差はない 
DMP = Data Management Platform 
直訳「データ管理基盤」
21 
導入した企業は、意思決定にデータを 
活用する点で恐らく区別してない 
▪ システムを歴史的に区分している印象 
▪ DWH はBI とセットでよく語られる 
▪ プライベートDMP でもBI を行いたい
22 
DWH 
企業側で構築 
基幹システム(RDB)から、分析項目に 
そって抽出、構造化して時系列に格納 
プライベートDMP 
第三者のサービス 
システムは提供会社それぞれ。今のと 
ころ、アドテク業界での用語
23 
プライベートDMPとは? 
DWHとの違い 
タグ発火と 
広告配信 
用語集 
DMPの概要 
リタゲ(DSP) 
との違い
24 
DMPのセグメントにどうやって広告を 
配信するのか? 
基本的には、DSPのタグ(主にリタゲ用) 
を呼び出す= タグ発火 
※そこから先の広告配信はDSPが対応
25 
DSPのタグを呼び出すのには 
Piggy Back という方法を 
用いるのが基本
26 
DSPタグのPiggyBack
27 
続いて、プライベートDMPに 
おけるタグ発火までの流れ 
(Piggy Back)
28 
プライベートDMPとタグ発火(PiggyBack)
29 
そして、GMOプライベートDMP
30 
GMOプライベートDMP 
競合 
特徴
31 
プライベートDMPの競合サービス 
MOTHER 
smarticA!DMP
32 
GMOプライベートDMP 
競合 
特徴
33 
GMOプライベートDMP 特徴 
ここまでのプライベートDMPの機能 
▪ 画面操作で自由にセグメント作成できる 
▪ セグメント作成から発火まで速い 
▪ ページやCVごとに別々のタグがいらない 
▪ 3rd Party Cookieは使用しない 
▪ セグメント比較レポート
34 
セグメント作成画面サンプル
35 
購買条件サンプル
36 
次から、もっと詳細な技術の 
話に移ります
37 
1st Party Cookie Syncに挑戦 
広告主の複数の 
サイトに来訪 
3rd Party Cookie 
タグの現状 
1st Party Cookie 
アイデア
38 
広告主の複数のサイトに来訪 
3rd Party Cookie のDMPタグの場合 
プライベートDMP X のCookie X が同 
じなので、同じユーザーとわかる。
39 
しかし、世の中は 
3rd Party Cookie を 
簡単に許可しない流れ
40 
1st Party Cookie Syncに挑戦 
広告主の複数の 
サイトに来訪 
3rd Party Cookie 
タグの現状 
1st Party Cookie 
アイデア
41 
実は、iPhone はデフォルトで 
3rd Party Cookieが利用できない 
▪ iPhone / Mac のSafari は3rd Party 
Cookieを受け付けない 
▪ 主要ブラウザは3rd Party Cookie 拒否の 
設定がある
42 
1st Party Cookie Syncに挑戦 
広告主の複数の 
サイトに来訪 
3rd Party Cookie 
タグの現状 
1st Party Cookie 
アイデア
43 
GMOプライベートDMPでは 
3rd Party Cookie を使わず、 
1st Party Cookie で 
複数サイト対応に挑戦
44 
複数サイトでの1st Party Cookie Sync
45 
Hadoopと発火の工夫 
タグ処理高速化 
Impala + HBase 
オンライン条件 
はリアルタイム
46 
タグ処理高速化JavaScript 
▪ タグ出力処理は画面描画処理と分離 
▪ document.write を使用しているタグは、 
iframe に書き出して画面描画処理に戻す 
▪ 同一DSPは直列/別DSPは並列にタグ出力
47 
Hadoopと発火の工夫 
タグ処理高速化 
Impala + HBase 
オンライン条件 
はリアルタイム
48 
GMOプライベートDMPのミドルウェア 
▪ 大量のタグ発火リクエストをさばきたい 
NoSQL 
HBase 
▪ 蓄積されたビッグデータを集計・解析したい 
MPP /SQL 
Impala 
▪ 別々のシステムを行き来したくない 
NoSQL + MPP /SQL = ? CDH
49 
CDH = Cloudera のHadoop ディストリ 
ビューション 
▪ Impala はCloudera が独自開発C++ 
▪ CDH にはHadoop エコシステムがすべて 
依存関係が解消されテストされた状態でま 
とまっている 
▪ YARN、HBase、Hiveなど
▪ Hive のテーブル定義を通して、Impalaクエリ 
からHBase テーブルに読み書きできる 
▪ HBase テーブルを先に作り、Hive は外部テー 
ブルとして作るのがポイント 
50 
Impala + HBase 
Hive から通常のテーブルとして作るとHBase のテーブル 
もできて便利。だが、HBase のデータ項目が増えたとき 
Hive 側だけで柔軟に対応できなくなる
51 
HBase でテーブル作成 
① Hive 側でのデータベース名を接頭辞に 
create ‘gmo.hb_sample_master’, 
{ 
NAME => 'configdata', 
VERSIONS => 1, 
TTL => -1, 
} 
② カラムファミリー名
52 
Hive で外部テーブル作成 
① 外部オプション 
CREATE EXTERNAL TABLE hbase_sample_master( 
sample_id int 
,created_datetime string 
,modified_datetime string 
,status_code int 
) 
STORED BY 
② 格納先をHbase に指定 
‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH 
SERDEPROPERTIES (“hbase.columns.mapping” = “:key, 
configdata:created_datetime, 
configdata:modified_datetime, 
configdata:status_code") ; 
④ Key = PK 
③ Hive でのカラム定義を 
HBase とマッピング
53 
Hadoopと発火の工夫 
タグ処理高速化 
Impala + HBase 
オンライン条件 
はリアルタイム
54 
プライベートDMPとタグ発火 
セグメント作成後、対象オーディエンス 
が次に来訪したときにタグ発火 
(=広告配信)
⑥で再来訪したときにDSPタグ発火(=広告配信) 
55
56 
この場合の問題点 
▪ オーディエンスが次に来訪したとき、 
セグメントの条件と大きくズレること 
がある 
• 特に「直近○日に○回」来訪といった条件
57 
●ケース① 
▪ 「直近7日以内に来訪」セグメント 
• セグメント作成時には条件に該当したが、次 
の来訪が1か月後でも、タグ発火してしまう 
●ケース② 
▪ 「ある期間に2回来訪」セグメント 
• 条件に該当したオーディエンスが次に来訪し 
て発火するときには3回来訪していることに
58 
オンライン条件はリアルタイム 
▪ オンライン(=URL)条件で次の工夫 
• 「直近○日」来訪などの各種オンライン条件は 
APサーバーでリアルタイム処理 
• 「ある期間に○回」といった来訪回数の条件は 
セグメント作成時に1回減らして、次に来訪し 
たときにAPサーバーで判断して発火
59 
システム設計のノウハウ 
システム設計 
トランザクショ 
ン制御 
TIPS
60 
システム全体
61 
Hadoopクラスタ(CDH)
62 
システム設計のノウハウ 
システム設計 
トランザクショ 
ン制御 
TIPS
63 
トランザクション制御 
▪ 3 フェイズコミット 
• try catchで表現すると、 
try { 
1. MariaDB を更新 
-> commit ① 
2. HBase を更新 
-> commit ② 
※RDB のトランザクションは、 
commit してからHBase を更新す 
るか(①)、HBase 更新を待って 
からcommit(②)の使い分け。 
3. Rabbit MQ にエンキュー 
} catch( e ) { 
// エラーのときは、rollback またはexit 
}
64 
システム設計のノウハウ 
システム設計 
トランザクショ 
ン制御 
TIPS
65 
TIPS 
▪ HDFS のパーミッション 
• Hiveテーブルを利用する場合は、impala 以外の 
Hadoopサービスのユーザーに注意(特にFlume) 
▪ クエリをcast 関数でバリデーション 
• integer 型のパーティションキーにURLエンコード 
した文字を間違って投入したらHiveメタ破壊 
• cast 関数を使えば値の型がおかしくても守れる
66 
ご清聴ありがとうございました

GMOプライベートDMPの仕組み