SlideShare a Scribd company logo
1 of 60
Download to read offline
5 ( 01 1 1 1 )88 . 5 . A
( C
2 91 - 8 9 1
15 91
9 0. ( 2 0 2 11 )0. )
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
•
• /
•
•
•
•
9 0. ( 2 0 2 11 )0. )
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
H
クエリー
エンジン
分析データ HDFSETL
スキーマ
/
9 0. ( 2 0 2 11 )0. )
( 1 0 ( 0 ) ( 1 22 1 0 7 .7. 9.
•
•
•
( 1 08 ( 0 ) ( 81 22 1 08 . . 9.
• -
• -
9 0. ( 2 0 2 11 )0. )
-
•
•
クエリー
エンジン
分析
JSON
データ HDFSETL
スキーマ
( 201 ( 1 ) ( 2 201 9 9 .
U U
•
•
• C P
•
• C
9-1 .
9 0. ( 2 0 2 11 )0. )
•
• -
クエリー
エンジン
分析
スキーマ
ORC
データ HDFSETL
9 0. ( 2 0 2 11 )0. )
C
•
•
C
•
• P
schema-on-write
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
-
1
•
•
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
-
1
•
•
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
•
•
schema-on-write
( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69.
• P
• D
•
•
schema-on-write
7A ( 127 2 2 2A )99 7A C
•
•
S J R NO P
0 7 2 2 0-, A A
0 7 2 A - .2 A
9 0. ( 2 0 2 11 )0. )
9 0. ( 2 0 2 11 )0. )
•
•
•
9 0. ( 2 0 2 11 )0. )
-
•
• S
•
) ) 01 1 1 ) 1 ( . .
-
•
•
R P N OJ
2 91 1 ,
2 91 C ,.) -1 A
9 0. ( 2 0 2 11 )0. )
-
•
•
クエリー
エンジン
分析
スキーマ
Yosegi
データ HDFSETL
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
•
•
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
c3
c3 c1 c5
c1 c5 c2 c4c3
{ c3 : v3 }
{ c1 : v1 , c5 : v5 }
{ c2 : v2 , c4 : v4 }
(1)
(2)
(3)
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
名前空間 データ領域
スキーマ
( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69.
•
•
•
•
•
( 1 0 ( 0 ) ( 1 22 1 0 7 .7. 9.
•
•
( 1 08 ( 0 ) ( 81 22 1 08 . . 9.
•
c2 c3 c4 c5c1
Struct
子ノード
9 0. ( 2 0 2 11 )0. )
•
•
[100, 200, 300]
Array 型
名前空間
入力
配列要素: 整数型
要素数: 3
配列要素
データ領域
[100, 200, 300]
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
:
Array 型
入力
Struct 型[{ id : 1, name : Smith }]
id name
要素数: 1
配列要素
1 Smith
文字列型整数型
名前空間 データ領域
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
+
N
: A
1
2
2
[10, 20, 30, 40, …]
次元(N個)
データ
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
•
•
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
:
整数型
文字列型
入力 整数型 文字列型
名前空間: 入力前 名前空間: 入力後
Union 型
) 2019 ) 1 4 ) 92 4 (33 2019 .
:
整数型 浮動小数点型
名前空間
Union 型 2: 整数型
3.1: 浮動小数点型
(データ無し)
5.2: 浮動小数点型
データ領域
2
3
NULL
5
2.0
3.1
NULL
5.2
整数型
浮動小数点型
)5 2019 ) 155 )5 5 925 (33 2019 .
• :
•
) 6 2019 ) 1 6 ) 6 92 (33 2019 .
M
• e Y K :
• a :
•
•
) 72019 ) 1 ) 7 7 92 (33 2019 7 .
•
•
•
) 2019 ) 1 ) 92 (33 20198 8 .
timestamp total_price
items
id price number
1516773762 1000
I_001 300 1
I_005 350 2
1516773765 200 I_002 50 4
1516773770 500
I_002 50 1
I_005 350 1
I_009 50 2
timestamp total_price
items
id price number
1516773762 1000 I_001 300 1
1516773762 1000 I_005 350 2
1516773765 200 I_002 50 4
1516773770 500 I_002 50 1
1516773770 500 I_005 350 1
1516773770 500 I_009 50 2
timestamp total_price
items
.id
items
.price
items
.number
1516773762 1000 I_001 300 1
1516773762 1000 I_005 350 2
1516773765 200 I_002 50 4
1516773770 500 I_002 50 1
1516773770 500 I_005 350 1
1516773770 500 I_009 50 2
Array 型の展開
Struct 型の平坦化
(1)
(2)
(3)
元データ
( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9.
•
• Y
•
9 0. ( 2 0 2 11 )0. )
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
D F
• 1 3 23
B U
• 8
• GH
• S P C
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
•
• !
) 2019 ) 1 4 ) 92 4 (33 2019 .
0
-
1
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
C
• )
•
• ( )
)5 2019 ) 155 4 )5 5 9254 ( 2019 .
•
•
•
) 6 2019 ) 1 6 4 ) 6 92 4 ( 2019 .
:
0
20
40
60
80
100
120
140
160
180
region nation supplier part customer partsupp orders lineitem
Yosegi ORC Parquet
データサイズ(GB)
テーブル種類
) 72019 ) 1 4 ) 7 7 92 4 ( 2019 7 .
:
CPU時間(sec)
クエリ種類
0
200
400
600
800
1000
1200
1400
q6 q14 q12 q1 q10 q13 q3 q20 q8 q7 q5 q9 q4 q17
Yosegi ORC Parquet
) 2019 ) 1 4 ) 92 4 ( 20198 8 .
0
200
400
600
800
1000
1200
1400
1600
1800
2000
region nation supplier part customer partsupp orders lineitem
Yosegi ORC Parquet
C
:
クエリ種類
CPU時間(sec)
(4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9.
A
Yahoo! JAPAN
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
• ()
•
Yahoo! JAPAN
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
OG P
R
• B F
• UW 1 R Y
( ) E
• & 1 E 1 3
Yahoo! JAPAN
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
1 0 2
Yahoo! JAPAN :
0
500
1000
1500
2000
2500
table1 table2 table3 table1 table2 table3 table1 table2 table3
Yosegi ORC クエリ種類
CPU時間(sec)
)5 2019 ) 155 )5 5 925 (33 2019 .
(
)
Yahoo! JAPAN :
0
50
100
150
200
250
300
table1 table2 table3 table1 table2 table3 table1 table2 table3
Yosegi ORC クエリ種類
読み込んだデータ量(GB)
)5 2019 ) 155 4 )5 5 9254 ( 2019 .
•
•
•
•
•
9 0. ( 2 0 2 11 )0. )
)56 2019 ) 155 6 )5 65 925 ( 2019 .
!
API
Request
JSON
データ分析基盤
HDFS
Yosegi
ETL
Data Pipeline
スキーマ管理不要
Server
Web/App
MR
TEZ
Spark
Hive
Presto
)5 72019 ) 155 )57 57 925 ( 2019 7 .
•
•
•
9 0. ( 2 0 2 11 )0. )
( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9.
•
•
• Y
•
( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69.
:
/ :
/ // . /
:
O

More Related Content

Similar to Schema-Less Columnar Storage Format Yosegi

基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践wubx
 
Apache IoTDB 工业互联网时序数据库 meetup-2019.12
Apache IoTDB 工业互联网时序数据库 meetup-2019.12Apache IoTDB 工业互联网时序数据库 meetup-2019.12
Apache IoTDB 工业互联网时序数据库 meetup-2019.12jixuan1989
 
2012_SNICO Catalog
2012_SNICO Catalog2012_SNICO Catalog
2012_SNICO CatalogCheng-I Yang
 
Json tutorial
Json tutorialJson tutorial
Json tutorialcri fan
 
PBL1-v1-005j.pptx
PBL1-v1-005j.pptxPBL1-v1-005j.pptx
PBL1-v1-005j.pptxNAIST
 
中国专利信息初创公司战略资源
中国专利信息初创公司战略资源中国专利信息初创公司战略资源
中国专利信息初创公司战略资源Alan Engel
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法maclean liu
 

Similar to Schema-Less Columnar Storage Format Yosegi (8)

Ch7 習題
Ch7 習題Ch7 習題
Ch7 習題
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践
 
Apache IoTDB 工业互联网时序数据库 meetup-2019.12
Apache IoTDB 工业互联网时序数据库 meetup-2019.12Apache IoTDB 工业互联网时序数据库 meetup-2019.12
Apache IoTDB 工业互联网时序数据库 meetup-2019.12
 
2012_SNICO Catalog
2012_SNICO Catalog2012_SNICO Catalog
2012_SNICO Catalog
 
Json tutorial
Json tutorialJson tutorial
Json tutorial
 
PBL1-v1-005j.pptx
PBL1-v1-005j.pptxPBL1-v1-005j.pptx
PBL1-v1-005j.pptx
 
中国专利信息初创公司战略资源
中国专利信息初创公司战略资源中国专利信息初创公司战略资源
中国专利信息初创公司战略资源
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法
 

Schema-Less Columnar Storage Format Yosegi

  • 1. 5 ( 01 1 1 1 )88 . 5 . A ( C 2 91 - 8 9 1 15 91
  • 2. 9 0. ( 2 0 2 11 )0. )
  • 3. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. • • / • • • •
  • 4. 9 0. ( 2 0 2 11 )0. )
  • 5. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. H クエリー エンジン 分析データ HDFSETL スキーマ /
  • 6. 9 0. ( 2 0 2 11 )0. )
  • 7. ( 1 0 ( 0 ) ( 1 22 1 0 7 .7. 9. • • •
  • 8. ( 1 08 ( 0 ) ( 81 22 1 08 . . 9. • - • -
  • 9. 9 0. ( 2 0 2 11 )0. ) - • • クエリー エンジン 分析 JSON データ HDFSETL スキーマ
  • 10. ( 201 ( 1 ) ( 2 201 9 9 . U U • • • C P • • C 9-1 .
  • 11. 9 0. ( 2 0 2 11 )0. ) • • - クエリー エンジン 分析 スキーマ ORC データ HDFSETL
  • 12. 9 0. ( 2 0 2 11 )0. ) C • • C • • P schema-on-write
  • 13. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. - 1 • •
  • 14. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. - 1 • •
  • 15. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. • • schema-on-write
  • 16. ( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69. • P • D • • schema-on-write
  • 17. 7A ( 127 2 2 2A )99 7A C • • S J R NO P 0 7 2 2 0-, A A 0 7 2 A - .2 A
  • 18. 9 0. ( 2 0 2 11 )0. )
  • 19. 9 0. ( 2 0 2 11 )0. ) • • •
  • 20. 9 0. ( 2 0 2 11 )0. ) - • • S •
  • 21. ) ) 01 1 1 ) 1 ( . . - • • R P N OJ 2 91 1 , 2 91 C ,.) -1 A
  • 22. 9 0. ( 2 0 2 11 )0. ) - • • クエリー エンジン 分析 スキーマ Yosegi データ HDFSETL
  • 23. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. • •
  • 24. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. c3 c3 c1 c5 c1 c5 c2 c4c3 { c3 : v3 } { c1 : v1 , c5 : v5 } { c2 : v2 , c4 : v4 } (1) (2) (3)
  • 25. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. 名前空間 データ領域 スキーマ
  • 26. ( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69. • • • • •
  • 27. ( 1 0 ( 0 ) ( 1 22 1 0 7 .7. 9. • •
  • 28. ( 1 08 ( 0 ) ( 81 22 1 08 . . 9. • c2 c3 c4 c5c1 Struct 子ノード
  • 29. 9 0. ( 2 0 2 11 )0. ) • • [100, 200, 300] Array 型 名前空間 入力 配列要素: 整数型 要素数: 3 配列要素 データ領域 [100, 200, 300]
  • 30. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. : Array 型 入力 Struct 型[{ id : 1, name : Smith }] id name 要素数: 1 配列要素 1 Smith 文字列型整数型 名前空間 データ領域
  • 31. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. + N : A 1 2 2 [10, 20, 30, 40, …] 次元(N個) データ
  • 32. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. • •
  • 33. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. : 整数型 文字列型 入力 整数型 文字列型 名前空間: 入力前 名前空間: 入力後 Union 型
  • 34. ) 2019 ) 1 4 ) 92 4 (33 2019 . : 整数型 浮動小数点型 名前空間 Union 型 2: 整数型 3.1: 浮動小数点型 (データ無し) 5.2: 浮動小数点型 データ領域 2 3 NULL 5 2.0 3.1 NULL 5.2 整数型 浮動小数点型
  • 35. )5 2019 ) 155 )5 5 925 (33 2019 . • : •
  • 36. ) 6 2019 ) 1 6 ) 6 92 (33 2019 . M • e Y K : • a : • •
  • 37. ) 72019 ) 1 ) 7 7 92 (33 2019 7 . • • •
  • 38. ) 2019 ) 1 ) 92 (33 20198 8 . timestamp total_price items id price number 1516773762 1000 I_001 300 1 I_005 350 2 1516773765 200 I_002 50 4 1516773770 500 I_002 50 1 I_005 350 1 I_009 50 2 timestamp total_price items id price number 1516773762 1000 I_001 300 1 1516773762 1000 I_005 350 2 1516773765 200 I_002 50 4 1516773770 500 I_002 50 1 1516773770 500 I_005 350 1 1516773770 500 I_009 50 2 timestamp total_price items .id items .price items .number 1516773762 1000 I_001 300 1 1516773762 1000 I_005 350 2 1516773765 200 I_002 50 4 1516773770 500 I_002 50 1 1516773770 500 I_005 350 1 1516773770 500 I_009 50 2 Array 型の展開 Struct 型の平坦化 (1) (2) (3) 元データ
  • 39. ( 1 0 ( 0 ) 3 ( 1 3 22 1 0 . . 9. • • Y •
  • 40. 9 0. ( 2 0 2 11 )0. )
  • 41. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. D F • 1 3 23 B U • 8 • GH • S P C
  • 42. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. • • !
  • 43. ) 2019 ) 1 4 ) 92 4 (33 2019 . 0 - 1
  • 44. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. C • ) • • ( )
  • 45. )5 2019 ) 155 4 )5 5 9254 ( 2019 . • • •
  • 46. ) 6 2019 ) 1 6 4 ) 6 92 4 ( 2019 . : 0 20 40 60 80 100 120 140 160 180 region nation supplier part customer partsupp orders lineitem Yosegi ORC Parquet データサイズ(GB) テーブル種類
  • 47. ) 72019 ) 1 4 ) 7 7 92 4 ( 2019 7 . : CPU時間(sec) クエリ種類 0 200 400 600 800 1000 1200 1400 q6 q14 q12 q1 q10 q13 q3 q20 q8 q7 q5 q9 q4 q17 Yosegi ORC Parquet
  • 48. ) 2019 ) 1 4 ) 92 4 ( 20198 8 . 0 200 400 600 800 1000 1200 1400 1600 1800 2000 region nation supplier part customer partsupp orders lineitem Yosegi ORC Parquet C : クエリ種類 CPU時間(sec)
  • 49. (4 1 0 ( 044 ) (4 4 14 22 1 0 . . 9. A Yahoo! JAPAN
  • 50. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. • () • Yahoo! JAPAN
  • 51. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. OG P R • B F • UW 1 R Y ( ) E • & 1 E 1 3 Yahoo! JAPAN
  • 52. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. 1 0 2 Yahoo! JAPAN : 0 500 1000 1500 2000 2500 table1 table2 table3 table1 table2 table3 table1 table2 table3 Yosegi ORC クエリ種類 CPU時間(sec)
  • 53. )5 2019 ) 155 )5 5 925 (33 2019 . ( ) Yahoo! JAPAN : 0 50 100 150 200 250 300 table1 table2 table3 table1 table2 table3 table1 table2 table3 Yosegi ORC クエリ種類 読み込んだデータ量(GB)
  • 54. )5 2019 ) 155 4 )5 5 9254 ( 2019 . • • • • •
  • 55. 9 0. ( 2 0 2 11 )0. )
  • 56. )56 2019 ) 155 6 )5 65 925 ( 2019 . ! API Request JSON データ分析基盤 HDFS Yosegi ETL Data Pipeline スキーマ管理不要 Server Web/App MR TEZ Spark Hive Presto
  • 57. )5 72019 ) 155 )57 57 925 ( 2019 7 . • • •
  • 58. 9 0. ( 2 0 2 11 )0. )
  • 59. ( 5 1 0 ( 0 ) 5 ( 5 1 22 1 0 . . 9. • • • Y •
  • 60. ( 61 0 ( 0 ) ( 6 6 1 22 1 0 . .69. : / : / // . / : O