受発注システムのデータベース(DB)を,OracleからオープンソースのPostgreSQLに約2カ月で移行――。全国で約250店舗の飲食店を営むダイナックは2003年3月21日,既存の受発注システムを改良した「ニュー・セルベッサ」を稼働開始した。クラスタ構成を低コストで作る目的で,PostgreSQLを採用。Oracleから移行する際の互換性は高かったものの,Oracle用に記述したアプリケーションのままでは性能が出ない,という問題に直面した。
過負荷でセッションが切れる
セルベッサは元々,1999年7月にニユートーキヨーがオープンソース化した,レストラン・チェーン向けの受発注システム。Javaで開発されている。ダイナックが開発したPostgreSQL対応版セルベッサも,オープンソースとして近く公開される(図1[拡大表示])。
ダイナックでは2001年4月からセルベッサを導入。100社の取引先と250の店舗からの受発注を,24時間受け付けるシステムとして運用していた。システム構成はWebサーバー1台とDBサーバー1台。しかしこの構成では,受発注のピークとなる月末/月初には過負荷に耐え切れなくなり,「DBサーバーが遅延する」(同社 情報システム部長 大橋健治氏)という状態が起こるようになっていた。Webクライアントのセッションがタイム・オーバーとなるトラブルが数回発生。セッションが切れたユーザーには再入力してもらうなど,ユーザーに負担をかけていた。
さらに,約600社となる取引先すべてにセルベッサを広げる計画も出ていた。そのため2002年10月,負荷に強いシステムの構築に動き出した。
MySQLよりPostgreSQL
新システムは負荷分散装置を用い,クラスタ構成を採ることとした。また,Webサーバー/DBサーバーは,これを機に新機種に変更した。ここでクラスタ構成に問題が発生。新サーバーでは,既存システムで使っていたOracle8 Workgroup Server for Linuxにおける動作保証の範囲が,ホットスワップやRAIDを対象にしていないことが判明した。新サーバーでホットスワップの動作保証を受けるにはOracle9iが必要というのだ。
図2●Oracleの移行先にPostgreSQLを採用 セルベッサのシステム特性を分析した結果,(1)ストアド・プロシージャが利用できる,(2)PL/SQLとの互換性が高い,(3)更新処理の実績が多い,という理由からOracleの移行先にPostgreSQLを選択した |
Oracle9iを利用するにはさらに,これまで使っていたRed Hat Linux 5.2からRed Hat Linux Advanced Serverに買い換える必要もある。大橋氏は「オープンソースのセルベッサを使うためのソフトウエアにコストが掛かり過ぎる」と判断。そこで,セルベッサやPostgreSQLに詳しいコムテック コンサルティングに,OracleからオープンソースDBに移行した上で,新システムを構築するよう依頼した。
コムテック コンサルティングでは,オープンソースDBとしてPostgreSQL 7.2とMySQL 4.0を検討。その結果,同社 常務取締役 石川達郎氏はPostgreSQLを採用した(図2[拡大表示])。理由は,(1)セルベッサでは「ストアド・プロシージャ」が多用されているが,MySQLではストアド・プロシージャが利用できない,(2)Oracleの独自言語「PL/SQL」とPostgreSQLの「PL/pgSQL」は言語的に似ている,(3)システムの利用状況は参照系と更新系が1対1であり,更新系ではPostgreSQLに実績がある,などだ。
また,Oracleに比べてPostgreSQLは必要なハードウエア・スペックが低くて済むため,従来のサーバーを待機系サーバーとして再利用できる,という点も選択の理由となった。