Why another database library?


I needed a database library to supplement cdb. cdb is a fast, reliable, constant database. An application i'm developing stored constant data in a cdb, but also needed to store some 10000 records of new data, arriving over a period of 10 minutes to 10 hours. The database had also to allow for concurrent read access during writes.

A quick look into other database libraries revealed:

db (Version 1)
no concurrent access. It's slow.
db (Version 3)
redistribution is restricted. It's fast. It offers quite a lot of features.
dbm / ndbm
no concurrent access.
gdbm
no concurrent access.
sdbm
no concurrent access.
dbz
performs quite well, but has it's limitation (see source).
Also the performance of some of these systems is leaves quite a lot to be desired. I'm going to post benchmark results later in the year 2000.

In my application dyndb serves as storage for new data. If enough records have been added then the records will be moved into a cdb (this operation is too slow to be done for every record, but fast enough if done rarely - say every 20000 or 50000 records). This combination performs quite well.