3 ms·
That is essentially what MVCC does.
by ysleepy 3y ago
That is essentially what MVCC does.
- twic 3y agoThat is an extremely good point.
- JohnBooty 3y agoYes, although AFAIK those hidden MVCC columns (xmin, xmax?) aren't very usable from an application standpoint -- the obsoleted rows only hang around until the next VACUUM, right? I realize you're not claiming those columns are useful from an application perspective. Just curious to know if I'm wrong and they are useful. Because as I understand it, the selling point of Datomic is their audit trail functionality and that is admittedly a bit onerous to implement in a RBDMS. Even though I feel like every project needs/requires that eventually.
- twic 3y agoOracle lets you use the MVCC data to query past states of the database, called "flashback": https://docs.oracle.com/en/database/oracle/oracle-database/21/adfns/flashback.html https://docs.oracle.com/en/database/oracle/oracle-database/2... You can configure how long the old data is kept: https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/UNDO_RETENTION.html https://docs.oracle.com/en/database/oracle/oracle-database/2... Worked examples: http://www.dba-oracle.com/t_rman_149_flasbback_query.htm http://www.dba-oracle.com/t_rman_149_flasbback_query.htm
- JohnBooty 3y agoWow, super informative. Thank you so much.
- ysleepy 3y agoI meant MVCC is the proof that you can automate the transform of a schema into a versioned schema. How and if the DBMS exposes that is another concern. The garbage collection / VACUUM part of an MVCC system is the harder part, saving all versions and querying a point in time is the easy one.