Immutability is a fantastic tool, especially when working with enterprise data. It's relatively easy to implement your own temporal tables on most existing databases, no special libraries or tools required. It seems really trivial/obvious, but I'll admit I first stumbled into the concept using the AS400 at work. If you make a mistake on payroll in IBM's old MAPICS program, you don't overwrite or delete it. You introduce a new "backout record" to nullify it, then (maybe) insert another record with the correct data. It seems obvious once you've seen the pattern.<p>I've made a few non-technical eyes go wide by explaining A) that this is done and B) how it is done. The non-tech crypto/blockchain enthusiasts I've met get really excited when they learn you can make a set of data immutable <i>without</i> blockchain / merkle trees. Actually, explaining that is a good way to introduce the concept of a merkle tree / distributed ledger, and why "blockchain" is specifically for systems without a central authority.<p>(Bi)Temporal and immutable tables are especially useful for things like HR, PTO, employee clock activity, etc. Helps keep things auditable and correct.
My main gripe with immutability is that making updated data requires building a full copy of the data again with the changes. Sure, you could have zippers to aid in the updating process by acting as a kind of cursor/pointer, but raw access to data beats them anytime (even if you optimize for cache).<p>So if you had to optimize for raw speed, why not choose mutable data?<p><a href="https://ksvi.mff.cuni.cz/~sefl/papers/zippers.pdf" rel="nofollow">https://ksvi.mff.cuni.cz/~sefl/papers/zippers.pdf</a>
Related:<p><i>Immutability Changes Everything (2016)</i> - <a href="https://news.ycombinator.com/item?id=27640308">https://news.ycombinator.com/item?id=27640308</a> - June 2021 (94 comments)<p><i>Immutability Changes Everything</i> - <a href="https://news.ycombinator.com/item?id=10953645">https://news.ycombinator.com/item?id=10953645</a> - Jan 2016 (4 comments)<p><i>Immutability Changes Everything [pdf]</i> - <a href="https://news.ycombinator.com/item?id=8955130">https://news.ycombinator.com/item?id=8955130</a> - Jan 2015 (25 comments)<p>(Reposts are fine after a year or so; links to past threads are just to satisfy extra-curious readers)
I love the quote "accountants don't use erasers". So many things should be modeled over time and keep track of change right out the gate. Little things like Ruby on Rails always adding timestamps to model tables was super helpful but also a little code smell. If this is obvious enough to be useful everywhere, what is the next level? One more reason Datamoic is so cool: nothing is overwritten, it is overlayed with a newer record and you can always look back and you can always also always take a slice of the db at a specific time and have a complete and consistent viewbof the universe at that time. Immutability!
The “right to be forgotten” has caused a lot of conflicts with certain immutable data stores. If I can reconstruct a snapshot with a user’s data, have I actually “forgotten” them? Having a deadline where the merges fully occur and old data is rendered inaccessible is sometimes necessary legally.
One of my favorite papers! This reminds me of Martin Kleppmann's work on Apache Samza and the idea of "turning the database inside out" by hosting the write-ahead log on something like Kafka and then having many different materialized views consume that log.<p>Seems like a very powerful architecture that is both simple and decouples many concerns.
Editors and form validation are where this gets tricky. The user isn't just reporting new, independent observations to append to a log. They're looking at existing state and deciding how to react to it. Sometimes avoiding constraint violations with other state that they're <i>not</i> looking at is also important.<p>It often works out, but if you're not looking at the right version then you're risking a merge conflict.
Semi-related, but is there any repository(ies?) that comprise of these technical white papers? I'm fascinated by these papers whenever they show up in my feed and I gorge on them, and I'd love more. I can't be the only one thinking this way.