I haven’t being posting anything forever, but now I am going to fix this, and planning to write about all the interesting things in the World of Data on a more regular basis. And I am going to start (or rather resume) by writing about the book I read recently – the book which totally blew my mind!
The book is called Managing Time in Relational Databases: How to Design, Update and Query Temporal Data, and it presents the most complete bi-temporal data model. Actually, you may call it “tri-temporal”, because in the “classic” bi-temporal model you have an “effective” time and a “system time”, and the system time just indicates, when the record was added or updated.
However, in the model which is described in this book – Asserted Versioning – an additional concept , assert time , is introduced. That is, “the time we believe(d) it was true”.
Let me tell you, that I was a biggest fan of Richard Snodgrass temporal database concepts probably since the time they were first published (or something close to that :)). I really “felt” them, and since I can’t remember when, I really wanted to implement them – in the real life, in some real project.
I can’t even say that nobody ever needed the temporal data. It’s just for some reason people strongly believe that storing changes is very resource consuming. Which is not exactly true. As the authors of this book point out, it’s way easier to convince your manager to store one year worth of transactional log than to store the objects versions for the same period of time, although the latter requires way less space and is way easier to use. I was constantly have a hard time convincing people that 1) versioning is not so space -consuming, 2) you need to have both start and end date, not just the start date 3) the “current” state is not the one which has end date IS NULL, but the one having end date=INFINITY, and the list can go on and on….
This being said, the book feels extremely refreshing. It just so clear what the authors are trying to achieve, I understand each and single statement completely, I do not need to go through all the examples to understand the concepts…
Now more than ever I really-really – really wish… I could implement it somewhere in the real life 🙂