go-memdb is an in-memory database library for Go built on immutable radix trees.
The tool solves the problem of needing transactional, indexed data storage within a single process without external dependencies. It uses immutable radix trees as its foundation to enable lock-free concurrent reads while allowing writers to make progress. Transactions span multiple tables and are applied atomically, with changes remaining invisible until commit. The database provides Atomicity, Consistency, and Isolation guarantees from ACID, though durability is not supported since data exists only in memory.
The tool suits applications that need fast, in-process data access with rich querying capabilities rather than a persistent store. It is particularly valuable for systems requiring Multi-Version Concurrency Control where many readers must operate without blocking. The watch mechanism allows callers to detect modifications affecting specific query results, enabling reactive patterns. Developers should adopt this tool when building services that can tolerate data loss on shutdown but need sophisticated indexing, including compound field indexes and type-specific compression like UUID optimization.
The project maintains a steady stream of maintenance activity with regular updates addressing issues and dependencies. Pull requests receive timely review and integration. The codebase shows consistent attention to test coverage and documentation quality. Development remains focused on the core in-memory database functionality without scope creep into persistence or clustering features.