I’ve been consumed by thinking about database versioning. Why I wonder? What a silly thing to be consumed about. Is there just nothing to watch on TV? Hmm, no there isn’t. Still – I’m starting to get a bit sick of it … but before I drop it never to return I thought id’ better put brain to keyboard and dump out some of what I worked out.
I just wrote an article covering the basics of how to version records in a database. The basic algorithm and data structures, how to perform some of the typical things you want to perform with versioned data-sets, enhancement ideas and so on. Maybe someone will find it useful.
Thanks for the piece on the versioning data model. I have been dabbling with the same issues in my spare for the past few weeks (fyi, I am no db expert) and I came up with a rough model similar to yours although much simpler. I was thinking about using the same immutable model for Data: not updates just inserts and possibly a out of band clean up of Data/Revisions depending on the problem.
One thing I am a bit curious is how would you handle collections in your model, i.e. Data A contains Data B and Data C at a specific revision?
thanks,
yuri