WB is a disk based (sorted) associative-array package providing C, SCM, Java, and C# libraries. These associative arrays consist of variable length (0.B to 255.B) keys and values. Functions are provided to:
The (database) disk files interoperate between the various language libraries. The interface to the SCM Scheme implementation supports longer data values and SLIB relational databases. WB, SCM, and SLIB are packages of the GNU project.
The WB implementation has a file size limit of 2^32 * block size (default 2048.B) = 2^43 bytes (8796.GB). WB routinely runs with databases of several hundred Megabytes. WB does its own memory and disk management and maintains a RAM cache of recently used blocks.
Multiple associative arrays can reside in one disk file. Simultaneous access to multiple disk files is supported. A structure checking and garbage collecting program and a viewer are provided. Compiled, WB occupies approximately 66 kilobytes.
WB is implemented using a variant of B-tree structure. B-trees give slower access than hashing but are dynamic and provide an efficient determination of successor and predecessor keys. All operations are O(log(n)) in the size of the database. B-trees are commonly used by database systems for implementing index structures. B-trees are optimized for using the minimum number of disk operations for large data structures. Prefix and suffix key compression are used for storage efficiency in WB.