ManagedEsent 1.6 released. LINQ support for PersistentDictionary.

There is a new release of ManagedEsent on Codeplex. There are some new APIs, bugfixes and performance improvements. The PersistentDictionary class now supports LINQ — it can examine a query and retrieve only matching records from the database. Some examples of LINQ queries that work this way: from x in persistentDictionary where x.Key > 3 select…


ESENT Multivalue tutorial

Multivalued columns can be very useful for simplifying data schema and improving performance, but they can be complex to use (they also make Data Normalization geeks feel uneasy). I put a multi-value tutorial up on the ManagedEsent wiki. It uses the managed APIs but would be easy to translate to unmanaged code.


Using ManagedEsent from F#

Cameron Taggart has a blog entry on using ManagedEsent from F#: The ESENT programming model centers around a database cursor (JET_TABLEID). The cursor is located on a record, can navigate to other records individual columns can be set/retrieved. This is quite different than a functional programming model, which would center around a stream (enumeration) of records instead…


Version 1.5 of ManagedEsent released. PersistentDictionary goodness

There is a new release of ManagedEsent on Codeplex. There are some new APIs, constants for the new Windows 7 ESENT features, bugfixes and performance improvements.  There is also a new Esent.Collections.dll which contains a PersistentDictionary generic class. This is a drop-in compatible replacement for the generic Dictionary or SortedDictionary classes for applications that need…


6 New ESENT features in Windows 7

A quick look at some of the new features that are available in the Windows 7 version of ESENT. You’ll need esent.h from the Windows 7 SDK to see these definitions: 1. Column Compression Columns of type JET_coltypLongBinary and JET_coltypLongText can now be compressed. There are two ways of enabling compression. Create the column with…


Multimethods in C# 4.0 with ‘dynamic’

(Continuing from the post on implementing the Visitor pattern in C# 4.0) A virtual method is polymorphic in one dimension (the runtime class of the object the method is attached to). Multimethods (multiple dispatch) are polymorphic in multiple dimensions, which can be very useful in some cases. The dynamic keyword in C# 4.0 allows for…


Implementing the Visitor pattern with the ‘dynamic’ feature of C# 4.0

A lot of the talk around the new dynamic keyword in C# 4.0 (available in the beta of Visual Studio 2010) is around interaction with external components (dynamic languages, HTML DOM, COM) but I’m most excited about being able to stragetically add dynamic lookup to an ordinary C# program. Normally, when an object is passed…


Kobe – the Web 2.0 application that wasn’t

Microsoft has released Kobe, “a getting started resource kit for planning, architecting, and implementing Web 2.0 applications and services using the Microsoft Platform” and a lot of the response has been quite critical (Ayende, Karl Seguin). While the code, architecture and lack of tests have all been thoroughly criticized I think there is an even higher-level…


iiobo C++ ESE library

(I saw a link to this from the Wikipedia entry on esent) A company called iiobo has released a C++ toolkit for using esent (I’m guessing they developed it for internal use). I haven’t looked at the code, but their website says that they have: “C++ classes that provide a higher level abstraction of Extensible…


Version 1.2 of ManagedEsent available on CodePlex

Version 1.2 of the ManagedEsent interop layer for the ESENT database engine is now available on CodePlex. The three most useful additions here are: JetEscrowUpdate JetIntersectIndexes Helper functions to set/retrieve columns as DateTime JetEscrowUpdate works like Interlocked.Add, allowing a column to be updated in an atomic fashion by mutliple sessions without conflicts. There are several restrictions — the column must have…