[erlang-questions] CouchDB - An Erlang Project

Jan Lehnardt jan@REDACTED
Thu Jul 3 16:09:12 CEST 2008

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?

PS: You can find CouchDB at http://couchdb.org/ and you
can even follow it on Twitter at http://twitter.com/CouchDB

More information about the erlang-questions mailing list