OSC2006/Tokyo セッション
Firebirdの概要

Firebird日本ユーザー会
加藤 大受
本資料はFirebird日本ユーザー会のWebサイト（http://firebird.gr.jp）より入手可能ですcopyright(c)2006 Firebird日本ユーザー会

Agenda Firebirdの歴史
 Firebirdの概要

 Firebirdのロードマップ
 Firebirdのビルド＆デバッグ
 Firebirdの導入事例
 Firebirdの入手方法
 Firebird日本ユーザー会について

copyright(c)2006 Firebird日本ユーザー会

Firebirdの歴史

copyright(c)2006 Firebird日本ユーザー会

Firebirdの登場
 Firebirdとは
 2000年7月25日にInprise Corp.(現在のBorland
Software Corp.)がＩｎｔｅｒＢａｓｅ 6.0のソースコードをInterBase Public Licenseにて公開され、このソースコードをベースにプロジェクトがスタート
 オープンソースのFirebird Projectにて開発
 2002年3月12日にInterBase 6.0とフルコンパチブルのFirebird 1.0がリリース
 2004年2月21日にFirebird 1.5がリリース
 2006年1月24日にFirebird 1.5.3がリリース
 2006年2月10日 Firebird 2.0 β2がリリース
copyright(c)2006 Firebird日本ユーザー会

Firebird Foundation
 会費制でFirebird Projectを支援する団体
 Firebird Foundationの目的 オープンソースのFirebirdリレーショナル・データベース・エンジンの開発を支援し促進すること。
 非商用のインフラ及び機構を提供すること、それらによって資金を受け入れて運用すること。これらの資金を、開発を促進させるために支出すること。
 関連する個人、他の非営利団体及び営利企業の交友関係と共同作業を強化すること、また、Firebirdソフトウェア、関連する製品群及び諸活動における、開発、サポート及び振興への参加を立案すること。
copyright(c)2006 Firebird日本ユーザー会

Firebirdの歴史（参考資料）
 参考URL インターベースロードマップ（木村明治翻訳） http://www.geocities.jp/kimura804/rdb/cva
lde/IbRoadmap_j.htm

 How InterBase came to be（林 務翻訳） http://tech.firebird.gr.jp/firebird/index.php?firebird_xsite=34

copyright(c)2006 Firebird日本ユーザー会

Firebirdの特徴

copyright(c)2006 Firebird日本ユーザー会

Firebirdの概要
 ライセンス InterBase Public License v.1.0
 InterBase 6.0をベースにしているモジュール

http://firebird.sourceforge.net/index.php?op=doc&id=ipl

 Initial Developer's Public License. (IDPL) Firebird Projectが追加した新規のモジュール

http://firebird.sourceforge.net/index.php?op=doc&id=idpl

 両ライセンスともMozilla Public License v.1.1
をベースにしており、商用利用も可能性

copyright(c)2006 Firebird日本ユーザー会

Ｆｉｒｅｂｉｒｄの概要 簡単なインストールと環境設定
 簡易なインストーラを装備

 データベースの初期サイズの設定が不要 ユーザー領域、ロールバック領域、テンポラリ領域の設定が不要（ページサイズの指定は可能）
 １つのデータベース（ｆｄｂ）の中にデータページ、インデックスページ、ディクショナリが格納されている。
 ガーベージコレクション
 クエリオプティマイザを搭載
 経済的な設計（スモールフットプリント）

copyright(c)2006 Firebird日本ユーザー会

Ｆｉｒｅｂｉｒｄの概要
 インデックスのガーベージコレクション
 OS の不安定さをカバーする Guardianプロセス
 同一バージョンでのデータベースの完全な互換性
 他のプラットフォームからのデータベースファイルのコピーで対応可能

 マルチデータベースファイル対応
 OSのファイル制限回避のため

copyright(c)2006 Firebird日本ユーザー会

Firebirdの概要
 Multi-Generational Architecture（MGA) 各行はユニークなトランザクションIDを保持
 行の更新が行われるとサーバは新しいトランザクションIDとともに新しいバージョンの行をディスクに書き込み、古いバージョンとのデルタに変換する。
 データを書き直すのではなく、常にデルタを格納

copyright(c)2006 Firebird日本ユーザー会

Firebirdの概要
 トランザクション
 デフォルトトランザクション


アクセスモードREAD ONLYREAD WRITE

ロック対応




READ WRITE WAIT ISOLATION LEVEL SNAPSHOTWAITNO WAIT

排他レベル



SNAPSHOTSNAPSHOT TABLE STABILITY
READ COMMITTED [[NO]RECORD_VERSION] 表ロック WITH LOCK句の指定

copyright(c)2006 Firebird日本ユーザー会

Firebirdの概要
 Transaction ID(TID)
 TIDは32bit longで宣言
 TIDをリセットするためにはバックアップ／リスト
アが必要となる この仕様はFB 2.0β2でも同様
 CURRENT_TRANSACTION変数でTIDの取得が可能
INSERT INTO T1(TID,C1,C2)
VALUES(CURRENT_TRANSACTION,’1234’,’ABCD’);
copyright(c)2006 Firebird日本ユーザー会

Firebirdの特徴
 安定性
 商用製品(InterBase 6.0)をベースにしており、非常に安定したアーキテクチャを採用
 他のオープンソースRDBMSと異なり、頻繁なリビジョンアップがない。
 サブプロジェクトでQAを実施

copyright(c)2006 Firebird日本ユーザー会

Firebird の特徴
 イベントアラータ
 データの更新をイベントとしてクライアントに伝える Firebird の独自機能

copyright(c)2006 Firebird日本ユーザー会

Firebirdの特徴
 UDF(ユーザー定義関数)
 Delphi,C++などで簡単にユーザー定義関数の作成が可能で、組み込みも容易 多次元配列
 16次元までの配列をサポートするデータ型
 Blob フィルタ
 サブタイプを変換するライブラリを登録しておくことでJPEG <-> GIF などの変換が可能

copyright(c)2006 Firebird日本ユーザー会

Firebird の特徴
 シャドウデータベース
 データベースのミラーリング機能
 同一サーバ内でミラーデータベースの作成が可能。
サーバが自動的にツーフェーズコミットで書き込みcopyright(c)2006 Firebird日本ユーザー会

Firebirdの特徴
 統一されたアーキテクチャ
 Firebirdのすべての機能がDLLとして提供されているシングルサーバのEmbedded ServerからServerプラットフォーム版まで統一機能が提供
 製品への組み込みが可能で、DBの存在をユーザーに知られることがない。
 シングルユーザ向けとマルチユーザ向けの製品を同一ソースで開発が可能

copyright(c)2006 Firebird日本ユーザー会

GUI管理ツール（IBOConsole)

copyright(c)2006 Firebird日本ユーザー会

Firebirdのロードマップ

copyright(c)2006 Firebird日本ユーザー会

Firebird 1.0
 2002年３月にリリース
 InterBase 6.0と100%の互換性
 リリースプラットフォーム：
 Windows, Linux, FreeBSD, Solaris,
MacOS X, AIX, HP-UX Linux版は glibc 2.2系(Red Hat 7.3,AS 2.1,SuSE Linux 8)

 InterBase 6.0との違い
 改良点：32 バグ修正： 55
copyright(c)2006 Firebird日本ユーザー会

Firebird 1.5
 2004年3月にリリースされた最新版
 Firebird 1.0からの変更点
 ファイル名の変更
 メモリ効率の改良
 メモリ上でのソート機能を実装
 新しいメモリマネージャの実装
 改良点：58 バグ修正：94 （現在も継続中）
 SuperServer版でXNETプロトコルの対応
 ローカル共有メモリの利用
 Class版でのSMP対応の強化
copyright(c)2006 Firebird日本ユーザー会

Firebird 1.5
 SQLの改良
 「CASE」句、「COALESCE」句、「NULLIF」句をサポート
 「GROUP BY」句への以下の機能をサポート
 内部関数 サブクエリー 列のエイリアス名
 数値（列の位置）

 「SELECT FIRST X」と「ORDER BY」をサブクエリーでサポート
 SELECT文での明示的ロックのサポート
 SELECT ... FOR UPDATE WITH LOCK EXECUTE STATEMENT文のサポート
 トリガー・プロシージャでのSAVE POINTのサポート

copyright(c)2006 Firebird日本ユーザー会

Firebird 1.5
 仕様改良 1テーブル64インデックスの制限を撤廃
 メタデータのコンパイルのタイミングの変更

 ソースコードをCからC++へ変更

copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
2006年2月１0日にβ 2リリース
現在RC1に向けて作業中
Version 1.5からの変更点
改良点：82 バグ修正：140（継続中）
ODSバージョンが11に変更
６４ビットプラットフォームのサポート
レコード番号の対応
 40bit (内部は64-bit)のレコード番号に対応し、35GBのサイズ制限を撤廃
 Raw Deviceの対応
 Raw Deviceにデータベースの格納が可能
 ガーベジコレクションの改良 バックグランド処理対応


copyright(c)2006 Firebird日本ユーザー会Firebird 2.0

導出テーブルのサポート
SELECT<select list>
FROM<table reference list><table reference list> ::= <table reference> [{<comma> <table reference>}...]<table reference> ::=<table primary>| <joined table><table primary> ::=<table> [[AS] <correlation name>]| <derived table><derived table> ::=<query expression> [[AS] <correlation name>][<left paren> <derived column list> <right paren>]<derived column list> ::= <column name> [{<comma> <column name>}...]

copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
 CREATE SEQUENCE構文 SQL:1999のCREATE SEQUENCE構文のサポート
 CREATE GENERATORからの移行を推奨
 構文
CREATE { SEQUENCE | GENERATOR } <name>
DROP { SEQUENCE | GENERATOR } <name>
SET GENERATOR <name> TO <start_value>
ALTER SEQUENCE RESTART WITH <start_value>
GEN_ID (<name>, <increment_value>)
NEXT VALUE FOR <name>copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
 EXECUTE BLOCK構文 DSQLで使用できる名前のないプロシージャ
 構文
EXECUTE BLOCK [ (param datatype = ?, paramdatatype = ?, ...) ][ RETURNS (param datatype, param datatype, ...) }AS[DECLARE VARIABLE var datatype; ...]
BEGIN
...
END
copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0Procedure SQL 名前付きカーソルをサポート構文
DECLARE [VARIABLE] <cursor_name> CURSOR FOR( <select_statement> );OPEN <cursor_name>;
FETCH <cursor_name> INTO <var_name> [, <var_name> ...];
CLOSE <cursor_name>;
Example:DECLARE RNAME CHAR(31);
DECLARE C CURSOR FOR ( SELECT RDB$RELATION_NAME FROMRDB$RELATIONS );BEGINOPEN C;
WHILE (1 = 1) DO
BEGIN
FETCH C INTO :RNAME;
IF (ROW_COUNT = 0) THENLEAVE;SUSPEND;
END
CLOSE C;
ENDcopyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
 CROSS JOIN構文の追加
 ROW句の追加

SELECT ...
[ORDER BY <expr_list>]
ROWS <expr1> [TO <expr2>]

 CURRENT_TIMESTAMP関数およびNOW関数
がミリ秒単位に変更
 GROUP BY句で任意の式に対応

GROUP BY
SUBSTRING(CAST((A * B) / 2 AS VARCHAR(15)) FROM
1 FOR 2)

 ORDER BY句で列番号に対応

SELECT * FROM RDB$RELATIONS ORDER BY 9copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
 インデックスの拡張
 Firebird 1.5までの252バイトのインデックス長を撤廃し、ページサイズまで対応可能
 インデックスページへの物理データ格納を廃止し、インデックスはレコード番号を保存 インデックスの再構築問題への対応

 セキュリティの強化
 ハッシュアルゴリズムをDESからSHA-1に変更

copyright(c)2006 Firebird日本ユーザー会

Firebird 2.0
 Win32 Local Protocol: XNET デフォルトプロトコルになった Classicサーバへの接続も可能 Services API
 ClassicサーバへのServices API組込の完了
 WAITトランザクション
 TIMEOUTの設定が可能
 isc_tpb_lock_timeout
 LIKE演算子の改良
 BLOBでも正しく動くようになった Knuth-Morris-Pratt(KMP)アルゴリズムを採用
 Blob内の文字列検索などが早くなった

copyright(c)2006 Firebird日本ユーザー会

Firebird 3.0
 Firebird 3.0=Firebird 2.0+Vulcan
 スケラビリティの向上
 64ビットCPUの対応
 クラスタリング対応の予定

Jim Starkey氏の離脱より計画の修正が発生
copyright(c)2006 Firebird日本ユーザー会

期待される機能

優先順位の高いもの（http://www.firebirdsql.org/devel/engine/roadmap2006.htmlより）
















SQL文のキャンセル／タイムアウト機能
APIおよびオブジェクトのモニタリング
論理バックアップのサポート
REDOログ対応
データベース内ユーザーの管理機能
メタデータへのユーザー権限付加
Outer joinのパフォーマンス改良
SQL-99準拠のテンポラリーテーブル対応
ビルドイン関数の強化
名前空間のサポート
BCDのサポート
SuperServerでのSMPサポート
コンパイル済みSQL文のキャッシュ
外部関数／プロシージャのサポート
分散データベースサポート
読み取り一貫性のサポート

copyright(c)2006 Firebird日本ユーザー会

その他のプロジェクト
 Fyracleプロジェクト
 Janus Software社が開発しているOracleのPL/SQLをFirebirdに移植するコンパイラとランタイム(Firebird 1.5.2をカスタマイズ) コンパイラは有償、ランタイムはフリーライセンス
 Janus Software社Fyracleについて(英文) http://www.janussoftware.com/fb_fyracle.html

 最新版はFyracle 0.8.10
copyright(c)2006 Firebird日本ユーザー会

今後の予定 2006 Q1:
 Firebird 2.0 RC およびFirebird Vulcan RCのリリース

 2006 Q2:
 Firebird 3.0 Betaリリース
 3.0 HEADブランチの作成

 2006 Q3:
 Firebird 3.0 RCリリース

 2006 Q4:
 Firebird 3.0リリース

copyright(c)2006 Firebird日本ユーザー会

SAS Institute IncがVulcan Projectをバックアップ

 SAS Institute Inc EIP（企業情報系基盤）ソフトウェアとソリューションのリーディング・カンパニー
 ワールドワイドでSASは、Fortune500®社の96％を含む世界中の約40,000のサイトで採用され、日本においては1,500社2,300サイトの導入実績を誇る
 SAS®9を提供
 本社 米国ノースカロライナ州キャリー
copyright(c)2006 Firebird日本ユーザー会

SAS Institute IncがVulcan Projectをバックアップ

 なぜFirebird/Vulcan？
 SMPサポートなど高いスケラビリティを持つ Embeddedのサポート
 サポートしているプラットフォームが豊富 コミュニティとの親密な関係
 ライセンスに柔軟性があり、低コスト

copyright(c)2006 Firebird日本ユーザー会

SAS Institute IncがVulcan Projectをバックアップ

 ２つのVulcan
 SourceForge version： 頻繁な更新と機能提供
 SAS® version： ゆっくりした更新と豊富なテストの実施
 #ifdef SAS_FIREBIRDを追加

短期的には異なっていても、基本的には同一のもの
copyright(c)2006 Firebird日本ユーザー会

Firebirdのビルド＆デバッグ

copyright(c)2006 Firebird日本ユーザー会

Firebirdのビルド Windowsの場合











Visual C++ 6.0 / 7.0のインストール
sed, bisonなどのツールのインストール
ソースコードのダウンロード
isc_userおよびisc_passwordの環境変数の設定/firebird2/builds/win32に移動
firebirdをインストール（ビルドにfirebirdが必要)
環境変数firebirdの設定
prepare.bat
make_boot.bat
make_all.bat
outputディレクトリにビルドができあがる
copyright(c)2006 Firebird日本ユーザー会

Firebirdのデバッグ(Windows)
 Visual C++を起動
 適当なプロジェクトを作成
 ソースを開いてブレークポイントを設定
 isc_attach_database()なら、jrd.cppのGDS_ATTACH_DATABASE関数のエントリに設定

 [ツール]-[プロセス]で、fbserver.exeにアタッチ
 ISQLを起動してデバッグ開始
copyright(c)2006 Firebird日本ユーザー会

デバッグをやってみよう

copyright(c)2006 Firebird日本ユーザー会

Firebirdの導入事例

copyright(c)2006 Firebird日本ユーザー会

Firebirdの導入事例
 株式会社コンピューターシステムハウス様
 URL: http://csh-web.co.jp/
 製品情報で紹介しているほとんどの業務アプリケーションをFirebirdで開発
 担当者からのコメント
 多くの事例がありながら、DB に関してトラブルがあったということは、 ほとんど記憶しておりません。弊社から言わせてもらえば、何故無償でこれだけ信頼性のある DBに脚光が当たらないのか不思議でなりません。

copyright(c)2006 Firebird日本ユーザー会

電子機器組立業向け生産管理システム

copyright(c)2006 Firebird日本ユーザー会

Firebirdの導入事例
 オーエスエスブロードネット株式会社様（http://www.ossbn.co.jp）
 伝送路監視システム OPEN STMシリーズにFirebirdを利用
 導入実績
 J:COM

日本最大手のケーブル統括会社配下30数局のサービス監視の中核技術
100台超のLinuxサーバ上で商用稼働中

 その他の実績

ひまわりネットワーク(愛知県豊田市)
NNS(山梨県甲府市)
JCN(関東圏を中心としたケーブル統括会社系列局)
E-LANケーブルメディア他2局(台湾) 日本国内の市場シェア(ケーブル市場向け監視系製品)


構築中のシステムを含め、2005年12月末現在で約14%

copyright(c)2006 Firebird日本ユーザー会

システム構成例
凡例
SMS/Billing

プロビジョニング
システム
端末設定情報CAD/Mapping

新規サーバ
DHCP
DNS
TFTP

統合対象DB

関連部分

MSO
端末/伝送路情報

HTTPS

TIMS Net(表示制御装置)

監視ｸﾗｲｱﾝﾄ

CMTS

SNMP

AE

DE
(伝送路監視)

AE

CM
STB

IP系装置
Op
Manager(IP系監視)IM(上り品質低下分析)

SNMP

SO

copyright(c)2006 Firebird日本ユーザー会

SNMP/ICMP

サーバ等

ﾄﾗﾎﾟﾝ情報
TCP

既存STM
監視ﾉｰﾄﾞ情報

SNMP

流合雑音監視Firebirdの導入事例
 株式会社アペックス様 URL:http://www. apex-jp.com
 製品
 分譲マンションの入居者内覧会向けスケジュール管理システ
ム『内覧キング』（ASPで提供）
 https://www.apex-jp.biz/nairan_king/で紹介
 利用技術 Firebird+Linux+Apache+PHP5(FLAP) 導入実績
 東京建物株式会社様が販売する『Brilliaタワー東京」の入居者内覧会にて利用

copyright(c)2006 Firebird日本ユーザー会

内覧キングの画面

copyright(c)2006 Firebird日本ユーザー会

Firebirdの導入事例
 日本電子専門学校様 URL:http://www.jec.ac.jp/
 製品
 ExChecker
 学生の演習の進捗管理や成績管理で利用 利用技術 RedHat 9+Firebird 1.0+Apache+CGI(C言語)

copyright(c)2006 Firebird日本ユーザー会

copyright(c)2006 Firebird日本ユーザー会

Firebirdの導入事例
 株式会社フラッシュエージェント様 製品
 楽賃ソフト『ESTATE７』
 不動産・駐車場管理ソフトウェア
 利用技術 Visual C++、ODBC、Firebird 1.5
 ODBCの利用により、他DBMSでの利用が可能

copyright(c)2006 Firebird日本ユーザー会

copyright(c)2006 Firebird日本ユーザー会

Firebirdの入手方法

copyright(c)2006 Firebird日本ユーザー会

Firebirdの入手方法
 FirebirdのオフィシャルWebサイト
 http://firebird.sourceforge.net
 ソースコード、製品バイナリ、ミドルウェアの入手が可能

copyright(c)2006 Firebird日本ユーザー会

Firebird日本ユーザー会について

copyright(c)2006 Firebird日本ユーザー会

Firebird日本ユーザー会
 2004年4月に設立
 国内におけるFirebirdのさらなる浸透を促進するための非営利・中立な任意団体
 Webページでの技術情報の配信 http://www.firebird.gr.jp

 メーリングリストの提供

http://groups.yahoo.co.jp/group/Firebirdjp-general/ セミナーの実施 日本語による技術情報の提供
 FirebirdSQL Foundationの公式スポンサー
copyright(c)2006 Firebird日本ユーザー会

これからもFirebirdおよびFirebird日本ユーザー会をよろしくお願いします。

copyright(c)2006 Firebird日本ユーザー会