SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Treasure Dataを支える技術 - 
MessagePack編 
Taro L. Saito, Treasure Data 
leo@treasure-data.com 
December 11, 2014 
ビッグデータ基盤勉強会@NTT武蔵野開発センター 
Copyright ©2014 Treasure Data. All Rights Reserved.
自己紹介 @taroleo 
• 2002 東京大学 理学部 情報科学科卒 
• 2007 Ph.D. 
– XMLデータベース(SIGMOD’08)、トランザクション処理の研究 
• ~ 2014 東京大学 情報生命科学専攻 助教 
– ゲノムサイエンス研究 
• 大規模データ処理、並列・分散コンピューティング 
• 2014.3月~ Treasure Data 
– ソフトウェアエンジニア, MPP Team Leader 
Copyright ©2014 Treasure Data. All Rights Reserved. 
2
「データベース」に関連するオープンソース活動 
• sqlite-jdbc 
– SQLite DBMS for Java 
– 1ファイル=1DB 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• snappy-java 
– 高速圧縮ライブラリ 
– 月に10万回以上ダウンロード 
– Sparkでも採用 
• msgpack-java 
• UT Genome Browser (UTGB) 
– 大規模ゲノム情報の可視化 
3
Treasure Dataとは? 
• 米シリコンバレー発日本人創業のビッグデータ関連企業 
– 2011年12月、米Mountain Viewにて創業 
– 2012年11月、東京丸の内に日本支社設立 
• クラウド型データマネージメントサービス「Treasure Data Service」を提供 
Copyright ©2014 Treasure Data. All Rights Reserved. 
4 
芳川裕誠 – CEO 
Open source business veteran 
太田一樹 – CTO 
Founder of world’s largest Hadoop Group 
主要投資家 
Sierra Ventures – (Tim Guleri) 
企業向けソフト・データベース領域での有力VC 
Bill Tai 
Charles River Ventures, Twitterなどに投資 
まつもとゆきひろ 
Ruby言語開発者 
創業者 
Jerry Yang 
Yahoo! Inc. 創業者 
古橋貞之 – Software Engineer 
MessagePack, Fluentd開発者
Treasure Data Service 
ビッグデータのための「クラウド + マネジメント」一体型サービス 
データ収集~保存~分析までワンストップでサポート 
Copyright ©2014 Treasure Data. All Rights Reserved. 
5 
• 毎日数百億規模のレコードが取り込まれている 
– 2014年5月に5兆(trillion)レコードに到達 
• SQLベース(Hive, Presto, Pigなど)による検索サービスを提供
Impressive Momentum 
Copyright ©2014 Treasure Data. All Rights Reserved. 
7000 
6000 
5000 
4000 
3000 
2000 
1000 
0 
Data Growth in Billions 
Data (records) Imported 
Service 
Launched 
4 Trillion 
3 Trillion 
1 Trillion 
5 Trillion 
2 Trillion 
Series A Funding 
Gartner Cool 
100 
Customers 
Vendor 
Report 
6
Copyright ©2014 Treasure Data. All Rights Reserved. 7
Over 100 customers, including: 
Copyright ©2014 Treasure Data. All Rights Reserved. 
8
Claremont Report on Database Research 
• データベースの研究者、ユーザー、 
識者が今後のDBMSについて議論 
– CACM, Vol. 52 No. 6, 2009 
• Cloud Data Serviceの発展を予測 
– SQLの重要な役割 
• 機能を制限できる 
• サービスとして提供するには好都合 
– 難しい例:Spark  
• 任意のコードを実行させるためのセ 
キュアなコンテナ開発が別途必要 
Copyright ©2014 Treasure Data. All Rights Reserved. 
9
Beckman Report on Database Research 
• 2013年版 
– http://beckman.cs.wisc.edu/beckman-report2013.pdf 
– ほぼ全面Big Dataについての話題 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• End-to-end 
– データの収集から、knowledgeまで生み出す 
• Cloud Serviceの普及 
– IaaS, PaaS, SaaS 
– DBMSの全てをクラウドで、という理想にはまだ到達していない 
• DB教育にも言及 
– 70, 80年代のシステムの紹介から脱するべき 
– DBの技術は、分散システム、Hadoopなど他分野にも価値があることを理 
解すべき 
10
Big Data Simplified: The Treasure Data Approach 
Infinite & Economical 
Cloud Data Store 
Treasure Agent Treasure Agent 
Copyright ©2014 Treasure Data. All Rights Reserved. 
SQL 
SQL-based Dashboards 
Results Push 
Results Push 
App Servers 
Multi-structured Events! 
• register! 
• login! 
• start_event! 
• purchase! 
• etc! 
DBs & Data Marts 
SQL-based 
Ad-hoc Queries 
Other Apps 
Familiar & 
Table-oriented 
ü App log data! 
ü Mobile event data! 
ü Sensor data! 
ü Telemetry! 
Web SDK 
Mobile SDKs 
Treasure Agent 
structured Events 
Treasure Agent 
Multi-structured Events Multi-Treasure Agent 
Treasure Agent 
Treasure Agent 
Treasure Agent 
Embedded SDKs 
Server-side Agents 
11
Treasure Dataの基盤技術 
• データを「正しく集める」 
Copyright ©2014 Treasure Data. All Rights Reserved. 
– Fluentd 
• ログコレクター 
• タグ -> JSON or MessagePack形式のログ(データ) 
– PlazmaDB 
• Columnar DB 
• MessagePack + Compression 
• データを「手軽に解析する」 
– クラウド上での分散クエリエンジン 
• Hive, Presto, Pigベース 
12
Fluentd: データを正しく集めるための入り口 
• 基本:JSON・MessagePack形式のデータを受け取る 
– 種々のinput/output plugin 
• メッセージのルーティング 
– メッセージに付けられたタグ毎に送り先を切り替えられる 
Copyright ©2014 Treasure Data. All Rights Reserved. 
13 
fluentd.org
Multi-structured Events 
Copyright ©2014 Treasure Data. All Rights Reserved. 
Multi-structured Events 
Agent 
Server-side Agents! 
Javascript SDK! 
Collectors 
Mobile / Embedded SDKs! 
Web File Uploader! 
Bulk Loader 
Bulk Importers! 
Small Files 
For the latest list 
http://docs.treasuredata.com 
14
TDのバックエンドストレージ 
import SQL Query 
• Real-Time Storage 
– 直近のデータ (MessagePack format) 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• Archive Storage 
– 過去のデータ, MapReduceでcolumnarに分解、圧縮 (MessagePack + gzipなど) 
– もともとのサイズ(json形式)の10分の1程度になる 
15 
Real-time 
Storage 
Archive 
Storage 
23c82b0ba3405d4c15aa85d2190e 
6d7b1482412ab14f0332b8aee119 
8a7bc848b2791b8fd603c719e54f 
0e3d402b17638477c9a7977e7dab 
... 
2012-10-08 00:23:00 912ec80 
2012-10-09 00:01:00 277a259 
... 
1時間毎にmerge
Object Storage + Index 
import SQL Query 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• Storage 
– Amazon S3を利用。S3互換のRiak CS (Basho)も利用できる 
– HTTP経由のデータ通信 
• Object Index: PostgreSQLを使用 
– S3ファイルのリスト列挙操作は遅いため 
– ユーザー毎、時系列毎の範囲で検索するためにGiST indexを利用 
16 
Real-time 
Storage 
Archive 
Storage 
23c82b0ba3405d4c15aa85d2190e 
6d7b1482412ab14f0332b8aee119 
8a7bc848b2791b8fd603c719e54f 
0e3d402b17638477c9a7977e7dab 
... 
2012-10-08 00:23:00 912ec80 
2012-10-09 00:01:00 277a259 
... 
1時間毎にmerge
Copyright ©2014 Treasure Data. All Rights Reserved. 
PlazmaDB 
17
time ip : string code : int action : string 
2014-09-21 10:14:33 135.52.211.23 15 upload 
2014-09-21 10:14:33 45.25.38.156 -1 temp 
2014-09-21 10:14:34 97.12.76.55 99 null 
2014-09-21 10:14:36 76.121.9.35 21 event 
Collectors PlazmaDB 
Copyright ©2014 Treasure Data. All Rights Reserved. 
Agent 
ü Familiar Tables 
18
time ip : string code : int action : string 
2014-09-21 10:14:33 135.52.211.23 15 upload 
2014-09-21 10:14:33 45.25.38.156 -1 temp 
2014-09-21 10:14:34 97.12.76.55 99 null 
2014-09-21 10:14:36 76.121.9.35 21 event 
2014-09-21 11:27:41 97.12.76.55 99 null 
2014-09-21 11:27:42 45.25.38.156 -1 temp 
2014-09-21 11:27:42 135.52.211.23 15 upload 
2014-09-21 12:02:18 97.12.76.55 99 null 
2014-09-21 12:02:18 45.25.38.156 -1 temp 
2014-09-21 12:02:19 135.52.211.23 15 upload 
Collectors 
ü Familiar Tables 
ü Time-based Partitioning 
Copyright ©2014 Treasure Data. All Rights Reserved. 
Agent 
Query 
Partition 
Pruning 
PlazmaDB 
19
time ip : string code : int action : string status : string 
2014-09-21 10:14:33 135.52.211.23 15 upload null 
2014-09-21 10:14:33 45.25.38.156 -1 temp null 
2014-09-21 10:14:34 97.12.76.55 99 null null 
2014-09-21 10:14:36 76.121.9.35 21 event null 
2014-09-21 11:27:41 97.12.76.55 99 null null 
2014-09-21 11:27:42 45.25.38.156 -1 temp null 
2014-09-21 11:27:42 135.52.211.23 15 upload null 
2014-09-21 12:02:18 97.12.76.55 99 null null 
2014-09-21 12:02:18 45.25.38.156 -1 temp null 
2014-09-21 12:02:19 135.52.211.23 15 upload null 
2014-09-21 12:03:24 76.34.123.54 13 status ok 
2014-09-21 12:03:25 92.67.7.113 13 status error 
2014-09-21 12:04:51 135.52.211.23 15 upload null 
Collectors PlazmaDB 
ü Familiar Tables 
ü Time-based Partitioning 
ü Schema-Flexible 
Copyright ©2014 Treasure Data. All Rights Reserved. 
Agent 
20
MessagePack 
Copyright ©2014 Treasure Data. All Rights Reserved. 
21 
• レコードはMessagePack形式 
• 入力時のデータ型はそのまま保存 
– intやstring型のデータが列中に混在した状況でも使える 
PlazmaDBがスキーマに合わせて自動型変換を行う
MessagePack Format Types 
• 0x00 ~ 0x7f int 
Copyright ©2014 Treasure Data. All Rights Reserved. 
– 1 byte 
• 0xe0 ~ 0xff neg int 
– 1 byte 
• Support 
fixed/variable length 
data 
22
Dynamic Data Type Conversion 
SELECT 54 (int) 
(Explicit) Schema user:int name:string value:int 
Copyright ©2014 Treasure Data. All Rights Reserved. 
23 
NULL 
{“user”:54, “name”:”test”, “value”:”120”, “host”:”local”} 
データ(JSON) 
“test” (string) 120 (int) 
host:int
Implicit / Explicit Schema 
• Implicit Schema 
– スキーマは自動的に付与される 
– 入力されたデータ列から自動的に決定 
– ユーザーはスキーマ定義なしにデータを放り込める 
• Explicit Schema 
– 明示的にカラムに型を設定できる 
• 変換可能でない場合はNULLとして出力される 
– スキーマ変更への柔軟さ 
Copyright ©2014 Treasure Data. All Rights Reserved. 
24
Non-1NF Type (NF^2) Support 
• Array types 
Copyright ©2014 Treasure Data. All Rights Reserved. 
– [1, 2, … ] 
• Map types 
– {id:1, name:leo, address:[xxxx, yyyy]} 
• In SQL 
– JSON-based interface 
25
msgpack-java 
Copyright ©2014 Treasure Data. All Rights Reserved. 
26
MessagePacker 
Copyright ©2014 Treasure Data. All Rights Reserved. 
27
MessageUnpacker 
Copyright ©2014 Treasure Data. All Rights Reserved. 
28
msgpack-java: Implementation Details 
Copyright ©2014 Treasure Data. All Rights Reserved. 
29
Copyright ©2014 Treasure Data. All Rights Reserved. • https://github.com/msgpack/msgpack-java/ 30
MessagePackの高速化 
• なぜ高速化するのか? 
• 例:2割速くなる => マシン台数を2割減らせる 
– 大幅なコストダウン 
• クエリ処理も速くなる 
– 全体のスループット向上 
Copyright ©2014 Treasure Data. All Rights Reserved. 
31
MessageBuffer 
• 内部用buffer 
• Javaのheapメモリに直接アクセス 
• sun.misc.Unsafe 
– byte[]中の任意の位置のデータを特定 
のprimitive typeにcastできる 
– JavaでDBを作りたいなら必須の機能 
Copyright ©2014 Treasure Data. All Rights Reserved. 
32
UnsafeでCに匹敵するメモリアクセス性能を出せる 
• http://frsyuki.hatenablog.com/entry/2014/03/12/155231 
Copyright ©2014 Treasure Data. All Rights Reserved. 
33
なぜByteBufferは遅いのか? 
• 良いプログラミング作法 
– interfaceを定義して、派生クラスによる実装を用意する 
– 例: ByteBufferにはHeapByteBuffer, DirectByteBufferなどの実装がクラ 
スパスに存在 
• 現実:TypeProfile 
– どの派生クラスのコードが呼び出されるか実行時に判定 
– JVMでTypeProfileが生成され、table lookupのコストが余計に必要 
– 遅くなる! 
• MessageBufferのlittle endian版はTypeProfileを生成しないので高速 
Copyright ©2014 Treasure Data. All Rights Reserved. 
34
Format Typeの確認 
• Unpackerで必要 
– prefixを1 byte 読んで 
データタイプを判定 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• 自然な実装 
– switch-case 
• ANTLRが生成するlexer/ 
parserはこのパターンの 
コード 
35
Format Typeの確認 
• lookup tableを作成 - cacheの活用 – 20000x faster! 
Copyright ©2014 Treasure Data. All Rights Reserved. 
36
2x performance improvement in v07 
Copyright ©2014 Treasure Data. All Rights Reserved. 
37
MessagePack v07 
• Value interface 
– Integer, Float, Array, Map, ExtendedValue, etc. 
– Query Result -> Value -> ResultOutput 
• TDではクエリ結果(Valueで表現)をCSV, JSON, S3, RDBMS, Tableau Server 
用フォーマットなどに変換して出力している 
• msgpack-jackson 
– オブジェクトデータをMessagePack形式でserialize/deserialize 
– v06にあったコード生成テンプレート機能 
• 廃止へ 
• 維持が大変、javassistで生成されるコードをクラスローダーに読ませる部分 
が難しいなど、様々な課題 
Copyright ©2014 Treasure Data. All Rights Reserved. 
38
MessagePack Hackathon at Silicon Valley 
• SV 
– @frsyuki 
– @oza_x86 
– @hkmurakami 
– @taroleo 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• JP 
– @komamitsu 
39
Copyright ©2014 Treasure Data. All Rights Reserved. 40
Copyright ©2014 Treasure Data. All Rights Reserved. 41
Treasure Dataが目指すもの 
• 「世の中の誰もが手軽にデータベースを使える」ようにする 
• まずは誰もが「データを手軽に正しく集められる」ように 
– Fluentd+msgpackで柔軟にデータを取り込む 
• そして誰もが「データを手軽に解析」できる 
ように 
– 分散SQLエンジン 
• Hive, Presto 
– plazmadbによるcolumnar storage, MessagePack 
Copyright ©2014 Treasure Data. All Rights Reserved. 
• A lot more … 
WE ARE HIRING! 
42

Weitere ähnliche Inhalte

Was ist angesagt?

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 

Was ist angesagt? (20)

今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesign
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Delta Lake with Synapse dataflow
Delta Lake with Synapse dataflowDelta Lake with Synapse dataflow
Delta Lake with Synapse dataflow
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 

Andere mochten auch

Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014
Sadayuki Furuhashi
 
おひろめ会:Javaにおけるデータシリアライズ手法
おひろめ会:Javaにおけるデータシリアライズ手法おひろめ会:Javaにおけるデータシリアライズ手法
おひろめ会:Javaにおけるデータシリアライズ手法
moai kids
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
 
Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮
moai kids
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
 

Andere mochten auch (20)

並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013
How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013
How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013
 
TwitterのStreaming APIについて
TwitterのStreaming APIについてTwitterのStreaming APIについて
TwitterのStreaming APIについて
 
おひろめ会:Javaにおけるデータシリアライズ手法
おひろめ会:Javaにおけるデータシリアライズ手法おひろめ会:Javaにおけるデータシリアライズ手法
おひろめ会:Javaにおけるデータシリアライズ手法
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
 
Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮
 
OData って何?
OData って何?OData って何?
OData って何?
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 

Ähnlich wie Treasure Dataを支える技術 - MessagePack編

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
irix_jp
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
VOYAGE GROUP
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
Takahiro Inoue
 

Ähnlich wie Treasure Dataを支える技術 - MessagePack編 (20)

[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
 
10大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con201310大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con2013
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
 

Mehr von Taro L. Saito

Presto as a Service - Tips for operation and monitoring
Presto as a Service - Tips for operation and monitoringPresto as a Service - Tips for operation and monitoring
Presto as a Service - Tips for operation and monitoring
Taro L. Saito
 

Mehr von Taro L. Saito (20)

Unifying Frontend and Backend Development with Scala - ScalaCon 2021
Unifying Frontend and Backend Development with Scala - ScalaCon 2021Unifying Frontend and Backend Development with Scala - ScalaCon 2021
Unifying Frontend and Backend Development with Scala - ScalaCon 2021
 
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
 
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
 
Airframe RPC
Airframe RPCAirframe RPC
Airframe RPC
 
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
 
Airframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpecAirframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpec
 
Presto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 UpdatesPresto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 Updates
 
Reading The Source Code of Presto
Reading The Source Code of PrestoReading The Source Code of Presto
Reading The Source Code of Presto
 
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
How To Use Scala At Work - Airframe In Action at Arm Treasure DataHow To Use Scala At Work - Airframe In Action at Arm Treasure Data
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
 
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018
 
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
Learning Silicon Valley Culture
Learning Silicon Valley CultureLearning Silicon Valley Culture
Learning Silicon Valley Culture
 
Presto At Treasure Data
Presto At Treasure DataPresto At Treasure Data
Presto At Treasure Data
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
 
Introduction to Presto at Treasure Data
Introduction to Presto at Treasure DataIntroduction to Presto at Treasure Data
Introduction to Presto at Treasure Data
 
Workflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoWorkflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. Tokyo
 
Presto @ Treasure Data - Presto Meetup Boston 2015
Presto @ Treasure Data - Presto Meetup Boston 2015Presto @ Treasure Data - Presto Meetup Boston 2015
Presto @ Treasure Data - Presto Meetup Boston 2015
 
JNuma Library
JNuma LibraryJNuma Library
JNuma Library
 
Presto as a Service - Tips for operation and monitoring
Presto as a Service - Tips for operation and monitoringPresto as a Service - Tips for operation and monitoring
Presto as a Service - Tips for operation and monitoring
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Treasure Dataを支える技術 - MessagePack編

  • 1. Treasure Dataを支える技術 - MessagePack編 Taro L. Saito, Treasure Data leo@treasure-data.com December 11, 2014 ビッグデータ基盤勉強会@NTT武蔵野開発センター Copyright ©2014 Treasure Data. All Rights Reserved.
  • 2. 自己紹介 @taroleo • 2002 東京大学 理学部 情報科学科卒 • 2007 Ph.D. – XMLデータベース(SIGMOD’08)、トランザクション処理の研究 • ~ 2014 東京大学 情報生命科学専攻 助教 – ゲノムサイエンス研究 • 大規模データ処理、並列・分散コンピューティング • 2014.3月~ Treasure Data – ソフトウェアエンジニア, MPP Team Leader Copyright ©2014 Treasure Data. All Rights Reserved. 2
  • 3. 「データベース」に関連するオープンソース活動 • sqlite-jdbc – SQLite DBMS for Java – 1ファイル=1DB Copyright ©2014 Treasure Data. All Rights Reserved. • snappy-java – 高速圧縮ライブラリ – 月に10万回以上ダウンロード – Sparkでも採用 • msgpack-java • UT Genome Browser (UTGB) – 大規模ゲノム情報の可視化 3
  • 4. Treasure Dataとは? • 米シリコンバレー発日本人創業のビッグデータ関連企業 – 2011年12月、米Mountain Viewにて創業 – 2012年11月、東京丸の内に日本支社設立 • クラウド型データマネージメントサービス「Treasure Data Service」を提供 Copyright ©2014 Treasure Data. All Rights Reserved. 4 芳川裕誠 – CEO Open source business veteran 太田一樹 – CTO Founder of world’s largest Hadoop Group 主要投資家 Sierra Ventures – (Tim Guleri) 企業向けソフト・データベース領域での有力VC Bill Tai Charles River Ventures, Twitterなどに投資 まつもとゆきひろ Ruby言語開発者 創業者 Jerry Yang Yahoo! Inc. 創業者 古橋貞之 – Software Engineer MessagePack, Fluentd開発者
  • 5. Treasure Data Service ビッグデータのための「クラウド + マネジメント」一体型サービス データ収集~保存~分析までワンストップでサポート Copyright ©2014 Treasure Data. All Rights Reserved. 5 • 毎日数百億規模のレコードが取り込まれている – 2014年5月に5兆(trillion)レコードに到達 • SQLベース(Hive, Presto, Pigなど)による検索サービスを提供
  • 6. Impressive Momentum Copyright ©2014 Treasure Data. All Rights Reserved. 7000 6000 5000 4000 3000 2000 1000 0 Data Growth in Billions Data (records) Imported Service Launched 4 Trillion 3 Trillion 1 Trillion 5 Trillion 2 Trillion Series A Funding Gartner Cool 100 Customers Vendor Report 6
  • 7. Copyright ©2014 Treasure Data. All Rights Reserved. 7
  • 8. Over 100 customers, including: Copyright ©2014 Treasure Data. All Rights Reserved. 8
  • 9. Claremont Report on Database Research • データベースの研究者、ユーザー、 識者が今後のDBMSについて議論 – CACM, Vol. 52 No. 6, 2009 • Cloud Data Serviceの発展を予測 – SQLの重要な役割 • 機能を制限できる • サービスとして提供するには好都合 – 難しい例:Spark  • 任意のコードを実行させるためのセ キュアなコンテナ開発が別途必要 Copyright ©2014 Treasure Data. All Rights Reserved. 9
  • 10. Beckman Report on Database Research • 2013年版 – http://beckman.cs.wisc.edu/beckman-report2013.pdf – ほぼ全面Big Dataについての話題 Copyright ©2014 Treasure Data. All Rights Reserved. • End-to-end – データの収集から、knowledgeまで生み出す • Cloud Serviceの普及 – IaaS, PaaS, SaaS – DBMSの全てをクラウドで、という理想にはまだ到達していない • DB教育にも言及 – 70, 80年代のシステムの紹介から脱するべき – DBの技術は、分散システム、Hadoopなど他分野にも価値があることを理 解すべき 10
  • 11. Big Data Simplified: The Treasure Data Approach Infinite & Economical Cloud Data Store Treasure Agent Treasure Agent Copyright ©2014 Treasure Data. All Rights Reserved. SQL SQL-based Dashboards Results Push Results Push App Servers Multi-structured Events! • register! • login! • start_event! • purchase! • etc! DBs & Data Marts SQL-based Ad-hoc Queries Other Apps Familiar & Table-oriented ü App log data! ü Mobile event data! ü Sensor data! ü Telemetry! Web SDK Mobile SDKs Treasure Agent structured Events Treasure Agent Multi-structured Events Multi-Treasure Agent Treasure Agent Treasure Agent Treasure Agent Embedded SDKs Server-side Agents 11
  • 12. Treasure Dataの基盤技術 • データを「正しく集める」 Copyright ©2014 Treasure Data. All Rights Reserved. – Fluentd • ログコレクター • タグ -> JSON or MessagePack形式のログ(データ) – PlazmaDB • Columnar DB • MessagePack + Compression • データを「手軽に解析する」 – クラウド上での分散クエリエンジン • Hive, Presto, Pigベース 12
  • 13. Fluentd: データを正しく集めるための入り口 • 基本:JSON・MessagePack形式のデータを受け取る – 種々のinput/output plugin • メッセージのルーティング – メッセージに付けられたタグ毎に送り先を切り替えられる Copyright ©2014 Treasure Data. All Rights Reserved. 13 fluentd.org
  • 14. Multi-structured Events Copyright ©2014 Treasure Data. All Rights Reserved. Multi-structured Events Agent Server-side Agents! Javascript SDK! Collectors Mobile / Embedded SDKs! Web File Uploader! Bulk Loader Bulk Importers! Small Files For the latest list http://docs.treasuredata.com 14
  • 15. TDのバックエンドストレージ import SQL Query • Real-Time Storage – 直近のデータ (MessagePack format) Copyright ©2014 Treasure Data. All Rights Reserved. • Archive Storage – 過去のデータ, MapReduceでcolumnarに分解、圧縮 (MessagePack + gzipなど) – もともとのサイズ(json形式)の10分の1程度になる 15 Real-time Storage Archive Storage 23c82b0ba3405d4c15aa85d2190e 6d7b1482412ab14f0332b8aee119 8a7bc848b2791b8fd603c719e54f 0e3d402b17638477c9a7977e7dab ... 2012-10-08 00:23:00 912ec80 2012-10-09 00:01:00 277a259 ... 1時間毎にmerge
  • 16. Object Storage + Index import SQL Query Copyright ©2014 Treasure Data. All Rights Reserved. • Storage – Amazon S3を利用。S3互換のRiak CS (Basho)も利用できる – HTTP経由のデータ通信 • Object Index: PostgreSQLを使用 – S3ファイルのリスト列挙操作は遅いため – ユーザー毎、時系列毎の範囲で検索するためにGiST indexを利用 16 Real-time Storage Archive Storage 23c82b0ba3405d4c15aa85d2190e 6d7b1482412ab14f0332b8aee119 8a7bc848b2791b8fd603c719e54f 0e3d402b17638477c9a7977e7dab ... 2012-10-08 00:23:00 912ec80 2012-10-09 00:01:00 277a259 ... 1時間毎にmerge
  • 17. Copyright ©2014 Treasure Data. All Rights Reserved. PlazmaDB 17
  • 18. time ip : string code : int action : string 2014-09-21 10:14:33 135.52.211.23 15 upload 2014-09-21 10:14:33 45.25.38.156 -1 temp 2014-09-21 10:14:34 97.12.76.55 99 null 2014-09-21 10:14:36 76.121.9.35 21 event Collectors PlazmaDB Copyright ©2014 Treasure Data. All Rights Reserved. Agent ü Familiar Tables 18
  • 19. time ip : string code : int action : string 2014-09-21 10:14:33 135.52.211.23 15 upload 2014-09-21 10:14:33 45.25.38.156 -1 temp 2014-09-21 10:14:34 97.12.76.55 99 null 2014-09-21 10:14:36 76.121.9.35 21 event 2014-09-21 11:27:41 97.12.76.55 99 null 2014-09-21 11:27:42 45.25.38.156 -1 temp 2014-09-21 11:27:42 135.52.211.23 15 upload 2014-09-21 12:02:18 97.12.76.55 99 null 2014-09-21 12:02:18 45.25.38.156 -1 temp 2014-09-21 12:02:19 135.52.211.23 15 upload Collectors ü Familiar Tables ü Time-based Partitioning Copyright ©2014 Treasure Data. All Rights Reserved. Agent Query Partition Pruning PlazmaDB 19
  • 20. time ip : string code : int action : string status : string 2014-09-21 10:14:33 135.52.211.23 15 upload null 2014-09-21 10:14:33 45.25.38.156 -1 temp null 2014-09-21 10:14:34 97.12.76.55 99 null null 2014-09-21 10:14:36 76.121.9.35 21 event null 2014-09-21 11:27:41 97.12.76.55 99 null null 2014-09-21 11:27:42 45.25.38.156 -1 temp null 2014-09-21 11:27:42 135.52.211.23 15 upload null 2014-09-21 12:02:18 97.12.76.55 99 null null 2014-09-21 12:02:18 45.25.38.156 -1 temp null 2014-09-21 12:02:19 135.52.211.23 15 upload null 2014-09-21 12:03:24 76.34.123.54 13 status ok 2014-09-21 12:03:25 92.67.7.113 13 status error 2014-09-21 12:04:51 135.52.211.23 15 upload null Collectors PlazmaDB ü Familiar Tables ü Time-based Partitioning ü Schema-Flexible Copyright ©2014 Treasure Data. All Rights Reserved. Agent 20
  • 21. MessagePack Copyright ©2014 Treasure Data. All Rights Reserved. 21 • レコードはMessagePack形式 • 入力時のデータ型はそのまま保存 – intやstring型のデータが列中に混在した状況でも使える PlazmaDBがスキーマに合わせて自動型変換を行う
  • 22. MessagePack Format Types • 0x00 ~ 0x7f int Copyright ©2014 Treasure Data. All Rights Reserved. – 1 byte • 0xe0 ~ 0xff neg int – 1 byte • Support fixed/variable length data 22
  • 23. Dynamic Data Type Conversion SELECT 54 (int) (Explicit) Schema user:int name:string value:int Copyright ©2014 Treasure Data. All Rights Reserved. 23 NULL {“user”:54, “name”:”test”, “value”:”120”, “host”:”local”} データ(JSON) “test” (string) 120 (int) host:int
  • 24. Implicit / Explicit Schema • Implicit Schema – スキーマは自動的に付与される – 入力されたデータ列から自動的に決定 – ユーザーはスキーマ定義なしにデータを放り込める • Explicit Schema – 明示的にカラムに型を設定できる • 変換可能でない場合はNULLとして出力される – スキーマ変更への柔軟さ Copyright ©2014 Treasure Data. All Rights Reserved. 24
  • 25. Non-1NF Type (NF^2) Support • Array types Copyright ©2014 Treasure Data. All Rights Reserved. – [1, 2, … ] • Map types – {id:1, name:leo, address:[xxxx, yyyy]} • In SQL – JSON-based interface 25
  • 26. msgpack-java Copyright ©2014 Treasure Data. All Rights Reserved. 26
  • 27. MessagePacker Copyright ©2014 Treasure Data. All Rights Reserved. 27
  • 28. MessageUnpacker Copyright ©2014 Treasure Data. All Rights Reserved. 28
  • 29. msgpack-java: Implementation Details Copyright ©2014 Treasure Data. All Rights Reserved. 29
  • 30. Copyright ©2014 Treasure Data. All Rights Reserved. • https://github.com/msgpack/msgpack-java/ 30
  • 31. MessagePackの高速化 • なぜ高速化するのか? • 例:2割速くなる => マシン台数を2割減らせる – 大幅なコストダウン • クエリ処理も速くなる – 全体のスループット向上 Copyright ©2014 Treasure Data. All Rights Reserved. 31
  • 32. MessageBuffer • 内部用buffer • Javaのheapメモリに直接アクセス • sun.misc.Unsafe – byte[]中の任意の位置のデータを特定 のprimitive typeにcastできる – JavaでDBを作りたいなら必須の機能 Copyright ©2014 Treasure Data. All Rights Reserved. 32
  • 34. なぜByteBufferは遅いのか? • 良いプログラミング作法 – interfaceを定義して、派生クラスによる実装を用意する – 例: ByteBufferにはHeapByteBuffer, DirectByteBufferなどの実装がクラ スパスに存在 • 現実:TypeProfile – どの派生クラスのコードが呼び出されるか実行時に判定 – JVMでTypeProfileが生成され、table lookupのコストが余計に必要 – 遅くなる! • MessageBufferのlittle endian版はTypeProfileを生成しないので高速 Copyright ©2014 Treasure Data. All Rights Reserved. 34
  • 35. Format Typeの確認 • Unpackerで必要 – prefixを1 byte 読んで データタイプを判定 Copyright ©2014 Treasure Data. All Rights Reserved. • 自然な実装 – switch-case • ANTLRが生成するlexer/ parserはこのパターンの コード 35
  • 36. Format Typeの確認 • lookup tableを作成 - cacheの活用 – 20000x faster! Copyright ©2014 Treasure Data. All Rights Reserved. 36
  • 37. 2x performance improvement in v07 Copyright ©2014 Treasure Data. All Rights Reserved. 37
  • 38. MessagePack v07 • Value interface – Integer, Float, Array, Map, ExtendedValue, etc. – Query Result -> Value -> ResultOutput • TDではクエリ結果(Valueで表現)をCSV, JSON, S3, RDBMS, Tableau Server 用フォーマットなどに変換して出力している • msgpack-jackson – オブジェクトデータをMessagePack形式でserialize/deserialize – v06にあったコード生成テンプレート機能 • 廃止へ • 維持が大変、javassistで生成されるコードをクラスローダーに読ませる部分 が難しいなど、様々な課題 Copyright ©2014 Treasure Data. All Rights Reserved. 38
  • 39. MessagePack Hackathon at Silicon Valley • SV – @frsyuki – @oza_x86 – @hkmurakami – @taroleo Copyright ©2014 Treasure Data. All Rights Reserved. • JP – @komamitsu 39
  • 40. Copyright ©2014 Treasure Data. All Rights Reserved. 40
  • 41. Copyright ©2014 Treasure Data. All Rights Reserved. 41
  • 42. Treasure Dataが目指すもの • 「世の中の誰もが手軽にデータベースを使える」ようにする • まずは誰もが「データを手軽に正しく集められる」ように – Fluentd+msgpackで柔軟にデータを取り込む • そして誰もが「データを手軽に解析」できる ように – 分散SQLエンジン • Hive, Presto – plazmadbによるcolumnar storage, MessagePack Copyright ©2014 Treasure Data. All Rights Reserved. • A lot more … WE ARE HIRING! 42