A small, sane btree library, derived from the old berkeley db 1.85 code base.

- as fast and simple as a sequential text file for sequential writes
- easy to use, difficult to abuse
- large data values and large key values that actually work
- a cache management that tries to avoid any btree corruption:
- if a page is evicted, all dirty pages are flushed to the underlying fd
- signals are blocked in the critical section.
- low space conditions are checked before entry to the critical section.
- a limited form of concurrency implemented with fcntl(F_SETLKW)
- readers are not blocked while dirty pages accumulate in a writers cache
- writer waits for readers to call bt_detach() before any write to the file.
- bt_attach() in a reader succeeds when the writer leaves its critical section.
- no starvation in a scenario with ten writers and ten readers.

- tested with musl libc, less than 40K for a statically linked test program.

Project Activity

See All Activity >

Follow A better btree library

A better btree library Web Site

Other Useful Business Software
$300 in Free Credit Towards Top Cloud Services Icon
$300 in Free Credit Towards Top Cloud Services

Build VMs, containers, AI, databases, storage—all in one place.

Start your project in minutes. After credits run out, 20+ products include free monthly usage. Only pay when you're ready to scale.
Get Started
Rate This Project
Login To Rate This Project

User Reviews

Be the first to post a review of A better btree library!

Additional Project Details

Registered

2014-07-11