What are the proper circumstances to use immutable facts? Anytime you need an undo or audit features?
What are the proper circumstances to use immutable facts? Anytime you need an undo or audit features?
Immutable facts are great if you want to:
1) Avoid a large amount of updates/race conditions on your tables. Immutable facts, being immutable, can be done using purely inserts.
2) Want to keep a trail or context to the data you're storing. This has a benefit of keeping a log that you can later use to trace issues, behaviours or generate statistics. If you're keeping a state in a database column, without external logs you aren't able to check when or why that state changes. Immutable facts keep track of this for you, but require quite a bit more overhead.
I would almost prefer some way to "ghost" a row where without a specific switch the DBMS will never return it from a query.