Document Based Storage Systems

The convenience was really cool, but the limitations became quickly apparent.

I found myself managing my own index of documents; i.e. no fun. That might be ok in some cases, but not for browsing documents. It might be possible to eventually and easily automate indexing, but I decided to read up again on the other NoSQL projects.

I'm surprised with how many of these are written in erlang! Of them all, CouchDB (erlang) and MongoDB (C++) look the most impressive. They are way more than a key/value storage system; but could be used as such, as long as the documents are in JSON format.

Since the documents are stored in JSON, they have some inherent key/value pairs. Thus, these keys can be used for some tentative relationships, aka views.

While I prefer erlang to java, its still a fairly big dependency for a database. Thankfully, mongodb is written in C++ and there are debian packages available, as well as in the official debian "sid" repository.

So it looks like I'll eventually be switching from memcachedb to mongodb.

NOTE: I think its awesome that the mongodb developers chose the AGPL for the license!

UPDATE: A big difference between CouchDB and MongoDB is that CouchDB uses a REST style interface, while MongoDB does not, it uses language specific drivers. However, as the MongoDB docs state, a REST interface can be created in the future, and it appears there are some projects which make this possible, like sinatra_resource.