Benoît Chesneau: Relax your project with CouchDB

Tags: django, djangocon

Benoît is one of the CouchDB developers and the maintainer of CouchDBkit and a couple of other packages.

Why go with a NoSQL database? Often our data isn’t 300GB and the data fits one machine. Scalability isn’t always needed. And regular SQL databases are often fast enough, right? Some reasons for NoSQL:

  • Different kinds of data. Often in Django you have lots of models.
  • Easy denormalisation. You no longer have to make your data match the relational normalisation theory.
  • Easy data migration.
  • Your data is safe. With enough budget and machines, you can keep your sql data safe. Apparently it is easier and cheaper with a NoSQL database.
  • Flexibility and simplicity.

Some CouchDB characteristics: map/reduce; REST interface; document oriented database; append-only; replication.

Document oriented, what’s that? It means schema-less json with attachments. So you can put any json you want into it, you don’t have to define a schema beforehand. There’s a web frontend called Futon to introspect your data (basically phpmyadmin for CouchDB).

There’s more. For instance sharding. And geocouch, full r-tree.

CouchDBkit is a CouchDB python framework. It is a simple client and it also comes with a django extension. The django extension allows you to define models (if you want) so that you also can generate forms for it.

For the next version, he wants admin integration, some new mappings (objects with annotations), eventlet support, multidb support.

Question: the current couchdb version is 0.11 or so. Should we wait for 1.0? Answer: just use the 0.11, it is stable.

blog comments powered by Disqus
 
vanrees.org logo

About me

My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):