The joy of schema less development
As 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
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...
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.
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 ...
Catalin true the data is absolutely not schema-less, it's just that the schema is loose not rigid.
Comment preview