BoltHold 是基于 BoltDB 构建的可嵌入式 NoSQL 存储库,用于 Go 类型。
BoltHold 是一个简单的查询和索引层,它基于 Bolt DB 实例。如果您想了解基于 Badger 构建的类似库,请参阅 BadgerHold。目标是创建一个简单的、更高级的接口,该接口在 Bolt DB 上方便地处理 Go 类型和查找数据,但同时也将底层的 Bolt DB 供您自行定制。默认情况下,使用的编码是 Gob,因此您可以自由地使用 GobEncoder/Decoder 接口来加快序列化。或者,您也可以使用任何您想要的序列化方式,通过在 Open 方法中向 Options 结构提供 encode / decode 函数。
一个 Go 类型将有一个桶,而 BoltDB 文件中有多个索引桶,因此您可以在同一个数据库中存储多个 Go 类型。
索引允许您跳过检查不符合索引条件的记录。如果您有 1000 条记录,而其中只有 10 条属于您要处理的部门,那么如果在部门字段上创建了索引,则不需要检查其他 990 条记录是否符合查询条件。索引的缺点是,每次写入操作都会增加磁盘读取和写入。对于读取量大的操作数据集,索引非常有用。在每个 BoltHold 库中,都会有一个预留的 bucket _indexes,用于存储指向另一个 bucket 的 Key 系统的索引。索引将通过在类型中的一个字段上设置 boltholdIndex 结构标签来定义。
type Person struct {
Name string
Division string `boltholdIndex:"Division"`
}
``` 这表示会有 i
[](https://pkg.go.dev/github.com/timshannon/bolthold) [](https://coveralls.io/github/timshannon/bolthold?branch=master) [](https://goreportcard.com/report/github.com/timshannon/bolthold)暂无开放 Issues,或尚未同步最近议题。