CouchDB as the Personal Database

| by Michael Hunger Follow 1 Followers on Jun 08, 2010. Estimated reading time: 2 minutes |

While attending the Berlin Buzzwords NoSql conference, Jan Lehnardt (@janl) one of conference organizers and co-author of CouchDB: The Definitive Guide (a free O'Reilly book). presented a talk titled: "Making Software for Humans - CouchDB and The Usable Peer-to-Peer Web".

Jan ethusiastically spoke about his views of couchdb's important core features, being:

  • ease of installation
  • document based
  • JSON as the common subset of data types shared by all programming languages
  • Well behaved HTTP/REST interface and API
  • Clean and simple two tier applications (html+javascript in the browser + couch+javascript as server)
  • Couch Apps
  • Ability to scale up and DOWN
  • Availability on many platforms/devices, also mobile (Android, Nokias Maemo/MeeGo and hints on iPhone versions)
  • Built in synchronisation, conflict handling and replication
  • Performance
  • Views generated via map/reduce in javascript
  • Database change notification support via HTTP-Socket


Jan also stressed privacy issues and ownership of data, mentioning facebook and the diaspora project. One proposed solution could be to keep more personal data (or at least a safe copy) in a local couchdb instance. ("Every machine should run a webserver anyway - that is one the original ideas of the web."). If you have those instances on any of your machines then information as:

  • contacts
  • appointments
  • bookmarks and browse history
  • even email and IM messages

could be stored as documents in the database and automatically synched (on the database level) to couchdb instances on all the other devices you use. The impact of applying this thought could be immense. Having just one fast storage engine and storage format for all this kind of personal data could lead to cleaner document formats across all applications. It would be much easier to write any number of clients for some of this content as you don't have to care for storing, searching and backing up the data and the interface is very clean. Creating machine local mash-ups (that can extend into the cloud) should also become much easier.


During the break some participants discussed ways of architect solutions in this lean two tier way. If you use HTML5 and javascript in the browser as the client, it runs on all platforms. CouchDB+javascript via REST would be your server (with all the HTTP infrastructure in front of it). And node.js+javascript can be used for the heavy lifting. So it would be possible to put your business logic into javascript libraries and reuse it at any part of your architecture.

The videos of the conference will be available for free in a few days.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Yes, we do this already for developer support apps :) by Adam Nemeth

We have a digital Kanban board (distributed team, it has to be seen by others too), using couchdb, and a simple requirements tool, in which we can enlist the requirements for a given task in a TODO-list way (both for devs and testers)

The kanban is based on SimpleKanban (which itself is based on jQuery), the requirements tool is based in extjs.

Both were one or two workdays to write for a guy (different authors), sometimes we patch them to solve our needs better.

Hate to be cynical, but... by Nicholas Calugar

Why would I want to store contacts, appointments, email, and IMs on a local machine? Google does that all just fine for me and syncs with my phone. I have a web server on my local machine for development only...anything I can't afford to lose goes in the Cloud.

Re: Hate to be cynical, but... by Neil Murphy

I like the cloud concept but I don't always have access to the internet. Also if the cloud service disapepars, so does my data, so I would always want local control over my data.

Re: Hate to be cynical, but... by Michael Hunger

Control over your data is one thing. The article highlights that synching between as many CouchDB instances as you'd like makes your data available. Those couch instances can also be ones in the cloud it doesn't matter. But having a fast, consistent store for these types of data would make it much easier to work with it, mash it and write apps that use it.


Video by Joao Cerdeira


Nice perspective, I think this is the future because I want to have my contact shared with my EEEPC, Comapany Laptop and my Android, but I don't want to give this information to Google or others.

I'm a developer and if you want I can help you to move on with this idea.

Can you send me the link to watch this presentation ?
"The videos of the conference will be available for free in a few days."


Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

5 Discuss