Access Database Engine

However, it has been superseded for general use, first by Microsoft Desktop Engine (MSDE), then later by SQL Server Express.

[1] It offers a single interface that other software can use to access Microsoft databases and provides support for security, referential integrity, transaction processing, indexing, record and page locking, and data replication.

There are three modules to Jet: One is the Native Jet ISAM Driver, a dynamic link library (DLL) that can directly manipulate Microsoft Access database files (MDB) using a (random access) file system API.

Another one of the modules contains the ISAM Drivers, DLLs that allow access to a variety of Indexed Sequential Access Method ISAM databases, among them xBase, Paradox, Btrieve and FoxPro, depending on the version of Jet.

[2] DAO provides an API that allows programmers to access JET databases using any programming language.

To prevent that data from being corrupted or invalidated when multiple users try to edit the same record or page of the database, Jet employs a locking policy.

Transactions also permit the state of the database to remain consistent if a system failure occurs in the middle of a sequence of updates required to be atomic.

With ODBC's in-memory policy, transactions also allow for many updates to a record to occur entirely within memory, with only one expensive disk write at the end.

The query is then executed and the results passed back to the application or user who requested the data.

Thus, if a university lecturer queries all students who received a distinction in their assignment and finds an error in that student's record, the user would only need to update the data in the dynaset, which would automatically update the student's database record without the need for the user to send a specific update query after storing the query results in a temporary table.

Jet originally started in 1992 as an underlying data access technology that came from a Microsoft internal database product development project, code-named Cirrus.

Cirrus was developed from a pre-release version of Visual Basic code and was used as the database engine of Microsoft Access.

A retrofit was provided that allowed Visual Basic 3.0 users to use the updated Jet issued in Access 2.0.

[6] Jet 2.0 was released as several dynamic linked libraries (DLL's) that were utilized by application software, such as Microsoft's Access database.

If the data source was external, then it would call on the correct ODBC driver to perform its request.

Jet 3.0 included many enhancements, including a new index structure that reduced storage size and the time that was taken to create indices that were highly duplicated, the removal of read locks on index pages, a new mechanism for page reuse, a new compacting method for which compacting the database resulted in the indices being stored in a clustered-index format, a new page allocation mechanism to improve Jet's read-ahead capabilities, improved delete operations that sped up processing, multi-threading (three threads were used to perform read ahead, write behind, and cache maintenance), implicit transactions (users did not have to instruct the engine to start manually and commit transactions to the database), a new sort engine, long values (such as memos or binary data types) were stored in separate tables, and dynamic buffering (whereby Jet's cache was dynamically allocated at start up and had no limit and which changed from a first in, first out (FIFO) buffer replacement policy to a least recently used (LRU) buffer replacement policy).

Reports, queries, macros and security were not handled by this tool, meaning that some manual modifications might have been needed if the application was heavily reliant on these Jet features.

This meant that native 64-bit applications (such as the 64-bit versions of SQL Server) could not access data stored in MDB files through ODBC, OLE DB, or any other means, except through intermediate 32-bit software (running in WoW64) that acted as a proxy for the 64-bit client.

However, there are open source projects that enable working with JET databases on other platforms including Linux.

Notably, MDB Tools and its much extended Java port named Jackcess as well as UCanAccess.

Jet DLLs