rkv
rkv copied to clipboard
Thorough support for versioning
We will have at least three different kinds of version.
- The disk format itself, which will be tied to the version of LMDB. Failures here will signal
MDB_VERSION_MISMATCH. - A storage format version, which will infrequently change along with rkv itself. A change in how we represent values, in how we store metadata, or capabilities (e.g., encryption, file locking) might require us to lock out old clients who are still able to read the disk format.
- One or more domain versions. These will be managed by consumers: they're analogous to SQLite's
PRAGMA user_version. Typical uses will be to document and alter the assumptions of consuming code, to track migrations, and to lock out buggy clients. One can imagine multiple consumers using the same database file, each with their own key space and version number.
All three of these will be present in the API and in documentation.