InterBase

InterBase  は、エンバカデロ・テクノロジーズが開発・販売している関係データベース管理システム  である。InterBaseの特徴は、他のデータベース管理システムと比較して小さなフットプリントであること、必要最小限の管理で運用可能であることが挙げられる。マルチ・ジェネレーション・アーキテクチャーである。InterBaseはLinux、Windows、macOSオペレーティングシステム  で作動する。

1. テクノロジ技術
----------

多くの点で、InterBaseは標準的である。InterBaseはSQL-92互換関係データベースであり、JDBC、ODBC、ADO.NETなどの標準インターフェースをサポートしている。しかし、他の製品と異なる特徴的な機能も存在する。

1.1. 小さなフットプリント
---------------

InterBase 7 サーバの完全インストールに必要なディスク容量は、40MBである。これは競合する多くのデータベースサーバのクライアント・アプリケーションのインストールに必要なディスク容量より小さい。サーバのユーザーのアイドル時のメモリ使用量は極めて小さい。InterBaseのクライアントに必要な最低限のディスク容量は、400KBである。

1.2. 最小限の管理
-----------

InterBaseは通常は、常勤のデータベース管理者を必要としない。 組み込み用データベースにも適しており、M1エイブラムス戦車の中央射撃管制システムに使用されたとされる。

1.3. マルチ・ジェネレーション・アーキテクチャー
--------------------------

1.3.1. 並行性制御
------------

マルチ・ジェネレーション・アーキテクチャーとは、InterBaseのマルチバージョン並行処理制御の実装のことである。InterBaseはこの技術を使用した2番目の商用データベースである。ちなみに1番目は、DECのRdb/ELNである。

1)データベースには並行性制御が必要であり、そのためにロックを使用する。

簡単な銀行のアプリケーションを考えて見よう。2人のユーザーが、ある口座の預金にアクセスする。Bobは口座を読み込んで、そこに1000ドルを見つける。それで彼は500ドルを引き出す。Janeは同じ口座をBobが変更する前に読み込んで、1000ドルを見つける。そして800ドルを引き出す。口座は300ドル貸し越しになるはずだが、実際には、どちらのトランザクションが先に処理されるかによって、口座の残高は500ドルか200ドルのどちらかになるだろう。これは深刻な問題を引き起こすので、言うまでもなく、複数のユーザーがアクセスするデータベースシステムはどれでも、このようなシナリオに対処する何らかの種類のシステムが必要だ。この問題やその他の関連する問題を解決するために使われるテクニックはデータベース業界では、並行性制御として知られている。

伝統的な製品は、特定のトランザクションがレコードを修正しようとしている事を記載したロックを使用する。一度ロックされると、ロック解放まで、その他の誰もデータを読んだり修正する事は出来ない。ロックは//ロックの粒度//次第で、1レコード、1ページのレコード、特定のトランザクションで調べられた各レコードへの変更をブロックする。ロックの粒度はパフォーマンスと精度のトレードオフだ。例えば、ページレベルで更新をブロックすると、他のトランザクションによる更新とは実は衝突しない、いくつかの更新はブロックされてしまう。

2)ロックは、トランザクションの独立性と組み合わせた時、より大きな問題になる。

これは大抵のトランザクションは、読み書きを両方含むからである。この例では、口座の金額を読み、それから変更する。データの独立したビューを示すために、トランザクション全体は、レコードを読むが書き込まない場合も含めて、多くのデータベース・サーバではロックしなければならない。

3)InterBaseでは、読み込みは書き込みをブロックしない。その代わりに、データベースの各レコードは1つ以上のバージョンの中に存在する事が出来る。

例えば、BobとJaneが口座を見た時、彼らは共に「バージョン1」を取得し、1000ドルを見つける。Bobが預金を引き出して口座を変更した時、データは上書きされない。代わりに、500ドルの入った「バージョン2」が作成される。Janeが800ドルを引き出そうとすると、新しいバージョン2があると通知される。よってJaneの引き出しは失敗する。

このアプローチは、マルチバージョン並行処理制御と呼ばれる。InterBaseのマルチバージョン並行処理制御の実装は通例、マルチ・ジェネレーション・アーキテクチャーと呼ばれる。

マルチバージョン並行処理制御により、真のスナップショット・トランザクション・アイソレーションを比較的シンプルに実装する事も出来る。InterBaseではスナップショット・アイソレーションを持つトランザクションはデータベースの状態を、トランザクションが始まった時点の状態として正確に示す。これはアクティブ・データベースのバックアップや、長時間のバッチプロセスなどに非常に便利である。

1.3.2. ロールバックとリカバリ
------------------

InterBaseは、ロールバックを実装する為にも、マルチ・ジェネレーション・アーキテクチャーを使用している。ほとんどのデータベース・サーバはロールバック機能を実装する為に、ログを使用する。その結果、ロールバックに時間がかかったり、手動操作を求められる可能性すらある。対照的に、InterBaseのロールバックは瞬間的に近く、絶対に失敗しない。

1.3.3. 難点
---------

特定の操作は、マルチ・ジェネレーション・アーキテクチャーでの実装がより困難である。よって、より伝統的な実装と比べると実行が遅い。1つの例はSQL COUNT 文である。インデックスがCOUNT に含まれる列・複数の列で利用可能な時でさえ、現在のトランザクションの独立性で見えるかどうかを調べる為に、全てのレコードはアクセスされなければならない。

2. 歴史
-----

2.1. 初期
-------

ジム・スターキーがDECのDATATRIEVEネットワークデータベース製品に従事していた時、多数のユーザーによる同時変更を管理するシステムのアイデアを思いついた。このアイデアは当時開発中の新しい関係データベースで深刻な問題があると判明していた、ロックの問題を単純化した。しかしその時、DECは後のRdb/VMS製品となる関係データベースの開発を始めたばかりだった。DECがスターキーのプロジェクトを知った時、縄張り争いが勃発した。スターキーは最終的には退職すると決めた。

InterBaseの実装は、当時存在していたどのデータベースより、MITのリードが記述したシステムに似ており、スターキーは前職のComputer Corporation of America社やDECで、バーンスタインを知っていたにもかかわらず、マルチバージョン並行処理制御のアイデアに独自にたどり着いたと発言した。

マルチジェネレーション並行処理制御をひらめいた、きっかけはPrime Computer社によるデータベース・システムだ。これはページ・レベルのスナップショットをサポートしていた。この機能の狙いは、読み手にデータベースの一貫したビューを、書き込みをブロックせずに提供することだ。このアイデアはデータベース・システムの非常に便利な特徴として、興味をそそった。スターキーは地元のワークステーション会社であるアポロコンピュータが彼らのUNIXマシンで稼動するデータベースを探しており、開発の資金提供に応じると聞いた。彼らの励ましで、1984年の労働者の日に、スターキーはグロトン・データベース・システムを設立した。スターキーは1986年にInterBaseとして発表されるデータベースの作業を始めた。アポロコンピュータは企業大再編に見舞われ、ソフトウェアビジネスからの離脱を決めた。しかしその時までに、製品は大金を稼いでいた。

2.2. ボーランドへの道
-------------

1986年から1991年までの間に、製品は段階的にアシュトンテイトに売られた。アシュトンテイトは有名なdBASEのメーカーであり、その時点でいくつものデータベース会社をポートフォリオの為に購入していた。アシュトンテイトは直ぐに経営危機に見舞われ、1991年にボーランドが買収した。InterBaseはその一部として取得された。

2.3. オープンソース
------------

1998年以降、ボーランドは深刻な経営危機に見舞われた。ParadoxやdBASEなどボーランドのデータベース製品は次々と売却された。InterBaseも1999年12月14日、キーパーソンの退職により、開発が中断した。

2000年初頭、ボーランドはInterBaseをオープンソース化し、製品を管理する企業をスピンオフする交渉を始めたと発表した。レッドハットのIPOに倣った物と言う説がある。しかし新会社の経営陣と条件が折り合わず、スピンオフは中止された。

2000年にInterBase6がオープンソースとして公開され、これを基にFirebirdとしてオープンソース開発が続けられている。しかし、その後ボーランド社がオープンソース戦略を撤回して新バージョンのInterbase6.5を販売したため、両者は別プロジェクトとして分岐してしまっている。

2.4. 最近の動向
----------

2002 年末、ボーランドはInterBase 7 を発売した。特徴はSMPのサポート、管理者によるサーバのモニタリングとコントロールのサポートの拡張である。

ボーランドは2003年6月にInterBase 7.1、2004年12月には7.5、2005年6月に7.5.1を発売した。

2006年9月、ボーランドはInterBase 2007を発表した。新機能に含まれるのは、ジャーナリングによるPoint-in-Timeリカバリー、増分バックアップ、バッチ文による操作、新しいユニコード文字エンコード、新しいODBCドライバーである。

2007年9月、3rdRail の発表に伴い、Mac OS X版が登場した。

2008年10月、エンバカデロ・テクノロジーズはInterBase SMP 2009日本語版を発表した。新機能として、データベースとカラムレベルの暗号化、オーバーザワイヤーネットワークの暗号化、バックアップファイルの暗号化が追加された。また、新たに組み込み用としてTo-Go Editionが追加された。

2011年1月、エンバカデロ・テクノロジーズはInterBase XE 日本語版を発表した。新しく64ビットネイティブ対応版が提供されることになり、それに伴いデータベースキャッシュ設定の拡大が可能になった。新機能として、強度の高いパスワード保護、ストアドプロシージャやトリガーから動的SQLが呼び出し可能、パラメタの追加、機能改善として、スイープの高速化、インデックスキーの上限が引き上げられた。また、付属するJDBDドライバではBLOB/CLOBをサポートするためのI/Fが追加された。

2012年8月、エンバカデロ・テクノロジーズはInterBase XE3 日本語版を発表した。新機能として、ODBCドライバの改善, コンカレントなインデックス作成, データベースとユーザテーブル用に[NO] RESERVE SPACEのサポート, Windows, Mac OS X, そして Linux 間での物理データベースのポータビリティが追加された。2013年9月時点の最新版はXE3 Update 3。

2014年12月、エンバカデロ・テクノロジーズはInterBase XE7 日本語版を発表した。新機能として変更ビュー、64-bit Linuxのサポート、パフォーマンスの向上、トランザクションIDの64ビット化、インクリメンタルデータダンプ機能の改善、などがある。2015年12月時点の最新版はXE7 Update 5。

2017年3月、エンバカデロ・テクノロジーズはInterBase 2017 日本語版を発表した。新機能としてisql新機能、全オンラインDBのモニタリング、トランザクションの機能追加、SQLの新機能、TRUNCATE TABLE)、などがある。Update 1においても新機能が提供されたがUpdate 2, Update 3では新機能の提供はなかった。2020年1月時点の最新版は2017 Update 3。

2019年11月、エンバカデロ・テクノロジーズはInterBase 2020 日本語版を発表した。新機能としてデータベーステーブルスペースのサポート、新しいプラットフォームのサポート、パフォーマンスモニタリングの強化、データディクショナリDDL、SQLの最適化、セキュリティ強化、IBConsoleの改善。などがある。。

2020年5月、エンバカデロ・テクノロジーズはInterBase 2020 Update 1をリリースした。新機能としてInterBase 2020 ServerおよびDeveloper EditionのLinuxサポート,OnlineDumpテクノロジーのためのテーブル領域サポート,テーブル領域を使用するデータベースのバックアップ、ダンプ、およびリストア操作のためのIBConsoleサポートのアップデート。。

2021年10月、エンバカデロ・テクノロジーズはInterBase 2020 Update 2をリリースした。新機能として再帰CTEをサポートすることにより、共通テーブル式のデータベースサポートを拡張,  近年追加された機能に基づいて情報を抽出する機能が ISQLダイアレクトに追加。。

3. 脚注
-----