Ayende @ Rahien

It's a girl

Reviewing LevelDB, Part I: What is this all about?

LevelDB is…

a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

That is the project’s own definition. Basically, it is a way for users to store data in an efficient manner. It isn’t a SQL database. It isn’t even a real database in any sense of the word. What it is is a building block for building databases. It handles writing and reading to disk, and it supports atomicity. But anything else is on you (from transaction management to more complex items).

As such, it appears perfect for the kind of things that we need to do. I decided that I wanted to get to know the codebase, especially since at this time, I can’t even get it to compile Sad smile. The fact that this is a C++ codebase, written by people who eat & breath C++ for a living is another reason why. I expect that this would be a good codebase, so I might as well sharpen my C++-foo at the same time that I grok what this is doing.

The first thing to do is to look at the interface that the database provides us with:

image

That is a very small surface area, and as you can imagine, this is something that I highly approve of. It make it much easier to understand and reason about. And there is some pretty complex behavior behind this, which I’ll be exploring soon.

Comments

nick
03/20/2013 10:28 AM by
nick

Violates ISP though haha

Rasmus Schultz
03/20/2013 11:56 AM by
Rasmus Schultz

If this works out for you, is there a chance we would have a Linux version of RavenDB?

Ayende Rahien
03/20/2013 11:59 AM by
Ayende Rahien

Rasmus, That is a goal, yes.

Judah Gabriel Himango
03/20/2013 06:55 PM by
Judah Gabriel Himango

Looking forward to this series of posts. My own C++ skills are outdated, so it might be helpful to see you analyze the LevelDb codebase.

Looking at Rob Ashton's posts on LevelDB, it sounds like LevelDB may work as a base for Raven.

If we get a working Linux version of RavenDB, I claim dibs on building the Linux-friendly HTML version of the Studio. ;-)

Edward
03/20/2013 08:18 PM by
Edward

@judah

Buy a mac/pc ? :-)

At our company we converted our main app from html to silverlight. Its faster, nicer, more predictable, good updatable, access to system resources, everything works as expected, sexyer, C#, linq, RX, more work pleasere and with iphone app behaviours and perf We will never go back to html with the latest fashions js framework from hell (pardon my french).

Stephen Hardie
03/20/2013 10:11 PM by
Stephen Hardie

Does your meaning of "grok" originate from the book Stranger in a Strange Land?

Judah Gabriel Himango
03/22/2013 09:36 PM by
Judah Gabriel Himango

Edward,

I'm a former leader in the Silverlight community in the US. I wrote articles about Silverlight development, stumped for Silverlight at user groups, and convinced developers we should stay away from native web development.

I'm no longer of that opinion.

As the author of the open source version of Silverlight wrote,

"I felt that Silverlight had a bright future, and that it could turn to fill an important void, not only for web development, but for desktop development in general. And this was largely one of my motivators. I am very sad that Microsoft strategy cut the air supply to Silverlight."

(http://lists.ximian.com/pipermail/moonlight-list/2011-December/001392.html)

Indeed, Silverlight is on life support. Raven Studio is fine for now; Silverlight will work (on Windows) for years to come. But if we're serious about Raven adoption on non-Windows platforms, we will eventually need an alternative, such as a native web version.

Comments have been closed on this topic.