| A serialization wrapper around the disk files which make up the database.
The key point here is that these objects are trivial to create (four data members,
the non-trivial ones pointing to externally maintained objects), but expensive
to serialize and read.
Essentially, serializing a DatabaseEnvelope means zipping up the contents of the
database file directory while holding the database activity lock so that it cannot
be changed. The zip archive is then copied to the serialization stream as a byte array.
Reading one of these objects keeps the byte array around for later dumping back to
a directory.
|