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!
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)
These caveats will be addressed upstream in TDB2
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.
The original tdb library from the main
site is required. Debian users can just
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
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:
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:
gem install tdb -- --with-tdb-dir=$PFX --with-dldflags=-Wl,-rpath=$PFX/lib
You can get the latest source via git from the following locations (these versions may not be stable):
git://bogomips.org/ruby-tdb.git git://repo.or.cz/ruby-tdb.git (mirror)
You may browse the code from the web and download the latest snapshot tarballs here:
See the HACKING guide on how to contribute and build prerelease gems from git.
All feedback (bug reports, user/development dicussion, patches, pull requests) go to the mailing list:
No subscription is required to post, and HTML will be considered spam and rejected. Subscription is optional, you may subscribe by sending a blank email to:
And following instructions in the confirmation email. Similarly, you may unsubscribe by sending an email to:
Mailing list archives are available at:
For the latest on tdb releases, you may check our NEWS page (and subscribe to our Atom feed).
We love to hear from you!
Email patches (using git send-email), pull requests (formatted using git request-pull), questions, bug reports, suggestions, etc. to us publically at:
Mail archives are available at: http://bogomips.org/ruby-tdb-public/
Please send plain-text email only and do not waste bandwidth on HTML mail, HTML mail will not be read.
Quote as little as reasonable and do not top post.
For sensitive topics, email us privately at: firstname.lastname@example.org