【A3】Delphiテクニカルセッション「BDEオルタナティブ」
既存のアプリの乗り換え先大全
キムラデービー(http://kimuradb.com)
代表
木村明治(KIMURA, Meiji)
E-mail: contact@kimuradb.com

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

1アジェンダ• はじめに• BDEオルタナティブ• シナリオ• BDE + Paradox• BDE + InterBase• BDE + Oracle• デモ＆メモ• BDEアプリが今後直面する問題
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2

1

はじめに

3

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

データベースアクセス概略• Borlandのデータベースアクセス

ParadoxdBase• BDE• IBXBDE• dbExpress

RDBMS(旧)

• BDP

BDP

Kylix
DelphiC++BuilderdbExpress

ＥｎｔＰｒｏ各種RDBMSMySQL

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

42

BDEに注目すると….
• Borlandのデータベースアクセス
• BDE

BDE

ParadoxdBase
RDBMS(旧)

各種RDBMS
DelphiC++Builder

MySQL
InterBase

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

5ＢＤＥ• カスタムのSQL linkドライバーが必要• データベースへのアクセスと更新を統合• 個々のDBのSQL拡張は未サポート• SQL linkドライバーのサポートは終了。
• The Future of the Borland Database Engine (BDE)and SQL Links• http://dn.codegear.com/article/28688• 今後はADO, dbExpressを推奨。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

63

既存のBDEアプリケーションといえば….
• Borlandのデータベースアクセス• BDE

RDBMS(旧)http://202.33.253.145/bde/support.html#bde_new

Delphi 5～7
C++Builder5,6 リモートアクセス
BDE 5.2
ローカルアクセス
ParadoxdBase
7

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

Firebird/InterBaseとOracle/SQL Server
MSDE7.0 MSDE2000
SQL Server 2005 Express【無償】
OracleXE【機能的にほぼ同一】InterBase6.0
OpenSource版

Firebird2.0

Firebird
1.0

Firebird1.5

InterBase InterBase
InterBase
5.x
6.0
6.5
【ＢＤＥ5.2で対応】 【日本未発売】

InterBase
7.x【2007/3にリリース】

Oracle8.1.7

Oracle10g

Oracle10g R2SQL Server2005

SQL Server2005 SP2【有償】

Oracle9i R2

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

【2006/11にリリース】

InterBase200784

ＢＤＥオルタナティブ

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

9BDE乗り換え先の種類• 独自ストレージ～特定接続先• 「とにかく格納できればいい」というところから「xxxデータベースに格納する」というところまで。
• 「ローカルユーザー単一接続」から「マルチユーザー」まで。

• 汎用接続先• 「マルチユーザー」• 「将来の拡張性」から、「製品横展開」まで。

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

105

BDE乗り換え先の種類• 独自ストレージ～特定接続先• DBISAM• AbsoluteDB• NexusDB• InterBase/Firebird• CodeBase• xxxDAC

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

11

独自ストレージ～特定接続先:DBISAM• Elevate Software社の製品: 日本では株式会社 鉄飛テクノロジー 殿が扱っている。http://zope.teppi.com/Components/DBISAM• 特徴• コンパクトで高速なRDBMSエンジン• Delphiの TDataSet を継承• 各種データベース対応コントロール （TDBGridやTDBEditをはじめとする各種製品）利用可。
• BDEに比較して、気軽に使いやすい• インプロセスでEXEに静的リンクできる。レジストリを使わない。ラン
タイムライセンスフリー• ただし、本格的なマルチクライアントには不向き。ストアドプロシージャ、CachedUpdates、TBatchMove は使えません• BDEとの違い詳細(DBISAM4マニュアルより)• http://www.elevatesoft.com/dbisam4d6_bde_differences.htm
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

126

独自ストレージ～特定接続先:AbsoluteDB• Component Ace社の製品• http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm• Best BDE Replacement With SQL (by Roman Korzh)というBDE代替DB比較記事でベストの評価を受けている。
• http://www.delphi32.com/magazine/articles/20/1/• 特徴• 静的リンクをしてひとつのEXEにまとめられる。
• データの暗号化あり。BLOBをZlibで圧縮可能。イン・メモリテーブルの機能。
• BatchMove相当機能あり(TABSTableコンポーネントのBatchMove メソッド)• その他、詳細は以下を参照のこと。
http://www.componentace.com/help/absdb_manual/differenc
esfromthebde.htm
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

13

独自ストレージ～特定接続先:NexusDB• 元々はFlash Filer• http://sourceforge.net/projects/tpflashfiler/• 現在はnexus社の製品• http://www.nexusdb.com/showpage.asp?Id=96• 特徴• 高機能、コンパクトで、特に欧州で人気がある。
• Upscene社のGUIツールが対応している。

• BDE互換のTnxSessionクラスを持つ。
• Paradoxからのテーブルの移行• http://www.nexusdb.com/new/index.php?q=node/224• ただし作りとしては割と複雑な感じ。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

147

特定接続先(1): InterBase/Firebird• IBObject：http://www.ibobjects.com/• 必要なのはgds32.dll(fibclient.dll)のみ。
• BDEからIBOへの変換ガイド(英文)• http://www.ibobjects.com/ibo_help/convertbdetoibo.htm• FIBPlus: http://www.devrace.com/en/fibplus/• 必要なのはgds32.dll(fibclient.dll)のみ。
• IBOほどはBDEに似ていない。
• Is there a tool that automates BDE to FIBPlus conversion? Are
there any best practices to keep in mind?
• http://www.devrace.com/en/fibplus/articles/4196.php• Unicode完全対応←これ重要(のちほど)
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15

特定接続先(2) その他のRDBMS• CodeBaseのラッパー• CB4Table(tiriss)• http://www.tiriss.com/cb4tables/index.html• CodeBase Componenst IV(Softsand.com)• http://www.softsand.com/CBComps4.htm• xxxDAC• http://crlab.com/products-vcl.html• ODAC(Oracle), SDAC(SQL Server), MyDAC(MySQL),IBDAC(InterBase)• DOA(Oracle): http://zope.teppi.com/Components/DOA
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

168

BDE乗り換え先の種類• 汎用接続先• AnyDAC• InstantBDExpress• dbExpress

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

17

汎用接続先(1)• AnyDAC• http://www.da-soft.com/content/view/45/145/• 各DBのネイティブドライバ、dbExpress対応• InstantBDExpress• http://www.ethea.it/eng_instantbdexpress.asp• dbExpress対応

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

189

汎用接続先(2): dbExpressに乗り換え！
• BDEアプリケーションのdbExpressへの移行• http://dn.codegear.com/jp/article/33547• SQL linkからdbExpressへのDB2を使った移行(英文)• http://www128.ibm.com/developerworks/db2/library/techarticl
e/dm-0312swart/

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

19dbExpress• Delphi Enterprise版• 各種dbExpressドライバーが付属• Delphi Professional版• InterBaseとMySQL版のみ。
• サードパーティdbExpressドライバーと組み合わせる。

• DBX4• Delphi 2007 for Win32• Unicode対応←ここ重要(後で)本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

20

10

シナリオ

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

21

BDE + Paradox• BDE + Paradoxの短所: サーバー製品に比べて• トランザクションや排他処理が貧弱。
• データが壊れやすい。
• データ量が増えるにつれ、パフォーマンスダウンやエラーが発生しやすくなる• 移行先: ２つの選択肢• データ量増大による問題→BDE互換独自ストレージ• マルチクライアント→BDE互換の特定or汎用RDBMS
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2211

BDE+Paradox→BDE互換ストレージ• 適切なものはどれか？

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

23

BDE + Paradox→BDE互換＋RDBMS• ミドルウエア(BDE)の移行に加えて、データベースの移行も必要。
• 例えば、InterBase(Firebird)に移行するなら、以下のドキュメントが参考になる。
• InterBase Technical Information
ParadoxからInterBaseへの移行• http://dn.codegear.com/jp/article/36548• Paradoxから各種RDBMSへの移行にはいくつかツールがある。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2412

BDE+Paradox→BDE互換+InterBase/Firebird• ParadoxからInterBase/Firebirdへの移行については、
IBPhoenix社のサイトに各種資料がある。(英文)• Migration(移行):• http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_
document#Mig• 例えば、次のようなドキュメントがある。
• Upsizing Paradox Databases to InterBase
By James Arias-La Rheir.
• My Lock File Has Grown Too Large - 30 Days from Paradox toInterBase
By Skip Rowland, Borland Developers Conference 1999.

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

25

BDE + InterBase• 単純にBDE自体を使わないようにしたい。
• InterBaseの新版(7.x, 2007)やFirebirdに移行したい。
• 選択肢は２つ• IBObjectに移行• dbExpress or DBX4に移行• 「BDEアプリケーションのdbExpressへの移行」参照。
• 間にInstantBDExpressを入れる、という手もある。

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

2613

BDE + Oracle• Oracleのバージョンを上げたい• 実際は、Oracleのバージョンアップのほうが大変かも。
• 既存のものに適用できるパッチをあて、十分な準備が必要。

• 選択肢は二つ• Oracleに特化: Oracle専用のアクセスコンポーネントを使う。
• Oracle以外も可能性あり: 汎用のアクセスコンポーネントを使う。
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

27

デモ＆メモ

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

2814

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

29

BDEアプリが今後直面する問題

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

30

15

BDEアプリが今後直面する問題• これまでに直面した問題• 取り扱いデータの増大• それによるパフォーマンスダウン• データ量上限• 対象データベースのバージョンアップ
• 対象クライアントアプリのバージョンアップ

• 今後直面する問題• OSのバージョンアップ(Vista, 64-bit化)• 新しい文字コードへの対応

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

31

今後直面する問題: 新しい文字コード• BDEのライフタイムにはUnicodeはあまり一般的ではなかった。
• 使われてもUNICODE_FSSレベル• Windows Vista登場• JIS2004• 「完全な」UTF8への対応が必要。
• 新しいセキュリティモデル

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

3216

それぞれのレイヤでUnicode対応が必要
UIコンポーネント
クライアントミドルウエア
データベース33

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

それぞれのレイヤでUnicode対応が必要
UIコンポーネント

TMS Unicode Component
Pack

http://www.tmssoftware.com/tmsuni.htm

クライアントミドルウエアDBX4(Delphi 2007 for Wind32)
または
FIBPlus(http://devrace.com)

データベースUTF-8対応データベース

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

34

17

補足

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

35

補足

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

36

18