Code and Data belong togetherMay 21, 2012 · 2 minute read
After a couple of years of using and abusing CouchDB, I think some of the unique concepts embodied in Couch Apps needs to be spelled out.
- Code and data belong together
- Keep your data alive and breathing
- Share widely
Let’s look at the implications of this in more details:
Code and Data belong together
Data on its own is largely useless to most of us. And ditto for code. But bring the two together, and you have a powerful story to tell. By distributing raw data (e.g. census figures, or geograhic data), and your tools to transform and present that data together, others can mine your data for different interpretations, or even merging and remixing it with other sources and applications.
Keep your Data Alive
One of CouchDB’s most powerful features is the
_changes feed, simply
an HTTP endpoint per database, optionally filtered, of all changes taking
place in the database. Users can connect and disconnect at will, allowing
offline models with occasional connectivity, or allowing customers or
other users to get up to date data at their convenience. The savings
from a simple bandwidth perspective are also significant, obviously
if your data is JSON-compatible to begin with.
With the above two features, we’re now in a position to develop and evolve complex web-enabled applications, without being tied to an app store, or a platform, nor connectivity. We can send users out into the field, in medical situations with limited connectivity, and free them from expensive phone calls, or even the need for a high-end central server. Over time, when designed correctly, applications and data sets simply converge, eventually consistent.
These are not the sorts of things people usually think of, with respect to databases – complex middleware, application-specific code, and heavy dependencies between components would normally be required.
The applications and opportunities available with CouchDB are fundamentally different to what’s been possible in the past.