Ayende @ Rahien

Refunds available at head office

The joy of schema less development

imageAs the author of a schema less database, I find myself in the strange position of the barefoot shoemaker. I need to explain a bit. Our current storage engines, Esent and Munin (which was designed mostly to be like Esent) have rigid schemas. There are tables, and indexes, etc. This means that features that touch the storage layer tend to be much more complex. They require migrations, adding new features that require storage means that we have to create new storage tables, or modify indexes, or any number of a bunch of stuff that we developed RavenDB so our users wouldn’t have to.

I have been working with our managed implementation of LevelDB quite a lot lately. In order to do more than merely write tests for this, I tried to create a feature complete feature, an aggregation engine. The code is not production worthy (yet!), but what struck me quite hard was the fact that except for the fact that the storage layer is full of bugs (well, that is why I was writing stuff on top of it, to expose it), I had a blast actually working with it.

I could make modifications & changes with hardly any friction, and it was a real pleasure to start working with things in this fashion.

Comments

Harry McIntyre
06/27/2013 10:49 AM by
Harry McIntyre

Schema-less is great, but it's not totally migration free. I think I need a tool to help me figure out what's changed when I deserialize from the db, maybe a visual with the data thats coming out, and the class that I'm trying to map it to...

Khalid Abuhakmeh
06/27/2013 11:54 AM by
Khalid Abuhakmeh

For me that is one of the major joys of working with OSS tools and frameworks. You don't always have to know what's going on, but you can see what is going on when you have to. Excited to try out the stuff you've been working on.

Catalin Pop
06/27/2013 12:58 PM by
Catalin Pop

You always have a schema! The beauty of the storage engine NOT knowing about it, is that schema knowledge stays where it should stay, only at the client.

P.S. A JSON document is self describing (structured and named elements), therefore it's "schema" is contained inside it, sort of ...

Chris Marisic
07/01/2013 02:54 PM by
Chris Marisic

Catalin true the data is absolutely not schema-less, it's just that the schema is loose not rigid.

Comments have been closed on this topic.