Goldman Sachs have a nice ORM that supports bi-temporal Chaining. I suggest reading their documentation for some good explanations.
Basically it is the ability to have two time frames associated with data. One being Business Time and One being Processing Time. Very useful for certain industries that need to not only know what information they have but when they knew that information.
Types of Chaining
Chaining refers to how data is stored in a relational database such that changes to the data can be tracked.
Changes can be tracked along two time dimensions:
• Business Time - This is when the change actually occurred in the world
• Processing Time - This is when the change actually was recorded in the database
Business time need not always be the time when the change actually occurred. It can also be the time we want it to be.
For example, a bank might balance its books every day at 6.30 PM even though some banking activity might happen
after 6.30 PM.
There are three types of chaining :
• Audit-Only - In this type of chaining, changes are recorded with only the processing-time
• Business-Only - In this type of chaining, changes are recorded with only the business-time
• Bitemporal - In this type of chaining, changes are recorded with both the business-time and processing-time