動作検証レポート dd 2016 年 6 月 株式会社高速屋 1
刻々と発生するビッグデータのオンタイム アナリシス : 動作検証概要 検証対象 : 1. ファイル処理 入力 CSV ファイルを読込み 処理結果を CSV ファイルに出力 2. インメモリ処理 事前にインメモリ化されたデータに対してクエリ (Select 文 ) を実行 1. ファイル処理 1-1. 集計 ロード データ :POS 明細件数 :1.8 億件サイズ :8GB データ : テキストデータ件数 :1.8 億件サイズ :8GB インメモリ 1-2. 集計 ロード データ : 売上明細件数 :3 億件サイズ :50GB データ : 売上サマリー件数 :4 千万件サイズ :1GB 2. インメモリ処理 2-1. 単一クエリ 2-2. 多重クエリ 2-3. 文字列中間一致検索 検証対象において 同一サーバー上で解析ブースターと市販 DBMS (Microsoft SQL Server) の処理速度比較 ( ベンチマーク ) を実施 2
刻々と発生するビッグデータのオンタイム アナリシス : システム環境 使用機種 機種名 NEC Express5800 R110h-1 / R110h-1 CPU Xeon 4C E3-1270v5 1 クロック 3.6GHz コア数 4 論理プロセッサ数 8 メモリ 32GB ハードディスク容量 1200GB (600GB 3 Array) OS Windows Server 2012 R2 Std. ハードディスク性能 (MB/s) アクセス Read Write シーケンシャル 32Q 452.846 412.162 4KB ランダム 32Q 8.728 2.428 シーケンシャル 588.286 76.332 4KB ランダム 1.32 0.559 ( CrystalDiskMark 4.0.3 x64 使用 ) バージョン解析ブースター : BOOSTER_v2.0_6.5.0.60_UTF8_release6_20160430 SQL Server: Microsoft SQL Server 2014-12.0.2000.8 (X64) Feb 20 2014 20:04:26 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) 3
検証結果要約 1. ファイル処理 1-1. 集計 1-2. 集計 SQL Server 606 69 SQL Server 3,409 508 解析ブースター 0 65 解析ブースター 134 518 単位 : 秒 0 200 400 600 800 単位 : 秒 0 1,000 2,000 3,000 4,000 5,000 ロード 集計 ロード 集計 4
実行クエリー 同時実行クエリー数 検証結果要約 2. インメモリ処理 2-1. 単一クエリ 単位 : 秒 0 10 20 30 40 50 60 2-2. 多重クエリ 単位 : 秒 0 20 40 60 80 100 120 140 160 Q1 7 35 1 7 35 Q2 5 34 2 3 7 8 65 94 Q3 35 50 4 11 141 解析ブースター ( インメモリ ) SQL Server 解析ブースター ( インメモリ ) SQL Server 5
同時実行クエリー数 検証結果要約 2. インメモリ処理 単位 : 秒 2-3. 文字列中間一致検索 0 10 20 30 40 50 1 3 11 2 3 22 解析ブースター ( インメモリ ) SQL Server 3 3 33 4 3 44 6
動作検証ー詳細編 dd 7
1. ファイル処理 1-1. 件数 1.8 億件 サイズ 8 GB の POS 明細集計 検証シナリオ : POS データ店舗別商品別集計下表の POS データを店舗別 商品別に件数と金額の集計処理を行う 集計後の件数は 50 万 3,448 件となる ファイル件数 CSV サイズ (KB) 店舗 100 7 商品 10,364 677 POS 明細 184,648,243 8,388,608 店舗 100 件 商品 1 万件 50 万 3,448 件 POS 明細 1 億 8,000 万件 集計処理 集計後ファイル 店舗コード, 店舗名, 商品コード, 商品名, 件数, 金額合計 1000, 店舗 1,6, アリミノ BS スタイリングムース S ナチュラル,292,228232 1000, 店舗 1,7, コーンフレークミルクココア箱 200g,291,250940 1000, 店舗 1,8, マジョリカ M シヤドー C BR,291,239040 1000, 店舗 1,9, 木酢液ボトル型 1050ml,318,249252 1000, 店舗 1,10,5012 コンフォートセラミック茶 L,283,247774 8
1. ファイル処理 1-1. 件数 1.8 億件 サイズ 8 GB の POS 明細集計 実行結果 単位 : ミリ秒 ロード 明細集計 店舗 商品結合 実行時間合計 解析ブースター 341 64,469 974 65,784 SQL Server 605,612 69,256 674,868 処理手順の概要ロード 解析ブースターのロードでは 店舗マスターと商品マスターを結合するために 明細データ以外のマスターデータを一時テーブルにロードします SQL Server のロードでは 明細データを含む全データをテーブルにロードします 明細集計 解析ブースターの明細集計では 先に明細データを単独集計して その結果と店舗マスター 商品マスターを結合します SQL Server の明細集計では 店舗マスターと商品マスターの結合含め単一の SQL 文で処理されます 9
1. ファイル処理 1-2. 件数 3 億件 サイズ 50GB の売上集計 検証シナリオ : 部品別仕入先別集計下表のデータを部品別 仕入先別に件数と金額で集計処理を行う 集計後の件数は 3,998 万 4,471 件となる 部品 1,000 万件 部品仕入先 4,000 万件 仕入先 50 万件 注文明細 lineitem1 7,500 万件 lineitem1 x 4 7500 7500 lineitem1 万件万件 7500 万件 テーブル 件数 CSVサイズ (KB) 部品 10,000,000 1,202,199 仕入先 500,000 70,187 部品仕入先 40,000,000 5,974,433 注文明細 1 75,001,453 9,667,804 注文明細 2 75,001,453 9,727,411 注文明細 3 75,001,453 9,751,990 注文明細 4 75,001,452 9,751,883 集計処理 3,998 万 4,471 件 集計後ファイル 部品名, 仕入先名, 商品コード, 数量, 金額 "goldenrod lavender spring chocolate lace","supplier#000000002",9,221582.93 "goldenrod lavender spring chocolate lace","supplier#000125002",4,49816.29 "goldenrod lavender spring chocolate lace","supplier#000250002",8,211825.10 "goldenrod lavender spring chocolate lace","supplier#000375002",6,176605.01 "blush thistle blue yellow saddle","supplier#000000003",12,269968.60 10
1. ファイル処理 1-2. 件数 3 億件 サイズ 50GB の売上集計 実行結果 単位 : ミリ秒 ロード 明細集計 部品 仕入先結合 実行時間合計 解析ブースター 134,022 457,414 60,142 651,578 SQL Server 3,409,487 508,414 3917,901 処理手順の概要ロード 解析ブースターのロードでは 部品マスター及び仕入先マスターを結合するために 明細データ以外のマスターを一時テーブルにロードします SQL Server のロードでは 明細データを含む全データをロードします 明細集計 解析ブースターの明細集計では 先に明細データを単独集計して その結果と部品マスター 仕入先マスターを結合します SQL Server の明細集計では 部品マスター 仕入先マスターとの結合含め単一の SQL 文で処理されます 11
2. インメモリ処理 2-1. 件数 4 千万件 サイズ 1 GB のインメモリデータに対する単一クエリ 検証シナリオ : 部品別 仕入先別に集計されたデータに対する再集計処理あらかじめ部品別 仕入先別に件数と金額が集計されたデータに対して下記 Q1,Q2,Q3 の再集計処理を行う 部品 1,000 万件 部品仕入先 4,000 万件 仕入先 50 万件 テーブル 件数 CSVサイズ (KB) 部品 10,000,000 1,202,199 仕入先 500,000 70,187 部品仕入先 40,000,000 5,974,433 集計サマリー 39,984,471 1,086,698 集計サマリー 3,998 万件 再集計処理 50 万件 集計後ファイル 25 件 2,500 万件 集計後ファイル 集計後ファイル Q1. 仕入先別再集計 Q2. メーカー / ブランド別再集計 Q3. 仕入先 / メーカー別再集計 12
2. インメモリ処理 2-1. 件数 4 千万件 サイズ 1 GB のインメモリデータに対する単一クエリ 実行結果 クエリー No 単位 : ミリ秒 処理内容 解析ブースター ( インメモリ ) SQL Server Q1 仕入先別再集計 6,626 34,884 Q2 メーカー / ブランド別再集計 4,810 34,394 Q3 仕入先 / メーカー別再集計 34,920 50,314 処理手順の概要ロード 解析ブースターも SQL Server も クエリー実行時にはロード済みのテーブルにのみアクセスします 再集計 解析ブースターと SQL Server は同等のクエリー (Select 文 ) で再集計を実行します Q3のクエリ例 select supplier.s_name as supp_name,part.p_mfgr as mfgr, sum(lineitem_sum.total_cnt) as cnt,sum(lineitem_sum.total_sales) as sales from lineitem_sum inner join partsupp on lineitem_sum.partkey = partsupp.ps_partkey and lineitem_sum.suppkey = partsupp.ps_suppkey inner join part on partsupp.ps_partkey = part.p_partkey inner join supplier on partsupp.ps_suppkey = supplier.s_suppkey group by supplier.s_name, part.p_mfgr 13
2. インメモリ処理 2-2. 件数 4 千万件 サイズ 1 GB のインメモリデータに対する多重クエリ 検証シナリオ : クエリー Q1 を同時実行数 1~4 で多重に実行する 部品 1,000 万件 仕入先 50 万件 部品仕入先 4,000 万件 集計サマリー 3,998 万件 14
2. インメモリ処理 2-2. 件数 4 千万件 サイズ 1 GB のインメモリデータに対する多重クエリ 多重クエリー実行時間 単位 : ミリ秒 同時実行数 解析ブースター ( インメモリ ) SQL Server 1 6,626 34,884 2 7,124 64,896 3 8,070 93,774 4 10,880 140,504 処理手順の概要 解析ブースターと SQL Server のクエリー (Select 文 ) は同一です 同時実行数の制御に ETL ツールを用いています 15
2. インメモリ処理 2-3. 件数 1 億件 サイズ 20GB のテキストデータに対する文字列中間一致検索 検証シナリオ : 単一のテキストデータファイルに対して文字列の中間一致検索を実行する テキストデータ 1 億件 22,20390992,9599887,48,1, 氏名 ( カナ )0000000001, 氏名 ( 漢字 )0000000001,5081201,1,51,22,940025, 北海道, 紋別市, モンヘ ツシ,2987-1-6621,,,,20110209,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, 33,61902242,9550369,82,0, 氏名 ( カナ )0000000002, 氏名 ( 漢字 )0000000002,7161201,2,14,33,5400035, 大阪府, 大阪市中央区, オオサカシチュウオウク,6593-25-5001,,,,19970912,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, 21,11135192,9351833,56,1, 氏名 ( カナ )0000000003, 氏名 ( 漢字 )0000000003,3061201,2,35,21,2891145, 千葉県, 八街市, ヤチマタシ,173-30-4483,,,,19941014,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, 05,10176637,8726823,28,0, 氏名 ( カナ )0000000004, 氏名 ( 漢字 )0000000004,7231201,3,02,05,8690503, 熊本県, 宇城市, ウキシ,4552-24-9252,,,,20020912,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,, 42,21383981,3972203,82,1, 氏名 ( カナ )0000000005, 氏名 ( 漢字 )0000000005,3071201,2,15,42,9892441, 宮城県, 岩沼市, イワヌマシ,17-42-3088,,,,20110324,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,, 16
2. インメモリ処理 2-3. 件数 1 億件 サイズ 20GB のテキストデータに対する文字列中間一致検索 多重クエリー実行時間 同時実行クエリー数 単位 : ミリ秒 解析ブースター ( インメモリ ) SQL Server 1 2,544 11,078 2 2,618 22,222 3 2,730 33,400 4 3,056 44,470 参考値 : データロード時間単位 : ミリ秒 測定項目 解析ブースター ( インメモリ ) SQL Server ロード 395,381 791,862 処理手順の概要 解析ブースターと SQL Server のクエリー (Select 文 ) は同一です 同時実行数の制御に ETL ツールを用いています SELECT 項目 01, 項目 02, 項目 03, 項目 04, 項目 08, 項目 09, 項目 13, --- 住所 1 項目 14, --- 住所 2 項目 74, 項目 75, 項目 76 FROM SEARCH_ITEM WHERE 項目 13 like % 東京 % and 項目 14 like '% 山 %' 17
解析ブースター総括 Kaiseki Booster is a Rapid Execution Tool EXCEL や BI ツールをはじめとする様々なアプリケーションとのハイレスポンスな連動が実現されます Kaiseki Booster is a Rapid Development Tool SQL92 ベースと豊富な関数および標準 API が利用可能であり アプリケーションの高速開発を可能にします Kaiseki Booster promotes reduction of T.C.O データベースが不要で省メモリ 他に類を見ない大量データのローコストオペレーションが可能になります 18