Microsoft Jet Database Engine

Microsoft Jet Database Engine (マイクロソフト・ジェット・データベースエンジン)は、いくつかのマイクロソフト製品が採用しているデータベースエンジンである。Microsoft Jetエンジンまたは単にJet とも呼ばれる。Jetの最初のバージョンは1992年に開発され、データベースの操作に使用できる3つのモジュールで構成される。 JETは、Joint Engine Technology (共同エンジン技術)の頭字語である。 Microsoft AccessやVisual Basicは、その基盤となるデータベースエンジンとしてJetを使用していた。ただし、後にMicrosoft Desktop Engine （MSDE）に、さらに後にSQL Server Expressに置き換えらた。大規模なデータベース活用の際には、JetデータベースをMicrosoft SQL Serverのデータベース製品群にアップグレード（またはマイクロソフトの用語では「アップサイズ」）することができる。 圧縮と暗号化が有効な50億レコードを含むMS Jet（Red）データベースの場合、約1テラバイトのディスク記憶域が必要となる[要出典]。 Jetは、関係データベース管理システム（RDBMS）の一種である。ファイル拡張子は *.mdb、または*.accdb。他のソフトウェアがこのデータベースにアクセスするための単一のインターフェイスと、セキュリティ、参照整合性、トランザクション処理、インデックス作成、レコードとページのロック、およびデータレプリケーションのサポートを提供する。以降のバージョンでは、エンジンが拡張され、 SQLクエリの実行、Unicode形式での文字データの保存、データベースビューの作成、Microsoft SQL Serverとの双方向レプリケーションが可能になった。 Jetには3つのモジュールがある。1つ目はネイティブJet ISAMドライバーで、(ランダムアクセス)ファイルシステムAPIを使ってMicrosoft Accessデータベースファイル（MDB）を直接操作するダイナミックリンクライブラリ (DLL)である。2つ目のモジュールは、Jetのバージョンに応じて、xBase、Paradox、Btrieve、FoxProなどのさまざまなISAMデータベースを操作するISAMドライバーのDLLである。3つ目のモジュールは、Data Access Objects（DAO）DLLである。 DAOは、プログラマーが任意のプログラミング言語を通してJetデータベースを操作するAPIを提供する。 Jetはもともと、1992年にマイクロソフトの内部データベース製品開発プロジェクトであるCirrusというコードネームから生まれた基盤となるデータアクセス技術として開始された。 Cirrusは、プレリリースバージョンのVisual Basicコードから開発され、 Microsoft Accessデータベースエンジンとして使用されていた。 Access 2.0がリリースされたとき、Access ODBC開発者がJetコードの一部を使用してODBCドライバーを生成したため、Jetはよりコンポーネント化された。 Visual Basic 3.0ユーザーがAccess 2.0で発行された更新されたJetを使用できるようにする更新が提供された。 Jet 2.0は、Microsoft Accessデータベースなどのアプリケーションソフトウェアで使用されるいくつかのダイナミックリンクライブラリ（DLL）としてリリースされた。WindowsのDLLは複数のアプリケーションで使用できる共通コードの「ライブラリ」である。これらのアプリケーションのそれぞれは独立して、コードのメンテナンスを使用することができ、共通のライブラリーの下に複数のアプリケーションが使用するコードを保つことによって減少し、アプリケーションの機能れますより少ない開発努力で増加する。 Jet 2.0は、Jet DLL、Data Access Objects（DAO）DLL、およびいくつかの外部ISAM DLLの3つのDLLで構成されていた。 Jet DLLは、アクセスしているデータベースの種類と、要求された内容を実行する方法を決定した。データソースがMDBファイル（Microsoft Access形式）の場合、データを直接読み取り、ファイルに書き込む。データソースが外部の場合、正しいODBCドライバーを呼び出して要求を実行する。 DAO DLLは、プログラマーがJetエンジンとのインターフェースに使用できるコンポーネントであり、主にVisual BasicおよびAccess Basicプログラマーによって使用されていました。 ISAM DLLは、Jetが3つのISAMベースのデータベース（xBase、Paradox、およびBtrieve）にアクセスするためのモジュールであった。 Jet 2.0の後継でリリースされたJet 2.1は、同じデータベース構造を用いるが、ロック戦略が異なるため、Jet 2.0と動作が異なる。 Jet 3.0には、ストレージサイズを削減する新しいインデックス構造と、高度に複製されたインデックスの作成にかかる時間、インデックスページの読み取りロックの削除、ページ再利用の新しいメカニズム、次の新しい圧縮方法など、多くの機能強化が含まれていました。データベースを圧縮すると、インデックスがクラスター化インデックス形式で保存され、Jetの先読み機能を改善する新しいページ割り当てメカニズム、処理を高速化する削除操作の改善、マルチスレッド（3つのスレッドを使用して先読み、後書きを実行） 、およびキャッシュのメンテナンス）、暗黙のトランザクション（ユーザーがエンジンに手動で開始してデータベースにトランザクションをコミットするように指示する必要はない）、新しい並べ替えエンジン、長い値（メモやバイナリデータタイプなど）は別々のテーブルに保存された。動的バッファリング（これにより、Jetのキャッシュは起動時に動的に割り当てられ、制限はなく、ファーストイン、ファーストアウト（FIFO）のバッファ置換ポリシーから最も最近使用されていない（LRU）バッファー置換ポリシー）。 Jet 3.0では、データベースの複製も可能だった。 Jet 3.0はJet 3.5に置き換えられた。これは、同じデータベース構造を使用するが、ロック戦略が異なるため、Jet 3.0との互換性がない。 Jet 4.0には、多数の追加機能と拡張機能が追加された。 Access 2000からAccess 2010までのMicrosoft Accessバージョンには、Jetデータベースを元のデータベースと同じテーブル構造、データ、およびその他の多くの属性を持つSQL Server上の同等のデータベースに「アップサイズ」（アップグレード）できる「アップサイジングウィザード」が含まれていた。レポート、クエリ、マクロ、セキュリティはこのツールでは処理されない。つまり、アプリケーションがこれらのJet機能に大きく依存している場合は、手動で変更する必要があった。 Jet 4データベースエンジンのスタンドアロンバージョンは、 Microsoft Data Access Components （MDAC）のコンポーネントであり、Windows 2000以降のすべてのバージョンのWindowsに含まれていた。 Jetデータベースエンジンは32ビットのみであり、64ビットバージョンのWindowsではネイティブに実行されなかった。つまり、ネイティブ64ビットアプリケーション（64ビットバージョンのSQL Serverなど）は、プロキシとして機能する中間の32ビットソフトウェア（WOW64で実行）を除いて、ODBC、OLE DB 、またはその他の手段を介してMDBファイルに格納されているデータにアクセスできなかった。 バージョン2007以降、AccessにはOffice固有のバージョンのJetが含まれている。当初はOffice Access Connectivity Engine （ACE）と呼ばれていたが、現在はAccessデータベースエンジンと呼ばれている。このエンジンは、以前のバージョンのJetエンジンと下位互換性があるため、以前のAccessバージョンから（.mdb）ファイルを読み書きできた。新しいデフォルトのファイル形式（.accdb）が導入され、複数値フィールド、添付ファイルデータ型、メモフィールドの履歴追跡などの複雑なデータ型など、Accessにいくつかの改善をもたらした。また、セキュリティの変更と暗号化の改善がもたらされ、Microsoft Windows SharePoint Services 3.0およびMicrosoft Office Outlook 2007との統合が可能になった。 Microsoft Access 2010のエンジンは、Access 1.0、Access 2.0、Lotus 1-2-3、およびParadoxファイルのサポートを終了した。 64ビットバージョンのAccess 2010とそのACEドライバー/プロバイダーが導入された。これは本質的に64ビットバージョンのJetを提供します。ドライバーはWindowsオペレーティングシステムの一部ではないが、再配布可能として利用できる。 Microsoft Access 2013のエンジンは、Access 95、Access 97、およびxBaseファイルのサポートを終了し、レプリケーションのサポートも終了した。 Microsoft Access 2016のバージョン1608は、xBaseファイルのサポートを復元した。 バージョン1703では、多数のデータ型が導入された。 データアクセス技術の観点から、Jetの利用をマイクロソフトは推奨しないが 、Microsoft Accessの一部としてACEを引き続きサポートしている。 マイクロソフトは、Microsoft Windows向けにのみJetドライバーを提供している。したがって、Jetデータベースを使うサードパーティソフトウェアの動作環境は、Windowsのみとなっていることが多い。MDB Tools、そしてMDB ToolsをJava向けに大きく拡張されたJackcessというオープンソースプロジェクトがあり、他のプラットフォーム上でJetデータベースを動作させる試みである 。 Microsoft Access Microsoft SQL Server Microsoft Desktop Engine SQL Server Express Microsoft Data Access Components Data Access Objects   ^ Goodhew (1996年11月). “Jet Engine: History”. 2017年8月8日時点のオリジナルよりアーカイブ。2020年3月28日閲覧。 ^ MS KB article 137039 (2003年12月3日). “New Features in Microsoft Jet Version 3.0”. Microsoft. 2008年6月19日閲覧。 ^ MS KB article 275561 (2007年1月29日). “Description of the new features that are included in Microsoft Jet 4.0”. Microsoft. 2008年6月19日閲覧。 ^ Microsoft, "Microsoft Access 2000 Data Engine Options", white paper. ^ MS KB article 239114 (2008年5月29日). “How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine”. Microsoft. 2010年1月2日閲覧。 ^ Gorm Braarvig. “Access database from SQL 2005/64”. 2007年6月18日閲覧。 ^ Jakšić (2008年8月). “Developing Access 2007 Solutions with Native C or C++”. Microsoft Corporation. 2008年8月26日閲覧。 ^ Andy Baron, Optimizing Microsoft Office Access Applications Linked to SQL Server, November 2006. ^ Microsoft, New features of the Access 2007 file format Archived 2009-12-27 at the Wayback Machine.. ^ Microsoft, Discontinued features and modified functionality in Access 2010. ^ Adam W. Saxton, Microsoft SQL Server Escalation Services (2010年1月21日). “How to get a x64 version of Jet?”. 2010年2月6日閲覧。 ^ Microsoft, Discontinued features and modified functionality in Access 2013. ^ Microsoft, Back by popular demand—dBASE file support in Access ^ Microsoft, What's New in Access 2016 ^ Shirolkar (2008年1月). “Data Access Technologies Road Map”. Microsoft Corporation. 2008年6月19日閲覧。 Microsoft Jetデータベースエンジンプログラマーズガイド、Microsoft、1995 米国議会図書館、 Microsoft Access MDBファイル形式ファミリ 米国議会図書館、 Microsoft Access ACCDBファイル形式ファミリ 表示 編集