> I am mostly convinced that writing a generic reader and writer interface that is oblivious to the data store is inherently hard.

It shouldn't be hard though.  Our read/write needs are actually simple:
* read raw values out
* write serialized rollups in
* update/read various metadata.

I think as long as we treat the data storage conceptually as long rows of columns that we'll be OK.