The Four Pillars

I've been so heads down coding and implementing CouchDb that up until now I haven't really had the time to explain the technological vision clearly, as a complete package. CouchDb isn't a small thing, its a full distributed database system that addresses many difficult areas of data management. But explaining all the parts, the subtle design decisions and how they work together is a difficult thing, especially while building it as things rarely end up as they started out, they change and evolve as you go. But now that CouchDb is far enough along, I'm spending my full attention on how to present and explain this stuff to a broader audience.

One thing I decided a couple of days ago is a simple terminology change, switching the name of "computed tables" to "views" (thanks Ned). The change is so obvious I feel like a twit for not doing it earlier. I had a reason originally for computed tables, but the name just confused people. I also thought about calling them "virtual tables", but views are more understandable to developers of a variety backgrounds.

Right now I'm also working on good overview of core CouchDb system, and as way to explain the most fundamental parts, I came up with the Four Pillars of Data management:


  • Save - Because you want to save your data and reliably get it back.

  • See - Because you want your database to be able aggregate, organize and show you interesting things about your data.

  • Share - Because multiple people and machines need to access the data, even when offline.

  • Secure - Because you need to keep the private stuff private, and prevent others from changing your important data.

Catchy pillars huh? I'm thinking of making up a fake mathematician that came up with the four pillars, and planting articles on the Wikipedia. That they all start with S is probably significant somehow, not sure how yet. Maybe the aren't pillars, maybe they are the Fantastic Four Data Principles, or the Four Horsemen of the Data-apocalypse. They are the four something of data management.

Once we've established the 4 pillars and their incredible importance, then I show how CouchDb has all four:


  • Save - Robust, ACID compliant storage engine.

  • See - View engine to efficiently filter, format and organize data.

  • Share - Efficient, incremental, bi-directional replication.

  • Secure - Distributed security and validation model.

Then people will be all like "my database only has 2 of the 4 pillars, gotta get CouchDb."

Anyway, pillars aside, I know there has been a communication problem, namely me not explaining this stuff better. So I am working hard on explaining this stuff better to everyone, no new coding for while. I've already got a good overview of the architecture and back-end components, and it explains each of the parts and how they all are designed to work together seamlessly and reliably. Coming soon, stay tuned, don't touch that dial.

Posted December 13, 2006 12:09 AM