ESE is the core of Microsoft Exchange Server, Active Directory, and Windows Search.
Its purpose is to allow applications to store and retrieve data via indexed and sequential access.
A database may physically reside on any device supported for directly addressable I/O operations by Windows.
The maximum size of a record is 8110 bytes for 8 kilobyte pages with the exception of long value columns.
When a long value reference is stored in a record, only 9 bytes of in-record data are required.
Fixed and variable columns are typically represented in every record, even when the occurrence has a NULL value.
They are stored in separate B+tree from the clustered index keyed by long value id and byte offset.
Applications of version columns include being used to determine if an in-memory copy of a given record needs to be refreshed.
Auto increment columns are read only, and are automatically set when a new record is inserted into a table via an Update operation.
This allows multiple users to concurrently update a column by making numeric delta changes.
Update frequency must be carefully considered against retrieval patterns when performing table design.
A transaction is a logical unit of processing delimited by BeginTransaction and CommitTransaction, or Rollback, operations.
In addition, an advanced concurrency control feature known as escrow locking is supported by ESE.
Data definition operations may be performed with all the features expected of the transaction mechanism for record updates.
Data definition operations supported in this fashion include AddColumn, DeleteColumn, CreateIndex, DeleteIndex, CreateTable and DeleteTable.
This section of the document describes features and techniques for applications to write query procession logic on ESE.
Columns may be retrieved directly from secondary indexes, without accessing the data records, via the RetrieveFromIndex flag on the RetrieveColumns operation.
Index keys are stored in normalized form which can be, in many cases, denormalized to the original column value.
This is a simple method but has the disadvantage of potentially having to perform many disk accesses to bring records into memory to apply the residual predicate.
A join is a common operation on a normalized table design, where logically related data is brought back together for use in an application.
Tagged columns make this possible because of their good handling of both multi-valued and sparse valued data.
This process can be extended to a large number of logical tables as ESE can support up to 64,993 tagged columns.
The logging and recovery feature of ESE supports guaranteed data integrity and consistency in the event of a system crash.
Recovery is the process of using this log to restore databases to a consistent state after a system crash.
The physical sector size is expected to remain consistent between sessions; otherwise, an error is reported.
Work began on Data Access Engine (DAE) in March 1989 when Allen Reiter joined Microsoft.
They did both support a common query processor, QJET, which later together with the BC7 ISAM became synonymous with JET Red.
JET Blue first shipped in 1994 as an ISAM for WINS, DHCP, and the now defunct RPL services in Windows NT 3.5.
JET Blue was used by Active Directory and became part of a special set of Windows code called the Trusted Computing Base (TCB).
A Microsoft Exchange Web Blog entry[8] stated that developers who have contributed to JET Blue include Cheen Liao, Stephen Hecht, Matthew Bellew, Ian Jose, Edward "Eddie" Gilbert, Kenneth Kin Lum, Balasubramanian Sriram, Jonathan Liem, Andrew Goodsell, Laurion Burchall, Andrei Marinescu, Adam Foxman, Ivan Trindev, Spencer Low and Brett Shirley.