Multiversion-based Versioning
Created on 2022-01-20T17:42:51-06:00
When data blobs have a "version" which is alive at a given moment.
New incoming data is written to a page somewhere which is not "live," thus being secured in storage without being returned.
Readers are able to read the live version while writes are in play.
An update is committed by swapping the version which is live to the new one.
NB Probably you still rely on read/write locks to update the live version pointer; although depending on how things are set up you could possibly get away with atomic compare-and-swaps.