| その他の名前 |
|
|---|---|
| 開発者 | マイクロソフト |
| 初回リリース | 1992年 |
| 安定版リリース | エース16
|
| オペレーティング·システム | マイクロソフトウィンドウズ |
| タイプ | データベースエンジン |
| Webサイト | office.microsoft.com/en-us/access/ |
Access データベース エンジン( Office Access Connectivity EngineまたはACEとも呼ばれ、以前はMicrosoft Jet Database Engine、Microsoft JET Engineまたは単にJetと呼ばれていました) は、いくつかのMicrosoft製品が構築されているデータベース エンジンです。Jet の最初のバージョンは 1992 年に開発され、データベースの操作に使用できる 3 つのモジュールで構成されていました。
JET はJoint Engine Technologyの略です。Microsoft AccessおよびVisual Basic は、基盤となるデータベース エンジンとして Jet を使用しています (または使用していました)。ただし、一般的な用途では、最初はMicrosoft Desktop Engine (MSDE) に、その後はSQL Server Expressに置き換えられました。より大規模なデータベースが必要な場合は、Jet データベースを Microsoft の主力製品である SQL Server データベース製品にアップグレード (または、Microsoft の用語で「アップサイズ」) できます。
建築
Jetはリレーショナルデータベース管理システム(RDBMS)の一部であり、リレーショナルデータベースの操作を可能にします。[1]他のソフトウェアがMicrosoftデータベースにアクセスするために使用できる単一のインターフェイスを提供し、セキュリティ、参照整合性、トランザクション処理、インデックス作成、レコードとページのロック、およびデータレプリケーションのサポートを提供します。後のバージョンでは、エンジンが拡張され、SQLクエリの実行、 Unicode形式での文字データの保存、データベースビューの作成、Microsoft SQL Serverとの双方向レプリケーションが可能になりました。

Jetには3つのモジュールがあります。1つはネイティブJet ISAMドライバーで、(ランダムアクセス)ファイルシステムAPIを使用してMicrosoft Accessデータベースファイル(MDB)を直接操作できるダイナミックリンクライブラリ(DLL)です。もう1つのモジュールにはISAMドライバーが含まれています。これは、Jetのバージョンに応じて、 xBase、Paradox、Btrieve、FoxProなどのさまざまなインデックスシーケンシャルアクセス方式ISAMデータベースにアクセスできるDLLです。最後のモジュールはデータアクセスオブジェクト(DAO)DLLです。[2] DAOは、プログラマが任意のプログラミング言語を使用してJETデータベースにアクセスできるようにするAPIを提供します。
ロック
Jet では、複数のユーザーが同時にデータベースにアクセスできます。複数のユーザーがデータベースの同じレコードまたはページを編集しようとしたときにデータが破損したり無効になったりしないように、Jet ではロック ポリシーを採用しています。1 人のユーザーが変更できるのは、ユーザーがロックを適用したデータベースレコード(つまり、データベース内のアイテム) のみです。ロックは、ロックが解除されるまでレコードへの排他アクセスを許可します。バージョン 4 より前の Jet では、ページ ロック モデルが使用され、Jet 4 ではレコード ロック モデルが採用されています。Microsoft データベースは、固定長 (Jet 4 より前は 2 KB、Jet 4 では 4 KB) のデータ構造であるデータ「ページ」に編成されています。データは、1 ページより短いか長い、可変長の「レコード」に格納されます。ページ ロック モデルは、個々のレコードではなくページをロックすることで機能します。これは、リソースの消費量が少ない一方で、ユーザーが 1 つのレコードをロックすると、同じページにある他のすべてのレコードも同時にロックされることを意味します。その結果、他のユーザーは、どのユーザーもアクセスしておらず、ロックする必要もないにもかかわらず、付随的にロックされたレコードにアクセスできなくなります。Jet 4 では、レコード ロック モデルによって付随ロックが排除され、使用されていないすべてのレコードが使用可能になります。
Microsoft がロックに使用するメカニズムには、悲観的ロックと楽観的ロックの2 つがあります。悲観的ロックでは、ロックが要求されるとすぐにレコードまたはページがロックされますが、楽観的ロックでは、編集されたレコードが保存されるまでロックは遅延されます。楽観的ロックでは、レコードがロックされる時間が短いため、競合が発生する可能性は低くなります。ただし、楽観的ロックでは、別のユーザーが先にレコードをロックする可能性があるため、更新が成功するかどうかはわかりません。悲観的ロックでは、ロックが取得されると更新が成功することが保証されます。他のユーザーは、変更を加えるためにロックが解除されるまで待つ必要があります。ロックの競合は、ユーザーに待機を要求するか、要求が失敗する (通常はタイムアウト後) 原因になりますが、悲観的ロックではより一般的に発生します。
トランザクション処理
Jet は、この機能を持つデータベース システムのトランザクション処理をサポートします ( ODBCシステムには 1 レベルのトランザクション処理がありますが、Paradox などのいくつかの ISAM システムではトランザクション処理がサポートされていません)。トランザクションとは、データベースに対して実行される一連の操作であり、同時に実行する必要があります。これはアトミック性と呼ばれ、 ACID (アトミック性、一貫性、独立性、および永続性)の 1 つです。ACID は、データベース管理システムの主要なトランザクション処理機能であると考えられている概念です。トランザクション処理が機能するには (Jet 3.0 まで)、プログラマーがトランザクションを手動で開始し、トランザクションで実行する必要がある操作を実行してから、トランザクションをコミット (保存) する必要がありました。トランザクションがコミットされるまで、変更はメモリ内でのみ行われ、実際にはディスクに書き込まれません。[1]トランザクションには、独立したデータベース更新に比べて多くの利点があります。主な利点の 1 つは、トランザクション中に問題が発生した場合にトランザクションを中止できることです。これはトランザクションのロールバック、または単にロールバックと呼ばれ、データベース レコードの状態をトランザクション開始前の状態に正確に復元します。トランザクションを使用すると、アトミックである必要のある一連の更新の途中でシステム障害が発生した場合でも、データベースの状態を一貫性のある状態に保つことができます。更新の一部のみがデータベースに書き込まれることはありません。すべてが成功するか、データベース システムが再起動したときに変更が破棄されます。ODBC のメモリ内ポリシーを使用すると、トランザクションにより、レコードに対する多数の更新が完全にメモリ内で実行され、最後に 1 回のコストのかかるディスク書き込みのみが可能になります。
暗黙的なトランザクションは Jet 3.0 でサポートされていました。これらは、最後のトランザクションがデータベースにコミットされた後に自動的に開始されるトランザクションです。Jet の暗黙的なトランザクションは、SQL DMLステートメントが発行されたときに発生しました。ただし、これが 32 ビット Windows (Windows 95、Windows 98) のパフォーマンスに悪影響を与えることが判明したため、Microsoft は Jet 3.5 で SQL DML ステートメントが作成されたときの暗黙的なトランザクションを削除しました。
データの整合性
Jet は、エンティティ整合性と参照整合性を強制します。Jet は、既定では参照整合性を破るレコードの変更を防止しますが、代わりに Jet データベースは伝播制約(カスケード更新とカスケード削除) を使用して参照整合性を維持できます。
Jet は、「ビジネス ルール」(「制約」とも呼ばれる) もサポートしています。これは、テーブルまたは列にどのようなデータを配置するかを強制するために任意の列に適用されるルールです。たとえば、現在の日時より前の日付を date_logged 列に入力できないようにするルールを適用したり、数値のみのフィールドに正の値を入力するように強制するルールを適用したりすることができます。
安全
Jet データベースへのアクセスは、ユーザー レベルごとに行われます。ユーザー情報は別のシステム データベースに保存され、アクセスはシステム内の各オブジェクト (たとえば、テーブルまたはクエリ) で制御されます。Jet 4 では、Microsoft は、データベース管理者が SQL コマンド CREATE、ADD、ALTER、DROP USER、および DROP GROUP を使用してセキュリティを設定できる機能を実装しました。これらのコマンドは ANSI SQL 92 標準のサブセットであり、GRANT/REVOKE コマンドにも適用されます。[3] Jet 2 がリリースされたとき、セキュリティはDAOを通じてプログラム的に設定することもできました。
クエリ
クエリは、Jet がデータベースからデータを取得するために使用するメカニズムです。クエリは、Microsoft QBE (Query By Example)、Microsoft Access SQL ウィンドウ、または Access Basic のデータ アクセス オブジェクト (DAO) 言語で定義できます。次に、クエリは SQL SELECTステートメントに変換されます。次に、クエリがコンパイルされます。このコンパイルには、クエリの解析 (構文チェックとデータベース テーブルでクエリする列の決定を含む) が含まれ、次に内部 Jet クエリ オブジェクト形式に変換され、トークン化されてツリー構造に編成されます。Jet 3.0 以降では、これらは Microsoft Rushmore クエリ最適化テクノロジを使用して最適化されます。次に、クエリが実行され、その結果がデータを要求したアプリケーションまたはユーザーに返されます。
Jet は、クエリで取得したデータをダイナセットに渡します。これは、データベースに動的にリンクされるデータのセットです。クエリ結果を一時テーブルに格納すると、ユーザーはデータを直接更新できなくなりますが、ダイナセットを使用すると、ユーザーはダイナセットに含まれるデータを表示して更新できます。したがって、大学の講師が課題で優秀な成績を収めたすべての学生にクエリを実行し、その学生のレコードにエラーが見つかった場合、ユーザーはダイナセットのデータを更新するだけで済みます。これにより、クエリ結果を一時テーブルに格納した後、特定の更新クエリを送信しなくても、学生のデータベース レコードが自動的に更新されます。
歴史
Jetはもともと1992年に、マイクロソフト社内のデータベース製品開発プロジェクト(コード名Cirrus)から生まれた基盤データアクセス技術としてスタートしました。CirrusはVisual Basicコードのプレリリース版から開発され、Microsoft Accessのデータベースエンジンとして使用されました。当時マイクロソフトで働いていたトニー・グッドヒュー氏は次のように述べています。
「その段階まで、Jet はコンポーネント チームというよりは、Access の DB エンジン モジュールの作業に割り当てられたチームの名前だったと言っても過言ではありません。VB [Visual Basic] 3.0 では、基本的に Access から切り離して VB に移植する必要がありました。そのため、VB 3.0 で Jet/ODBC の問題がすべて発生しました。」
Access 2.0 がリリースされると、Access ODBC 開発者が Jet コードの一部を使用して ODBC ドライバーを作成したため、Jet はよりコンポーネント化されました。Visual Basic 3.0 ユーザーが Access 2.0 でリリースされた更新された Jet を使用できるように、レトロフィットが提供されました。[6]
Jet 2.0 は、Microsoft の Access データベースなどのアプリケーション ソフトウェアで利用されるいくつかのダイナミック リンク ライブラリ(DLL)としてリリースされました。Windows の DLL は、複数のアプリケーションで使用できる共通コードの「ライブラリ」です。複数のアプリケーションが使用するコードを共通ライブラリの下に保持し、各アプリケーションが独立して使用できるようにすることで、コードのメンテナンスが軽減され、開発の労力を抑えながらアプリケーションの機能が向上します。Jet 2.0 は、Jet DLL、データ アクセス オブジェクト(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)にアクセスできるようにするモジュールのセットでした。[2] Jet 2.0は、同じデータベース構造を使用していたが異なるロック戦略を採用したJet 2.1に置き換えられたため、Jet 2.0との互換性がなくなりました。
Jet 3.0 には、ストレージ サイズと重複度の高いインデックスの作成にかかる時間を削減する新しいインデックス構造、インデックス ページの読み取りロックの削除、ページ再利用の新しいメカニズム、データベースを圧縮するとインデックスがクラスター化インデックス形式で保存される新しい圧縮方法、Jet の先読み機能を向上させる新しいページ割り当てメカニズム、処理を高速化する削除操作の改善、マルチスレッド(先読み、後書き、キャッシュのメンテナンスを実行するために 3 つのスレッドが使用されました)、暗黙のトランザクション (ユーザーがエンジンを手動で起動してデータベースにトランザクションをコミットするように指示する必要がありませんでした)、新しいソート エンジン、長い値 (メモやバイナリ データ型など) が別のテーブルに格納され、動的バッファリング (Jet のキャッシュが起動時に動的に割り当てられ、制限がなく、先入れ先出し( FIFO) バッファ置換ポリシーから最近使用されていない(LRU) バッファ置換ポリシーに変更されました) など、多くの機能強化が含まれていました。[7] Jet 3.0 では、データベースのレプリケーションも可能になりました。 Jet 3.0 は Jet 3.5 に置き換えられました。Jet 3.5 は同じデータベース構造を使用しますが、ロック戦略が異なるため、Jet 3.0 とは互換性がありません。
Jet 4.0では数多くの追加機能と機能強化が行われました。[3]
- Unicode文字の保存のサポート、およびWindows 95バージョンにも実装されたNTソート方法。
- データ型をSQL Serverのデータ型(LongText または Memo、Binary、LongBinary、Date/Time、Real、Float4、IEEESingle、Double、Byte または Tinyint、Integer または Integer の同義語 Smallint、Integer2、Short、LongInteger または LongInteger の同義語 Int、Integer、Counter、Currency または Money、Boolean および GUID) に似たものに変更します。新しい 10 進データ型
- メモフィールドにインデックスを作成できるようになりました
- 圧縮可能なデータ型
- Jet をANSI SQL-92にさらに準拠させるためのSQL拡張機能
- よりきめ細かなセキュリティ、ビューのサポート、プロシージャのサポート
- トランザクションの呼び出しと終了(コミットまたはロールバック)
- テーブルの作成と変更の強化
- 参照整合性のサポート
- 接続制御 (接続されたユーザーは接続されたままですが、一度切断されると再接続できず、新しい接続も作成できません。これは、データベース管理者がデータベースを制御するのに役立ちます)
- ユーザーリスト。管理者はこれを使用して、データベースに接続しているユーザーを特定できます。
- レコードレベルのロック(以前のバージョンではページロックのみがサポートされていました)
- MS SQL Server との双方向レプリケーション。
Access 2000 から Access 2010 までの Microsoft Access バージョンには、「アップサイジング ウィザード」が含まれていて、Jet データベースを「元のデータベースと同じテーブル構造、データ、およびその他の多くの属性を持つ SQL Server 上の同等のデータベース」に「アップサイズ」(アップグレード) することができました。レポート、クエリ、マクロ、およびセキュリティはこのツールでは処理されませんでした。つまり、アプリケーションがこれらの Jet 機能に大きく依存している場合は、手動での変更が必要になる可能性がありました。 [8]
Jet 4 データベース エンジンのスタンドアロン バージョンは、 Microsoft Data Access Components (MDAC)のコンポーネントであり、Windows 2000 以降のすべてのバージョンの Windows に含まれていました。[9] Jet データベース エンジンは32 ビットのみであり、 64 ビットバージョンの Windowsではネイティブに実行されませんでした。つまり、ネイティブ 64 ビット アプリケーション (SQL Server の 64 ビット バージョンなど) は、 64 ビット クライアントのプロキシとして機能する中間 32 ビット ソフトウェア ( WoW64で実行) を除き、ODBC、 OLE DB、またはその他の手段を介してMDB ファイルに格納されたデータにアクセスできませんでした。[10]
バージョン 2007 以降、Access には Office 固有のバージョンの Jet が含まれています。これは当初Office Access Connectivity Engine (ACE) と呼ばれていましたが、現在はAccess Database Engineと呼ばれています (ただし、MS-Access コンサルタントや MS-Access を専門とする VBA 開発者は、これを「ACE Database Engine」と呼ぶ傾向があります)。[要出典]このエンジンは、以前のバージョンの Jet エンジンと下位互換性があったため、以前のバージョンの Access から (.mdb) ファイルの読み取りと書き込みが可能でした。新しい既定のファイル形式 (.accdb) が導入され、複数値フィールドなどの複雑なデータ型、添付ファイル データ型、メモ フィールドでの履歴追跡など、Access にいくつかの改善がもたらされました。また、セキュリティの変更と暗号化の改善ももたらされ、Microsoft Windows SharePoint Services 3.0 およびMicrosoft Office Outlook 2007との統合が可能になりました。 [11] [12] [13]これは別途入手できます。[14]
Microsoft Access 2010のエンジンは、Access 1.0、Access 2.0、Lotus 1-2-3、およびParadoxファイルのサポートを中止しました。[15] Access 2010の64ビットバージョンとそのACEドライバー/プロバイダーが導入され、実質的にはJetの64ビットバージョンが提供されます。ドライバーはWindowsオペレーティングシステムの一部ではありませんが、再配布可能として入手できます。[16] [17]
Microsoft Access 2013のエンジンはAccess 95、Access 97、xBaseファイルのサポートを中止し、レプリケーションのサポートも中止しました。[18]
Microsoft Access 2016のバージョン1608ではxBaseファイルのサポートが復活し、[19]バージョン1703では大きな数値データ型が導入されました。[20]
データアクセス技術の観点から見ると、JetはMicrosoftによって非推奨の技術と見なされていますが[21]、MicrosoftはMicrosoft Accessの一部としてACEを引き続きサポートしています。
互換性
Microsoft は、Microsoft Windows のみに JET ドライバーを提供しており、JET データベースのサードパーティ ソフトウェア サポートは、ほぼ Windows のみで提供されています。ただし、Linuxを含む他のプラットフォームで JET データベースを操作できるようにするオープン ソースプロジェクトがあります。特に、MDB Toolsと、大幅に拡張された Jackcess という Java ポート、および UCanAccess があります。
参照
参考文献
- ^ 「RDBMS(リレーショナルデータベース管理システム)とは何ですか? | TechTarget からの定義」。データ管理。2024 年6 月 20 日閲覧。
- ^ 「DAO、ODBC 接続 | PDF | Microsoft Access | データベース」。Scribd。2024年6月 20 日閲覧。
- ^ ab MS KB 記事 275561 (2007 年 1 月 29 日)。「Microsoft Jet 4.0 に含まれる新機能の説明」。Microsoft。2008年6 月 19 日閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Access 2002 セットアップ プログラムは、特定のバージョンの Windows のシステム ファイルを特定のレベルまでのみ更新しました。
- ^ Access 2003 は、データの保存とクエリ処理にオペレーティング システムの Jet エンジン コンポーネントに依存していました。
- ^ Goodhew, Tony (1996年11月). 「ジェットエンジン:歴史」。2017年8月8日時点のオリジナルよりアーカイブ。 2020年3月28日閲覧。
- ^ MS KB 記事 137039 (2003 年 12 月 3 日)。「Microsoft Jet バージョン 3.0 の新機能」。Microsoft。2008年6 月 19 日閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Microsoft、「Microsoft Access 2000 データ エンジン オプション」、ホワイト ペーパー。
- ^ MS KB 記事 239114 (2008 年 5 月 29 日)。「Microsoft Jet 4.0 データベース エンジンの最新のサービス パックを入手する方法」。Microsoft。2010年1 月 2 日閲覧。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Gorm Braarvig. 「SQL 2005/64 からデータベースにアクセスする」2007 年6 月 18 日閲覧。
- ^ Jakšić, Aleksandar (2008 年 8 月)。「ネイティブ C または C++ を使用した Access 2007 ソリューションの開発」。Microsoft Corporation。2008年8 月 26 日閲覧。
- ^ Andy Baron、「SQL Server にリンクされた Microsoft Office Access アプリケーションの最適化」、2006 年 11 月。
- ^ Microsoft、「Access 2007 ファイル形式の新機能」、Wayback Machineに 2009 年 12 月 27 日にアーカイブ。
- ^ 2007 Office System ドライバー: データ接続コンポーネント
- ^ Microsoft、Access 2010 で廃止された機能と変更された機能。
- ^ Adam W. Saxton、Microsoft SQL Server Escalation Services (2010 年 1 月 21 日)。「Jet の x64 バージョンを入手する方法」 。2021年10 月 29 日閲覧。
- ^ 「Microsoft Access Database Engine 2010 再頒布可能パッケージ」。2010 年 9 月 7 日時点のオリジナルよりアーカイブ。
- ^ Microsoft、Access 2013 で廃止された機能と変更された機能。
- ^ Microsoft、要望に応えてAccessでdBASEファイルのサポートを復活
- ^ Microsoft、Access 2016 の新機能
- ^ Shirolkar, Prash、Henry, Alyssa、Pepitone, Stephen、Bunch, Acey J. (2008 年 1 月)。「データ アクセス テクノロジ ロード マップ」。Microsoft Corporation。2008年6 月 19 日閲覧。
さらに読む
- Microsoft Jet データベース エンジン プログラマーズ ガイド、Microsoft、1995
- 米国議会図書館、Microsoft Access MDB ファイル形式ファミリ
- 米国議会図書館、Microsoft Access ACCDB ファイル形式ファミリ
