This invention concerns a database computer system and method for making applications
recoverable from system crashes. The application state (i.e., address space) is
treated as a single object which can be atomically flushed in a manner akin to
flushing individual pages in database recovery techniques. To enable this monolithic
treatment of the application, executions performed by the application are mapped
to logical loggable operations that can be posted to the stable log. Any modifications
to the application state are accumulated and the application state is periodically
flushed to stable storage using an atomic procedure. The application recovery integrates
with database recovery, and effectively eliminates or at least substantially reduces
the need for check pointing applications. In addition, optimization techniques
are described to make the read, write, and recovery phases more efficient. Atomic
flush sets, whether generated from cyclic flush dependencies or otherwise, can
be broken apart. This enables an ordered flushing sequence of first flushing a
first object and then flushing a second object, rather than having to flush both
the first and second objects simultaneously and atomically.