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.
Read more: Greg's Cool [Insert Clever Name] of the Day
Read more: ESE C#/C++ toolkit 1.2 for Microsoft Extensible Storage Engine
QR:
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.
Read more: Greg's Cool [Insert Clever Name] of the Day
Read more: ESE C#/C++ toolkit 1.2 for Microsoft Extensible Storage Engine
QR: