containerdb is a memory-only database that is intended to storing container metadata. It is a combined and tweaked module for all of this great work by tidewall.
- tidewall/buntdb
- tidewall/btree
- tidewall/gjson
- tidewall/grect
- tidewall/match
- tidewall/pretty
- tidewall/tinyqueue
I was worried about reproducibility (and having all these different dependencies separated like this) and along with wanting to tweak some of the code, wanted to package them together. This is the rationale for creating containerdb. The licenses for this previous work are packaged with the code under .github. Thank you tidewall, Google, and other developers that were a part of this original work! Features below are from the original README.md.
- In-memory database for fast reads and writes
- Embeddable with a simple API
- Spatial indexing for up to 20 dimensions; Useful for Geospatial data
- Index fields inside JSON documents
- Collate i18n Indexes using the optional collate package
- Create custom indexes for any data type
- Support for multi value indexes; Similar to a SQL multi column index
- Built-in types that are easy to get up & running; String, Uint, Int, Float
- Flexible iteration of data; ascending, descending, and ranges
- Durable append-only file format for persistence
- Option to evict old items with an expiration TTL
- Tight codebase, under 2K loc using the
cloc
command - ACID semantics with locking transactions that support rollbacks
All source code is available under the MIT License. See the .github folder for dependency (included) licenses as well.