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.
Work on SQLite4 has concluded | Hacker News

en.wikipedia.org/wiki/SQLite#H…

> In August 2000, version 1.0 of SQLite was released, with storage based on gdbm (GNU Database Manager). SQLite 2.0 replaced gdbm with a custom B-tree implementation, adding transaction capability.

TIL!

#sqlite4

Continued thoughts on RDBMSes, backing stores and key-value stores (CockroachDB, InnoDB):

libranet.de/display/0b6b25a8-1…
SQLite - Wikipedia

At #LCA2020 #LumoSQL was presented, which picks up the pieces of #SQLite4 and #SQLightning and combines #SQLite with #LMDB :

https://lumosql.org/

The talk goes into background, software archaeology and some technical details both.on.how the source code is managed and how the software works:

https://invidious.snopyta.org/watch?v=ukktq_79Z6Q
https://www.youtube.com/watch?v=ukktq_79Z6Q

@clacke
LumoSQL Project Repositories

linux.conf.au 2020 | Presentation: LumoSQL - updating SQLite for the modern age

linux.conf.au 2020 - Jan 13-17 2020, Gold Coast, Australia