Facilitating the spread of knowledge and innovation in professional software development



Choose your language

InfoQ Homepage News CouchDB as the Personal Database

CouchDB as the Personal Database


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.

We need your feedback

How might we improve InfoQ for you

Thank you for being an InfoQ reader.

Each year, we seek feedback from our readers to help us improve InfoQ. Would you mind spending 2 minutes to share your feedback in our short survey? Your feedback will directly help us continually evolve how we support you.

Take the Survey

Rate this Article


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.

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

Community comments

  • Yes, we do this already for developer support apps :)

    by Adam Nemeth,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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,

    Your message is awaiting moderation. Thank you for participating in the discussion.


    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

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


Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.