Snapshot Isolation (MVCC)
Are you in a situation where you need to have multiple read requests while updates need to continue? Do you want to be able to continue writing without interrupts? RDM provides a solution to the above problems by the use of MVCC (Multiversion Concurrency Control) through the use of snapshot isolation.
Snapshot isolation allows concurrent reads from the database when update transactions are occurring. In general, RDM does updates by “copy on write” and a snapshot of the data can therefore be handled by giving access to the old unmodified data. The unmodified data can then be read without stopping writes. At any point in time, the user can issue a snapshot of specific tables through calling our rdm_dbStartSnapshot() API. Once done, the RDM system will use the old view of the tables specified where changes to those tables will not be reflected in the snapshot. The user is then free to issue writes to that table outside the snapshot and reads within the snapshot view will not be waiting for those writes to complete or preventing those writes from finishing. Once the snapshot is no longer needed, rdm_dbEnd()¹ can be called to release the access to the old unmodified data. This feature provides the end user with the largest number of writes and reads possible simultaneously.
¹ rdm_transEnd() can also be used in the case a handle was retrieved from rdm_dbStartSnapshoot()
by Sverre Hvammen Johansen and Daigoro Toyama