tdb - Trivial Database bindings for Ruby

TDB is much like other DBM implementations, except
it allows concurrent writer processes. TDB was
initially developed for Samba, but is used by other projects as well.
These Ruby bindings allow Ruby apps to read and write to the same databases
used by Samba!

Features

Concurrent reader and writer processes may safely operate on the same file.
This is great for MRI where multi-core performance is easiest to achieve
with processes and not threads.

Fork-safe, you may fork and share the same TDB
object in your parent and child processes.

Releases the GVL for slow disk operations under Ruby 1.9 so other threads
can run (but not other TDB operations! see Caveats
below)

Caveats

NOT native thread-safe. Don't try accessing TDB
objects from multiple threads at the same time. This probably needs to be
fixed upstream since our attempts to make it work have failed.

However, TDB will allow other Ruby 1.9 threads to
run doing non-TDB things just fine.

Database size is limited to 4G, even on 64-bit systems.

TDB should be created with an appropriate :hash_size
for large databases or performance will suffer.

Install

The original tdb library from the main
site is required. Debian users can just apt-get install
tdb-dev. Non-Debian users: building against upstream tdb 1.2.2 and
1.2.7 are known to be broken, so installing tdb from the latest git is
recommended.

The library consists of a C extension so you'll need a C compiler and
Ruby development libraries/headers.

You may download the tarball from our download site and run
setup.rb after unpacking it:

http://bogomips.org/ruby-tdb/files/

You may also install it via RubyGems on RubyGems.org:

gem install tdb

If you have a tdb installation in a non-standard prefix, you will have to
use:

gem install tdb -- --with-tdb-dir=$PFX

Or if you have a non-standard prefix that linkers normally do not search: