It's about time – Approaching bitemporality
javahippie.net
javahippie.net
> What is bitemporality?
You have this as a header but I’m really bummed out that the article doesn’t have a sentence that begins with “bitemporality is..” I think some illustrations to accompany your ideas might go a long way as well, as I still have no idea what bitemporality is in this scenario, although it sounds cool.
> The “bi” in bitemporal database hints at the fact, that for the use case described above we have two different times we’d like to track: On one axis we have the validity of the data.
I genuinely don’t mean to be rude, only to provide constructive feedback. This section kind of broke my flow, because you’re implying that validity is a form of time: “ two different times we’d like to track: On one axis we have the validity.” Is that intended?
I'm not the OP, but I built this visual tool recently which might be of interest https://bitemporal-visualizer.github.io/
Git is a database that tracks system time.
A calendar on git is bitemporal.
That said, nowadays it should probably be possible to store the persistent data structure in a log-structured file for instance and to make use of fast random-reads of enterprise PCIe SSDs without the indirection of another data store / index to traverse for each index page.
Furthermore, even with such constraints in place, I believe it can still happen that concurrent modifications of parent and child rows may result in an inconsistent state, because the reads e.g. on the child table for the constraint triggered by an update/insert on the parent table may see an outdated state that is in the process of being updated by a concurrent transaction on the child table, and vice versa.
It is very difficult, if not impossible, to implement airtight constraint checks for bitemporal data across tables if the DBMS doesn’t have native support for temporal tables.