a free transactional BerkeleyDB database
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.