a free transactional BerkeleyDB database
overview TwinDB is an embedded key/value database based on BerkeleyDB. It basically adds security from database corruption on top of the non-transactional version of BerkeleyDB. I wrote it because the transactional version of BerkeleyDB is expensive (SleepyCat does not post their prices - all prices are negotiated, but I contacted them as a small shareware developer that wanted to use the transactional version with apps and they said it would cost $100,000 for that sort of commercial license).

It accomplishes this by maintaining twin BerkeleyDB databases and using "lock" files to indicate when a set of writes are in progress. Performance is still good - on my 2.5 Ghz dual G5:

508 individual transactional writes/sec
35661 group transactional writes/sec
543359 reads/sec

Another option is to use SQLite, but it is much (at least an order of magnitude) slower and more difficult to use if you only need a key/value database.

docs TwinDB.h
license Revised BSD
download TwinDB-0.1.tgz