Chapter 9.  The Berkeley DB Environment

Table of Contents

Database environment introduction
Creating a database environment
Opening databases within the environment
Error support
DB_CONFIG configuration file
File naming
Specifying file naming to Berkeley DB
Filename resolution in Berkeley DB
Examples
Shared memory regions
Security
Encryption
Remote filesystems
Environment FAQ

Database environment introduction

A Berkeley DB environment is an encapsulation of one or more databases, log files and region files. Region files are the shared memory areas that contain information about the database environment such as memory pool cache pages. Only databases are byte-order independent and only database files can be moved between machines of different byte orders. Log files can be moved between machines of the same byte order. Region files are usually unique to a specific machine and potentially to a specific operating system release.

The simplest way to administer a Berkeley DB application environment is to create a single home directory that stores the files for the applications that will share the environment. The environment home directory must be created before any Berkeley DB applications are run. Berkeley DB itself never creates the environment home directory. The environment can then be identified by the name of that directory.

An environment may be shared by any number of processes, as well as by any number of threads within those processes. It is possible for an environment to include resources from other directories on the system, and applications often choose to distribute resources to other directories or disks for performance or other reasons. However, by default, the databases, shared regions (the locking, logging, memory pool, and transaction shared memory areas) and log files will be stored in a single directory hierarchy.

It is important to realize that all applications sharing a database environment implicitly trust each other. They have access to each other's data as it resides in the shared regions, and they will share resources such as buffer space and locks. At the same time, any applications using the same databases must share an environment if consistency is to be maintained between them.

Database Environment Operations Description
db_env_create() Create an environment handle
DB->getenv() handle Return DB's underlying DB_ENV handle
DB_ENV->close() Close an environment
DB_ENV->dbremove() Remove a database
DB_ENV->dbrename() Rename a database
DB_ENV->err() Error message
DB_ENV->failchk() Check for thread failure
DB_ENV->fileid_reset() Reset database file IDs
DB_ENV->open() Return environment's home directory
DB_ENV->open() Return flags with which the environment was opened
DB_ENV->lsn_reset() Reset database file LSNs
DB_ENV->open() Open an environment
DB_ENV->remove() Remove an environment
DB_ENV->stat() Environment statistics
db_strerror() Error strings
DB_ENV->version() Return version information
Environment Configuration  
DB_ENV->set_alloc() Set local space allocation functions
DB_ENV->set_app_dispatch() Configure application recovery
DB_ENV->set_cachesize() Set the environment cache size
DB_ENV->set_data_dir() Set the environment data directory
DB_ENV->set_encrypt() Set the environment cryptographic key
DB_ENV->set_errcall() Set error and informational message callbacks
DB_ENV->set_errfile() Set error and informational message FILE
DB_ENV->set_errpfx() Set error message prefix
DB_ENV->set_event_notify() Set event notification callback
DB_ENV->set_feedback() Set feedback callback
DB_ENV->set_flags() Environment configuration
DB_ENV->set_isalive() Set thread is-alive callback
DB_ENV->set_intermediate_dir_mode() Set intermediate directory creation mode
DB_ENV->set_shm_key() Set system memory shared segment ID
DB_ENV->set_thread_id() Set thread of control ID function
DB_ENV->set_thread_count() Set approximate thread count
DB_ENV->set_thread_id_string() Set thread of control ID format function
DB_ENV->set_timeout() Set lock and transaction timeout
DB_ENV->set_tmp_dir() Set the environment temporary file directory
DB_ENV->set_verbose() Set verbose messages