blkdb is required and is always used. It is the block header database. It is kept in RAM, as bitcoind does. It is optionally stored in a file, in addition to RAM. It is optionally regenerated from the 17+GB blockchain file, if blkdb is missing.
OK, thanks for the explanation.
Along with some other handy
features LMDB can have multiple sub-databases. I haven't thought things out fully yet but blkdb could possibly be stored as a sub-database with the blockchain as another sub-database or collection of sub-databases, performance permitting. Or maybe plagiarise the
libbitcoin database layout a bit.