ObjectDatabase++ has been specially designed for the requirements of a real-time server databases and therefore takes the very unusual step to double writing all changes to its 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 on rotating disk drives is still slower than the traditional design that only requires the log file to be flushed on each commit. However ObjectDatabase++ has multi-process and multi-threaded ability, allowing servers to have many more concurrently executing transactions in order to create a faster average transaction speed.
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 hours to complete and with multimedia databases, the log file can grow to gigabytes. It also requires all executing transaction to abort, before allow the recovery. 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.