More Related Content
Similar to [db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔 (20)
More from Insight Technology, Inc. (20)
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
- 1. db tech showcase Tokyo 2015 - Session B12
カラムストアデータベースの技術と活用法
NEC
田村 稔
2015年 6月10日
- 2. Page 2 © NEC Corporation 2015
自己紹介
田村 稔
NEC クラウドプラットフォーム事業部
▌NEC入社以来、データベース製品の設計開発を担当
RIQS
• 汎用コンピュータ上のリレーショナルデータベース
percio
• オブジェクト指向データベース
InfoFrame DataBooster
• インメモリカラムストアデータベース
- 3. Page 3 © NEC Corporation 2015
発表の流れ
▌一般的なカラムデータベースについて
▌当社カラムデータベース
高速化技術
性能
ユースケース
性能以外の特徴
▌まとめ
- 4. Page 4 © NEC Corporation 2015
カラムストアデータベースとは
▌従来のリレーショナルデータベースがレコード単位でストレージに格納してい
るのに対し、カラム(列、項目、属性)ごとに格納する形式のデータベース
名前 住所 電話番号 メール
佐藤 東京都 03-xxxx satou@
鈴木 神奈川県 045-xxx suzuki@
高橋 大阪府 06-xxx takahashi@
田中 愛知県 052-xxx tanaka@
伊藤 埼玉県 048-xxx itou@
渡辺 千葉県 043-xxx watanabe@
従来のリレーショナルDB
行指向データベース
カラムストアDB
列指向DB
カラムナデータベース columnar database
- 5. Page 5 © NEC Corporation 2015
さまざまなカラムデータベース
▌著名なカラムデータベース
Sybase IQ
SAP HANA
HP Vertica
IBM Netezza
Oracle Exadata
▌従来のリレーショナルDBにカラムストア機能が付属した
ハイブリッド・データベース
Oracle
Microsoft SQL Server
IBM DB2
- 6. Page 6 © NEC Corporation 2015
一般的なカラムデータベースの特徴
▌必要な列しか参照しない
参照列が少ない場合に高速
例: 「東京都の会員の名前一覧」「都道府県ごとの平均購入回数」
▌同じようなデータが近くにあるので圧縮に有利
例: 都道府県は47種類しかない
名前 都道府県 ・・・
購入
回数
佐藤 東京都 5
鈴木 神奈川県 12
高橋 大阪府 2
田中 愛知県 6
伊藤 東京都 14
: : : :
都道府県 平均
回数
愛知県 3.4
愛媛県 4.5
茨城県 2.4
岡山県 7.2
沖縄県 5.7
: :
都道府県
累計
回数
件数
東京都 19 2
神奈川県 12 1
大阪府 2 1
: : :
通販サイトでの購入回数
都道府県ごとの
平均購入回数
集計処理の途中経過
- 7. Page 7 © NEC Corporation 2015
カラムデータベースの用途
▌向いている用途
少ない列を対象にした参照、集計などが高速
データウェアハウス (DWH)
ビジネスインテリジェンス
企業活動の情報を収集・蓄積・分析・報告
▌向いていない用途
レコード単位の挿入・削除・更新は遅い
オンライントランザクション処理 (OLTP)
電子商取引、注文処理、インターネットバンキング、電子株取引
- 8. Page 8 © NEC Corporation 2015
求められる高速性
▌データ量の増大
ビッグデータ
IoT (Internet of Things)
▌データ分析の利用拡大
たとえば、売上データ
• 以前は、どこで何がどれだけ売れているか、売れていないか、
どの商品の売上の伸び率が大きいか
• 現在は、より広範囲のデータを収集し、それらの関連性を見つけ、
売上拡大につながる施策を実施する
- 10. Page 10 © NEC Corporation 2015
NECのカラムデータベース
データ構造&アルゴリズム
による高速化
インメモリ技術による
高速化
バッチ処理 データ分析
InfoFrame DataBooster
大量データの高速なデータ処理が求められる状況において
NECのカラムデータベース
これらを実現するのが...
「大量データの参照・更新を高速に行い、
バッチ処理やデータ分析に使えるデータベース」
技術
適用領域
(データブースター)
- 11. Page 11 © NEC Corporation 2015
0
100
200
300
大量データのDWH/アドホック検索を高速化するソフトウェア
カラムストア型のインメモリデータ処理エンジン
インメモリ技術
InfoFrame DataBoosterの概要
アプリケーション
C Java SQL
DataBooster
t1:1億件
t2:100万件
t3:1万件
3表をジョイン、集計してソート
11.8秒
インメモリ技術による高速性の一例
カラムストア技術
秒
従来RDB
(I/Oなし)
299.5秒
【測定SQL】
select t2.c3, sum(t1.c8*t3.c2)
from t1, t2, t3 where t1.c5 =
t3.c1 and t1.c3 = t2.c1 and
t1.c6 < 500 group by t2.c3
order by 2 desc;
25倍高速
業務システムで利用されるデータベースでは、データ量が多くなると
結合(ジョイン)、並び替え(ソート)、集計(グルーピング)、一括変換
の各処理に意外と時間がかかってしまいます。DataBooster はこれらの処理をメモリ上
で高速に実行するので、大幅な時間短縮が可能です
数時間から数十分に
処理時間を短縮
InfoFrame
DataBooster
分析DB
基幹DB
BIツール
Excel
CSVCSVCSV
CSV
検索加工分析集計
CPUキャッシュメモリのヒット率向上による高速化
メモリ上のデータ配置に応じて、最適なアルゴリズムの組合せを決定
メモリデータ処理 アルゴリズム
CPUコストの削減、データ量に比例したコスト
重複データを排除する
機能で使用メモリ量を削減
- 12. Page 12 © NEC Corporation 2015
高速性を実現する内部データ構造
表形式のデータ表現
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
0
1
0
1
2
3
4
5
6
7
0
1
2
3
4
5
0
1
2
3
4
5
6
7
イン
ポート
性別 年齢 身長
内部
構造
VNo VLOrdset VNo VL VNo VL
ソート済
・表形式データを列ごとに配列構造に分解
- 列データを重複排除・ソートされた値リスト(VL)にし、値番号(VNo)で参照
・必要な列のみを操作
- カラムストアの特性である必要な列のみの参照・更新
・集計・ソート・ジョインなどは値番号を用いて処理
- 参照するデータが少なく、順参照が多く、CPUキャッシュが効く
ソート済
ソート済
表形式のデータを列ごとに成分分解し、メモリ上に展開
従来のレコード単位の逐次処理をカラム単位の一括処理で実現
革新的なメモリデータ構造と
データ処理アルゴリズム
- 13. Page 13 © NEC Corporation 2015
高速性を実現する内部データ構造
性別 年齢 身長 体重
女性 18 168 55
男性 21 172 64
女性 24 159 48
女性 16 172 48
男性 28 181 78
女性 16 168 52
男性 24 177 64
女性 18 170 55
表形式のデータ表現
1
2
3
0
4
0
3
1
16
18
21
24
28
0
1
0
0
1
0
1
0
女性
男性
0
1
2
3
4
5
6
7
0
1
2
3
4
0
1
0
1
2
3
4
5
6
7
性別 年齢
値番号 値リスト 値番号 値リスト
ソート済
・・・
成分分解された実データ
イン
ポート
ソート済
- 14. Page 14 © NEC Corporation 2015
DataBooster の高速性
CPU内
L1 L2キャッシュ
数MB 数GB
主記憶
外部記憶
ディスク
ディスクI/Oがないから速いわけではなく、
いかにCPUキャッシュを効率よく使うか
一般的なRDBが
扱うデータ
DataBoosterが
扱うデータ
数KB
4バイト/列
1億件
1億件
一般的なデータ処理(検索、ソート、ジョイン、集計など)が、
ユーザデータ値ではなく、値番号(int)を扱うことで実現でき、
データ処理を高速化
•int比較による高速化
•扱うデータ量が少ない
•シーケンシャル処理
数百GB
数GB
必要な
列だけ
キャッシュヒット率が高い
革新的なメモリデータ構造と
データ処理アルゴリズム
- 15. Page 15 © NEC Corporation 2015
アルゴリズム例 ソート
商品コード 個数
ABC-0001 3
ABC-0002 1
ABC-0003 4
ABC-0002 1
ABC-0001 5
ABC-0003 9
ABC-0001 2
ABC-0003 6
ABC-0001 3 0
ABC-0002 2 3
ABC-0003 3 5
2
0
3
0
4
6
1
5
0 1
1 2
2 3
3 4
4 5
5 6
6 9
0
1
2
1
0
2
0
2
0 ABC-0001
1 ABC-0002
2 ABC-0003
0 0 0
1 3 4
2 5 6
1 4 1
0 1 3
2 6 2
0 2 5
2 7 7
ABC-0001 3 0 → 1 → 2 → 3
ABC-0002 2 3 → 4 → 5
ABC-0003 3 5 → 6 → 7
カウント
累計
① ②
⑤ ⑥ ③ ④① ②
①を上から順番に処理する。
その値の④のところを見て、その値を⑤に格納し、④を1増加
同時に⑤→⑥の逆変換を行う ⑤[x]=y → ⑥[y]=x
例: ⑤の2行目は⑤[1]=3 → ⑥[3]=1
⑥がソート結果
商品コード 個数
①を見て値番号ごとにカウント
上から足し込んで累計化
③ ④②
0
1
2
0
1
2
昇順にソート
- 16. Page 16 © NEC Corporation 2015
アルゴリズム例 集計
商品コード 個数
ABC-0001 3
ABC-0002 1
ABC-0003 4
ABC-0002 1
ABC-0001 5
ABC-0003 9
ABC-0001 2
ABC-0003 6
ABC-0001 0 → 3 → 8 → 10
ABC-0002 0 → 1 → 2
ABC-0003 0 → 4 → 13 → 19
2
0
3
0
4
6
1
5
0 1
1 2
2 3
3 4
4 5
5 6
6 9
0
1
2
1
0
2
0
2
0 ABC-0001
1 ABC-0002
2 ABC-0003
①を上から順番に処理する。
その値の②の合計欄⑤に、その要素に対応する「個数」の値を足す
⑤[①[x]]+=④[③[x]]
例: ①[0]=0 (ABC-0001)
③[0]=2 → ④[2]=3
⑤[0]=0→3
商品コード 個数
商品コードごとに個数を合計する
③ ④
⑤ ⑤’
① ②
- 18. Page 18 © NEC Corporation 2015
基本機能の性能
1000万件の注文テーブルに対して
各基本機能を実行したときの処理時間
110ms
検索 ソート ジョイン 集計 ユニーク列
抽出
47ms
297ms
515ms
728ms
日付 会員番号
商品
コード
個数
2015/01/01 0447803 JI-025 1
2015/01/01 0903643 BB-100 1
2015/01/01 0698163 JC-010 1
2015/01/01 0973090 AB-003 2
2015/01/01 0365435 CG-020 1
2015/01/01 0814335 CG-020 1
2015/01/01 0887176 DC-092 1
: : : :
会員番号 姓 名 都道府県
0100001 佐藤 初寿 福井県
0100002 加藤 房好 福井県
0100003 小川 彦重 北海道
0100004 安藤 悦治郎 秋田県
0100005 松岡 健又 千葉県
0100006 坂井 なが子 京都府
0100007 福永 末三郎 愛知県
: : : :
注文テーブル
会員テーブル
1000万件
100万件
個数が
2つ以上
会員番号で
昇順
会員番号で
ジョイン
商品コード毎に
個数を合計 会員番号で
ユニーク抽出
- 19. Page 19 © NEC Corporation 2015
件数ごとの性能比較
ソート
1つの列で昇順にソート
100万件 1000万件
20ms
110ms
5.5倍
• 列の重複度に依存
• ジョインでは2つのテーブルの関係に依存
• 最悪のケースで件数に比例した処理時間
集計
1つの列でグルーピングし
他の列の値を合計
100万件 1000万件
52ms
515ms
9.9倍
ジョイン
100万件のテーブルと
1つの列で結合
100万件 1000万件
124ms
297ms
2.4倍
件数に比例した
処理時間
- 20. Page 20 © NEC Corporation 2015
優位性:データインポート性能比較(DataBooster)
▌ 測定データ
TPC-H (Scale Factor=100)※ のテーブルへの
CSV形式データファイルのインポート時間を測定
• データ量 : 16列×約6億行 (約92Gバイト)
▌ 測定条件
マシン環境
• CPU : Xeon E5-2650v2(8c/16T)×2
• メモリ : 384Gバイト
• ストレージ : RAID5×4(7200rpm SAS)
• OS : Windows Server 2012
インポート方法
• DataBooster
– DataBooster SQL の COPY 機能を使用
• 他RDB
– 各 RDB が用意する高速インポート機能を使用
– インポート後、検索高速化のためにインデックスを作成
(秒) データインポート インデックス作成 合計
DataBooster 1,312 - 1,312
他RDB1 3,103 8,968 12,071
他RDB2 4,804 7,266 12,070※トランザクション処理性能評議会(TPC)が定めた、意思決定支援システム・
データウェアハウスの分野のデータベースシステムの検索や抽出処理性能の指標
• 他RDBと比較して2~4倍以上のデータインポート速度
• 問い合わせを考慮した設計が不要で、チューニングの手間を簡略化
3.6倍
2.3倍
9.2倍
取扱注意
1,312
3,103
4,804
8,968
7,266
12,071 12,070
0
2,000
4,000
6,000
8,000
10,000
12,000
DataBooster 他RDB1 他RDB2
(秒) データインポート
インデックス作成
9.2倍!
- 21. Page 21 © NEC Corporation 2015
優位性:クエリ性能比較(DataBooster)
▌ 測定データ
TPC-H (Scale Factor=100)※ の各処理のクエリ時間を測定
• データ量 : 16列×約6億行 (約92Gバイト)
▌ 測定条件
マシン環境
• CPU : Xeon E5-2650v2(8c/16T)×2
• メモリ : 384Gバイト
• ストレージ : RAID5×4(7200rpm SAS)
• OS : Windows Server 2012
(秒) DataBooster 他RDB
1 284 415
2 9 66
3 25 351
4 32 307
5 27 370
6 12 273
7 30 379
8 33 1,424
9 96 575
10 36 345
11 6 13
12 41 318
13 268 462
14 15 289
15 28 286
16 8 40
17 88 5
18 104 491
19 49 11
20 59 86
21 132 630
22 11 31
相乗平均 36 168
※トランザクション処理性能評議会(TPC)が定めた、意思決定支援システム・
データウェアハウスの分野のデータベースシステムの検索や抽出処理性能の指標
• 多重度を上げても1クライアント当たりの平均処理
時間で高速、8クライアントで15倍(表1/図)
• 1クライアントの場合も、ほぼ全てのクエリで高速、
平均で5倍(表2)
【表2】 1クライアントの処理時間
(クライアント数) 1 2 4 6 8
DataBooster 36 36 40 45 51
他RDB 168 302 553 735 769
【表1/図】 マルチクライアントで実行した際の1クライアント
当たりの(相乗)平均処理時間 (秒)
15倍!
取扱注意
36 36 40 45 51
168
302
553
735
769
0
100
200
300
400
500
600
700
800
900
1 2 4 6 8
DataBooster
他RDB
- 23. Page 23 © NEC Corporation 2015
DataBoosterの代表的な適用分野
①データマート作成
▐DWH から BI ツール向けのデータマート作成
データマートが短時間で作成できるため、鮮度が高く自由度の高い分析が可能
②データ変換/
データ集計/
クレンジング
▐大量データの一括データ変換や集計処理
コード変換(洗い替え)やWebアクセスに対するログ分析・集計処理など、大量データ処
理を高速に実施
1億件レベルの大量データをGUIツールでストレスなく目視確認ができるため、曖昧デー
タの目視確認に活用することが可能
③データ移行
▐移行した大量データの整合性確認
旧システムの列の並びを変更して新システムへデータ移行するなどが可能
旧システムから新システムへデータを移行する場合、移行元と移行先のデータ整合性
を確認する必要があり、データ量が多いと件数のみの確認やキー値のみの確認しかで
きなかったものが、全件・全列の突き合わせによる正確な整合性確認が可能
④DWH/
アドホック検索
▐付属のGUIを使用した大量データに対するアドホック検索
業務ごとに分散した基幹DBのデータをDataBoosterにロード後、多角的な分析を高速
に処理
分析結果をもとにした新たな分析を実行可能
超高速データ処理により、処理時間短縮や
実行サイクルの短縮(月次から日次へ)を実現
- 24. Page 24 © NEC Corporation 2015
データベースのバッチ処理に
数時間かかっている業務への適用例
バッチ処理高速化の適用イメージ
基幹DB
CSV InfoFrame
DataBoosterCSV
CSV
出力
従来業務
追加処理 数分~
数十分
データ
ロード
数分 データ加工
数分
基幹DBから抽出した
データを基幹DBに戻さず
集計などデータ加工する
処理に最適
CSV
高速化
バッチ
プログラム①
数時間
バッチ
プログラム②
バッチ
プログラム③
中間ファイル 中間ファイル
結果
数分~
数十分
分析DB
- 25. Page 25 © NEC Corporation 2015
適用効果:RDBから置き換えてバッチ処理を高速化
これまでの問題
RDBで行っているデータ加工・集計の夜間バッチ処理が終わらない
バッチ処理を高速化で新たなレポートの生成と、保守工数削減と納期厳守
売上 DB
販売
レポート
データ量・パターンが増えてきたので、
夜間バッチが終わらなくなってしまった・・・
これでは始業時間に間に合わない・・・
×
各部門へ
配布
販売
レポート
販売
レポート
×
×
翌日の業務に
支障が出てしまう
バッチ処理が遅く
始業時間に合わない!
バッチプログラム
(SQL)
バッチ処理
高速化
大量データの高速結合・加工・集計はDataBoosterに外出し
DBの負荷を軽減し、夜間バッチも高速処理
解決手段
DataBooster
サーバ
加工
処理
集計
処理
販売
レポート
高速な結合・加工・
集計処理
CSV
(集計前)
数時間かかっていた
処理を数分に短縮!
各部門へ
配布
販売
レポート
販売
レポート
売上
DB
結合
処理
CSV
(集計後)
バッチプログラム
(SQL,API)
- 26. Page 26 © NEC Corporation 2015
InfoFrame
DataBooster
高速メモリ処理
3億件の
ログ
InfoFrame
DataBooster
高速メモリ処理
3億件の
ログ
InfoFrame
DataBooster
高速メモリ処理
3億件の
ログ
Page 26
RDB
事例: サービス業 アクセスログ集計システム
ユーザの要望
処理を高速化できる製品はないか
お客様の課題
・既存DBで構築したシステムが、ログデータ量の
増加で分析処理の遅延が発生
・分析処理速度を向上させないと、エンドユーザに
対するサービスレベルがダウン
・高速化するにはサーバ追加が必要だがRDBの
ライセンス費が高額
解決手段 既存システムと同等以上の処理能力を少ないコア数で実現
既存の環境より
数億円安価に
13億件/時の処理性能によりサービスレベルを維持!
時次、日次、週次、月次の分析を高速に処理することが可能に。ログ 13億件/時(集計は20分) で処理を実施。
エンドユーザに対するサービスレベルを維持。
HW+SWコスト 73%削減!
DataBoosterを導入することで、サーバ台数4台で構築。既存DBで増設した場合と比べて
HW(サーバ)+SW(OS、DBライセンス、DataBoosterライセンス)の比較で73%のコストを削減。
バッチ処理
高速化
InfoFrame
DataBooster
高速メモリ処理
3億件の
ログ
1台あたりの処理量が約4倍に!
分析結果を
エンドユーザに提供
集計
- 27. Page 27 © NEC Corporation 2015
事例: 流通業 データ分析システム
お客様の課題
・各店舗からの販売データが短時間に大量に送られてきて
おり、15分毎に確認する速報レポートの出力要件があり、
通常のDWHシステムでは、実現困難である。
解決手段
大量データの加工を高速に処理。データ収集サーバから送られてきた異なる
形式のテキストデータをDataBoosterで高速に形式変換してDWHへ転送する
と同時に速報用レポートの出力を可能とした。
ユーザの要望
大量データを高速に加工
できる製品はないか
データ加工
サーバ
データ収集
サーバ
販売
データ
DWH
販売データ
BIサーバ
BIサーバ
自由分析
定型レポート
DataBooster
販売
データ
形式変換
各店舗から送られてきた大量の販売データを15分毎に高速加工処理
速報レポート用のデータ提供が可能
店舗
:
APサーバ
速報レポート
バッチ処理
高速化
- 28. Page 28 © NEC Corporation 2015
今後、利用者(製品責任者)が部品価格を変更させ
製品価格をシミュレートするシステムの構築に着手
DataBooster
ネジが10%値上がりしたら輸
入価格が変わったら?
事例: 製造業 製造原価計算システム
お客様の課題
・製品の原価計算時間(全部品レベル)を短縮させ
たい
・各製品責任者に対し原価が変動した場合、製品
価格がどう変動するかのシミュレーション結果を提
供したい
ユーザの要望
データ処理を高速化できる製品が必要
製品
中間製品
下位構成品
部品
原価
原価
原価
原価
価格
ネジが10%値上がりしたら製
品原価はどうなる?
部品
データ
(属性、価格)
解決手段
部品データなどのBOM※情報を
DataBoosterにロードし
インメモリで高速計算
※Bill of materials
バッチ処理
高速化
- 29. Page 29 © NEC Corporation 2015
ユーザの要望
データマート生成時間を短縮したい
お客様の課題
・データマート生成に5時間以上要する
従来5時間以上要していたデータマート生成時間を40分に短縮
事例: 流通業 データマート生成処理の高速化
データマート1
データマート2
データマート生成処理 高速化対象処理
抽出
抽出DB
DB
データマート1
データマート2
データマート生成処理
抽出
抽出DB
DB
CSV
CSV
CSV
CSVDataBooster
高速結合
高速加工
5時間
40分
①
②
③
旧構成
解決手段 ① 抽出データをDataBoosterにロード
② DataBoosterで高速結合、高速加工
③ 結合、加工結果をデータマートに反映
データの統合/加工
バッチ処理
高速化
- 31. Page 31 © NEC Corporation 2015
強力なGUIツール
億レベルのデータ件数を高速に処理できるGUIを装備
結果を確認しながら、検索、集計、結合、一括更新が可能
イメージ図
メモリ
InfoFrame DataBooster
CSV
検索・編集
(抽出、集計、ジョインなど)
抽出 集計 結合 ソートロード
基幹DB
結果
処理途中の状態を保持し、再利用可能
処理途中の状態をコンパクトな形式で保持、試行錯誤的なデータ処理が可能。
商用DBMSと比較して数~数十倍の性能を実現
1億件を超えるデータの検索、ソート、集計、結合も数秒で実行。
アドホックなデータ分析
レポート作成
データ移行/統合時の
不正データ検出
AP開発の事前調査
性能検証
データ加工/編集作業が
簡単なマウス操作で実行可能
適
用
業
務
例
- 32. Page 32 © NEC Corporation 2015
DataBooster DK
- 33. Page 33 © NEC Corporation 2015
処理結果を確認しながらアプリケーションの作成が可能なため
開発時の処理内容不正による後戻り工数を大幅に削減
Javaソース生成機能
InfoFrame
DataBooster
エンジン
データ操作
結果を確認しながら操作 処理変更が発生しても、該当操作をGUIで行い
Javaソースを出力することで修正が容易
生成したJavaソースをひな形として、ユーザ独自の
処理を追加することももちろん可能
DataBoosterの処理速度が高速なため、何度でも処理のやり直しが可能
正しい結果が得られた操作に対する
Javaソースを生成
アプリケーション作成を効率化
開発者のスキルによらずデータ処理の高速化が可能
- 34. Page 34 © NEC Corporation 2015
DataBoosterは、プログラム用のライブラリ
CおよびJavaのAPIを用意
アプリケーション記述イメージ (C/Java)
select
col1,
sum(col2)
from
test
where
col1 < 100
group by
col1
order by
1,2
main()
{
BSTRESULT result;
result = CSVロード("D:¥input.csv","test");
result = 検索(result,"col1 < 100");
result = 集計(result, col1,col2,SUM)
result = ソート(result)
result = CSV出力(result,"D:¥output.csv")
}
表形式データに対する関係演算は、APIとして用意
SQLで実現可能なデータ操作は、DataBoosterで実現可能
SQLに縛られないため、より自由な関係演算が可能
注意: 上記はイメージです。実際のAPIとは異なります。
アプリケーションプログラム(AP)
- 35. Page 35 © NEC Corporation 2015
DataBooster SQL 概要
Windows 2008/2012
SQL解析
実行計画策定
実行
PostgreSQL改造
DataBooster SQL
DataBooster
ライブラリ
st.execute(”COPY …”);
// ファイルからデータをロード
rs = st.executeQuery(”SELECT …”);
while(rs.next()){
…
}
st.execute(”UPDATE …”);
st.execute(”COPY …”);
// 結果を出力
CSV BST
▌JDBCによるプログラムが実行可能
PostgreSQLを全面的に流用して改造。ほとんどのSQLを実行可能。
実行時にDataBoosterライブラリを使用してデータ処理を高速化。
とくに、ジョイン、集計、ソート、一括更新で効果大。
テーブルメモリ
Java プログラム (JDBC)
コンパイル
実行 プログラムの最初で
データをロード
ライブラリで提供
プログラムにリンクし、
同一プロセス内で実行
結果表
元表
- 36. Page 36 © NEC Corporation 2015
DataBoosterのクライアント・サーバ
基幹DB
基幹
DB
DataBoosterサーバ
DWHや定型レポート作成のための
集計などデータ加工に最適
ExcelCSV
CSV
CSV
BIツール
既存のDWH用DBを置き換え、複数クライアントからのアドホックな検索を高速処理
BIツール用サーバ
クライアント
InfoFrame
DataBooster
結合集計
加工 検索
複雑な問い合わせ
も高速に処理
JDBC
ODBC
- 37. Page 37 © NEC Corporation 2015
検証済みBIツール
DataBoosterとの接続検証が実施済みのBIツール
BusinessObjects Yellowfin
Microsoft Excel / PowerPivot MicroStrategy
CROWNIX Report & ERS Tableau
Pentaho CE アイエルアイ StiLL
- 38. Page 38 © NEC Corporation 2015
BOM(部品表)の展開
RDBやSQLでは実現するのが難しい、BOMの正展開・逆展開も、
DataBoosterではAPIが用意されていて、容易でしかも高速に実行が可能
正展開ツリー
製品A 部品A
部品B
素材A
素材B
素材C
素材B
素材C
素材D
素材E
親 子
製品A 部品A
製品A 部品B
親 子
部品A 素材A
部品A 素材B
部品A 素材C
部品B 素材B
部品B 素材C
部品B 素材D
部品B 素材E
BOM表
BOM(Bill of materials)とは、製造業で用いられる部品表で、
製品を組み立てる時の部品の一覧と、場合によっては階層構造を表す
逆展開ツリー
製品A素材A
素材B 製品A部品A
部品A
製品A部品B
正展開の結合イメージ
BOM
親 子
BOM
親 子
JOIN
テーブル
JOIN
テーブル
結合順序
対象製品
- 39. Page 39 © NEC Corporation 2015
BOM具体例
親 子 個数
1 A-001 B-001 1
2 A-001 B-002 2
3 B-001 C-001 2
4 B-001 C-002 1
5 B-002 D-001 3
6 B-002 E-001 4
7 C-001 E-002 2
8 C-001 G-001 10
9 D-001 G-002 1
10 D-001 G-003 1
11 E-002 X-001 2
12 E-002 X-002 8
BOMマスターテーブル
指定製品(A-001) 1個において、
各部品が何個使われているかを求める
深さ No. 個数 指定 子 子_#1 子_#2 子_#3
1 0 1 1 1 A-001
2 1 1 1 1 A-001 B-001
3 2 3 2 2 A-001 B-001 C-001
4 3 7 2 4 A-001 B-001 C-001 E-002
5 4 11 2 8 A-001 B-001 C-001 E-002 X-001
6 4 12 8 32 A-001 B-001 C-001 E-002 X-002
7 3 8 10 20 A-001 B-001 C-001 G-001
8 2 4 1 1 A-001 B-001 C-002
9 1 2 2 2 A-001 B-002
10 2 5 3 6 A-001 B-002 D-001
11 3 9 1 6 A-001 B-002 D-001 G-002
12 3 10 1 6 A-001 B-002 D-001 G-003
13 2 6 4 8 A-001 B-002 E-001
結果テーブル
- 40. Page 40 © NEC Corporation 2015
DataBooster 強み
• データベース設計が楽
問い合わせを考慮したテーブル設計が不要
インデックスの付与は不要
• GUI
億件レベルのレコードのデータ操作が可能
集計、ジョインなどが秒単位で実行可能
データを確認しながらデータ操作が可能
GUI 操作をプログラムに変換可能、マクロ実行可能
• SQL でないことのメリット
C/Java 言語でプログラム可能
制限の強い SQL で記述する必要がない
ユーザ関数を作る必要がなく、あらゆる処理が可能
途中結果も保持し、利用可能で性能上もメリットあり
デバッグが楽
性能ボトルネックを見つけやすい
• クラサバでないことのメリット
AP のみで実行可能
運用、監視が楽
インストールが楽
通信環境を気にする必要がない
- 41. Page 41 © NEC Corporation 2015
DataBooster 使い方
• バッチ
独自API SQL以外 ライブラリ関数 C/Java
RDB から抜き出し、別システム (データマート、レポート) に渡す
• DWH
クライアント・サーバ
BIツール、プログラムから利用
SQL での問い合わせ実行
• GUI (DK)
入力データのクレンジング、確認
テスト結果確認
プロトタイプ開発
性能検証
• GUI操作 → Javaソース変換
開発工数の効率化
- 42. Page 42 © NEC Corporation 2015
まとめ
▌NEC の InfoFrame DataBooster は C/Java/SQL、GUI、BIツール
など様々なインタフェースで、高速なデータ処理、高速なデータ分析
を実現しています
すぐに試せる体験版を用意しています
• 高速なデータ処理がご自身のPCで試すことができます
• 下記サイトよりダウンロードしてください
http://jpn.nec.com/infoframe/databooster/download.html
InfoFrame DataBooster
インメモリ
データ構造とアルゴリズム 高速データ処理
VNo
VL
VNo
VL
×