Understanding the “NoSQL movement”
Instead, they employ key-value stores, or what are often called “document-orientated databases”. The idea is that you supply a key or unique piece of information that the storage engine can use to look up the data associated with that key, but the data doesn’t have to be a single piece of information: it might be a whole collection of data stored in some common format.
CouchDB is written in Erlang, a computer language that the cool kids are very excited about right now (as they were about Ruby last year, Python two or three years ago, and so on)
To be fair, Erlang does some things, and more specifically the kinds of things needed by a system such as CouchDB, very well indeed, and it certainly appears suited for this particular application. Regrettably, though, I’m no longer one of the cool kids, because I don’t have the time or inclination to learn yet another language right now, although fortunately you don’t need to know much Erlang in order to use CouchDB, thanks to its decent documentation.
Installation is simple, via an apt-get or two on a Debian-based system, an RPM install on a Red Hat-based system and so forth, and there’s even a Windows binary available. Once you’ve installed the system, you can start storing data by making simple HTTP calls to the server. It has a RESTful interface (which is another thing the cool kids love), so storing data is a simple matter of making a PUT call, while retrieving it again just uses a standard HTTP GET request.
The documentation has plenty of examples in a multitude of different programming languages, so unless you’re using something particularly obscure, you should be up to speed in no time.
Central to CouchDB is the concept of Views, which are essentially ways of indexing your data so you can look up entries based on any of these index values, not just by a single key. That’s rather different from some other offerings in this particular application space, and it will make people used to traditional RDBMSes just a touch happier (even though the documentation is at pains to point out that CouchDB is in no way an RDBMS).
Other distributed key-value stores
CouchDB isn’t by any means the only distributed key-value storage solution out there.
Others include MongoDB, Amazon’s (closed-source) SimpleDB, which runs on Amazon’s own Cloud computing platform, and Cassandra, which started life as a project at Facebook and has now been open-sourced. (Facebook is currently open-sourcing quite a lot of code, which is terrific – hats off to Facebook management for giving back to the developer community.)
A point to note, though, is that many of these projects are relatively young and therefore still under development, which means that there may be bugs still lurking, and you’ll need to be careful before you deploy them in a production environment.
However, if you find that you’re running into scalability problems, or if you’re simply interested in how the big guys do things and want to increase your knowledge in that area, it’s worth experimenting with one or more of these.