Yet another OSS DB:Firebird(1)

Firebirdのアーキテクチャと特性、歴史

 

Firebird日本ユーザー会
はやしつとむ
2008/10/16

 Firebird日本ユーザー会のはやしつとむです。今回からFirebirdについて連載をさせていただくことになりました。第1回に当たる今回は、Firebirdとはどんなデータベースで、誰が作ってきたのかなどを中心にまとめています。今後の予定は、Firebirdのデータベースファイルの内部構造、標準関数、User Defined Functionの作成について、といった流れを予定しています。この連載を通じて、Firebirdのファンが1人でも増えてくれることを願っています。

Firebirdのインストールから起動まで

 さて、firebirdとはいったいどんなRDBMSだろう? 今回は、手始めに導入の手順はもちろんだが、Firebirdが生まれた背景や、アーキテクチャの特性にも触れたいと思う。歴史的背景の部分は、コンピュータ業界の栄枯盛衰もからむものだから、一度は読んでみてもいいだろう。

 まずは本題、Firebirdの最新版であるv.2.1.1を使ってみよう。


ビルドするには

 まずは、FirebirdプロジェクトのWebサイトからリンクをたどって、現在の最新版であるv.2.1.1のソースコードを取得しよう。ターゲットOSはCentOS 5.1としたが、最近のLinuxディストリビューションならどれでもまず問題ないだろう。パッケージも用意されているが、ここではソースコードを入手してビルドする手順を紹介する。

 以降の解説はCentOS 5.1を前提にするので、それ以外の環境の場合は適宜読み替えてほしい。

 まずは、wgetコマンドでアーカイブを入手する。

$ wget http://nchc.dl.sourceforge.net/sourceforge/firebird/Firebird-2.1.1.17910-0.tar.bz2    

 bzip2とtarでアーカイブされているので、下記の手順で展開する。

$ tar xjf Firebird-2.1.1.1790-0.tar.bz2 

 終了すると、Firebird-2.1.1.17910-0といった名前のディレクトリができているので、そこに移動しておこう。

 このディレクトリの配下にはいくつかのファイルとディレクトリがあるが、このうちautogen.sh というシェルスクリプトを実行する。

$ cd Firebird-2.1.1.17910-0
$ ls
ChangeLog    acx_pthread.m4  builds     configure.in  examples  lang_helpers
Makefile.in  autogen.sh      configure  doc           extern    src
$ ./autogen.sh

 autoconfが走って、おなじみのチェックが一通り終わると以下のメッセージが表示されるはずだ。

The Firebird2 package has been configured with the following options:

                   Architecture : ClassicServer
                          Debug : disabled
64 bit I/O for 32-bit platforms : enabled
                    Raw devices : enabled
                   Lock manager : enabled
                   Service name : gds_db
                   Service port : 3050
                   GPRE modules : c_cxx.cpp

Install Dir : /usr/local/firebird
Now type `make' to compile Firebird2


ビルドオプション

 ここまでの作業が終わったら、あとはmake を実行すればFirebirdのビルドが始まる。

 その前に、autogen.shのオプションについて説明しておこう。 autogen.shに --help オプションを付けて実行すると、すべてのオプションについての説明が表示されるが、ここでは代表的なものを下の表にまとめておこう。用途や環境に合わせて使い分けてほしい。

オプション 内容
--prefix=PREFIX Firebirdのインストール先。RPMを使ってインストールすると、/opt/firebird2などに置かれるが、デフォルトでは/usr/local/firebird。Linuxの作法では後者の方が正しい
--enable-superserver 指定すると、SuperServer版でビルドされる。指定しない場合、ClassicServerとなる
--enable-debug 指定すると、デバッグ版でビルドされる。デフォルトでは無効
--enable-raw-devices 指定すると、データベースでのRAWデバイスサポートが有効になる。POSIX環境ではデフォルトで有効
--with-lock-manager ロックマネージャをビルドする。ClassicServer版のときはデフォルトで有効
--with-service-name INETサービスネームを指定できる。デフォルトではgds_db
--with-service-port INETサービスポートを指定できる。デフォルトで3050
--disable-largefile 32bitOSでの64bitI/Oを無効にする。デフォルトで有効

 makeそのものは特別なことはなく、以下のようにコマンドを入力するだけだ。makeが終了したら、rootになってmake install を実行する。ここではインストール後にもroot権限で行う作業があるのでsudoではなくsuで作業する。

$ make
$ su  root権限に 
# make install

 ずらずらとメッセージが表示された後、以下のプロンプトが表示されるので1回目にEnterキーを、2回目はsysdba、つまりFirebirdの管理者ユーザーのパスワードを入力してEnterキーを押下する。

 ●1回目のプロンプト 
Firebird classic 2.1.1.17910-0.i686 Installation

Press Enter to start installation or ^C to abort
 ●2回目のプロンプト  Please enter new password for SYSDBA user:  ユーザーとパスワードを入力 

 「Install completed」と表示されてプロンプトに戻ったらインストールは完了だ。

 インストールが完了したら、rootを抜ける前にFirebirdのコマンドライン接続ツールであるisqlを使いやすくするため、/usr/local/binにシンボリックリンクを張っておこう。

# ln -s /usr/local/firebird/bin/isql /usr/local/bin/isql

接続ツールisql

 isqlでFirebirdに接続するには以下のようにする。ここでは、付属のサンプルデータベースにsysdbaで接続している。-p オプションの後には先ほど入力したパスワードを入れること。

$ isql -u sysdba -p ******* /usr/local/firebird/examples/empbuild/employee.fdb
Database:  /usr/local/firebird/examples/empbuild/employee.fdb, User: sysdba

 接続すると、isqlのプロンプトになる。使用できるコマンドは help; とすると出てくるので確認してみてほしい。

 試しに基本的なコマンドを打ち込んでみよう。

 show version; とすると接続しているFirebirdのバージョンが表示される。データベースに関する情報を表示するには show database; とする。ここで注意したいのは最後に「;(セミコロン)」を付けないと改行していくだけでコマンドは実行されないということ。逆に複数行にまたがるSQLを書くときには、どんどん書いていって最後にセミコロンを付ければいい。

 isqlを終了するには、exit; またはquit; を実行する。

 exit;quit; も終了のコマンドだが、終了時の挙動が異なっているので注意が必要だ。exit; とした場合は変更をcommitしてから終了し、quit; の場合はロールバックしてから終了する。下の例ではロールバックする必要がないので、exit; としている。このほかの詳細はhelp; コマンドも併せて参照してほしい。

SQL> show version;
ISQL Version: LI-V2.1.1.17910 Firebird 2.1
Server version:
Firebird/linux Intel (access method), version "LI-V2.1.1.17910 Firebird 2.1"
on disk structure version 11.1
SQL> show database;
Database: /usr/local/firebird/examples/empbuild/employee.fdb
        Owner: SYSDBA
PAGE_SIZE 4096
Number of DB pages allocated = 265
Sweep interval = 20000
Forced Writes are OFF
Transaction - oldest = 167
Transaction - oldest active = 168
Transaction - oldest snapshot = 168
Transaction - Next = 171
ODS = 11.1
Default Character set: NONE
SQL> show tables;
       COUNTRY                                CUSTOMER
       DEPARTMENT                             EMPLOYEE
       EMPLOYEE_PROJECT                       JOB
       PROJECT                                PROJ_DEPT_BUDGET
       SALARY_HISTORY                         SALES
SQL> select count(*) from employee;

COUNT ============ 42 SQL> exit;

 以上で、Firebird.2.1.1のソースコード取得からビルド、インストールまで駆け足で見てきた。v.1.5以降はビルド+インストールが簡単になっているので、ぜひ試してみてほしい。

 次ページからは、より深くFirebirdを知るために、アーキテクチャの特徴などを紹介する。

コラム1:Firebirdの情報源

 ここでは本家FirebirdプロジェクトのWebサイトや、日本語で質の高い解説が読める情報源を挙げておこう。既知の問題への対処法のほか、機能を検証したドキュメントなどもあるので一度目を通してみるといいだろう。


  1/3 次のページへ

Index
Yet another OSS DB:Firebird(1)
アーキテクチャと特性、歴史
→ Page 1
・Firebirdのインストールから起動まで
  ビルドするには|ビルドオプション|接続ツールisql|情報源
  Page 2
・Firebirdと履歴型アーキテクチャ
  Eureka! Shadowingだ!!
  Page 3
・Firebirdがやってきたところ・向かう先
  Firebird 2.5(SuperClassic)はプロセス・スレッドモデルを統合した実装

 

Yet another OSS DB:Firebird


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間