5 ms·
Datomic treats all data as immutable, so it can wind back to any version. When new data is written, the entire block is copied and rewritten rather than changi
by tyre 5y ago
Datomic treats all data as immutable, so it can wind back to any version.
When new data is written, the entire block is copied and rewritten rather than changing the data in-place.
- mdavidn 5y agoThis is similar to SQL checkpoints in that a rollback is all or nothing. It wouldn’t be segmented by tenant unless the each tenant has its own transactors.
- eyelidlessness 5y agoThe difference is that, unless you’re using a SQL database with direct/extended support for write-once immutability or a data model designed for it, once the transaction exits every successful committed change is ~final. A write-once immutability design (whether in the DB itself, or an extension, or a userspace implementation) lets you reconsider and rework mistakes after they’re committed, not unlike how you might do with git rebase etc.
- yawaramin 5y agoThat would be difficult to use given requirements like GDPR's user data deletion.
- closeparen 5y agoReal world immutable systems usually support the eventual garbage collection of soft-deleted or superseded records. No one actually wants disk usage to grow unbounded forever. It just means you are not going to support "overwrite immediately" semantics in ordinary application code paths. Datomic describes its capability here: https://docs.datomic.com/on-prem/reference/excision.html https://docs.datomic.com/on-prem/reference/excision.html