As a consequence of this short exchange, I now know a bit about history around dbm, ndbm, gdbm and bdb, and learned of the existence of lmdb and the brief experiments Sqlightning and Sqlite4.
I've been wondering what the difference is between a table implementation for an RDBMS and a key-value store, and why we don't see either SQLite using *dbm or the SQLite backing store becoming the next *dbm, and the answer turns out to be "because they're slightly different use cases". π
news.ycombinator.com/item?id=1β¦ on Sqlite4 was a surprisingly enlightening read. The main point seems to be that a key-value store is optimized for read or write and a backing store is optimized for read-and-write, as you can't write without reading if you're enforcing constraints.