Reviewing LevelDBPart I, What is this all about?
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 . 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:
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.
More posts in "Reviewing LevelDB" series:
- (26 Apr 2013) Part XVIII–Summary
- (15 Apr 2013) Part XVII– Filters? What filters? Oh, those filters…
- (12 Apr 2013) Part XV–MemTables gets compacted too
- (11 Apr 2013) Part XVI–Recovery ain’t so tough?
- (10 Apr 2013) Part XIV– there is the mem table and then there is the immutable memtable
- (09 Apr 2013) Part XIII–Smile, and here is your snapshot
- (08 Apr 2013) Part XII–Reading an SST
- (05 Apr 2013) Part XI–Reading from Sort String Tables via the TableCache
- (04 Apr 2013) Part X–table building is all fun and games until…
- (03 Apr 2013) Part IX- Compaction is the new black
- (02 Apr 2013) Part VIII–What are the levels all about?
- (29 Mar 2013) Part VII–The version is where the levels are
- (28 Mar 2013) Part VI, the Log is base for Atomicity
- (27 Mar 2013) Part V, into the MemTables we go
- (26 Mar 2013) Part IV
- (22 Mar 2013) Part III, WriteBatch isn’t what you think it is
- (21 Mar 2013) Part II, Put some data on the disk, dude
- (20 Mar 2013) Part I, What is this all about?
Violates ISP though haha
If this works out for you, is there a chance we would have a Linux version of RavenDB?
Rasmus, That is a goal, yes.
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. ;-)
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).
Does your meaning of "grok" originate from the book Stranger in a Strange Land?
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."
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.