SQLite was thought of as a toy for many years until we all realized it was actually nice to use a database as a library, even server-side. And yet...
- It's a big dependency, despite what you think. In no universe is 150,000 lines of C code "lightweight".
- Like with all SQL databases, you have an impedance mismatch: the way you store data in memory is completely different than the table structure a SQL database forces on you, leading to tons of glue code.
- It's mutable, so it can't undo or time travel, and it can't read while a write is happening (even in WAL mode...reads can't happen during checkpointing!).
To solve these problems, I'm building a database called xitdb. It has ports for several languages:
- Zig: radarroark/xitdb
- Java: radarroark/xitdb-java