図1●Firebirdが利用できるOS
写真1●IBConsoleの初回起動時の画面
ServerNameとNetwork Protocol,Alias Nameを設定する。
図2●シャドウ・データベース機能の概念
図3●countryテーブルからレコードを抽出したところ
図4●ユーザー定義関数(UDF)を定義したところ
1行目で値の絶対値を求めるabs関数を利用したところ,Firebirdでは使えないことが分かったため,8行目から11行目にかけて定義し,利用した。
写真2●EMPLOYEEデータベースへ接続したところ
テーブル操作からデータベースのバックアップまで,さまざまな操作を行える。
 Firebirdは,LinuxやWindowsなどで動作する,SQL92に準処したデータベース管理システムである。米Borland Software社のInterBase 6.0をオープンソース化したものであり,KylixやDelphiと組み合わせて利用できる。

 オープンソースのデータベース管理システム(DBMS)といえば,PostgreSQLとMySQLが著名である。Firebirdは,これらに続く第三のDBMSになる可能性を秘めたオープンソース・ソフトウエアだ。

 Firebirdは,米Borland Software社が商用データベースとして製品化しているInterBase 6.0をベースに開発された。そのため,Borlandのビジュアル開発ツールであるKylixやDelphiを利用して開発された,InterBaseを利用するデータベース・アプリケーションであれば,一切変更することなくFirebirdを利用できる。

 FirebirdはLinuxをはじめ,図1[拡大表示]に挙げたさまざまなOSに対応している。ANSI/ISOで標準化されたSQLに準拠しており,SQL-89とSQL-92のほぼすべて,さらにSQL99のいくつかの機能を実行できる。

 Firebirdを操作するには,付属のコマンドライン・ツールisqlを用いる。リモート環境でもtelnet経由でisqlを利用できる。Windowsマシンから利用する場合は,専用の統合管理ツール「IBConsole」を使うこともできる(写真1[拡大表示])。

 IBConsoleはBorlandのWebサイト(http://www.borland.co.jp/interbase/devsupport/ibconsole.html)からダウンロードできる。ただし,日本語に対応していないため,日本語を表示する場合には,ソース・コードからビルドし直すか,日本語対応版(http://www.apex-jp.com/business_dev.html)を入手する必要がある。

不要領域を自動的に整理できる

 Oracleなどの商用DBMSと,オープンソースのDBMSとの違いは一般に,信頼性と可用性,管理のしやすさにある。商用ソフトをベースに開発されたFirebirdは,可用性と管理の容易さについては,他のオープンソースのDBMSよりも優れていると言える。

 可用性を高めるためには,障害によるデータ損失に備え,データベース・サーバーをRAID構成にすることが有効だ。Firebirdでは,データベースの信頼性を高める独自機能として,データベースのミラーを作成する「シャドウ・データベース機能」を実装している(図2[拡大表示])。RAIDを利用できない状況下で,データベースの信頼性を確保する手段として有効だろう。なお,マスター・データベースとシャドウ・データベースへの書き込みは,サーバー・プロセスが自動的に管理するため,特別に意識することなくデータの一貫性を保てる。

 また,管理のしやすさでは,度重なるデータの更新や削除で生ずる不要領域の扱いに特徴がある。Firebirdは不要領域の整理のために「ガーベジ・コレクション」機能を備える。これは,Javaなどで採用されるメモリー管理機能で,使用しなくなったメモリー領域を集めて,連続した利用可能なメモリー領域を再構築する技術である。Firebirdでは,データの更新や削除で空いたスペースを,一番後ろに回して自動的にデータ領域の再利用を図る。

 MySQLでもmyisamchkコマンドで,断片化されたレコードを結合して不要領域を排除できるが,処理中はデータベースを停止するか,テーブルをロックする必要がある。

Firebirdのインストール

 Firebirdにはサービスとして動作するClassicServer版と,デーモンとして動作するSuperServer版がある。どちらもDBMSとしての機能は同じだが,APIの実装が違う。そのためClassicServer版は,IBConsoleから接続できない。ここではSuperServer版について説明する。2003年7月17日現在の最新安定版は1.0.3.972-0である*1

 Firebirdのインストール手順は,以下の通りである。「Press Enter to start installation or ^C to abort」という表示の後にEnterキーを押せばインストールが終了する。

$ tar zxvf FirebirdSS-1.0.3.972-0.tar.gz
$ cd FirebirdSS-1.0.2.908-1
$ su
Password:
# ./install.sh

 Firebird Projectでは,Red Hat Linuxで動作確認を行っている。Vine Linux 2.6r1でも問題なく動作した。

Firebirdを操作する

 コマンドライン・ツールのisqlを用いると,Firebirdが正常に動作しているどうか確認できる。標準ではisqlは,/opt/interbase/bin以下にインストールされている。次のように表示されれば,Firebirdが問題なく動作している。

$ /opt/interbase/bin/isql
Use CONNECT or CREATE DATABASE to specify a database
SQL>

 続けて,データベースへ接続してSQL文を入力し,レコードを抽出する。なお,Firebirdの管理者ユーザーは「SYSDBA」で,インストールした時点のパスワードは「masterkey」になっている。

SQL> connect /opt/interbase/examples/employee.gdb user sysdba password masterkey;
Database: /opt/interbase/examples/employee.gdb, User: sysdba
SQL>

 これで,Firebirdに付属するEMPLOYEEデータベースに接続できた。格納されているcountryテーブルから,select文でレコードを抽出すると,図3[拡大表示]のように表示される。終了するには「SQL>」の後に,「quit;」と打ち込む。

 データベースに格納したデータは,検索するだけでなく,さまざまな関数で処理し,その結果を出力できる。Firebirdでは,関数をUDF(ユーザー定義関数)で提供しているため,最初から実装している内部関数はPostgreSQLやMySQLと比べ少ない。しかし,UDFがWebサイトで公開されているため,問題は少ないだろう。必要とする関数が公開されていない場合は,例えば図4[拡大表示]のように関数を定義して使えばよい。

IBConsoleを使うには

 最後に,WindowsからFirebirdに接続するIBConsoleの利用方法を紹介する。

 IBConsoleを起動して,接続先のサーバーを登録するため,メニュー・バーの[Server]-[Register...]を選択後,[Register Server and Connect]ダイアログで設定して登録する。

 続いて,メニュー・バーの[Database]-[Register]を選択する。[Register Database and Connect]ダイアログで,EMPLOYEEデータベースを登録する。Fileに「/opt/interbase/examples/employee.gdb」を,Alias Nameに「employee.gdb」を設定した。EMPLOYEEデータベースへ接続後,データベースの各スキーマ・オブジェクトが表示される(写真2[拡大表示])。

(ライター 豊崎 直也)


2004年4月にユーザー会を設立

 国内でも2004年4月にFirebird日本ユーザー会(http://firebird.gr.jp/)を設立する動きが出ている。スタートアップ・グループ代表の林 務氏と特別顧問の加藤 大受氏に話を聞いた(聞き手は畑 陽一郎)。

------ユーザー会設立に8カ月もかかるのはなぜか。

 企業をメンバーとして加え,NPOか財団法人として立ち上げたいからだ。

------Borland Software社との関係は。

 2000年6月に当時の米Inprise社(現在の米Borland Software社)がInterBase 6のソース・コードを公開し,完全互換のFirebird 1.0が完成した時点では,InterBase新版の開発を中止すると思われていたが,実際には製品の開発が続き,現在ではInterBase 7.1が販売されている。InterBase 6.5以降はソース・コードも非公開になっており,Delphiなどにも,Firebird側で独自に対応しなければならなくなってきた。今後は,ボーランドとも何とか協力していきたい。

------Firebirdを使う意味は何か。

 DelphiとInterBaseの組み合わせで,POS管理やパチンコの出玉管理を行うシステムなど多数のシステムが構築されているが,システムを拡張するとInterBaseのライセンス料金が無視できなくなってくる。このようなユーザーは置き換える意味がある。スタートアップ・グループの参加者もWindowsユーザーが最も多い。

------Firebirdの弱点は何か。

 ドキュメントだ。最初にオープンソースになった時点で,ソース・コードは公開されたが,マニュアルは非公開だったからだ。http://firebird.gr.jp/で一部を公開しているが,今後も拡充に努めたい。

【12月17日訂正】初出時,本文中に「PostgreSQLでは,vacuumコマンドを実行すると不要領域が再利用可能になるが,実行中は処理中のテーブルにアクセスできない。」という誤った記述がありました。PostgreSQL7.2からは,vacuum処理中のテーブルに対しても更新や検索などの処理が可能です。お詫びして訂正します。