CouchDB in desktop applications

Following my last post I was considering writing a Venus filter which adds all feed items into a CouchDB database. This could then be queried by a modified wxVenus or a  webapp (using the CouchDB jQuery library) or whatever.

Thinking specifically about wxVenus, which is a desktop appliaction, CouchDB is like MySQL in that you must have the server up and running before your application tries to use it, and (afaik) there is no way to embed the server itself into your application, which places quite a bit of burden on the user.

My initial plans were to use SQLite which I can embed and use happily without another daemon running beforehand, but would mean I have to set up a schema and do all that tedious INSERTing, SELECTing and so on (I appreciate I could go all ORM on its ass, but again the development effort is much much higher than that with CouchDB).

So, what to do? I suspect that for the moment I’ll go about getting CouchDB all nice and integrated, but it doesn’t look like it’d leave me with an application people can download, install the dependencies, and just run, does it?

4 thoughts on “CouchDB in desktop applications

  1. If you’re content to use a key-value database like couchDB (i.e. you don’t want/need an RDBMS), how about using one of the DBM-derivatives? QDBM, or Tokyo Cabinet, say?

    They’re fast and lightweight, and they don’t require a separate server process. QDBM is pretty mature and has APIs for most languages and packages for every unix and even Windows.
    Tokyo Cabinet is super-cool at the moment but doesn’t have a win32 build as far as I know.

  2. My excellent reason for not choosing either of those is that I’ve never heard of them :)

    In fact, as I progress with some work around the edges I’m beginning to wonder whether I need anything other than the disk-based XML files I already have (although I need to refactor how I store them).

    A little bit of digging suggests that neither QDBM or Tokyo would suit my purposes at the moment – I must be cross-platform (at least Windows and Linux) and I must have Python bindings. No win32 for Tokyo, and no Python for QDBM!

    • In all honesty, just having “Zope” in the title puts me off. 😉

      I know I can use StandaloneZODB but it’s just so much more boring!

Leave a Reply

Your email address will not be published. Required fields are marked *