Microsoft Reveals Extensible Storage Engine Code

Microsoft opened the source code for an embedded storage engine Extensible Storage Engine (ESE), which implements the storage engine ISAM , which stores data sequentially and uses separate indexes for quick access to arbitrary records. ESE is used in Windows 10, but first appeared in Windows NT 3.51, released in 1995, and has been rewritten several times since then. Microsoft uses the ESE engine to store mailbox content in Office 365 and MS Exchange, underlies the JET API, and is also used in Active Directory and Windows Search services. The code is written in C ++ and open source under the MIT license.

The engine belongs to the category of NoSQL systems and can be used in applications for organizing the storage of structured data, which you need to access quickly, but ordinary files or the registry are not suitable due to the size and lack of indexed access. It supports moving through data using a cursor, setting flexible data schemes, ACID transactions, a mechanism for restoring data integrity in the event of a crash, caching the most requested data in RAM.

ESE can be effectively used for storages ranging in size from several megabytes to terabytes. Provides high concurrency of transactions, which are implemented using a write-ahead log and a snapshot-based isolation model. The engine also includes several helper libraries that can be used separately. In particular, libraries are provided for synchronization, lock management, manipulation of STL-like data structures, abstraction of access to the operating system, and management of caching and block devices.

In its current form, the sources are published without comments, build scripts and test suite. which have been removed. It is noted that the missing parts will be published in the future, after the analysis of their correctness is completed (the code has a very long history, was not designed for publicity, and, apparently, when writing comments, the developers did not limit themselves properly).

/Media reports.