Thursday, March 31, 2011

Intriguing Use of CouchDB in Zambia

Cory Zue:

We've got computers at clinics that are maintaining patient records. That data needs to sync to cell phones and to a central server, but around 35% of them don't have power, so we're installing solar panels. So one limitation is that that the system has to work on low resources.

None of these clinics have Internet out of the box, so most of the time our only Internet connection is through a GSM modem that connects over the local cell network. It's very hard to move data in that environment, and you can't do anything that relies on an always-on Internet connection with a web app that is always accessing data remotely.

CouchDB was a really good option for us because we could install a Couch database at each clinic site, and then that way all the clinic operations would be local. There would be no Internet use in terms of going out and getting the patient records, or entering data at the clinic site. Couch has a replication engine that lets you synchronize databases — both pull replication and push replication — so we have a star network of databases with one central server in the middle and all of these satellite clinic servers that are connecting through that cell network whenever they're able to get on, and sending the data back and forth. That way we're able to get data in and out of these really remote, rural areas without having to write our own synchronization protocols and network stack.

This might be the way to build a relatively lightweight school census system for a country in the developing world.

Note that I've been trying really hard to not shoot my mouth off about trendy new databases I don't actually understand.

No comments: