SlideShare a Scribd company logo
1 of 42
Download to read offline
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

More Related Content

What's hot

iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザNoritaka Sekiyama
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
Presto At Treasure Data
Presto At Treasure DataPresto At Treasure Data
Presto At Treasure DataTaro L. Saito
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo!デベロッパーネットワーク
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2Takashi Hoshino
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
dm-writeboost-kernelvm
dm-writeboost-kernelvmdm-writeboost-kernelvm
dm-writeboost-kernelvmAkira Hayakawa
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 
Oracle Database Enterprise Edition で解決する データベースシステムの課題 (12c対応版)
Oracle Database Enterprise Edition で解決するデータベースシステムの課題 (12c対応版)Oracle Database Enterprise Edition で解決するデータベースシステムの課題 (12c対応版)
Oracle Database Enterprise Edition で解決する データベースシステムの課題 (12c対応版)オラクルエンジニア通信
 
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 発表資料)NTT DATA Technology & Innovation
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクションAkio Mitobe
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~hideakikabuto
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 

What's hot (20)

iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
Presto At Treasure Data
Presto At Treasure DataPresto At Treasure Data
Presto At Treasure Data
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
dm-writeboost-kernelvm
dm-writeboost-kernelvmdm-writeboost-kernelvm
dm-writeboost-kernelvm
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
Oracle Database Enterprise Edition で解決する データベースシステムの課題 (12c対応版)
Oracle Database Enterprise Edition で解決するデータベースシステムの課題 (12c対応版)Oracle Database Enterprise Edition で解決するデータベースシステムの課題 (12c対応版)
Oracle Database Enterprise Edition で解決する データベースシステムの課題 (12c対応版)
 
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 発表資料)
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクション
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 

Viewers also liked

並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法Yoshifumi Kawai
 
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
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityYoshifumi Kawai
 
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 loaderSadayuki Furuhashi
 
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#Yoshifumi Kawai
 
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# RPCYoshifumi Kawai
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 
Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Sadayuki Furuhashi
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 
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 2013Dan Milstein
 
TwitterのStreaming APIについて
TwitterのStreaming APIについてTwitterのStreaming APIについて
TwitterのStreaming APIについてHidenori Goto
 
おひろめ会: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とmaxpsMITSUNARI Shigeo
 

Viewers also liked (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”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
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
 

Similar to Treasure Dataを支える技術 - MessagePack編

[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 トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
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運用事例Taro L. Saito
 
トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9トレジャーデータ新サービス発表 2013/12/9
トレジャーデータ新サービス発表 2013/12/9Treasure Data, Inc.
 
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#14Masahiro Nagano
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Dai Utsui
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析MapR Technologies Japan
 
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 PipelineAmazon Web Services Japan
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
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/15MapR Technologies Japan
 
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/09MapR Technologies Japan
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013Daichi Egawa
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usageirix_jp
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best PracticeHadoop / Spark Conference Japan
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysKenta Suzuki
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysVOYAGE 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
 

Similar to 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!!
 

More from Taro L. Saito

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 2021Taro L. Saito
 
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 2020Taro L. Saito
 
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 2020Taro L. Saito
 
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 2020Taro L. Saito
 
Airframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpecAirframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpecTaro L. Saito
 
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 UpdatesTaro L. Saito
 
Reading The Source Code of Presto
Reading The Source Code of PrestoReading The Source Code of Presto
Reading The Source Code of PrestoTaro L. Saito
 
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 DataTaro L. Saito
 
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 2018Taro L. Saito
 
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-17Taro L. Saito
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro L. Saito
 
Learning Silicon Valley Culture
Learning Silicon Valley CultureLearning Silicon Valley Culture
Learning Silicon Valley CultureTaro L. Saito
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure DataTaro L. Saito
 
Introduction to Presto at Treasure Data
Introduction to Presto at Treasure DataIntroduction to Presto at Treasure Data
Introduction to Presto at Treasure DataTaro L. Saito
 
Workflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoWorkflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoTaro L. Saito
 
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 2015Taro 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 monitoringTaro L. Saito
 
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoWeaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoTaro L. Saito
 

More from 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
 
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
 
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoWeaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

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