バッチ処理の姿が今、大きく変わろうとしている。データを単純なテキストファイルとして保存し、複数台のサーバーで並列してバッチ処理する手法が一般化し、大容量データの処理時間が短縮すると共に、コストが大幅に低下した。リアルタイム処理の性能に迫る、バッチ処理の新しい主役を紹介しよう。

 最近、基幹系システムからデータをテキストファイルとして取り出し、複数台のサーバーを使って「分散バッチ処理」を行う企業が増加している(図1)。その手法の一つ「ユニケージ開発手法」を活用するのが、食品スーパーの成城石井だ。

図1●台頭する「大容量・高速・安価」な分散バッチ処理
図1●台頭する「大容量・高速・安価」な分散バッチ処理
今回取り上げた分散バッチ処理はいずれも、トランザクション処理システムが管理するデータをテキストデータなどとして複製してから処理を行う。データウエアハウス(DWH)よりも、導入コストや開発コストが安価だ
[画像のクリックで拡大表示]

 同社は2009年10月、当日の売り上げを店舗別、商品別に分析するために使用していたデータウエアハウス(DWH)ソフトを廃棄した。売り上げ分析をやめたわけではない。DWHを、「テキストファイルを使ったバッチ処理」に置き換えたのだ。

 現在同社は、POSレジから集めた売り上げデータをテキストとして保存し、1時間ごとにバッチ処理を行って、店舗別、商品別の売上高を集計する。非常に古典的なバッチ処理に見えるが、処理時間は大幅に短縮した。

 同社は全国に70店舗を展開し、合計3万アイテムの商品を扱う。その3万アイテムすべてに対して、売り上げ個数や粗利益、値引き消化率(値引きをして売れた商品の比率)、廃棄率、在庫数、納品予定などを、1時間単位で店舗ごとに集計する。集計にかかる処理時間は、わずか5分である。

 DWHソフト「Dr.Sum」を使用していた従来のシステムは、店舗別、商品別の売上高集計に30分以上かかっていた。しかも性能上の問題から、全商品に関して店舗別売り上げを集計できていたわけではない。

 成城石井の大久保恒夫社長は、「今は各店舗を指導するスーパーバイザーが、午後3時までの売り上げを、午後3時5分には確認できる。売れ行きが悪い商品を値引きするといった対策が、迅速に打てるようになった」と語る。

バッチ処理を分散実行

 テキストデータをバッチ処理するだけという成城石井の新システムが、なぜDWHを上回る性能を上げたのか。

 その秘密は、分散処理にある。POSレジから集められたテキストデータは、合計7台のブレード型PCサーバーに分散配置され、それぞれのサーバーでバッチ処理が並列実行される。

 データを処理しているのは、Linuxのシェルコマンド(OS標準のコマンドラインツール)である。プログラムは「シェルスクリプト(bashスクリプト)」として記述する。

 シェルスクリプトは元々、シェルコマンドのパイプ処理(複数の命令を並列処理すること)が可能である。シェルスクリプトとして記述されたプログラムは、各ブレードサーバーに搭載された4個のプロセッサコアを使い切って高速に動作する。

 成城石井が採用したユニケージ開発手法は、ユニバーサル・シェル・プログラミング(USP)研究所が開発した。ユニケージ開発手法の使用料金は、1サーバー当たり月額1万5000円。データベースも使用しないので、高価なストレージ装置は必要ない。成城石井の新システムの投資額は、総額3000万円で済んだ。

進化するバッチ処理

 大量のデータをより高速に、しかも安価にバッチ処理する手法には、米グーグルが開発した技術を基にしたオープンソースソフト「Hadoop」もある。

 ユニケージ開発手法やHadoopといった分散バッチ処理では、処理性能はサーバーの台数に比例して向上する。ハイエンドサーバーを購入する必要はないし、高価なストレージ装置も不要だ。ユニケージ開発手法のソフトウエアライセンスも安価だが、Hadoopはオープンソースなので、ライセンス費用は無料である。

 処理対象のデータは、基幹システムからCSVなどのテキスト形式で取り出すだけであり、既存のシステムに手を加える必要がない。こういった手軽さも、分散バッチ処理が人気を集めている理由の一つだ。まずはユニケージ開発手法による分散バッチ処理を詳しくみよう。