FirebirdとInterBaseの違い
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
歴史的概要
InterBase は 1985 年に作成されました。これは最初の商用マルチバージョニングデータベースでした。1999 年末、Borland は InterBase の開発を終了することを決定し、そのソースコードを InterBase Public License の下で公開しました。このコードはコピーされ(ライセンスで許可されています)、Firebird が誕生しました。バージョン 1.0 以降、Firebird は、それ以前の数十年にわたる InterBase の開発に基づいた、本番環境で使用可能なデータベースです。
2000 年末、Borland は InterBase をクローズドソースおよび商用ライセンス(以前とまったく同じ)に戻し、バージョン 6.5 の開発を開始しました。
Firebird 1.0 は 2002 年にリリースされ、多くのバグ修正と DDL および DML の拡張が行われました。活発な Firebird 開発は 1.0 以降も継続され、2004 年には Firebird の 2 番目のメジャーバージョン(v.1.5)がリリースされました。当時 Borland も新しいバージョン(7.0 および 7.1)を導入していました。Firebird 1.5 と InterBase 7.0 は、データベース形式(ODS)とコア機能の両方で互換性がありませんでした。Firebird 2.0 と InterBase 7.0 以降、バックアップ/リストアによる InterBase から Firebird への移行、およびその逆の移行は不可能です。
それ以来、Firebird と InterBase の違いはさらに大きくなりました。
現在の状況(2017年)
現在のバージョンの InterBase と Firebird の間で移行する唯一の方法は、SQL スクリプト(差分を手動で修正)を使用し、その後、古いデータベースから新しいデータベースへデータを転送することです。ただし、InterBase から Firebird への移行は、トランザクション管理の原則が同じであるため、他の DBMS への移行よりも依然として簡単です。
私たちは、さまざまなバージョンの InterBase と Firebird に対してこのような移行をいくつか実施しました。詳細は移行サービスについてをご覧ください。すべて問題なく完了しました。
以下に、最新バージョンである Firebird 3.0 と InterBase 2017 の違いのリストを示した表があります。
| Firebird と InterBase の違い |
|---|
| 機能 |
| — |
| SQL(DML および DDL) |
| カーソル安定性(正しい INSERT FROM SELECT) |
| スクロール可能(双方向)カーソル |
| Execute Statement |
| Execute Statement On External(外部 Firebird データベースへのクエリ) |
| 自律型トランザクション |
| 導出テーブル(SELECT からの SELECT) |
| 再帰的共通テーブル式(CTE) |
| ウィンドウ関数および統計関数 |
| MERGE |
| insert/update/delete の RETURNING 句 |
| 接続/切断時のトリガー |
| トランザクション開始/コミット/ロールバック時のトリガー |
| DDL 用トリガー |
| SUBSTRING の Regexp サポート |
| Boolean データ型 |
| BIGINT データ型 |
| PSQL 関数 |
| 外部プロシージャ、関数、トリガー(Java) |
| ネストされたプロシージャと関数 |
| 決定論的関数 |
| SYSTEM、USER_SESSION、USER_TRANSACTION 名前空間のコンテキスト変数 |
| パッケージ(プロシージャと関数) |
| パラメータ付き例外 |
| IDENTITY 列 |
| RECREATE(CREATE または ALTER の組み合わせ) |
| UTF8 サポート |
| Unicode の大文字小文字を区別しない検索サポート |
| 識別子の長さ |
| COMPUTED BY インデックス(式に対する) |
| アーキテクチャ/管理 |
| SMP SuperServer(マルチコアサポート) |
| Classic(接続ごとのインスタンス) |
| SuperClassic |
| 複数インスタンス(異なるポート) |
| データベースエイリアス |
| サーバーインスタンス間の再ルーティング |
| 先書きログ(WAL) |
| ポイントインタイムリカバリ |
| リストア中の並列インデックス作成 |
| 増分バックアップ |
| システム監視テーブル |
| 64 ビットクライアントおよびサーバー |
| 組み込みバージョン |
| Android 用組み込み(モバイル) |
| iOS 用組み込み(モバイル) |
| ChangeViews(とは?) |
| ワイヤ圧縮 |
| 高遅延ネットワーク向けネットワークプロトコル改善(インターネット経由の SQL クエリ用) |
| サーバーレベルのレプリケーション(ネイティブ) |
| トレースと監査 |
| オンラインデータベース検証 |
| セキュリティ |
| セキュリティデータベース |
| データベース内のユーザー |
| データベース暗号化 |
| 列暗号化 |
| 複数の暗号化キー |
| ワイヤ暗号化 |
| DDL ユーザー権限 |
| SQL によるユーザー管理 |
| UDF および組み込み関数 |
| ユーザー定義関数 |
| SDF(別名サーバー定義関数、UDF より高速) |
| ドライバーおよびクライアントライブラリのサポート |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| ライセンス/価格 |
| サーバーあたりの価格(無制限接続) |
| コミュニティサポート |
| プロフェッショナルサポート、サーバーあたり |
| リカバリ、監視、トレース/監査、最適化、ネイティブレプリケーションツール |
お問い合わせ
ご質問がありますか?お気軽にメールでお問い合わせください!