PostgreSQLをMySQL互換にする(1/2 ページ)

PostgreSQLをサポートするオープンソースのプロジェクトは、MySQLをサポートしているものより遥かに少ない。こうした状況を変えるため、PostgreSQLの開発者が、PostgreSQL/MySQL互換プロジェクトに取り組んでいる。

» 2005年12月20日 13時00分 公開
[Joe-'Zonker'-Brockmeier,japan.linux.com]

 PostgreSQLは強力な機能を備え、パフォーマンスにも安定性にも優れている。しかし、肝心な分野でMySQLに大きく水をあけられている。すなわち、PostgreSQLをサポートするオープンソースのプロジェクトは、MySQLをサポートしているものより遥かに少ないのである。そして、この状況がPostgreSQLの普及を阻んでいる。ユーザーの多くはMySQLを選ぶが、それはMySQLがPostgreSQLよりも優れているからではなく、自分が使っているオープンソースソフトウェアがMySQLしかサポートしていないからなのだ。こうした状況に、クリストファー・キングス・リン氏が挑んでいる。

 PostgreSQLの開発者であるキングス・リン氏――phpPgAdminプロジェクトにも参加している――が、PostgreSQL/MySQL互換プロジェクトに取り組んでいる。MySQLデータベースにのみ対応するソフトウェアでPostgreSQLを使えるようにしようというのだ。MySQLの関数100種と集計機能2種の作成を予定しており、「おそらく、PostgreSQL上のテンプレート」も含まれるだろうという。

 同氏の言葉によると、このプロジェクトは同氏の個人的関心を端緒とするもので、「SQLのストアドプロシージャの作成技術を磨くための」場として、また「PostgreSQLがオープンソースデータベースの第1選択肢となるのを見たい」という願いから立ち上げたのだという。

 MySQL互換関数が目標としているのは、MediaWiki、Drupal、SugarCRM、Bugzilla、Joomla!などのオープンソースアプリケーションだ。「大規模なMySQLオープンソース製品でPostgreSQLが使えるようにしたいのです。そうした製品の(PostgreSQLへの)対応はまちまちなんですよ。これができれば、企業のWeb開発部門はPostgreSQLに移行しやすくなります。互換ライブラリがあることを示せば、MySQLからPostgreSQLへの移行を上司に説明しやすくなるでしょ?」

 プロジェクトの現行バージョンはMySQL 5.xとの互換性を目指しているが、これには「おそらく」PostgreSQL 8.x以上が必要になるだろうという。この記事の執筆時点では、互換ライブラリは第2ベータリリースの段階にあり、1.0バージョンのリリースは間もなくの予定だ。

 「アプリケーションがPostgreSQLをサポートするよう促す必要があります。このライブラリがあればサポートは簡単になりますし、PostgreSQLのストアドプロシージャ言語を覚える必要もありません。PostgreSQLはMySQLのほとんどの関数を楽々と実装できるだけの地力があります。それを使わない手はないですよね」

 キングス・リン氏によれば、一つのPostgreSQLサーバ上で通常のPostgreSQLデータベースとMySQL互換関数を用いたデータベースが併存しても問題はないという。「PostgreSQLのソースコードを変更することはありませんし、パッチを当てることもありません。実装は、すべてユーザー側の世界で行っていますから」

 互換関数はデータベースにロードされ、そのデータベース上にのみ存在する。PostgreSQLのパフォーマンスにも、まったく影響はないという。

 ただし、若干の制約があり、最初のリリースでは提供されないものがある。MySQL関数の中には、「PostgreSQLの文法を変える必要がある」ためサポートの困難なものがあるのだという。例えば、MySQLにはブーリアン型がない、NULLの扱い方がPostgreSQLと異なる、文字列の大文字小文字を区別しないなど。そのほかの制約も含め、MySQLとPostgreSQL間の非互換性はプロジェクトのREADMEファイルに列挙されている。キングス・リン氏によれば、回避策はあり、将来のバージョンでこうした問題を解決する予定だという。

次ページ:互換関数か、ネイティブサポートか

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ