Monday, January 02, 2012

ESE C#/C++ Toolkit v1.2 for Microsoft Extensible Storage Engine (ESE) (ESE is the database engine that's been in the box since Windows 2000)

iiobo - ESE C#/C++ toolkit 1.2 for Microsoft Extensible Storage Engine


Many developers are unaware that one of the most high performance, innovative and rich database engines available is built in as standard to all copies of Microsoft Windows. Microsoft have recently published the APIs and it is now available to use for free.

Extensible Storage Engine (ESE) is part of a special subset of Windows technologies known as the Trusted Computing Base (TCB). The technology is used as the primary database in such notable applications as Windows Active Directory, Microsoft Exchange, and Windows Vista.

The database technology offers very high performance, scalability to 16 terabytes of data per database file, enterprise features such as hot backup and a high degree of flexibility supporting for example transactions nested up to 7 levels.

ESE can be used to add lightweight data storage features to Windows applications and is also provides a very attractive foundation for custom database server applications where peformance is especially important.

Numerous innovative features supported by the database include:

  • Tagged columns
    A tagged column can store multiple values. For example, you could store all the tags associated with a row of data (such as a forum post) in a single row. This denormalization can massively increase performance when the column is indexed, as it effectively removes joins from lookup operations.
  • Reference counted long columns
    Long column values can be copied between rows in such a way that no data is actually copied, and instead the underlying data becomes shared and reference counted. This makes it possible to add a large video file, say, to multiple rows efficiently, again eliminating join requirements.
  • Conditional columns
    A conditional column controls whether a row appears within specified indexes. This makes it possible to remove and re-surface rows in indexes on demand - for example to implement temporary delete or archival features, or as the basis for high performance garbage collection strategies.
  • Version and Escrow columns
    A version column is incremented each time its row is modified, and escrow columns contain counts that may be safely updated outside of a transaction to improve performance (rather like interlocked memory values).
  • See Microsoft's low-level API reference to find out more.


Free C++ and C# Downloads

We have made a packages of files available as a free download, which can assist with new ESE projects. Please come back and visit often as we plan to make an increasing number of files available, and hopefully eventually start an open source development effort. They are licensed using The BSD License below.

Please contact us if you are interested in licensing the full library, toolkit and sample application.


Came across this yesterday and since I've not seen much on ESE recently...


Related Past Post XRef:
Did you know Windows (since Windows Server 2000) comes with a transactional database engine already baked into the OS, which you can use in your applications today, no download required?
Managed ESENT v1 released – Managed/.Net access to the free embedded database (“Extensible Storage Engine/ESE”) that ships with Windows

No comments: