DWHに必要なこと
∼1人で始めるCIO∼
Minero Aoki
自己紹介
‣ 青木峰郎(あおき みねろう)
‣ 元Rubyコミッター
‣ 分析システム「たべみる」開発
‣ データ分析基盤エンジニア
‣ 著書多数→
データ活用基盤
今日のテーマ
やりたいこと
大量のデータを

最高に活用したい
やりたいこと
大量のデータを

最高に活用したい
ユーザーコンタク
トの一元管理
ターゲティング広告
ユーザー行動の分析
アプリのA/Bテスト
DWH (Data Warehouse)
が その解となる
DWHとは
‣ 90年代に提唱されたデータ分析アーキテクチャ
‣ 大量のデータを集めて部署横断で分析
‣ Bill Inmonが定義(DWHの父と呼ばれている)
DWH =
分析用のきれいなDB
(DWHでない)
普通のDBは汚い
DWHをどう作るか
がんばる
基本方針1.
データは一箇所に集める
アプリB
ターゲティ
ング広告
DB
アプリC
行動分析
DB
アプリD
ABテスト
DB
アプリA
コンタクト
管理
DB
乱立する分析システム
アプリB
ターゲティ
ング広告
DB
アプリC
行動分析
DB
アプリD
ABテスト
DB
アプリA
コンタクト
管理
DB
乱立する分析システム
ダメ
なぜダメか
‣ データを集めるのがつらすぎ……
‣ 指標の定義が違う!(PVって? UUって?)
‣ 元データがよくわからない
あるべきすがた
アプリA アプリB アプリC アプリD
コンタクト
管理
ターゲティ
ング広告
行動分析 ABテスト
データベース
DBなににする?
• クックパッドでは全面的にRedshiftをDWHとして
使うことにした
• 速い
• 安い
• 普通のSQLが使える
アーキテクチャ
Redshift (DWH)
マスター
Cookpad
広告配信システム
ログ
マスター
ログ
マスター
ログ
マスター
ログ
ログ
マスター
各種サービス
ログ
マスター
連携システム
Re:dash
Jupyter
Tableau
独自バッチシステム
(Bricolage)
データを集めれば
DWHか?
もちろん違う
データを集めただけ
DWH
データは加工しないと
DWHにはならない
どのように加工するか?
DWHの4つの条件
Integrated
Subject-
Oriented
Time-
Variant
Non-
Volatile
DWHの4つの条件
Integrated
Subject-
Oriented
Time-
Variant
Non-
Volatile略
10年戦える
データ分析入門
青木峰郎著
ソフトバンククリエイティブ
詳細は本で
基本方針2.
DWHはなりゆきで作る
アプリケーションが先!
DWHがあと!
Redshift
元データ DWH 活用先ごと
Cookpad
広告配信
動画配信
……
コンタクト
管理
ターゲティ
ング広告
ユーザー
行動分析
ABテスト
as-is 3NF 3NF/Star
構築順(1) 構築順(2)構築順(3)
共通ライブラリ
としてのDWH
基本方針3.
SQLですべてを処理する
よい例
Redshift
テーブル テーブル テーブル
INSERT
SELECT
INSERT
SELECT
Redshift
テーブル テーブル テーブル
ダメな例
RubyRuby
SELEC
T
IN
SER
T
SELEC
T
IN
SER
T
ポイント
ウェブとDWHでは

同じSQL/RDBでも

使いかたが違う
まとめ
DWHに必要なこと
データは
一箇所に集める
DWHは
なりゆきでつくる
すべてをSQLで処理
同じSQLでも
ウェブとDWHは別物

Cookpad TechConf 2016 - DWHに必要なこと