Open Source Conference 2007 .DB
Firebird 2.0/2.1新機能〜新機能とロードマップ〜

Firebird日本ユーザー会
加藤 大受
本資料はFirebird日本ユーザー会のWebサイト（http://firebird.gr.jp）より入手可能ですcopyright(c)2007 Daiju KatoAgenda Firebird 2.0新機能
 Firebird 2.1新機能
 ロードマップ
 Firebirdミドルウェア＆ツール
 Firebird事例
 Firebird日本ユーザー会について

copyright(c)2007 Daiju KatoFirebird 2.0新機能

copyright(c)2007 Daiju KatoFirebird 2.0
 Firebird 2.0はFirebird Projectが生み出した新しいRDBMSといえる(Firebird 1.xはInterBase 6.0の印象が強い) 最新版は2007年3月21日に公開されたv2.0.1
 v2.0から58のbug fix
 重要なBug fix
 InterBaseのgds32.dllを誤って使った場合にクラッシュする 1.5のデータベースが2.0に移行できない context already in use (BLR error)が頻繁に起きる インデックス作成中にGCが起きるとクラッシュする

v2.0を使っている人は必ずv2.0.1に移行してください
V2.0.1ではエンジン側の新機能はなし
 Gentoo Linux/FreeBSD環境でのFirebirdの検出
 GCの改良

 v2.0.2のリリース予定あり
copyright(c)2007 Daiju KatoFirebird 2.0
 特徴 64bitのサポート（AMD64／Intel EM64T）
 v2.0よりLinux版
 V2.1よりWindows版もサポート

 ODS version 11に変更
 252バイトのインデックス制限の撤廃。インデックスサイズはページサイズまで拡大可能 インデックスページへの物理データ格納を廃止し、インデックスはレコード番号を保存
 30GBのテーブルサイズ制限を撤廃
40bit(内部64bit)のレコード番号（約１兆レコード） セキュリティの向上

ハッシュアルゴリズムをDESからSHA-1に変更

 CS版にService APIを提供

copyright(c)2007 Daiju Kato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)2007 Daiju KatoFirebird 2.0
 CREATE SEQUENCE構文 SQL:1999のCREATE SEQUENCE構文のサポート
 CREATE GENERATORからの移行を推奨
 CREATE GENERATORはInterBaseの遺産
 構文
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)2007 Daiju Kato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)2007 Daiju Kato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;END

copyright(c)2007 Daiju Kato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)2007 Daiju KatoFirebird 2.0
 Win32 Local Protocol: XNET デフォルトプロトコルになった Classicサーバへの接続も可能
 WAITトランザクション
 TIMEOUTの設定が可能
 isc_tpb_lock_timeout
 LIKE演算子の改良
 BLOBでも正しく動くようになった Knuth-Morris-Pratt(KMP)アルゴリズムを採用
 Blob内の文字列検索などが早くなった UDFの再NULLの取り扱いの改良

 External functionライブラリ(IB_UDF)は文字列関数「ASCII_CHAR, LOWER,LPAD, LTRIM, RPAD, RTIM,SUBSTR ,SUBSTRLEN」はNULLを返すよう又正しく解釈できるようになった
copyright(c)2007 Daiju KatoFirebird 2.1新機能(まもなく、Beta1リリース)

copyright(c)2007 Daiju KatoFirebird 2.1
 FirebirdはよりSQL標準を準拠へ
 CREATE TRIGGER構文のSQL:2003準拠
 Fyracleの機能の取り込み
 よりOracleとの互換性を重要視
 主な機能 DBトリガー、トランザクショントリガー
 TEXT BLOBと[VAR]CHARの互換性
 PSQL内でのDOMAIN利用
 Database ランタイムモニタ機能
 SQL文のキャンセル
 MERGE文,条件付きUPDATE/INSERT文 SQL:1999 共通表式(CTE), 再帰問い合わせ グローバル一時テーブル
 Windows 64ビット版
copyright(c)2007 Daiju KatoFirebird 2.1
 DBトリガー DBへの接続時・切断時に実行されるトリガー
 Oracleとの互換性強化機能
 SQL Server 2005 SP2でDBトリガーサポート トランザクショントリガー
 トランザクションの開始/コミット／ロールバック時に対応
 監査テーブルの作成などに応用が可能

copyright(c)2007 Daiju KatoFirebird 2.1
 グローバル一時テーブル
 SQLｰ92標準のグローバル一時テーブルに対応
 CREATE GLOBAL TEMPORARY TABLE構文

 OracleのSQL-92対応とほぼ同様
 他のクライアントと共有できる一時テーブルをシステムカタログ内に作成可能
 トランザクション終了後もデータを保持するものと、トランザクション終了後にデータを削除するものの2種類が存在
copyright(c)2007 Daiju KatoFirebird 2.1
 共通表式(CTE)と再帰問い合わせ SQL:1999標準の機能
 Oracleとの互換性維持機能
 共通表式(CTE)であるWITH句のサポート
 再帰問い合わせであるWITH RECURSIVE句のサポート
 再帰は上限1024回

copyright(c)2007 Daiju KatoFirebird 2.1
 MERGE文のサポート
 SQL:2003標準
 Oracleとの互換性維持機能
 DB2にも同一機能が存在

 LIST関数のサポート
 SQL文のキャンセル
 BLOB Subtype1(テキスト)と[VAR]CHARとの互換性
 32,765文字を上限とするVARCHARとして扱う
 LIKE句や文字列関数に対応

copyright(c)2007 Daiju KatoFirebird 2.1
 データベース監視機能
 SQL文によるデータベース監視機能 実行中のトランザクション情報の取り出し
 ODSバージョン

 中国語(GBK)のサポート
 Windows64ビット版のサポート

詳細は次のWebページでhttp://firebirdsql.org/devel/doc/rlsnotes/html/rlsnotes21.html#rnfb21a-new

木村さんのブログですでに解説中
http://blog.kimuradb.com
copyright(c)2007 Daiju Kato

ロードマップ

copyright(c)2007 Daiju Kato

ロードマップ

本家の情報によると
Firebird 2.1Firebird 2.0.2おそらく 207, Q3リリース

Firebird 3.0

2007, Q2 リリース(たぶん無理で年内かな)
まもなくBeta 1リリース

2007, Q4リリース（おそらく2008, Q2)

Firebird 3.0


予定されている機能






SQLによるユーザー管理
外部プロシージャ(Javaとは他の言語による）
外部データソースとクロスデータベース問い合わせ
データベースの暗号化
SQLのトレースおよびロギング
オプティマイザのさらなる改良などなど
copyright(c)2007 Daiju KatoFirebirdのミドルウェアツール

copyright(c)2007 Daiju Kato

アプリケーションインターフェース
Java
アプリ
JayBirdBorland社
開発ツール
IBObject
FIBPlus
IBX, MDO

Web
アプリ
Perl,PHP
PythonRuby

ネイティブ
アプリケーション
ODBC
.NET
OLEDB
Provider
IBPP

C言語クライアントライブラリfbclient.dll
ワイヤ・プロトコル

Firebird
copyright(c)2007 Daiju KatoJayBird
 歴史

 2001年にDavid
Jencksによりスタート。
 2003年4月 1.0
 2004年8月 1.5
最新 2005年11月 2.0
 2006年12月 2.1.1

 ライセンスはBSD
 準拠

 JDK 1.3〜1.5
 JDBC 3.0, JCA 1.0,
JTA 1.0.1

copyright(c)2007 Daiju Kato

Delphiコンポーネント(無償) MDO(Mercury Database Object ) IBX系のコンポーネント。ブラジルで作成。最新版は
RC2(2006/02/28)

 UIB(Unified InterBase) TdatasetコンポーネントとdbExpressの基本的な部分を持つ。最新版は2.0(2006/02/05)

 Zeos Firebirdを含む各種DBのネイティブ接続をサポートするオープンコンポーネント。最新安定版は6.1.5(2004/04/30)

 IBX, BDE

IBXはInterBaseのみサポート。BDEは旧接続以外はサポートせず。
IBXはIBX系のコンポーネントに、BDEはIBObjectに移行を推奨。
copyright(c)2007 Daiju Kato

Webアプリケーション
 PHP
 ADOdb PEAR Ruby FireRuby

 Python KInterbasDB

 Perl DBD::InterBase
copyright(c)2007 Daiju Katoネイティブアプリケーション(1) C言語から直接

 Firebirdに含まれるfbclient.dllを直接呼び出す。特別なミドルウエア不要。

 IBPP Fbclient.dllをラップするクラスライブラリ。

 SQLAPI++ Firebirdを含む各種ネイティブDLLをラップするクラスライブラリ(有償)copyright(c)2007 Daiju Kato

ネイティブアプリケーション(2) .NetProvider

 .Net 1.1用と、2.0用がある。
 .Net 1.1用はMonoに対応。

 ODBC Odbc-jdbdドライバ

 Officialドライバ
 Easysoft InterBase ODBC Driver Gemini InterBase/Firebird ODBC Driver OLEDB IBProvider
 SIBPROvider
 Zstyle OLE DB Driver

copyright(c)2007 Daiju Kato

.Net & Windowsに最適 成熟したWindowsのサポート。FirebirdはWindows上で長い間サポートされており、十分なテストがされてます。
 成熟したADO.NETプロバイダ。例えば、Npqsql (PostgreSQL ADO.NET プロバイダ)は、まだバージョン1.0(リリースは2006/08)で、.NET 1.1にしか対応していません。
 Firebird ADO.NETプロバイダは、バージョン1.xで.NET1.1, バージョン2.xで.NET2.0とMonoに対応しています。
 Windows 98のサポート。主要なRDBMSはWindows
NT 2000以降(ファイルシステムはNTFS)のシステムでのみ動作します。

copyright(c)2007 Daiju Kato

組込用に最適 基本単一ファイル構成
 クライアント・サーバー接続だけではなく同じプロセス上で動作するインプロセス・ライブラリがある。
 どちらに構成を変更してもコードはでOK!

 オープンソース御三家→FirebirdとMySQLのみ。
しかしながら、組み込んだアプリを配布しようとすると、FirebirdがIPL(MPLのバリエーション)で無料なのに対して、MySQLはライセンス料発生。
 .Net Providerなども有償。

 SQLiteなどのライブラリを使うとクライアント・サーバー形式への変更が難しい。
copyright(c)2007 Daiju Kato

基本単一ファイル【ディレクトリを指定】
配下に各種ファイルを作成。

【ファイルを指定】指定ファイルにデータ格納。

【例】一般的なRDBMS.
PostreSQL, MySQL, Oracle等【例】Firebird, Microsoft Access,SQLite等

copyright(c)2007 Daiju Kato

組込構成とC/S構成【Embedded:組込構成】
同一プロセスで動作。

【C/S構成】
独立したプロセスで動作。

クライアントクライアント

ライブラリ

サーバー

データベースファイル

データベースファイル

・通常のRDBはどちらかの構成しかとれない・Firebirdではどちらの構成もとることができる！
copyright(c)2007 Daiju Kato(MySQLも)

PHP
 ＬＡＭＰ(Linux+Apache+MySQL+PHP) ＬＡＰＰ(Linux+Apache+PostgreSQL+PHP)
 Web上や、社内でサービスしているだけならOK!
 アプリケーションとして売り出すにはMySQLではライセンス(FPL)料金必要

 Mの代替としてのF(irebird)

 MPLバリエーションのIPLライセンスで、提供形態にかかわらずライセンス料金は不要！

 Not LAMP but FLAP(Firebird + Linux +Apache + PHP) Windowsとの相性もいいのでFWAPもよろしく！
copyright(c)2007 Daiju Kato

Delphi 歴史的に一番親和性が高い。
 ただ、FirebirdとInterBaseの開発が分岐して、InterBase部品は、Firebirdのほうをサポートしてくれな
い。(IBX) またBDEは特定ローカルのみサポートで新規開発はなし
 二大有償コンポーネント
 IBObjectとFIBPlus

 新興無償コンポーネント
 MDO(Mercury Data Object)

copyright(c)2007 Daiju Kato

データベースアクセス概略
 CodeGear(旧: Borland)のデータベースアクセス


BDEIBX
dbExpress
BDP

Kylix
DelphiC++BuilderParadoxdBase
BDE

RDBMS(旧)BDP
dbExpress

ＥｎｔＰｒｏ各種RDBMSMySQLIBX
copyright(c)2007 Daiju Kato

InterBase＋α トラブルシューティングツール

copyright(c)2007 Daiju KatoIBSurgeon(IBPhoenix Russia)
 ロシアの会社
 InterBase/Firebird向けに各種トラブルシュー
ティングツールを作成・販売している。
 今年から、ロシアのInterBase/Firebirdコンサルティング会社iBase.ruと、IBPhenix.comと提携して、IBPhoenix Russiaとして活動中。

copyright(c)2007 Daiju Kato

IBBackupSurgeon
 壊れたバックアップファイルからデータを取得。
 バックアップファイルに直接アクセスして各種データを読みとる。
 バックアップファイルをブラウズして、テーブル選択してデータを抜き取ることができる。
 抜き取ったデータは、新規、もしくは既存のデータベースに使うことができる。

copyright(c)2007 Daiju Kato

IBAnalyst(1) Firebird/InterBaseの解析ツール。
 データベースを詳細に調べて、統計的に解析し、パフォーマンスやメンテナンス、アプリケーションとの関係での、潜在的な問題を明確にするのに使います。
 各種統計情報をグラフィカルに表示し、各種サジェスチョンを文章(英文)で得ることができます。
copyright(c)2007 Daiju Kato

IBAnalyst(2) 統計情報は付属ツールgstatで取得可能。
 IBAnalystは、gstatで取得できる情報から、それをグラフィカルに表示する。
 さらに、独自のKB(Knoledge Base)から、サジェスチョンを与えるもの。

copyright(c)2007 Daiju Kato

IBFirestAid DBを直接参照して、問題点を指摘、修正。診
断バージョンとフルバージョンがある。
 診断バージョン(Diagnostician)は無料。これで、診断できる。
 診断結果に基づいて修正する場合には、フルバージョン(Ambulance )が必要。有料。
 会社内で使うためのサイトライセンス。診断・修正を仕事とするための、ベンダーライセンスあり。
copyright(c)2007 Daiju Kato

問題のエスカレーションとIB FirstAIDの関係
gfix
無償ツール

IBFirstAID
IBSurgeonに直接DBを送付

IBFirstAID
Ambulance
copyright(c)2007 Daiju Kato

IBUndelete
 削除したレコードを復活するためのツール。
 IBSurgeonコアエンジンを使って、データベースを直接操作する。
 削除されたレコードバージョンをサーチして、現在のバージョンに変更する。
 バージョン情報がない場合でも、解析して削除レコードを復元する。
 仕組み上、バックアップ・リカバリすると復元不可。
copyright(c)2007 Daiju KatoIBTM(IB Transaction Monitor) FirebirdとInterBaseの動的なトランザクションをモニターしたり、表示したり、分析するツール。
 三つのモジュールから構成されている
 Monitor – 小さなWin32サービスベースのプログラム。
一つもしくは複数のDBのトランザクション状態のログやモニタリングを行う。
 Configuration Assistant モニターとビューワーの構成セッティングを行う。
 Visualizer Dモニターによってログ取得された情報のビュー表示や分析デザインを行う。

 実際の問題や、潜在的な問題の発見に役立ちます。
copyright(c)2007 Daiju KatoFirebird事例

copyright(c)2007 Daiju Kato

日本医師会様
オープンソース介護ソフトでのFirebirdの利用

ORCA（進化型オンライン レセプトコンピュータシステム）
Online Receipt Computer Advantage Project

copyright(c)2007 Daiju Kato

医見書Ver3.0.2
 平成１８年度改正対応  Windows
2000/XP 医師意見書対応
 MacOSX 13,000超ユーザ

10.3/10.4
 旧版からのデータ移行

copyright(c)2007 Daiju Kato

給管鳥Ver5.3.5
 平成１８年度改正対応
 日レセとの連携
 Java環境で動作 1,100超ユーザ

copyright(c)2007 Daiju Kato

介護系ソフトウェアの構造
医見書、給管鳥Java / Java実行環境
Firebird
Windows
intel PCMac OSX
intelMaccopyright(c)2007 Daiju Kato

PPCMacなぜ、Firebirdか？
 信頼性
 オープンソース
 組み込みデータベースエンジン
 Java言語対応
 マルチプラットホーム
 Windows
 Macintosh（intel/PPC）
 Linux
copyright(c)2007 Daiju Katoオーエスエスブロードネット株式会社様
OPEN ADMIN/STMシリーズ
ネットワーク統合監視システムでのFirebirdの利用

copyright(c)2007 Daiju KatoOPEN ADMIN/STMシリーズ
導入実績(2007年3月現在)
J:COM日本最大手のケーブル統括会社
配下30数局の双方向端末の状態を連続監視
約200台のLinuxサーバ上で商用稼働中
その他の実績
ひまわりネットワーク(愛知県豊田市)
NNS(山梨県甲府市)
大田ケーブルネットワーク(東京都大田区)
コアラテレビ(千葉県松戸市)
E-LANケーブルメディア他2局(台湾)日本国内の市場シェア(監視系製品)
構築中のシステムを含め、2007年3月末現在で約15%
copyright(c)2007 Daiju Kato

事例紹介: JCOM殿SQLDWeb NMS
HTML監視ｸﾗｲｱﾝﾄ(Adventnet)

JBoss / Tomcat
JDBC/RMI

伝送路情報
端末情報
システム構成情報

ﾚﾌﾟﾘｹｰﾀ

既存SMS/Billingセンター系(全国3箇所の主要拠点に配置)

JDBC

HTML

TIMS Net
ﾚﾌﾟﾘｹｰﾀAE
端末情報・端末状態情報

JBoss / Tomcat
伝送路情報・端末情報
障害履歴情報・履歴情報

AE
端末情報・端末状態情報

アクセス系(数十カ所に分散配置)
copyright(c)2007 Daiju Kato

その他の事例

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

copyright(c)2007 Daiju Kato

内覧キングの画面

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

copyright(c)2007 Daiju Kato

copyright(c)2007 Daiju KatoFirebird日本ユーザー会について

copyright(c)2007 Daiju KatoFirebird日本ユーザー会
 2004年4月に設立
 国内におけるFirebirdのさらなる浸透を促進するための非営利・中立な任意団体
 Webページでの技術情報の配信（http://firebird.gr.jp)
 メーリングリストの提供( http://groups.yahoo.co.jp/group/Firebird-jp-general/)
 セミナーの実施

ユーザー会のHPにて告知

 FirebirdSQL Foundationの公式スポンサー
 日本データベース学会賛助会員
 法人会員になると、IBPfhoenix Developer CD-ROM($750相当）がもらえます
copyright(c)2007 Daiju KatoFirebird日本ユーザー会
 日本語による技術情報の提供

 Firebird 1.5.4日本語インストーラ Firebird 2.0.1日本語インストーラ
 FlameRobin 0.76日本語版
 本日のカンファレンスでもCDで配布中

copyright(c)2007 Daiju Kato1st Firebird Japan Conference 国内初のFirebird単独のカンファレンス
 2007/04/14に実施
 Firebird最新情報＆事例発表

今後も毎年実施していく予定です！
copyright(c)2007 Daiju Kato

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

copyright(c)2007 Daiju Kato