Berkeley DB is an embeddable database system that supports keyed access to data. The software is distributed in source code form, and developers can compile and link the source code into a single library for inclusion directly in their applications. Developers may choose to store data in any of several different storage structures to satisfy the requirements of a particular application. In database terminology, these storage structures and the code that operates on them are called access methods. The library includes support for the following access methods: * B+tree: Stores keys in sorted order, using either a programmer-supplied ordering function or a default function that does lexicographical ordering of keys. Applications may perform equality or range searches. * Hashing: Stores records in a hash table for fast searches based on strict equality. Extended Linear Hashing modifies the hash function used by the table as new records are inserted, in order to keep buckets underfull in the steady state. * Fixed and Variable-Length Records: Stores fixed- or variable-length records in sequential order. Record numbers may be immutable or mutable, i.e., permitting new records to be inserted between existing records or requiring that new records be added only at the end of the database.