Wednesday, April 24, 2019

"Now" means last week

What the world needs is a dynamic database record/replay tool.

Okay, maybe not the world. But for me and for my software shop, that would address a need.

Migrating relational client-server databases from one version of the server software to another is a fact of life. So are breaking changes between versions.

So here's the idea: we take a snapshot of the production database, then record everything that's happening in it for, say, a month. Then we restore the snapshot on another database server, one with version N+1, and replay the recorded activity log against it. If the final state of the database matches the final state in production, then we know, with a good degree of assurance, that the system won't be broken by the version upgrade.

Nice vision. But there's a major monkey wrench in it - nondeterministic functions. If our goal is a database that's identical to the source, field for field, every input must exactly match, even the things that we don't usually consider input - the current time, the generated GUIDs, the numeric session IDs. That's why this vision is unlikely to come true without major support from the database vendor.


No comments:

Post a Comment