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.