Real-Time Database Compaction
ObjectDatabase++ uses the ObjectID to refer to data objects held within the
database (as described). This design allows
ObjectDatabase++ to move objects within the table file at any time and is
subsequently able to compact the data file whenever an object is deleted or
edited and a more compact location becomes available.
Using the ObjectID to reference objects within the various indexes allows
ObjectDatabase++ to move objects at any time without the need to edit any of
the indexes.
ObjectDatabase++ data and index files have both been especially designed to
auto compact, during normal use these files will return most of the free space
back to the operating system, even if the database is purged of most of its
objects at one time and continuous use will further make the table and index
files more efficient.
Compacting the table file maintains the efficiency of table transaction to near
O(1) as holes in the file are filled and not added to a long free space list.
|