User: Password:
Subscribe / Log in / New account


CouchDB at CouchCamp: Relax

September 15, 2010

This article was contributed by Josh Berkus

It's a rare developer summit which ends with a bonfire, s'mores and a sing-along. But somehow it seems appropriate for CouchDB, a new database whose motto is "relax". Last week I went to CouchCamp at Walker Creek Ranch in California, and enjoyed a different kind of conference for a different kind of database.

The CouchDB Document Database

CouchDB is a "document database", a classic type of database which debuted in the 1960's and has periodically reappeared each decade, most recently through the various XML databases. Today, many of the new "NoSQL" databases are document databases, including Amazon SimpleDB, MongoDB, and MonetDB.

Document databases make use of the intuitive concept of each item in the database as a document with a document ID and a large variety of data inside the document, including everything from blocks of text to complex nested structures. Each database is then a collection of documents, instead of tables and columns. Access to data is via either the document ID, or by various secondary indexes. As a rule, document databases do not use SQL, but rely on other interfaces like XQuery, HTTP and proprietary APIs.

Unlike its predecessors, CouchDB may have a combination of features which will ensure lasting popularity. First, the database is designed to be 100% accessible and familiar to web developers, thanks to data access via RESTful HTTP interfaces, data storage using the popular JSON serialization format, and database programming in javascript. Secondly, CouchDB has extremely user-friendly asynchronous multi-master replication, designed to support multiple disconnected copies of your data. And finally, it supports the use of map/reduce functions to do multi-database queries, sharding and scaling, and even to build calculated indexes or "views".

Unlike many other new non-relational databases, CouchDB supports ACID (Atomic, Consistent, Isolated and Durable) transactions like many SQL databases do, making it more appropriate as a primary data store. CouchDB is written in Erlang.

The CouchDB project is a 2-year-old Apache project and recently released version 1.0 (immediately followed by a patch, version 1.0.1). While several of its developers are now working for a Berkeley startup called CouchOne, the project remains completely community-based. Nowhere was this more evident that CouchCamp.


The Walker Creek Ranch is an hour's drive north of San Francisco through the winding roads of rural Marin County. There is no cell phone reception, Internet access is intermittent, and there are more foxes and dairy cows than people. This was a different sort of "unconference"; for one thing, the poor connectivity and isolation meant that we had to pay attention to the talks and discussion sessions. It also meant no "tweeting" about the conference sessions.

Eighty or ninety people attended CouchCamp, about evenly split between database developers, contributors to CouchDB, and users of the database. In general, they came from all over the United States, with only a few coming in from Europe. CouchCamp was a community summit rather than a user conference, with a lot of the public conference activity to take place at in Berlin later this month.

The conference began with a campfire-lit keynote by Damian Katz, inventor of CouchDB. A former Lotus Notes developer, he wanted to create a database which encouraged sharing and collaboration. Originally he wrote CouchDB in C++, but, once he started grappling with concurrency issues, he rewrote it in Erlang. He's as surprised as anyone that it's now a full-time job and finds himself living in the San Francisco Bay Area -- but he was even more surprised when a raccoon interrupted his talk.

The next two days of the conference alternated between general talks and breakout discussion sessions. The talks, given to all attendees, included Stuart Langridge of Canonical on the use of CouchDB in UbuntuOne, Ted Leung of Apache on the importance of community, and Dion Almaer of Palm on CouchDB on smart phones. Interestingly, the CouchCamp organizers also chose to include talks by Selena Deckelmann and myself about features of PostgreSQL which the CouchDB project could learn from or even "steal".

In breakout sessions, I learned about GeoCouch, a new competitor to PostGIS, and Spatialite for open source geographic databases. We also discussed more technical topics, including CouchDB's security model, database "compaction" (garbage collection), the current full-text indexing work in progress, and how to create a CouchApp. Database hackers spent a lot of time in both sessions and at meals hashing out longstanding technical issues; I would not be surprised to see a rapid release of version 1.1.

There were also a few announcements at or around the conference. Cloudant, a cloud host for CouchDB applications, launched BigCouch, a cloud-scaled version of CouchDB with some form of automated sharding. announced its change of name to CouchOne, and then announced a bunch of new hires, including the former documentation lead for MySQL AB. Damian warned people about the need to use version 1.0.1 instead of 1.0.0, which includes a data corruption bug. CouchDB also now comes built-in to newer versions of Ubuntu.

Of course, being in California, there were quite a few "gourmet" touches to roughing it: microbrew beers, oysters from nearby Tomales Bay and cheese from nearby Cowgirl Creamery. The only thing missing was a wine tasting; maybe I'll arrange one next time.

If you develop web applications, you owe it to yourself to check out CouchDB and see if it's appropriate for your current project. Maybe you'll come out to Walker Ranch next year.

Comments (4 posted)

Brief items

Quotes of the week

Whether a service runs on nonfree software is not a question that directly affects the people that use the service. We don't know -- we can't tell as users -- whether there is any proprietary software on the server. If there is, we are sorry for Google's misfortune and encourage them to replace it soon, but that is no reason to refuse to deal with them in the mean time.
-- Richard Stallman

It seems to me that at the present moment LLVM's frontends are better than GCC's, and GCC's backends are better than LLVM's. By this I mean specifically that LLVM's frontends generate better diagnostics, whereas GCC's backends generate code that has better runtime performance. (LLVM also appears to run faster, which is a good feature but not in my mind a determining one.) Therefore, I see a clear benefit to clang->gcc, but I do not see a clear benefit to gcc->llvm. This comment is of course entirely independent of the licensing issues.
-- Ian Lance Taylor

Comments (1 posted)

FMPS v1.0

The Free Media Player Specifications (FMPS) are "designed to provide standard and complete ways to perform common tasks with media (especially music) metadata that may otherwise be very difficult. They aim to be as simple as possible while still being robust and useful, and to be consistent across metadata formats." Version 1.0 of this specification is out; there is also a group called the "FMPS Alliance" forming to standardize details like attribute names across media players.

Full Story (comments: none)

GNU Radio gets a new maintainer

After shepherding the GNU Radio project for the last ten years, Eric Blossom has announced that he is stepping aside. "After discussions with GNU Radio developers over the past several months, I'm pleased to announce that long time GNU Radio contributor Tom Rondeau has agreed to take over the GNU Radio 'Maintainer' role from me. For those of you who don't know Tom, he's the perfect person for the job."

Full Story (comments: none)

IcedTea6 1.9 and VisualVM 1.0

IcedTea6 1.9 is a major new release from the IcedTea project. One notable change is that VisualVM support has been removed from IcedTea. Instead VisualVM has been split out to allow for easier packaging, avoiding the need for OpenJDK builds to be dependent on NetBeans platform changes leading to the release of VisualVM Harness 1.0.

Comments (8 posted)

pgpool-II 3.0 and pgpoolAdmin 3.0 released

pgpool-II is a PostgreSQL-based middleware system which provides features like connection pooling, replication, and load balancing. Version 3.0 has just been released. "Pgpool-II 3.0 is an important version in its history. The internal structure has been dramatically enhanced to make it more robust and easier to maintain. Also this version adopts to PostgreSQL 9.0's built-in replication. Many enhancements are added also."

Full Story (comments: none)

Newsletters and articles

Development newsletters from the last week

Comments (none posted)

Issue 1 of "PET: English Translation"

PET is a magazine done by "Python guys in Argentina"; the first issue has been translated to English and released. "It has been translated to english by us, and we are not native speakers. Hopefully Shakespeare will not raise from his grave to slap us for grievous offense against his language!" Topics covered include garbage collection, painless concurrency, taint mode, and more.

Full Story (comments: none)

Page editor: Jonathan Corbet
Next page: Announcements>>

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds