TOP調査レポート> はじめに
オープンソースの適用可能性を示す
オープンソースの適用可能性を示す

第9回:PostgreSQL vs MySQL2つのDBMSを検証する(前編)
著者:イーシステム  芝 国雄   2006/5/24
1   2  3  次のページ
はじめに

   「オープン・ソース・ソフトウェア(OSS)を業務システムで使う」と聞いたときに、すでに、OSSを使ったことのあるユーザであれば、何も違和感を感じないだろう。ところが、今までWindowsしか使ったことのないエンジニアにとっては、まったく未知の世界だ。「無償で使えるソフトウェアを使えるわけがない」とか「製造元の技術支援が受けられないから使いたくない」と思うユーザもいるのではないだろうか(図1)。
OSSに対する認知度 出典:Linuxオープンソース白書2006
図1:OSSに対する認知度
出典:Linuxオープンソース白書2006
(画像をクリックすると別ウィンドウに拡大図を表示します)

   今回はOSSのDBMSについて、業務システムへの可用性を考えてみたい。

   OSSのDBMSにはいくつかあるが、メジャーなのは「PostgreSQL」と「MySQL」の2つだ。


エンタープライズ向けの機能が豊富なPostgreSQL

   まず、前者について紹介しよう。PostgreSQLは、大学の研究プロジェクトから生まれたDBだ。

   1998年のバージョン6.3でダブルバイト対応し、6.4でストアドプロシージャに対応。2001年の7.1で、トランザクションログ機能を追加。翌年のバージョン7.2で、ロックをかけずにVACUUMできる機能を搭載。2005年11月には、最新版のバージョン8.1がリリースされた。


バージョン8.1の新機能

   ここでは、バージョン8.1の改善点と新機能を紹介する。バージョン8.1では、いくつかの機能で処理速度の向上をはかっている。その1つに、「ビットマップインデックススキャン」と呼ばれる機能がある。

   例えば、図2のようにアンケートの結果データが格納されたテーブルがあるとする。この大量のデータの中から、「アンケートのQ1にYes、Q2にA、Q3に1と答えた東京都に住む女性」といった、検索条件でデータを抽出する際に効果を発揮する。

PostgreSQL8.1のビットマップインデックススキャンが効果を発揮するケース
図2:PostgreSQL8.1のビットマップインデックススキャンが効果を発揮するケース
(画像をクリックすると別ウィンドウに拡大図を表示します)

   こうしたアンケートの場合、回答の選択肢がそれほど多くないので格納されるデータは限られている。さらに、その中から1つを検索条件の値として指定し、さらにそれが複数個ある場合に有効な機能といえる。

   また、データの更新量を監視し、適切なタイミングでVACUUMを実行する自動VACUUM機能が追加されている。

   PostgreSQLは、追記式の記憶管理を採用している。データを更新する場合、元のデータは残したままデータを追記する。同様に削除の場合は、物理的にデータを削除するのではなく、削除フラグを立てるという論理削除方式を採っているのだ。そのため、VACUUMというガーベジコレクションコマンドを定期的に実行する必要がある。

   この仕様上、頻繁にデータの追加や更新、削除を繰り返すとDBファイルの中に無駄な領域が増え処理速度が低下してしまう。そこで、VACUUMコマンドを実行するわけだ。バッチ処理などの直前にこのコマンドを実行するかどうかで、処理が完了するまでの時間が大幅に変わることも少なくない。

1   2  3  次のページ

イーシステム株式会社 芝 国雄
著者プロフィール
イーシステム株式会社  芝 国雄
グプタ事業部 部長
95年、日本グプタ(現イーシステム)入社。米グプタ社製品の統合開発ツールの「Team Developer」、RDBMSの「SQLBase」といった製品の日本語化をはじめ技術支援や販売、マーケティング業務に従事。主に、ユーザ企業のシステム開発の現場で、システムの設計に関わる事前調査や助言などの上流工程から、プログラミング時のトラブルシューティングまで、幅広く支援していた。2000年4月、携帯電話を活用したワイヤレスソリューション事業の立ち上げに従事。2001年、グプタ事業に専念し、現在に至る。

INDEX
第9回:PostgreSQL vs MySQL2つのDBMSを検証する(前編)
はじめに
  バージョンアップにともなう変化
  バージョン5.0では機能が豊富