经过差不多两个月的重构,在社区小伙伴的共同协作努力下,LotusDB V2.0.0版本正式发布!
LotusDB 项目地址:https://github.com/lotusdblabs/lotusdb
LotusDB 是用 Go 语言编写的 KV 数据库,它采用 KV 分离的思想,融 LSM Tree 和 B+ Tree 存储模型为一体,适合大规模的 KV 数据存储,相较于 Go 语言领域知名的 KV 存储项目 badger 和 bbolt,LotusDB 具有更先进的设计架构。
这次我们通过两个月的重构,将 LotusDB 原来 V1 版本的代码基本上重新实现了一遍,目的在于提高简洁度。
LotusDB 的整体架构实现了全新升级,目的在于提升读写和压缩性能,下面是之前 V1 版本的架构图:
这是重构后的 V2 版本的架构图:
相对于 V1 版本,V2 版本主要有以下更新:
毫不夸张的说,这是目前 Go 语言领域架构最先进的 KV 存储引擎项目,其优势主要体现在:
以下是 LotusDB 的简单使用示例,大家可以上手体验!
package main
import "github.com/lotusdblabs/lotusdb/v2"
func main() {
// 指定设置
options := lotusdb.DefaultOptions
options.DirPath = "/tmp/lotusdb_basic"
// 打开数据库
db, err := lotusdb.Open(options)
if err != nil {
panic(err)
}
defer func() {
_ = db.Close()
}()
// 写入键值对
key := []byte("KV store engine")
value := []byte("LotusDB")
putOptions := &lotusdb.WriteOptions{
Sync: true,
DisableWal: false,
}
err = db.Put(key, value, putOptions)
if err != nil {
panic(err)
}
// 读取键值对
value, err = db.Get(key)
if err != nil {
panic(err)
}
println(string(value))
// 删除键值对
err = db.Delete(key, putOptions)
if err != nil {
panic(err)
}
// 启动Value Log压缩
err = db.Compact()
if err != nil {
panic(err)
}
}
本文分享自 roseduan写字的地方 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!