SLM DB (Single-Level Merge DB) is a single-machine key-value database inspired by SLM-DB presented at USENIX FAST '19, lotudb, and Wisckey.
SLM DB combines the advantages of B+ trees and LSM trees to provide excellent read and write performance. Some of its features include:
- Maintains an in-memory B+ tree to store record file IDs and offsets, enabling fast queries and range queries.
- Supports sequential and append writes similar to LevelDB to ensure high performance for bulk data writes.
- Implements a write-ahead log to ensure data durability.
- Uses a multi-level memtable based on Skiplist to guarantee O(log N) query performance.
- Implements a single-level SSTable and uses selective compaction to manage garbage collection.
For morw detailed performance benchmark results, please refer to benchmark/report.md.
SLM DB can be used as an embedded database. Please refer to usage for detailed instructions.
To use SLM DB as a server, first start the server by running:
go run cmd/server/server.go
Then, you can perform operations as a client by running:
go run cmd/server/client.go
The server provides four main interfaces:
PUT key value
: Set the string value of a key.GET key
: Get the value of a key.DELETE key
: Delete a key.HELP
: Get help about the DB client commands.
SLM DB is licensed under the MIT license. See the LICENSE file for details.