コンビニエンスストアを展開するサークルKサンクスの田代明氏(業務統括本部 システム本部 システム開発部 部長)は,「情報系システムは使われてナンボのシステム。それだけに,レスポンスは何よりも重要」と考えている。同社の情報系システムはこの考えが色濃く反映され,インメモリーDBの「Oh-Pa 1/3」(提供は富士通ビー・エス・シー)を活用し,検索速度を向上させている(図1)。

図1●サークルKサンクスが構築した情報系システムの構成図
図1●サークルKサンクスが構築した情報系システムの構成図
ポイントは高速化を図るためにインメモリーDB(富士通ビー・エス・シーのOh-Pa 1/3)を採用したこと。インメモリーDBの利用個所は,(1)速報データのデータマートと,(2)データマートやDWHを作る時に使うバッチ処理用DBの2カ所
[画像のクリックで拡大表示]

 インメモリーDBは,(1)すべてのデータをメモリー上で処理するために時間のかかるディスク・アクセスが発生しない,(2)すべてのデータがメモリー上にあることを前提にしたインデックスやアルゴリズムを採用していることから,従来のRDBMSよりも高速にデータを処理できる製品である。

 田代氏は,DWHから一部のデータを取り出した「データマート(DM)」にインメモリーDBを使った。このDMには前日の売り上げ速報など,(1)すぐに見たい,(2)定型的データである,(3)参照する利用者が多い,といった性格のデータを格納している。インメモリーDBで扱えるデータ量は,物理的なメモリー量に制限されるので,こうした使い方をしている。

 これら以外の,例えば非定型で複雑な検索は,Oracle Database 10gで構築したDWHにアクセスする。

バッチも余裕で処理

 インメモリーDBはデータマート以外にも使っている。基幹系システムから前日分のデータを取り出して,DWHに投入するまでのバッチ処理の部分である。DWHにデータを投入する前には,データを集計したり,マージしたりする必要がある。こうしたデータの集計やマージは,テーブルの結合やソートといったデータベースにとって負荷のかかる処理が頻繁に発生するため,時間がかかってしまうことが多い。そこでインメモリーDBを使って,バッチ処理時間の短縮を図った。

 このバッチ処理は,午前0時から午前8時までに終えなければならない。インメモリーDBを使うことで,バッチ処理に失敗してもう一度やり直すことになっても,大丈夫なほどの時間の余裕を生み出した。

 バッチ処理の流れはこうだ。まずインメモリーDBが稼働するフロントDB/バッチ・サーバーが,基幹系システムから前日分のPOSデータや発注データを受け取る。そしてインメモリーDBにデータをロードし,集計したりマージしたりする。それが終わると,Oracle Database 10gで構築しているDWHにデータをロードする。これと並行し,データマートの作成も行っている。