What other services does Berkeley DB provide?
Berkeley DB also provides core database services to
developers. These services include:
-
Page cache management:
-
The page cache provides fast access to a cache
of database pages, handling the I/O associated with
the cache to ensure that dirty pages are written back
to the file system and that new pages are allocated on
demand. Applications may use the Berkeley DB shared
memory buffer manager to serve their own files and
pages.
-
Transactions and logging:
-
The transaction and logging systems provide
recoverability and atomicity for multiple database
operations. The transaction system uses two-phase
locking and write-ahead logging protocols to ensure
that database operations may be undone or redone in
the case of application or system failure.
Applications may use Berkeley DB transaction and
logging subsystems to protect their own data
structures and operations from application or system
failure.
-
Locking:
-
The locking system provides multiple reader or
single writer access to objects. The Berkeley DB
access methods use the locking system to acquire the
right to read or write database pages. Applications
may use the Berkeley DB locking subsystem to support
their own locking needs.
By combining the page cache, transaction, locking, and
logging systems, Berkeley DB provides the same services found
in much larger, more complex and more expensive database
systems. Berkeley DB supports multiple simultaneous readers
and writers and guarantees that all changes are recoverable,
even in the case of a catastrophic hardware failure during a
database update.
Developers may select some or all of the core database
services for any access method or database. Therefore, it is
possible to choose the appropriate storage structure and the
right degrees of concurrency and recoverability for any
application. In addition, some of the subsystems (for example,
the Locking subsystem) can be called separately from the
Berkeley DB access method. As a result, developers can
integrate non-database objects into their transactional
applications using Berkeley DB.