BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support.
BuntDB addresses the need for a fast, reliable embedded database by storing all data in memory while persisting to disk in an append-only format. It provides ACID semantics through transaction support, allowing multiple concurrent read transactions but enforcing a single writer at a time via locking. The tool supports spatial indexing across up to twenty dimensions, making it suitable for geospatial queries, and allows custom indexes on JSON fields and arbitrary data types. Built-in index types for strings, integers, and floats enable quick setup, while flexible iteration supports ascending, descending, and range-based queries.
BuntDB suits Go projects that prioritize speed and can accept the memory overhead of in-memory storage. It works well for applications needing an embedded database without external dependencies, particularly those handling geospatial data or requiring custom indexing logic. The tool is ideal when data size remains manageable in RAM and durability matters enough to justify disk persistence. Projects should choose BuntDB when they value simplicity and performance over the scalability of larger distributed systems.
The project maintains a straightforward codebase with focused development. Commits are infrequent but address specific issues and feature requests when they arise. The maintainer responds to reported problems and accepts pull requests that align with the project's scope. Documentation is comprehensive, covering all major features through the README and API documentation. The project remains stable with minimal breaking changes, suggesting a mature tool that prioritizes backward compatibility.