「PostgreSQLとOracleを検証した結果,工夫すればPostgreSQLでも可能だと判断した」――郵便貯金カード普及協会のシステム開発を担当したNTTデータの渡部広志氏は,PostgreSQLの採用理由をこう説明する。

 システムで処理しなければならないのは,約500万人分の会員データ。会員は今も増えており,システムの仕様としては会員数1000万人を想定している。PostgreSQLの検索性能は検証した結果高いことが分かったが,1000万人規模のシステムで使うにはPostgreSQLの標準機能だけでは足りなかった。

どんな検索でも10秒以内

図1●システム概要とシステム構築上のポイント
約500万人の会員データを管理するシステム。将来的には会員が1000万人になることが予想されるため,大量データに対する高い検索性能が求められた。また,オンライン処理は24時間365日利用するため,高い可用性が必要となった

 郵便貯金カード普及協会が構築したシステムは,郵便貯金キャッシュカードの所持者に対する会員制サービス「ゆうちょくらぶ」の会員管理システム。ゆうちょくらぶは,旅行の手配などのサービスを電話で提供する。サービスは24時間365日利用可能である。

 システム構築上のポイントは3つ。1番目は,大量データに対して高いオンライン処理性能を確保すること。コールセンターのオペレータは,システムを使って会員であることを確認する。住所などから検索するような時間のかかる問い合わせでも,10秒以内で応答しなければならない。2番目は,24時間365日利用可能な高い可用性。一部のハードウエアが壊れても,サービスを継続できるシステムにしなければならなかった。最後のポイントはバッチ処理の作り方。バッチ処理は1回で約40万件のデータを更新する重い処理である。バッチ処理によるオンライン処理の影響を最小限にする工夫が求められた(図1[拡大表示])。

PostgreSQLで大丈夫と判断

 図1の3つのポイントはすべてデータベースに関係するため,システム開発を担当したNTTデータはプロジェクトの初期段階でデータベース製品を比較検証した。検証対象に選んだのは,Oracle9i DatabaseとオープンソースのPostgreSQL 7.2.2。PostgreSQLが利用できればコストを抑えられると考えた。実際に1000万件のデータで処理性能を測定したところ,「Oracleの方が処理性能が高かったが,PostgreSQLの性能も低くない。工夫すればPostgreSQLでも適用可能と判断」(NTTデータ 第四公共ビジネスユニット オープン技術統括部 第三ソリューション担当 課長の渡部広志氏)し,PostgreSQLを採用した。

 ゆうちょくらぶのシステムでは,前述したようにどんな検索でも10秒以内で応答することと,一部のハードウエアが壊れてもサービスが継続できることが求められている。これらを実現するためにNTTデータの渡部氏らが考えた方法は,複数台のサーバーとディスクで1つのデータベースを処理するクラスタリング構成である。しかし,PostgreSQL 7.2.2にはクラスタリング機能が備わっていない。そこで渡部氏らはPostgreSQLでクラスタリング構成を実現するためのソフトウエアを独自に作成することにした。


(松山 貴之=matsuyam@nikkeibp.co.jp)