"Managing Time in Relational Databases" shows how to make the rich information content of bi-temporal data available to business users, while simplifying the design, maintenance and retrieval of that data. Metadata declarations eliminate the need to directly model temporal data. Temporal data maintenance is isolated in code that can be invoked to update bi-temporal data in any database and from any application program, across the enterprise. Anyone who can write queries against conventional data will be able to write queries against the bi-temporal data structures described in this book. KEY FEATURES 1. Integrates an enterprise-wide viewpoint with a strong conceptual model of temporal data management allowing for realistic implementation of database application development. 2. Provides a true practical guide to the different possible methods of time-oriented databases with techniques of using existing funtionality to solve real world problems within an enterprise data architecture environment. 3. Written by IT professionals for IT professionals, this book employs a heavily example-driven approach which reinforces learning by showing the results of puting the techniques discussed into practice.
Tom Johnston and Randal Weis, Managing Time in Relational Databases (Morgan Kaufmann, 2010)
Full disclosure: this book was provided to me free of charge by Amazon Vine.
Good lord, it took me forever to get round to finishing this. Three hundred forty days, according to the spreadsheet; I probably should have just let twenty-five more run out, but I wanted to get it off my plate. When I picked it up, like a few other reviewers (judging by their reviews), I was unaware that it was a textbook. I'm not sure I've seen anyone else mention it (I only skim reviews at best before writing my own so as to color my own ideas as little as possible), but the book also is geared toward a specific product from the authors. Had I known either of these things, I probably wouldn't have gone for it in the first place, but it's not as bad as all that.
Why? Because the ideas they're discussing here are really, really exciting. Temporalizing databases is a fantastic idea that no one has really been able to get their heads around in the SQL world yet because the SQL standard doesn't have the capability to do so yet. The authors have created an API that lays over SQL and handles the complexity innate in trying to get generic SQL to do something it's very much not meant to do; Managing Time in Relational Databases, then, is basically Asserted Versioning: Theory and Practice. There's enough theory that you could probably roll your own API, but—not surprisingly—these guys really, really want you to buy theirs. And I'll tell you what, just thinking about some of the concepts they're talking about here, I'd be willing to go talk to my CIO about working it in at my company if we actually used bi-temporal data...except that I'd probably have to give him the book as part of the explanation, and I'm pretty sure he'd fall asleep reading it. In true textbook fashion, Weis and Johnston take some of the most exciting stuff I've read in a computer book since I discovered Ron Penton's take on data structures and algorithms and make it drier than my sophomore-year Abnormal Psych professor's Ed Gein lecture. (My sophomore-year AbPsych professor is the only person on the planet who could find a way to make Ed Gein boring.) I've long held the hypothesis that any subject can be made interesting as long as the person writing about it presents it well (viz. Hodding Carter's delightful Flushed: How the Plumber Saved Civilization). I've now found a perfect book to illustrate the reverse.
Despite this book being the hardest slog I've had in years, and despite the constant product placement, the information herein is valuable to database engineers, especially those whose businesses rely on temporal data (dear Amazon: implement this stuff and maybe we can stop with the whole pages disappearing whenever a publisher decides to change an ISBN between pre-release and release gig), and because of that, if you're willing to do a bit of reverse-engineering to roll your own, it's still valuable. (Needless to say, if you shell out for the product, the book is pretty much mandatory.) ** ½
The first half of the book, minus the advertisements for their product, was helpful. Chapters would start out with great overviews, some excellent diagrams throughout them, and even stepped through the various sub-tasks of temporal actions on a single entity within a single bi-temporal table.
The second half of the book, when when they started to delve into the real problems that would be faced by someone trying to implement a bi-temporal framework, fell short. For instance, the first half of the book kept eluding to TEI (Temporal Referential Integrity) and TFKs (Temporal Foreign Keys) that would be explained later on. Of the 403 page book, it had only a single 20 page chapter with 3 diagrams on TEI and TFKs. The chapter was an overview at best. For a book that had a concrete implementation to back it up, of which they kept reminding the reader, I had expected more concrete descriptions of how to perform advanced actions.
Overall the authors wrote much, but didn't always say much. Fortunately for me, I've become accustomed to lengthy textbook style writing from my university studies. If you're looking for a concise book on the subject of bi-temporal data in a relation database, then this is not the book for you.
In conclusion, the book was ok. It covered the subject, even if some later topics were just overviews. It is not the book I'd recommend on the subject, but I wouldn't discourage someone from reading it if the subject really interested them and they wanted one more perspective on the matter.