https://github.com/flower-corp/lotusdb
Most advanced key-value database written in Go, extremely fast, compatible with LSM tree and B+ tree.
https://github.com/flower-corp/lotusdb
bptree database golang kv-store lsm-tree storage
Last synced: about 2 months ago
JSON representation
Most advanced key-value database written in Go, extremely fast, compatible with LSM tree and B+ tree.
- Host: GitHub
- URL: https://github.com/flower-corp/lotusdb
- Owner: lotusdblabs
- License: apache-2.0
- Created: 2021-12-14T05:26:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-18T08:07:46.000Z (about 2 months ago)
- Last Synced: 2025-02-20T08:05:31.030Z (about 2 months ago)
- Topics: bptree, database, golang, kv-store, lsm-tree, storage
- Language: Go
- Homepage: https://lotusdblabs.github.io
- Size: 7.22 MB
- Stars: 2,117
- Watchers: 24
- Forks: 181
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go-storage - LotusDB - Fast k/v storage compatible with lsm tree and b+tree. (Key-Value Store)
- awesome-go - lotusdb - Fast k/v database compatible with lsm and b+tree. Stars:`2.1K`. (Database / Databases Implemented in Go)
README

## What is LotusDB
LotusDB is the most advanced key-value store written in Go, extremely fast, compatible with LSM tree and B+ tree, and optimization of badger and bbolt.
Key features:
* **Combine the advantages of LSM and B+ tree**
* **Fast read/write performance**
* **Much lower read and space amplification than typical LSM**## Design Overview

## Getting Started
```go
package mainimport (
"github.com/lotusdblabs/lotusdb/v2"
)func main() {
// specify the options
options := lotusdb.DefaultOptions
options.DirPath = "/tmp/lotusdb_basic"// open a database
db, err := lotusdb.Open(options)
if err != nil {
panic(err)
}
defer func() {
_ = db.Close()
}()// put a key
err = db.Put([]byte("name"), []byte("lotusdb"))
if err != nil {
panic(err)
}// get a key
val, err := db.Get([]byte("name"))
if err != nil {
panic(err)
}
println(string(val))// delete a key
err = db.Delete([]byte("name"))
if err != nil {
panic(err)
}
}
```
see the [examples](https://github.com/lotusdblabs/lotusdb/tree/main/examples) for more details.## Community
Welcome to join the [Slack channel](https://join.slack.com/t/rosedblabs/shared_invite/zt-19oj8ecqb-V02ycMV0BH1~Tn6tfeTz6A) and [Discussions](https://github.com/lotusdblabs/lotusdb/discussions) to connect with LotusDB team members and other users.
If you are a Chinese user, you are also welcome to join our WeChat group, scan the QR code and you will be invited:
|
|
| ------------------------------------------------------------ |