■Windowsで稼働するオープン・ソースのデータベース管理システム「Firebird」日本語版が2004年2月にリリースされた(該当サイト)。国内でも4月に「Firebird日本ユーザー会」が発足した(該当サイト)。
■現在,東欧を含むヨーロッパ全域,ロシア,ブラジルなど,世界中で広く使用されているが,これを契機に今後は日本での利用拡大も期待されている。ここでは,Firebirdが備える数々の魅力を紹介したい。

(山田健一=Firebird日本ユーザー会 副理事長)

 Windowsで稼働するオープン・ソースのデータベース管理システム「Firebird」が日本で急速に注目を浴び始めた(図1)。2004年2月にv1.5がリリースされて大幅に機能アップしたほか,4月から日本ユーザー会が正式発足している。同ソフトの特徴は高機能・軽量・無料と3拍子そろっていることだ。もちろん,ビジネスで使用するための最低条件を満たしており,「SQL92のEntry Level 1に完全準拠」「独自のSQL拡張」「事実上無限のデータベース・サイズ限界(64テラ・バイト)」「優れた同時実行性」という機能も備える。


図1●FireBirdの公式Webサイト(http://www.firebirdsql.org/)

 Windowsユーザーの方が無料で使える高機能データベースでまず思い浮かべるのは,マイクロソフトの「MSDE 2000(Microsoft SQL Server 2000 Desktop Engine)」だろう。これはSQL Server 2000のサブセットになっているDB管理システムで基本機能はSQL Serverと同じである。ただし,MSDEは同時接続実行数が5を超えるとパフォーマンスが低下するようになっている。一方,Firebirdにはこのような制限はない。日本でユーザー会を準備しているときのメーリング・リストでは,クライアント40台で社内の基幹業務システム的に使用し,累計100万件以上のレコードを扱っているなどの報告がある。

 Firebirdの前身は米Borland Softwareの「InterBase」という商用データベースで,古くからWindows上での稼働実績がある。2000年8月にInterBaseがオープン・ソースになったことから開発が始まった。オープン・ソース化されたInterBaseは,そのままでは稼働できなかったという逸話も残っているが,開発者たちの努力により,現在は東欧を含むヨーロッパ全域,ロシア,ブラジルなど,世界中で広く使用されている信頼性の高いデータベースに仕上がっている。今後は日本での利用拡大も期待されている。ここでは,Firebirdが備える数々の魅力を紹介したい。

ビジネスで使用するための最低条件が整っている
 前述のようにFirebirdの特徴は高機能・軽量・無料という点である。まず,機能面では,ビジネスで使用するための最低条件が整っていることを指摘しておきたい。

 筆者の考えるビジネス用途データベースの最低条件とは次のものである。 (1)参照整合性制約により,データを矛盾なく蓄えられる。 (2)トランザクション機能により,テーブル間で矛盾したデータの発生を抑えられる。 (3)ストアド・プロシージャが作成できる。 (4)SQLにおいて副照会などの複雑なSQLが記述できる。  以下,これらを順に説明していこう。

参照整合性制約により,データを矛盾なく蓄えられる
 参照整合性制約とは,複数のテーブル間でデータが矛盾しないことを保証する機能である。例えば,図2のように「仕入先マスター」と「仕入テーブル」という2つのテーブルから成るデータベースがあったとしよう。正規化によりテーブル分割したため,双方のテーブルに「仕入先コード」がある。ただし,双方の「仕入先コード」は本来同一のものなので,常に一致している必要がある。すなわち「仕入先マスター」に存在しない「仕入先コード」のデータが「仕入テーブル」に追加されては具合が悪い。また,「仕入テーブル」に存在する「仕入先コード」のデータが「仕入先マスター」の「仕入先コード」から削除されても具合が悪い。参照整合性制約を設定しておくとこのような不具合が起きないようにデータベースが管理してくれるので,プログラムによるチェックを省ける。


図2●テーブル構成の例

図3●入庫更新の例

トランザクション機能で,テーブル間の矛盾を抑える
 トランザクション機能とは複数の更新処理を一まとめにして扱うことで,データの矛盾を防ぐ機能である。図3のように「在庫数」と「入庫履歴」という2つのテーブルを持つデータベースがあったとしよう。ある日,倉庫に製品が40個搬入されたので,入庫更新があったとする。このとき,在庫数が40増加するとともに,入庫履歴にも40個の追加が記録されていないと具合が悪い。在庫数だけ更新されて入庫履歴が追加されなかったら,テーブル間のデータに矛盾が生じるためである。トランザクション機能を使えば,そのようなときトランザクションの開始と終了を明確にデータベースに教えられ,複数の更新を一まとめにして反映できる。逆にデータ確定の命令(COMMIT)が伝わらない場合は,データベースはトランザクション開始後の更新をすべて破棄する。例えば,在庫数を40個増やした段階で何か障害が起きて入庫履歴が更新できないときは,在庫数のテーブルの更新が元に戻る。


△クリックすると拡大されます
リスト1●副照会の一例

△クリックすると拡大されます
リスト2●クロス集計SQLの一例

ストアド・プロシージャが作成できる
 ストアド・プロシージャはデータベース管理システム側でバッチ型の処理を実行する機能である。トランザクション機能で解説したように通常,入庫処理は在庫数の増加と入庫履歴の追加がセットになっている。プログラムでこれを実現すると在庫数増加と入庫履歴追加の2本のSQLをデータベースに伝える必要がある。これが入庫処理のストアド・プロシージャを作成しておくと入庫処理用ストアド・プロシージャの実行という1本のSQLをデータベースに伝えるだけで済むようになる。クライアントからサーバーに対するネットワーク・トラフィックの軽減になるとともに,システムのパフォーマンスアップにつながる。一般に多くのデータを一度に更新するようなバッチ型の処理がある場合,ストアド・プロシージャで実行すると効果絶大である。

SQLにおいて副照会などの複雑なSQLが記述できる
 リスト1は副照会の一例である。WHERE句の中に( )で囲まれたSELECT文がある。このようにSELECT文の中にSELECT文が記述できるので,複雑な条件でも1つのSQLで記述できる。1つのSQLで記述できるということはプログラム・ロジックの簡素化につながる。

 Firebirdではテーブル名やフィールド名に日本語などのマルチバイトを使用できないが,リスト1のように別名には日本語を指定できる。また,SQL文においてCASE式が記述できるので,いわゆるクロス集計が楽に行える。クロス集計の例をリスト2に示した。



あなたにお薦め

もっと見る

日経クロステック Special

What's New

総合