Compact the underlying storage for the key range *begin,*end.
In particular, deleted and overwritten versions are discarded,
and the data is rearranged to reduce the cost of operations
needed to access the data. This operation should typically only
be invoked by users who understand the underlying implementation.
Return a handle to the current DB state. Iterators created with
this handle will all observe a stable snapshot of the current DB
state. The caller must call Snapshot.dispose when the
snapshot is no longer needed.
Return an iterator over the contents of the database.
Caller should dispose the iterator when it is no longer needed.
The returned iterator should be disposed before this db is disposed.
If a DB cannot be opened, you may attempt to call this method to
resurrect as much of the contents of the database as possible.
Some data may be lost, so be careful when calling this function
on a database that contains important information.