Ayende @ Rahien

Hi!
My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:

ayende@ayende.com

+972 52-548-6969

, @ Q c

Posts: 5,953 | Comments: 44,409

filter by tags archive

Hidden Windows Gems: Extensible Storage Engine


Did you know that Windows came with an embedded database?

Did you know that this embedded database is the power behind Active Directory & Exchange?

Did you know that this is actually part of Windows' API and is exposed to developers?

Did you know that it requires no installation and has zero administration overhead?

Did you know there is a .Net API?

Well, the answer for all of that is that you probably didn't know that, but it is true!

The embedded database is called Esent, and the managed library for this API was just released.

This is an implementation of ISAM DB, and I have been playing around with it for the last few days. It isn't as nice for .Net developers as I would like it to be (but Laurion is working on that).

I think making this public is a great thing, and the options that this opens up are quite interesting. I took that for a spin and came up with this tiny bit of code that allow me to store JSON documents:

https://rhino-tools.svn.sourceforge.net/svnroot/rhino-tools/branches/rhino-divandb

It is not done, not nearly done, but the fact that I could rely on the embedded DB to do so made my life so much easier. I wish I knew about that when I played with Rhino Queues, it would have made my life so much simpler.


Comments

Mark

I'm curious ... what do you think how complex is the task to create a ESENT backend for NHibernate? Is it even possible?

Justin Chase

How is this not just a relational registry? Is there some sort of isolation mechanism to separate processes from accessing each other's data?

configurator

Wow, that's interesting. Can this be used as a normal relational database?

Ayende Rahien

Mark,

This is not a relational DB, NH assumes RDBMS.

Ayende Rahien

It is not registry, it is stored in a file, which you control

Ayende Rahien

Not really, this is a non relational store.

Chris Patterson

Wow, the second I saw the word Jet I remembered this beast.

I wonder if it is still using the same original MS Access engine it was using before.

I'm curious to see how far you take it, but I remember many long nights trying to repair corrupt jet databases several years ago.

Ayende Rahien

Chris,

No, it is not the same API nor is it the same engine.

Different implementation that happen to share the same prefix, I am afraid.

configurator

If the database can contain tables, what's stopping you from using it as a not-really-that-good database? Even Excel can be used as a relational database, can't it?

LukeB

Sounds like an embedded MultiValue database, like D3 or OpenQM

Ayende Rahien

Not really. It doesn't have SQL.

And it doesn't have joins.

It is literally structured storage. You get indexes, and the over experience is very similar to the one you get from BDB.

Scott White

Interesting, I would be more prone to use Sqlite since it's relational and deals with the same programming constructs that I am familiar with.

James Newton-King

Cool, Json.NET. Let me know how you get on with it

Seth

If only someone would combine ESE with Firefox sqlite, shake and not crash

Comment preview

Comments have been closed on this topic.

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. The RavenDB Comic Strip (3):
    28 May 2015 - Part III – High availability & sleeping soundly
  2. Special Offer (2):
    27 May 2015 - 29% discount for all our products
  3. RavenDB Sharding (3):
    22 May 2015 - Adding a new shard to an existing cluster, splitting the shard
  4. Challenge (45):
    28 Apr 2015 - What is the meaning of this change?
  5. Interview question (2):
    30 Mar 2015 - fix the index
View all series

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats