(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
ビッグデータ処理データベースの
全体像と使い分け
2016/7/15
株式会社リクルートテクノロジーズ
ビッグデータ部
渡部徹太郎
2.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department自己紹介
{"ID" :"fetaro",
"名前":"渡部 徹太郎",
"所属":"リクルートテクノロジーズ ビッグデータ部"
"研究":"東京工業大学で情報検索の研究(日本データベース学会)"
"仕事":{前職:["証券会社のWeb基盤",
"オープンソース全般,主にMongoDB,NoSQL"],
現職:["リクルート横断のデータ分析基盤,
"ExadataとHadoopの両刀使い"]}
"エディタ":"emacs派"
"趣味" :"自宅サーバ"
"属性" : ["ギーク","スーツ"]}
1
3.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department発表をしようと思った背景
ビッグデータ処理技術がありすぎる
2
DynamoDB
Kinesis
EMR
Redshift
BigQuery
Oracle
Exadata
Impala
4.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department発表をしようと思った背景
リクルートのサービスはたくさんある
日々次々と新しいサービスが生まれる
ケースドリブンで最適なもの最速で提供する必要がある
→いろいろな技術を知る必要がある!
3
・・・100以上のサービス
5.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department本発表の目的
ビッグデータのデータベースのニュースを見た時に、
「どの辺」のデータベースか分かるようにする
ベンダの誇大広告を見抜けるようにする
4
6.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentアジェンダ
ビッグデータ処理データベースの分類
各分類と代表製品の説明
その他のビッグデータキーワードの説明
Spark/Elastic Search/マイクロバッチ/インメモリデータグリッド/グ
ラフDB/
ブロックチェーン/分散OLTP 急遽追加!
リクルートテクノロジーズ ビッグデータ部における
データベース使い分け
まとめ
5
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentデータベースを分類する軸:重視する性能
7
レスポンスを重視 →主にオペレーション用途
スループットを重視 →主に分析用途
アプリケーションサーバ
オペレーション
用途
データベース
登録画面
参照画面
編集画面
マスタ
データベース
BIツール
分析用途
データベース
レポート生成ジョブCSV レポート
9.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentデータベースを分類する軸:性能拡張方式
データベースの代表的なボトルネックを解消
ディスクIO
CPU
ネットワーク帯域
共有リソースの開放待ち
ネットワークラウンドトリップ
8
スケールアップ
集約
スケールアウト
分散
app app app app app appapp app app
一般的なハードウェアを複
数並べて並列処理
単一HWハードウェアを強化
性能限界
CPU↑
ディスク↑
NW↑
データベースの性能拡張方式
←主にこの辺のボトルネックを解消
10.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentデータベースの分類
9
DB
( ) )
Hadoop
RDB(OLTP)
KVS
/
/
RDB(DWH)
NoSQLと
呼ばれている
11.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department
DB
データベースの分類
10
( ) )
RDB(OLTP)
KVS
RDB(DWH)
DynamoDB
BigQuery
Exadata Redshift
EMR
Hadoop
Exadata
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentHadoop
Hadoopでも列志向を活用
Hadoopは通常ファイルをデータとして扱う
• CSVのイメージ
ファイルの中身を列志向に変えることで、さらなる抽出速度の向上ができ
る
• ORC(列持ちフォーマット) + Snappy(圧縮)
27.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
KVS
26
DB
Hadoop
RDB(OLTP)
KVS
RDB(DWH)
スケールアウト
スケールアップ
オペレーション 分析
目標到達時間 13:25
28.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS
ひとことで言うと
分散して、シンプルなオペレーションができるデータベース
アーキテクチャの特徴
RDB(OLTP)とは異なり、
以下の2つによりスケーラビリティを獲得
1. 「強い整合性」を犠牲にして「結果整合性」を採用
2. 分散しやすいデータモデルと、分散しやすいクエリだけを提供する 27
データモデル キーバリュー ワイドカラム
データ構造
オンプレ
クラウド
ElastiCache
DynamoDB
29.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS
整合性を保証するとスケールアウトが困難
整合性を緩めればスケールアウトできる
28
アプリケーション アプリケーション
アプリケーション
アプリケーション
待たされ
る
A B C
分散トランザクションで
アプリケーション
待たされ
る
待たされる
アプリケーション
→ →
A B C
アプリケーション
アプリケーション
アプリケーション
アプリケーション
30.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS
KVS
29
分散ファイルシステム
(HDFS等)
分散処理フレームワーク
(MapReduce, Spark等)
ABC
A B C
クライアント
計算
ノード
計算
ノード
計算
ノー
コーディネータ
計算
結果
プログラム
プログラム
クライアント
プログラムプログラム
KVS/ドキュメントDB
シャード シャード シャード
A
クエリルータ
B C
アプリケー
ション2
アプリケー
ション1
Hadoop
31.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS
分散しやすいデータモデル
データ間の参照関係を定義させない
分散しやすいクエリ
一つのデータでクエリが完結するようにする
• トランザクションを提供しない
• (トランザクショナルな)JOINを提供しない
30
ユーザ1
取引1
取引2
ユーザ1 取引1
取引2
32.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS
ユースケース
大規模Webのバックエンド
• ユーザセッションの格納
• ユーザ属性格納
• 事前計算データのキャッシュ
メッセージングシステム
大量書き込みが必要なケース(IoT)
できないこと
トランザクション
集計
JOIN
セカンダリインデックスが無いものもある
31
33.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
ドキュメントDB
32
DB
Hadoop
RDB(OLTP)
KVS
RDB(DWH)
スケールアウト
スケールアップ
オペレーション 分析
目標到達時間 13:30
34.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department
オン
プレ
クラ
ウド
ドキュメントDB
33
ひとことで言うと
KVSよりもクエリが豊富で使いやすい
アーキテクチャ上の特徴
データモデルにJSONを扱う
集計を提供している物が多い
35.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentドキュメントDB
分散処理を活かしたユースケース
大規模Webのバックエンド
オンラインゲーム
カタログ管理
JSONを使いたいだけのユースケース ←日本ではこちらが多い
プロトタイプ開発
データハブ
JSONログ保管
34
36.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department伝えたいこと
ドキュメントDBの集計機能は「おまけ」!
小規模データの同期集計はできるが、バッチには不向き
BIベンダはドキュメントDBは相手にしていない
ベンダ
「ACIDトランザクションを提供するドキュメントDBです!」
→何かを犠牲にしています
非構造データ処理と半構造データ処理は違う
半構造データ=JSON,XML
非構造データ=自然言語、音声、画像、動画 →パーサー次第
35
37.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department伝えたいこと NoSQLはバズワード
NoSQL ≠ スキーマレス
スキーマ定義が必須
ドキュメントバリデーション機能あり
NoSQL ≠ SQLが使えない
SQLライクなクエリ言語を採用しているNoSQL
NoSQL ≠ 分散処理
JSONが入るRDB
36
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentSpark
データサイエンティストのために作られた分析ライブラリ群
Hadoopが無くても動く
データベースではない
データ蓄積はHadoopのHDFSでもよいし、そうでなくても良い
以下の様なものが含まれる
Spark 本体 :メモリベースで集計などをする
Spark MLLib:機械学習
Spark SQL:SQLライクなインターフェース
Spark Stream:マイクロバッチ
38
40.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentマイクロバッチ
続々と流れてくるデータに対して、短い期間で集計を行う処理
データベースではない。データを永続化しない。
使いドコロ
初回来訪者の属性推定
デバイス異常値検出
39
Kinesis
Analytics
Kinesis
Streams
マイクロバッチ
マイクロバッチ
PUB
(出版)
SUB
(購読)
分散キュークライアント
クライアント
クライアント
クライアント
41.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department
ディスク
ディスク
インメモリデータグリッド
KVSに似ているが、アプリケーションのローカルに置かれるキャッシュ
メモリ上での処理を前提として、永続化はオプション
ユースケース
金融の取引処理
ミリ秒以下の応答時間
40
Javaアプリ インメモリDB
Javaアプリ インメモリDB
メモリ
同期
42.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentElasticsearch
検索エンジン
ドキュメントデータベースに非常に近い
JSONが入る
レプリケーションできる
シャーディング出来る
ドキュメントデータベースとの違い
Kibanaと連携できる
全文検索が強力
かなり集計できる
41
Elasticsearch Service
Kibana
43.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentグラフDB
グラフ演算に特化したDB
RDB以上にスケールアウトできない
ユースケース
最短経路探索
金融取引の詐欺検出
ソーシャルネットワークにおける人物間の計算
RDBだとJOINの多重入れ子になるような計算
42
44.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department【急遽追加!】ブロックチェーン
分散KVS
台帳をP2Pで共有
トランザクション提供
コミットは、因数分解を最初に説いた人がみんなのトランザクションをまと
めてコミット
→つまり非常に遅い
43
45.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department【急遽追加!】分散OLTP
今朝の神林さんの発表を聞いて急遽追加
10万TPS
前提とするHW:1000コア、10TBメモリ、高速バス
既存のRDB(OLTP)とはアーキテクチャが異なる
44
46.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentデータベースの分類 追記版
45
DB
(
)
)
RDB(OLTP)
KVS
ElasticSearch
Hadoop
RDB(DWH)
OLTP
47.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentデータベースの分類
46
DB
( ) )
RDB(OLTP)
KVS
RDB(DWH)
DynamoDB
BigQuery
Exadata
EMR
Hadoop
Kinesis
ブランド
Redshift
OLTP
Exadata
48.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Department伝えたいこと
IoTのデバイスログ収集はKVSが最適ではない
書き込みは多いが、オペレーショナルではないため
やりたいことは分析
IoTはデバイスログ収集は
マイクロバッチ + Hadoop or RDB(DWH) が最適
47
49.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
リクルートテクノロジーズ ビッグデータ部における使い分け
48
目標到達時間 13:45
50.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentリクルートテクノロジーズ ビッグデータ部での活用
49
DB
( ) )
RDB(OLTP)
KVS
RDB(DWH)
DynamoDB
BigQuery
Exadata
EMR
Hadoop
DB
Kinesis
ブランド
Redshift
OLTP
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentHadoop
Hadoopの用途
マッチング
ユーザの属性推定
レコメンデーション
RDB(DWH)へのデー
タ事前加工
51
EMR
Impala
安定したオンプレ
Hadoop基盤
SQLベースで充分
リッチなUIを利用したい 常時起動が必要ない
キャパシティが読めない
AWSが前提
最新技術の積極利用
計算
53.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentRDB(DWH)
RDB(DWH)の用途
SQLベースの分析
KPIの測定
競合分析
サイトアクセス解析
加工済みデータをBIから
接続して自由に分析して
もらう
52
Exadata
Redshift
BigQuery
Impala
コストパフォーマンスがよい
金がある
オンプレから出せない
開発ツールの充実
Oracleとの連携
Hadoopにあるデータを
そのまま分析したい
+
無限のスケーラビリティ
54.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentマイクロバッチ
マイクロバッチの用途
初回訪問ユーザの属性推定して、パーソナライゼーション
53
Kinesis
Analytics
Kinesis
Stream
+
+
55.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA DepartmentKVS ドキュメントDB グラフDB
機械学習結果をWebフロントに返す
アプリケーションの途中結果格納
アプリケーションのプロトタイプ開発
地理空間情報(GeoJSON)蓄積・加工
ユーザと企業のマッチングに、駅のグラフデータを利用
54
DynamoDB
56.
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
エンジニア募集中!
ベンチャーマインドあふれるリクルートで、
次々と溢れ出る新規ビジネスのアイデアを
高速にインプリしてみませんか?
適材適所でシステムを構築しましょう
55
(C) Recruit TechnologiesCo.,Ltd. All rights reserved.
BIG DATA Departmentまとめ
この図を頭に入れておくと、新しいデータベースが出てきても
なんとなくわかります
57
57
DB
( ) )
RDB(OLTP)
KVS
ElasticSearch
Hadoop
RDB(DWH)
OLTP