【A5】InterBaseテクニカルセッション「InterBase 2007新機能ランダウン」
本体機能と対応ツール類の紹介
キムラデービー代表
木村明治(KIMURA, Meiji)

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

1アジェンダ• InterBaseとは？
• InterBaseの新機能• InterBase6.5～7.5• InterBase2007• InterBaseを選ぶ理由• InterBaseに対応するツール群

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

21

InterBaseとは？
それはJim Starkeyからはじまった。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3

InterBaseの生い立ち• Jim Starkey• DEC時代(Datatrive, JRD)
• Groton Database Systems設立(1984)• 1986: InterBase 2• 1988: InterBase 3• 1992: InterBase 3.3, 3.2J
• 1994: InterBase 4.0
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

42

InterBase進化とFirebirdの関係【機能的にほぼ同一】【無償】
Firebird
InterBase
4.x Linux,FreeBSD版

InterBase6.0
OpenSource版

Firebird
1.0InterBase InterBase InterBase
InterBase
4.x商用版
5.x
6.0
6.5

【有償】

【日本未発売】【2006/11にリリース】

Firebird
2.0

1.5
ツールは両DB対応
InterBase
7.0,7.1,7.5

InterBase2007

一時オープンソース化されたソースから分岐 【2007/03リリース】
現在はそれぞれ別の進化をとげる各種ツール・ユティリティは、ほとんど両方サポート
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

5

Firebird/InterBaseの注意点(1)• ODS(オンディスク構造体)：ＤＢファイルのバージョン• 10.0 :Firebird 1.0 / InterBase 6• 10.1 :Firebird 1.5 / InterBase 6.5• 11 :Firebird 2.0 / InterBase 7• 11.1 :InterBase 7.1• 11.2 :InterBase 7.5• 12: InterBase 2007

• 10.0以外は基本的に互換性「なし」。
• 11.xは、InterBase7.5で自動的に11.2にアップグレードされる。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

63

Firebird/InterBaseの注意点(2)• 基本的に共存は不可• 実行形式ファイル名や、レジストリ、利用ポート番号のバッティング。

• InterBase 7.5以降で提供されたマルチインスタンス機能を用いて、別のポート番号、インスタンス名にすれば、同時実行が可能。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

7Jim Starkey• BLOBやMGA(MVCC)の発明者。
• その思想の良い部分はInterBase/Firebirdに残り、InterBase 6.0以降、それぞれ改良されていく。
• 思想(on Netfrastructure)• InterBase/Firebirdがディスク上のMGAを実装したが、Netfrastructureはメモリ上でのMG(マルチジェネレーション)• MySQLによるNetfrastructure買収により、その思想はストレージエンジン‘Falcon’で実現されつつある。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

84InterBaseの新機能InterBase6.5～7.5

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

9InterBase6.5(日本未発売)• 64ビットのファイル I/O• ファイルの上限がディスクサイズのみに制限される。

• ROWS句• SUDで行の制限が可能に。
• ROWS <lower_value> [TO <upper_value>] [BY<step_value>] [PERCENT] [WITH TIES]

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

105

結果セットをページ割りする• n＋1行目からm行をSELECTする• InterBase 6.5～/Firebird 2.0～
• SELECT * FROM T1 ROWS n+1 TO m;• Firebird 1.5• SELECT FIRST m SKIP n * from T1;• PostgreSQLとMySQL• SELECT * FROM T1 LIMIT m OFFSET n;• MySQLでPostgreSQL互換の書式をサポートしている。

• MySQL独自の記述方法• SELECT * FROM T1 LIMIT n, m;• SELECT * FROM T1 LIMIT m; (nがゼロの場合, 可)本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

11InterBase7.0, 7.1• 7.0• BOOLEAN型のサポート• SMPのサポート• システム一時テーブルによるDB接続の監視• 7.1• SAVEPOINT(SQL 1999標準)のサポート• SMPサポートの強化• DROP GENERATOR

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

126

SAVEPOINT
処理A

処理A

処理A

処理B

処理B

処理B

処理C

処理C

処理C

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

13InterBase7.5• マルチインスタンス• データベースエイリアス• 埋め込みデータベースユーザ認証• グローバル一時テーブル• CASE, COALESCE, NULLIF• SMPスケーラビリティの向上

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

147

コーヒーブレイク

CREATE GLOBAL TEMPORARY TABLE documented in Data Definition Guide

http://dn.codegear.com/article/32816
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15グローバル一時テーブル• データ定義ガイド、第６章テーブル操作• SQLｰ92標準のグローバル一時テーブルに対応• CREATE GLOBAL TEMPORARY TABLE構文• OracleのSQL-92対応とほぼ同様• 他のセッションからは参照できない。遅くともセッション終了時にデータが破棄される• トランザクション終了後もデータを保持するものと、トランザクション終了後にデータを削除するものの2種類が存在
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

168

CASE式• 条件付きの値を指定するために用いる。
• 略式のCOALESCEやNULLIFもある。
• 使い方は商用御三家、オープンソースDB御三家共に共通。(文字列結合が違ったりする)• NULLをNULL以外に置き換える。
•SELECT num || dbname from t1;•NULLがdbnameに入る可能性がある場合、•SELECT num || coalesce(dbname, ‘’) from t1;

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

17

CASE式の例
SELECT部署ID,SUM(CASE WHEN 性別=‘F’ THEN 1
ELSE 0 END) AS 女性
SUM(CASE WHEN 性別=‘M’ THEN 1
ELSE 0 END) AS 男性
FROM 社員
GROUP BY 部署ID
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

189InterBaseの新機能InterBase2007

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

19

InterBase 2007の新機能• インクリメンタルバックアップ• ジャーナル機能• バッチ処理• VARCHARデータを持つBLOBの使用• キャラクタセットのサポート

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2010インクリメンタル(増分)バックアップ• 従来の論理的なものではなく、物理的なダンプをとる。
• GBAK –D(UPM_DATABASE)• 初回フルダンプ、二回目以降は差分ダンプ• 再度フルダンプを使う場合• GBAK –OV(ERWRITE_DUMP)

21

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

フル/増分/差分の違い(1)
①②③④①
①②

①②③

①②③

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

④2211

フル/増分/差分の違い(2)①②③④①②②③②③④23

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

フル/増分/差分の違い(3)
①②③④

①②③④
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

24

12

ジャーナル機能• WALを用いたジャーナルとジャーナルアーカイブ機能• WAL(Write Ahead Log: ログ先行書込)• DBへの変更は、まずログ(Journal)に同期(SYNC)で記録。
• その後にDBに書き出す。これは非同期(ASYNC)でもOK。
• この手順で処理を行えば、障害が起きてもログ(Journal)を使ってデータベースを回復することが可能。
• そのため、トランザクションのコミット毎にデータページをディスクに書き出す必要がなくなる。
• 回復時点の際、データページに対してまだ行われていない変更分はログ(Journal)を使って再実行される。

• Journalへの書込は同期(SYNC)ですが、変更部分のみをシーケンシャルに書くため、高速に書込が行える。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

25

ジャーナルアーカイブ• ジャーナルやデータベース本体のダンプをアーカイブする。
• 長期にわたるデータベース復旧をサポート。
• GBAKの-Aで始まるオプション群。
• -A(RCHIVE_DATABASE)• -ARCHIVE_J(OURNALS)• -ARCHIVE_R(ECOVER)• 基本手動。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

26

13

バッチ処理• 複数の処理をまとめて高速化する。
• 実装方法には通常３つある。
• (1) 無名プロシジャを使う。
• (2) APIレベルで複数処理をまとめる。
• (3) SQLレベルで複数処理をまとめる。

• InterBase 2007は(2)で対応。
• INSERTやUPDATEなどの処理をまとめて高速化する。SELECTは未対応。
27

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

バッチ処理を使う場合、使わない場合
InterBase
サーバー

最初のSQL
結果の送信
二番目のSQL
結果の送信
三番目のSQL
結果の送信

InterBase
クライアントInterBase
サーバー

N個のSQL
N個の結果の送信InterBase
クライアント本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

28

14

バッチ処理 – isqlを使う場合• 複数の処理をまとめて高速化する。
BATCH START:……
(DDL/DML ステートメント)……
BATCH EXECUTE;

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

29

バッチ処理 – 低レベル実装• C言語ライブラリ gds32.dll• Isc_* API群を使ってプログラミングする。
• 通常Delphi/C++ Builderから使うミドルウエアはgds32.dllをラップしたもの。

• ２つの新しいAPI• isc_dsl_batch_execute_immed• 複数のSQLをまとめて実行する。

• isc_dsl_batch_execute• プリペアードSQLのパラメタを複数与えて実行する。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

30

15

バッチ処理 – 他のデータベースの場合• 実装方法には通常３つある。
• (1) 無名プロシジャを使う。
• OracleやFirebirdなど。ストアドプロシジャを書く言語(PL/SQL,PSQL)でプロシジャを書き、無名プロシジャとして実行する。

• (2) APIレベルで複数処理をまとめる。
• 商用データベースなど。INSERT/UPDATEのみならず、SELECT結果も複数行を一括して持ってくる。

• (3) SQLレベルで複数処理をまとめる。
• MySQL/PostgreSQLにあるバルク・インサート表記。
– INSERT INTO products (product_no, name, price)
VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk',2.99);• ただし、内部的に最適化されているかどうかは実装しだい。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

31

VARCHARデータを持つBLOBの使用• テキスト型のBLOBをVARCHARと同様に扱う• Isqlで便利。 Create table blob_test(b_id int,blob_cl blob sub_type 1);
Commit;Insert into blob_test values(1, ‘blob test’);• 低レベルAPIでもVARCHARと同様(SQLVARYING型)で扱える。
• ただし、キャラクタセットに注意(変換しない)

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

32

16

キャラクタセットのサポート• UTF-8, UNICODE_BE, UNICODE_LE• UTF-8• 従来のUNICODE_FSSは、最大３バイトまでのサポートで、JIS2004で追加されたサロゲートペアの４バイトコードは扱えなかった。
• UTF-8では、最大４バイトまで扱うことができる。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

33

InterBaseを選ぶ理由

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3417

InterBase2007を選ぶ理由• 小～中規模で、DBAコストをかけれない• 軽いフットプリント• SMPで良いパフォーマンスが欲しい• WALによるジャーナル機能、PITR機能が必要• CodeGear製品との高い親和性を持ち開発したい

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

35

InterBaseに対応するツール群

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3618

パートナーCD• 製品に付属のCD• 内容は以下を参照のこと。
• http://cc.codegear.com/partners/interbase2007/index.html• ここにリストされているものは、当然InterBaseに対応。
• IBExpert• DBWorkbench• Etc…
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

37

IBExpert 日本語メニューに変更可能。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3819

IBExpert プロシジャエディター

ここをクリック

39

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

IBExpert ストアドプロシジャのデバッグ
マウスを変数にかざすと値が見える。

現在の行ブレークポイント

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

40

20

InterBaseに対応するツール群• FIBPlus• IBReplicator• IBSurgeon

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

41

FIBPlus• FIBPlus(235-euro = 約3万9千円)•

http://www.devrace.com/en/fibplus/•

IBXと同じFreeIB Componentsから派生。

•1999年3月: FIBPlus1.0をSerge Buzadzhyが発表。

•

バージョン6.7(2007年6月)より、Delphi2007 &InterBase 2007に対応。

• 最新版はバージョン6.8(2007年10月)

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

4221

レプリケーション: IBReplicator• 最新版は2.5.1(2007年5月)• http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1157243197:54
1080&page=ibp_replicator• Win,Linux,Solaris上で稼働。
• 元々Synectics Software社が開発、Borlandからライセンスを購入できた。IBPhoenix社による買収の後、InterBase7.5以降はIBPhoenix社から購入可能になった。IBPhoenixのほうで、最新のFirebirdとInterBaseに対応している。
• マスター、スレーブ毎にライセンスを購入。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

43トラブルシューティング• IBSurgeonのツール群• IBBackupSurgeon• IBAnalyst• IBFirstAid• IBUndelete• これらをまとめた、IBSurgeon Packというパック製品もある。
• IBTransactionMonitor
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

4422

IBSurgeon社によるトラブルシューティング

gfix

本体付属ツール【無償】

IBFirstAID

IBFirstAID
Ambulance

それとき
いらな直
でも【有償】

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

直接DBを送付
無料診断見積見積もり内容に従って依頼・修正

45

Thank you !
ご静聴ありがとうございました。
各種問い合わせはinfo@kimuradb.comまで。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

46

23