Relational databases have been the norm for traditional as well as web applications. But, certain specialty web applications such as web based instant messaging have scalability needs that push the boundaries of traditional SQL based databases.
NoSQL databases are document oriented non-relational databases. It contains an ad-hoc and schema-free structure with a flat address space. It is query-able and index-able with a table oriented reporting engine that uses JavaScript as a query language instead of SQL.
With traditional SQL databases, the data is structured and interrelated. So, when a new data structure that wasn’t considered during the initial database design arises, it is usually an ordeal to make distributed upgrades.
With NOSQL databases, new data can be added alongside old data. The view engine is designed to handle new document types using JavaScript.
What is CouchDB?
CouchDB is an open Apache project that is a peer-based distributed system. Any number of CouchDB hosts (servers and offline-clients) can have independent “replica copies” of the same database, where applications have full database interactivity (query, add, edit, delete). When back online or on a schedule, database changes are replicated bi-directionally.
CouchDB excels in offline access for use without connectivity and the changes synced bidirectionally when connected. There is already calls from the community for including CouchDB support in HTML5.
Couch is actually an acronym for ‘Cluster of Unreliable Commodity Hardware’. CouchDB is supported on GNU/Linux and Mac OS X systems with no official support for Windows.
If you are looking for real-world examples, the online instant message client Meebo uses CouchDB as their backend. That says a lot about how reliable this database is.
Also, you could get some more information on CouchDB at the CouchIO blog.
If you are interested in similar NoSQL projects, check out Voltdb, MongoDB and Cassandra.