1.はじめに
Okapi Project では目的によって次の RDBMS(Relational Database Management System) を利用することとします。
- HSQLDB
- PostgreSQL
以下、これらの RDBMS の特徴と使用する目的について言及します。
2.HSQLDB
2.1.HSQLDB の概要
HSQLDB は 100% PureJava によって作られた RDBMS です。ファイルサイズも本体部分のみで 250KB と小さく、ダウンロードパッケージ全体でも 1MB 弱という程度になっています。従来は HypersonicSQL という名称で知られており、Jakarta Project の配布アーカイブの中でもよく利用されている RDBMS です。
この RDBMS は性質上、大規模システムの構築などには向かず、アプリケーションのデモ用途やごく小規模のシステムなどに向いています。また、Web アプリケーションなどを配付する際に RDBMS を利用するものについては再配布可能な HSQLDB を梱包して配布するという形態も考えられます。
HSQLDB の最大の特徴でもある動作モードの違いについて以下で説明します。
2.1.1.サーバーモード
一般的な RDBMS に最も近い形の起動モードです。この場合の HSQLDB は Java Servlet によって実装されており、Tomcat などのサーブレットコンテナを利用して起動します。このとき 9001 番のポート番号に接続してデータベースアクセスを実現します。
一般的な RDBMS と同様に DB サーバーを起動しますが、このときに DATASET 名(一般的な RDBMS ではメタ DB 名)を指定して起動します。データベース URL は「jdbc:hsqldb:hsql://NODENAME」という形式となります。更に一般的な RDBMS の JDBC ドライバと同様に WEB-INF/lib 配下に JDBC ドライバを置きます。
2.1.2.Web サーバーモード
HTTP 経由でデータベースにアクセスする方法です。CGI に対するリクエストのようにしてクエリーを発行します。データベース URL は「jdbc:hsqldb:http://NODENAME」という形式になります。サーバーモードと同様に別途サーバーの起動処理が必要になり、その際に DATASET 名を指定します。
2.1.3.In-Memory モード
最も軽快な動作をするモードで、データを保存せずにオンメモリーで動作します。用途としてはアプレットでデータベースを利用する場合等にこのモードを選択するのがベストです。データベース URL は「jdbc:hsqldb:.」となります。
用途としてはアプレットの他、データベースの学習用としても適切です。
2.1.4.スタンドアロンモード
サーバーモードと似ていますが、サーバーがクライアントと同じプロセス内で動作するモードです。サーバーモードではデータベースサーバの起動処理が必要になりますが、スタンドアロンモードでは起動の必要が無く、JDBC 経由でアクセスするだけでデータベースへ接続が可能になります。データベース URL は「jdbc:hsqldb:DATASET」です。
アプリケーションの開発段階や配布時の RDBMS としては利用者側がデータベースの起動を意識せずに済むため当モードが最適と考えられます。
3.PostgreSQL
3.1.PostgreSQL の概要
PostgreSQL はオープンソース RDBMS としては Oracle, DB2 などといった商用の RDBMS に遜色ない機能を有する RDBMS です。商用・非商用を問わずに幅広く利用されており、Unix 系 OS をベースとして動作する他、BSD 系ベースとなった Mac OS X などでもネイティブ環境で動作させることができます。最近では Windows 環境でもネイティブで動作する PostgreSQL として PowerGres というソフトウェアが公開されたが、これは有償である。Windows 環境で PostgreSQL を利用する場合は Cygwin という Unix エミュレータを利用して動作させるのが一般的となっています。
以下に PostgreSQL の特徴を示します。
3.1.1.オープンソースであること
PostgreSQL はすでに述べた通りオープンソースの RDBMS です。同じオープンソースの RDBMS として PostgreSQL と双璧をなす MySQL は商用のライセンスについては完全に無償とはなりえません。しかし、PostgreSQL は商用・非商用を問わず完全にライセンスがフリーです。したがって用途を問わずにライセンスを意識する必要がなく、新製品開発等のプロジェクトにおいては最適な RDBMS と言えます。
3.1.2.過去の新製品開発での利用経験があること
Okapi Project において提供されている Learn Learn Learned はいわゆるサーバサイド Java と言われる J2EE 技術を駆使して構築されたシステムですが、このシステムで使用している RDBMS が PostgreSQL でます。過去の開発での利用実績があることから、今回の開発で用いる場合にも導入がスムースに行えることが期待できます。また、過去に利用していることよりトラブルが発生した場合にも迅速な対処が可能になります。
3.1.3.商用の RDBMS に引けを取らない機能を有すること
PostgreSQL がオープンソースの RDBMS として広く利用される背景には、商用の RDBMS に引けを取らない機能を保持していることが挙げられます。RDBMS には必須の SQL はもちろん、ストアドプロシージャである PL/pgSQL といった商用の RDBMS が保持する機能だけでなく、PostgreSQL 独自の機能等も備えています。無論、他のオープンソース RDBMS などが持つ機能もほとんどが網羅されています。
オープン系のシステム開発の雑誌等では Oracle などと比較されることが多いが、Oracle と PostgreSQL にて機能に大きな差がある部分と言えばパーティショニングをはじめとするチューニング関連の大規模システム向けの機能です。大規模向けの機能は Okapi Project に当面必要とされる部分ではなく、PostgreSQL の基本的な機能のみで十分にシステム開発が行うことが可能です。
3.1.4.標準であること
PostgreSQL は SQL92 に適合しており、極めて標準的な SQL を使用することが可能です。これは PostgreSQL がデータベースの学習向けに用いられる面があることを裏付ける証拠でもあり、システム開発においては他の RDBMS へ移行を余儀なくされる場合に大きな威力を発揮します。
4.Okapi Project での RDBMS
上記で説明した他にもオープンソースの RDBMS としては MySQL や FireBird などいくつも種類がありますが、Okapi Project としては上記の様々な特徴を踏まえた上で以下の目的別に HSQLDB と PostgreSQL をプロジェクトの標準 RDBMS として位置づけます。
- HSQLDB はダウンロード用アプリケーションが必要とする RDBMS 用途、もしくはアプリケーションのデモ用途として利用します。
- PostgreSQL は Okapi Project 内部で稼働するシステム上で必要とする RDBMS として、また Okapi Project の提供する Web アプリケーションをユーザが本稼働させる際の標準推奨 RDBMS として利用します。
Web アプリケーションの場合、RDBMS が変更になるときのプログラム変更は必然的に発生するものとして認識されていますが、その変更が可能な限り少なくなるように、Okapi Project では個々の RDBMS に特化した機能(関数・SQLなど)は極力利用せず、標準化された SQL を中心として機能を実現させて行くものとします。そうすることで Okapi Project が推奨する RDBMS 以外を利用する場合でも比較的少ない対応で RDBMS の移行が可能であると考えられます。