InterBase

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

## テクノロジ技術
多くの点で、InterBaseは標準的である。InterBaseはSQL-92互換関係データベースであり、JDBC、ODBC、ADO.NETなどの標準インターフェースをサポートしている。しかし、他の製品と異なる特徴的な機能も存在する。
### 小さなフットプリント
InterBase 7 サーバの完全インストールに必要なディスク容量は、40MBである。これは競合する多くのデータベースサーバのクライアント・アプリケーションのインストールに必要なディスク容量より小さい。サーバのユーザーのアイドル時のメモリ使用量は極めて小さい。InterBaseのクライアントに必要な最低限のディスク容量は、400KBである。

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

### マルチ・ジェネレーション・アーキテクチャー
#### 並行性制御
**マルチ・ジェネレーション・アーキテクチャー**とは、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ではスナップショット・アイソレーションを持つトランザクションはデータベースの状態を、トランザクションが始まった時点の状態として正確に示す。これはアクティブ・データベースのバックアップや、長時間のバッチプロセスなどに非常に便利である。

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

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

## 歴史
### 初期

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

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

マルチジェネレーション並行処理制御をひらめいた、きっかけはPrime Computer社によるデータベース・システムだ。これはページ・レベルのスナップショットをサポートしていた。この機能の狙いは、読み手にデータベースの一貫したビューを、書き込みをブロックせずに提供することだ。このアイデアはデータベース・システムの非常に便利な特徴として、興味をそそった。

スターキーは地元のワークステーション会社であるアポロコンピュータが彼らのUNIXマシンで稼動するデータベースを探しており、開発の資金提供に応じると聞いた。彼らの励ましで、1984年の労働者の日（米国）に、スターキーは**グロトン・データベース・システム**(Groton Database Systems)（会社のあったマサチューセッツ州グロトンにちなんで名づけられた）を設立した。スターキーは1986年に**InterBase**として発表されるデータベースの作業を始めた。アポロコンピュータは企業大再編に見舞われ、ソフトウェアビジネスからの離脱を決めた。しかしその時までに、製品は大金を稼いでいた。

### ボーランドへの道

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

### オープンソース

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

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

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

### 最近の動向

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日本語版を発表した。新機能として、データベースとカラムレベルの暗号化、オーバーザワイヤー(OTW)ネットワークの暗号化、バックアップファイルの暗号化が追加された。また、新たに組み込み用としてTo-Go Editionが追加された。

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

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

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

2017年3月、エンバカデロ・テクノロジーズはInterBase 2017 日本語版を発表した。新機能としてisql新機能(RECONNECT,namesの追加)、全オンラインDBのモニタリング、トランザクションの機能追加(排他的隔離レベル、トランザクション待機期間)、SQLの新機能(派生テーブル、共通表式(RECURSIVEによる再帰含む)、TRUNCATE TABLE)、などがある。Update 1においても新機能(式インデックス、ORDER BYとGROUP BYの強化)が提供されたがUpdate 2, Update 3では新機能の提供はなかった。2020年1月時点の最新版は2017 Update 3。

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

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

2021年10月、エンバカデロ・テクノロジーズはInterBase 2020 Update 2をリリースした。新機能として(1)再帰CTEをサポートすることにより、共通テーブル式のデータベースサポートを拡張, (2) 近年追加された機能（EUA データベースのセットアップと EUAユーザーレコード、変更ビューサブスクリプションの定義とデータベース/テーブルスキーマでの使用、暗号化キーの定義）に基づいて情報を抽出する機能が ISQLダイアレクトに追加。。

## 脚注