首页 > > > 聊聊BoltDB:简单使用
BoltDB是一个嵌入式key/value的数据库,即只需要将其链接到你的应用程序代码中即可使用BoltDB提供的API来高效的存取数据。而且BoltDB支持完全可序列化的ACID事务,让应用程序可以更简单的处理复杂操作。
BoltDB设计源于LMDB,具有以下特点:
最后,BoltDB使用Golang开发,而且被应用于influxDB项目作为底层存储。
安装BoltDB
go get github.com/boltdb/bolt/...
打开数据库
package main
import (
"log"
"github.com/boltdb/bolt"
)
func main() {
db, err := bolt.Open("my.db", 0600, nil)
if err != nil {
log.Fatal(err)
}
defer db.Close()
...
}
更新事务
err := db.Update(func(tx *bolt.Tx) error {
...
return nil
})
说明:
只读事务
err := db.View(func(tx *bolt.Tx) error {
...
return nil
})
说明:
批量更新事务
err := db.Batch(func(tx *bolt.Tx) error {
...
return nil
})
说明:
手动事务管理
// Start a writable transaction.
tx, err := db.Begin(true)
if err != nil {
return err
}
defer tx.Rollback()
// Use the transaction...
_, err := tx.CreateBucket([]byte("MyBucket"))
if err != nil {
return err
}
// Commit the transaction and check for error.
if err := tx.Commit(); err != nil {
return err
}
说明:
更多
更多更好玩的用法请参考 boltdb/bolt
为了让大家对BoltDB有一个直观的了解,我对它做了一些基本的性能测试,结果如下:
环境准备
单线程创建1000个bucket,并且每个bucket插入10w条数据,因此,总数据量约为1亿。
并发写测试
测试原理:


每轮测试预先创建1000个bucket,每个Bucket创建100条记录,共10w条记录,读取过程中随机选择bucket。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3141451/ ,如需转载,请注明出处,否则将追究法律责任。