【インメモリDB】1,000万行のCSVデータ、いつでも歓迎(1)
当ブログの読者の方は、社内のデータを集計して報告書を作成するような機会が多いのではないでしょうか。
今さら言うまでもなく、MS Excelはちょっとした集計や分析に使えるソフトウェアです。関数を駆使すれば、他のシートにあるデータと結合するなどの複雑な処理まで可能です。たしかにExcelは手軽に使える便利なソフトウェアですが、だからと言って全てをExcelで処理することは無理があります。
例えば、数百万件単位のデータを、並べ替えたり集計したりしなければいけなくなったとします。データファイルが1つならまだしも、他のデータと結合しなければならないとしたら、Excelでは無理でしょう。さらに、一発で答えが見つからずに、条件を変えて何度も試行錯誤しなければならないとしたら、Excelでは徹夜必須です。
こんな時は、餅は餅屋、道具は適材適所です。横浜にある株式会社ターボデータラボラトリーが販売しているインメモリデータ処理ソフトウェア「Aktblitzシリーズ」がお奨めです。
例題として、自動車の販売データを考えます。販売履歴のデータが、以下のような並びのCSV形式のファイルになっているとします。
販売日 | 販売年 | セールスマンID | 商品ID |
---|---|---|---|
2000/9/1 |
2000 |
セールスマンID-0139 |
車ID-001 |
2000/9/1 |
2000 |
セールスマンID-0149 |
車ID-001 |
2000/9/1 |
2000 |
セールスマンID-0363 |
車ID-001 |
2000/9/1 |
2000 |
セールスマンID-0692 |
車ID-001 |
データの項目数はわずか4つです。Excelでも全く問題ありません。では、このデータが200万件あったらどうでしょうか。実際にやってみました。
今回の実験に使ったのは、CPUがPentium 4、メモリは2Gバイト、Windows XPのパソコンです。数年前の旧式なスペックです。
販売履歴.csvファイルのサイズは、83.9 MB (88,000,039 バイト)になります。
200万行のテキストファイルをWindows付属の「メモ帳」で開いたら、読み終わるまで1分弱かかりました。また、テキストエディタの定番「秀丸エディタ」では7秒かかりました。この行数になると、開くだけでそこそこ時間がかかります。
次に同じファイルをExcel 2007で開いてみました。
Excel 2007はExcelの弱点であった最大行数65,000行の制限がなくなりました。と言っても無制限になったわけではなく、1分くらいかけて、1,048,575行まで読み込んだところで止まってしまいました。この辺がExcel 2007の限界のようです。
200万件で試すことができないため、約半分になりますが、1,048,575行のデータで並べ替えを行いました。「商品ID」をキーにして全体を並べ替える操作です。これには25秒かかりました。
200万件のデータを扱えないのでは、Excelは使えません。仮に200万件のデータを読めたとしても、100万件のデータを読むのに1分、並べ替える度に25秒では、待ち時間が長くストレスが溜まります。
これをAktblitzでやったらどうなるでしょうか。
AktblitzのユーザインタフェースはExcelに似た表形式です。CSVファイルを指定すると、Excel同様に区切り文字や項目のデータ型を指定する画面から始まります。最後の読み込み実行をクリックしてから終了するまで、わずか7秒でした。200万件をしっかり最後まで読んでいます。秀丸エディタ並の速さです。
「商品ID」をキーにした全体の並べ替えは、なんと1秒以下です。画面の左下に表示される処理時間の値はわずか47ms、1000分の47秒しかかかっていません。
この超高速ぶりには、ちゃんと理由があります。Aktblitzではターボデータラボラトリーが開発したLFM(Linear Filtering Method) 技法が使われています。データをジョイン・データ変換・集計などの基本的なデータ処理に適した全く別の形式に変換した上で処理を行います。そのため、超高速な処理が可能になりました。
今回はCSVデータの読み込みと単純な並べ替えの説明でした。これはAktblitz優れた機能のほんの手始めにすぎません。不定期連載になりますが、Aktblitzでどんなことができるかを、これからご紹介していきたいと思っています。
関連エントリ
【広告】
「Aktblitz」のお問い合わせ・デモのご依頼は、株式会社テクネコで承ります。以下のリンクからお気軽にお問い合わせください。