Dear Erlang Community, I'd like to tell you about a project that you might have heard about, but don't know a lot about:
Enter CouchDB. CouchDB is written an Erlang (why would I write otherwise), but not very well established in the Erlang community. I'd like to change this fact with the help of this email. I went to the Erlang eXchange last week only to discover that when I tell you guys about CouchDB, you get very enthusiastic. Now, not all of you were in London and I'd like you to give a chance to get enthusiastic, or at least interested. (Sounds a bit like I would make a decent sales person, not bad for a programmer...) CouchDB is a distributed document database written in less then 7k lines of pure Erlang (with a bit of C mixed in). Here's the pitch: Most data is not inherently relational, yet relational databases are often the default when it comes to storing data. The downside is that an RDBMS is hard to learn and use upfront and hard to scale later. You have been working with non-relational databases for decades, you know that they are easier to use and easier to scale. CouchDB's main API is RESTful. It talks HTTP natively. This helps to reduce the learning curve further since everybody knows HTTP and all our tools support HTTP. All you need to talk to CouchDB is a browser! CouchDB stores data in the JSON format (through the API and in Erlang terms internally). It targets not only Erlang developers but everybody and JSON allows it to read and write everybody's data. CouchDB is built for concurrency. It stores data in an ACID compliant MVCC data store. It supports any number of parallel read and serialised write access. The data storage module is optimised to reduce hard-drive head seeks on reads and writes. It never overwrites data that is safe on disk and as a result, when it reports a write operation to be finished, the database files are guaranteed to be consistent on disk. If it crashes or if the hardware goes away, CouchDB just restarts later and is up and running without the need to run any lengthy consistency checks. To make sense of the no-schema data you can store with CouchDB, it support views. A map-reduce powered mechanism that allows you to filter, collate and aggregate your data that can be massively parallelised. A single-node database is no good in the modern computing world. To mitigate this problem CouchDB comes with a world-class replication system (that is influenced by the Lotus Notes database, but don't tell anybody!). Replication solves the general problem of data synchronisation. Be it for fault tolerance, load balancing or distributed- (and offline-) work environments. It comes with automatic conflict detection and resolution. Pretty awesome. Finally, CouchDB is free software released under the BSD-like Apache 2.0 license. See http://incubator.apache.org/couchdb/docs/overview.html for a more complete overview of what CouchDB wants to be. A lot of things are working today and are working well, but it still misses a few crucial features. Maybe you can jump aboard and help out? If you do, get in touch. -- Thanks for listening, this was a long read and I apologise, but I couldn't find less words to tell the same. To wrap this up: You guys seem to be running an awesome party, can we join? Cheers Jan -- PS: You can find CouchDB at http://couchdb.org/ and you can even follow it on Twitter at http://twitter.com/CouchDB
