Okapi Project

HSQLDB について

バージョン
2003 年 07 月 16 日 Ver.1.0
作成者
T.Itoh ( Xware )

要約

当ドキュメントは PostgreSQL から HSQLDB (Hypersonic SQL DB) へ移行する際の手順と注意点についてまとめたものです。当ドキュメントでは基本的なデータベースの知識や SQL の知識を 持っているものとして解説します。Okapi Project の設計書にあるデータベース基本仕様の RDBMS 編にあるように、HSQLDB は複数のモードを切り替えて動作させることが可能ですが、ここではスタンドアローンモードにて動作させるものとしています。

目次


1.HSQLDB の入手

まず、DBMS の本体を入手する。HSQLDB のサイト (http://sourceforge.net/projects/hsqldb) より最新の安定バージョン 1.7.1 をダウンロードします。サイズは 1MB 弱です。

2.HSQLDB の配置

次にダウンロードしたファイルを解凍し、lib というフォルダから hsqldb.jar という Jar ファイルを探します。これが HSQLDB の本体及びユーティリティ関連のツールになります。この Jar ファイルを Web アプリケーションの WEB-INF/lib 配下へ複写します。この場所へ配置することで Web アプリケーションを配付する際にデータベースもセットで配付することができます。また、データベースの関連ファイル(データ定義や実データが記録されたファイル)は当然ながら WEB-INF/lib に作られます。

3.HSQLDB の起動とユーティリティの実行

次に、実際にアクセスするためのメタデータベースの作成を行います。また、当節での解説が直接データベースを参照・編集するための手段になるため、データの改ざん等を行う際は参考にしてください。

3.1.サーバモードでの起動

ここではアプリケーションから実行するための前段としてデータの準備をする必要があるので、サーバモードにて HSQLDB を起動します。Windows 環境では MS-DOS プロンプト、もしくはコマンドプロンプトを起動し、Web アプリケーションの WEB-INF/lib へカレントを移動してください。つまり、前節で hsqldb.jar を置いた場所へ移動します。

ここで以下のコマンドを実行します。Windows, Unix, Mac のすべてで共通のコマンドです(Java の起動のため)。

$> java -cp hsqldb.jar org.hsqldb.Server -database xware

ここでは Learn3ed のデータベースである xware を作成するための例を挙げています。上記のコマンドを実行することで HSQLDB がサーバモードで起動します。これは通常の RDBMS の起動と同じです。

3.2.データベースマネージャの起動

サーバモードで起動した場合、以下のような内容がコンソールに表示されているはずです。

[Macintosh:okapi/WEB-INF/lib] tomohiko% java -cp hsqldb.jar org.hsqldb.Server -database xware
server.properties not found, using command line or default properties
Opening database: xware
HSQLDB server 1.7.1 is running
Use SHUTDOWN to close normally. Use [Ctrl]+[C] to abort abruptly
Thu Jul 17 00:52:54 JST 2003 Listening for connections ...

プロンプトが戻ってこないはずなので、起動中はこのままにしておきます。終了させる場合はコンソールに表示されている通り、ctrl + c を押下してください。
次にもう一つコンソールを起動し、以下のコマンドを実行します。

$> java -cp hsqldb.jar org.hsqldb.util.DatabaseManager

これにより、データベースマネージャという管理ツールが起動します(下図)。

データベースマネージャの起動

ここで Type は HSQL Database Engine Server を選択し、他の部分はデフォルトのまま OK をクリックします。そうすると、以下の画面に遷移します。

HSQL Database Manager 画面

上図にて SQL 文が入力されているフィールドに CREATE なり SELECT なりを記述して実行すると DB へ反映されます。ここで PostgreSQL から移行するもののデータベース定義やデータの投入を行います。ここではすでに E-learning 向けの DB は構築済みのものを利用します。

4.データの配置

すでに解説した通り、HSQLDB のデータは WEB-INF/lib に配置した hsqldb.jar と同階層のフォルダ内(つまり WEB-INF/lib 配下)に作成されます。逆にいえば、ここにあらかじめ作ったデータファイルを格納しておけばデータベースとして使用することができます。また、配付する際もサンプルのデータとして利用することが可能です。 ココからダウンロードして hsqldb.jar と同じ場所に配置してください。(配置は、解凍して出来上がった3つのファイルを直接 WEB-INF/lib に置きます)

5.Enviroment.xml の修正

次に、フレームワークの環境定義用 XML である Enviroment.xml を修正します。これは /okapi/data/xml 配下にあるファイルです。PostgreSQL と切り替えることを考えると、現在のファイルを適当な名前(例えば Enviroment_pg.xml など)に変更して PostgreSQL 用として保存しておくと便利です。

このファイルを以下の色付き文字の部分のように修正します。

<?xml version="1.0" encoding="Shift_JIS"?>
<enviroment-mappings>
    <enviroment>
        <DB-info>
            <DB_DBMS>POSTGRES</DB_DBMS>
            <DB_DRIVER>org.hsqldb.jdbcDriver</DB_DRIVER>
            <DB_URL>jdbc:hsqldb:/Users/tomohiko/software/eclipse/workspace/okapi/WEB-INF/lib/xware</DB_URL>
            <DB_USER>sa</DB_USER>
            <DB_PASSWORD></DB_PASSWORD>
            <DB_SIZE>3</DB_SIZE>
            <DB_MAXSIZE>1000</DB_MAXSIZE>
            <DB_WAITETIME>6</DB_WAITETIME>
            <DB_WAITENUM>10</DB_WAITENUM>
            <DB_DBMS>POSTGRES</DB_DBMS>
            <DB_POOL>true</DB_POOL>
            </DB-info>
        </enviroment>
</enviroment-mappings>

上記の XML について、以下で詳細に説明します。

5.1.DB_DBMS 要素

この要素はフレームワークが利用する DBMS 名を記述するところです。システムとしては DAO が対象の DBMS 用のクラスのインスタンスを取得するために利用する要素ですが、現時点での DAO は PostgreSQL 向けにのみ対応しているため、この要素を書き換える意味はそれほど大きくはありません。PostgreSQL 向けの DAO でも今のところ問題なく動作するため、 ここは書き換えずに PostgreSQL としたままにします。

5.2.DB_DRIVER 要素

ここは対象の DBMS の JDBC ドライバのクラス名を記述するところです。今回は HSQLDB を利用するため上記の例に従って記述しておいてください。

5.3.DB_URL 要素

HSQLDB を利用する上で一番重要な要素がこの URL 指定です。結論からいうと、上記のように自端末の hsqldb.jar の場所を絶対パスで記述する必要があります。 更に、この指定は間違っていてもエラーとはならず、間違って指定した場所に新しく DB を作って動作するため、試行錯誤などをしようものならあらゆる場所に ゴミファイルを作る要因となりかねません。また、間違った指定でもエラーにならないため正常に動作しないことを別な要因に求めてしまう危険性もあります。指定には十分に注意が必要です。
Windows 環境では C:/xxxx/xxx/xxxxx/ とドライブ名からの指定が必要になります。

5.4.DB_USER 要素

これは HSQLDB の決め打ちである sa を使用します。変更が可能かもしれないがどこにも記事等がないため、HSQLDB の用途としてはこれで十分と考えられます。

6.まとめ

以上で設定と配置は完了です。あとは通常と同じようにフレームワークを起動するだけです。あらかじめ DB を起動しておく必要等無いところが HSQLDB の利点です。DB を使用しているということ自体を意識させないため配布形式には適しています。

しかし、動作は Windows 環境で言えば Cygwin + PostgreSQL よりも体感速度は遅く感じます。あくまでデモレベルや配布レベルでの使用が適しており、開発用途としてもかなり無理のある DBMS と結論付けられます。

Copyright © 2003 - 2006 Okapi Project All Rights Reserved.