|
|
|
Why does ObjectDatabase++ flush through to disk?
ObjectDatabase++ has been specially designed for the requirements of server
databases and therefore takes the very unusual step to double writing all
changes to the data files, this prevents the files from ever becoming invalid
as all information required to reverse an edit is saved before any changes are
actually made. ObjectDatabase++ does reduce the amount of disk writes by having
all inter-process communication (IPC) between concurrently executing
transactions through a shared memory file (<table name>.odm), this is
required so no two transactions can allocate the same resource twice. This
design requiring ObjectDatabase++ only to write through to the hard drive when
committing a transaction, this tactic is still slower than the
traditional design that only requires the log file to be flushed on each
commit. However ObjectDatabase++ has multi-process
ability, allowing servers to have many more concurrently executing transactions
in order to create a faster database server in total.
When recovering from a traditional designed database, the files are recovered
from that last backup point and the trace log file is re-executed. This is a
process that can take minutes to complete and with multimedia databases, the
log file can grow to gigabytes. It also requires all executing transaction to
abort, allow the recovery, and then start again. ObjectDatabase++ does the
extra processing required to allow executing transactions to continue unimpeded
by another transaction that has unexpectedly terminated at any point in any
subsystem, allowing instantaneous recovery
of terminated transactions.
|