DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

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.[02]

Source Code
https://github.com/boltdb/bolt[01]
Developer
Country of Origin
US
Start Year
2013 [05]
End Year
2017 [06]
Project Type
Open Source
Written in
Go
Supported Languages
Go
Inspired By
LMDB
Operating Systems
Android, BSD, iOS, Linux, macOS, Solaris, Windows
License
MIT License

Database Entry

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.[02]

History[03][04]


In 2011, Howard Chu introduced MDB, a memory-mapped database backend for OpenLDAP, later renamed to [LMDB] (https://symas.com/lmdb/technical/)(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.

Checkpoints


Concurrency Control


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

Data Model[04]


Bolt is a key-value store that provides an ordered map, which allows easy access and lookup.

Foreign Keys


Indexes


Isolation Levels


Joins


Logging[04]


Bolt saves data into a single memory-mapped file on disk. It doesn’t have a separate journal or write-ahead log.

Query Compilation


Query Interface


Storage Model


Storage Organization


System Architecture


Views[04]


Bolt allows only one read-write transaction at a time but allows as many read-only transactions as you want at a time. Each transaction has a consistent view of the data as it existed when the transaction started. BoltDB recommends three types of transactions: read-write transactions with DB.Update, read-only transactions with DB.View and batch read-write transactions with DB.Batch. Along with the three recommended transactions, BoltDB also allows manual transaction management with DB.Begin.

Compatible Systems
BB bbolt
Derivative Systems
BB bbolt

Citations

6 sources
  1. GitHub - boltdb/bolt: An embedded key/value database for Go. · GitHub github.com
  2. bolt package - github.com/boltdb/bolt - Go Packages godoc.org
  3. GitHub - boltdb/bolt: An embedded key/value database for Go. · GitHub github.com
  4. /dev/zine progville.com Dead — Check Archive
  5. Initial commit github.com
  6. bolt/README.md at master · boltdb/bolt · GitHub github.com
Revision #14