2024-06-10 –, Frannz Salon
The talk explores managing transaction and validity times in data storage, using examples like retroactive creation of shipping documents. It highlights how bitemporal databases aid in this process and discusses the complexities of implementing such solutions.
For our data storage, there are two time axes that we, as software developers, must manage with great effort: the transaction time and the validity time of a data record. While the transaction time records when a data set was written to storage, the validity time indicates from when to when a data record should be considered in the program logic. When both of these time axes intersect, the complexity of our persistence and query logic often increases exponentially. An example can be a retroactively recorded salary increase: An employee in our company is granted a salary increase on March 14th, which is retroactively effective from January. The validity period is clear, but how do we explain to the tax office why the lower amount was transferred in January and February? What validity could we assume at the respective transaction time, and how can we replicate the case in our software? Databases that can map bitemporality can help us manage these two time axes. In this talk, I will illustrate how they can be used, which use cases we can represent with them, and how complex such solutions can become if we build them ourselves with application logic or database triggers.
Tim founded the company lambdaschmiede GmbH. He helps his clients to digitalize their manual business processes with Java and is a co-founder of the Java Usergroup Mainz. In his free time, he accumulates new side projects with Java and Clojure and sometimes even finishes one of them.