BoltDB

BoltDB is an embedded key/value database written in Go. It supports fully serializable transactions, ACID semantics, and lock-free MVCC with multiple readers and a single writer. BoltDB uses a single-level, zero-copy, B+tree data storage, which allows fast read access and does not require recovery in the event of a system crash.

History

In 2011, Howard Chu introduced MDB, a memory-mapped database backend for OpenLDAP, later renamed to LMDB (Lightning Memory-Mapped Database). In 2013, BoltDB was initially started by Ben Johnson as a port of LMDB to Go, but then the two projects diverged as the author of Bolt decided to focus on simplicity and providing the easy-to-use Go API. The goal of BoltDB became to provide a simple, fast, and reliable database for projects that don't require a full database server such as Postgres or MySQL. With BoltDB being stable, its API fixed, and its file format fixed, the author considered the project a success. Leaving it in such a state, the project was abandoned by its author in 2017.

Data Model

Key/Value

Concurrency Control

Timestamp Ordering

BoltDB allows only one read-write transaction at a time.

System Architecture

Embedded

Query Interface

Custom API

Storage Organization

Heaps

Indexes

B+Tree