KvSQL Launches With an Embedded Engine and a Database Server on One Set of Records
KvSQL 0.1.0 is out. It’s a key-value store and an SQL database that keep one copy of the data between them. Read a row by its key and it comes straight from the storage tree, with nothing parsed or planned. Ask SQL about the same rows and it reads the same bytes. One transaction covers both, and an index stays right whichever way a row was written.
The release has two products. KvSQL Engine is a Rust library you put in your own program: one file on disk, no server, and no dependencies beyond the Rust standard library. KvSQL DB is built on it: kvsqld serves a database file over HTTP with JSON, and kvsql is a shell that talks to the server or opens a file directly.

The two products in 0.1.0. Both use the same engine and the same file format.
What Is in the Box
The engine stores every keyspace as a copy-on-write B+tree in a single file. Two meta pages take turns pointing at the latest commit, which is what makes a commit all or nothing. Readers get a snapshot of the last commit and never wait for the writer. There is one writer at a time.
On top of that sits SQL: CREATE TABLE and INDEX, INSERT, UPDATE, DELETE, and SELECT with joins, GROUP BY, HAVING, ORDER BY and LIMIT. It follows SQLite’s rules for NULLs, numbers and comparisons between text and numbers. Every table is also a keyspace, so get_row("users", 42) and SELECT * FROM users WHERE id = 42 find the same row. One reads it in about 1.6 µs in the recorded benchmark, and the other parses and plans first. A plain keyspace with no schema shows up in SQL as a table of keys and values.
The server keeps the same promise as the engine. Each HTTP request is one transaction, and a write gets its answer only after the commit is on disk. Several SQL statements in one request succeed or fail together.
How Much to Trust It
The main promise is simple: a commit that returned is never lost, and a crash during a commit leaves all of it or none of it. How KvSQL was tested covers the tests aimed at that promise. Those are 20,000 simulated power cuts in one recorded run, real processes killed mid-write, and 30,000 random SQL statements answered the same way SQLite answers them. Before the release, a reviewer that hadn’t seen the code went looking for bugs. It found eight, including a way to crash the server with deeply nested SQL. All eight were fixed and tested before 0.1.0 went out.
The benchmark against SQLite shows both sides. Reads by key are KvSQL’s strong point. SQLite commits faster, loads bulk data faster and runs a GROUP BY faster.
Getting It
The download page has kvsqld and kvsql for Linux on x86-64 and ARM64, macOS on Apple silicon and Intel, and Windows on x86-64, each built and tested by CI. The engine is a Git dependency for Rust programs, and the quick start has a first program for both. The case studies show it in three real jobs: sessions, an edge gateway and a shop checkout.
Everything is open source under Apache 2.0, on GitHub.