Categorygithub.com/amityahav/diskbst
repositorypackage
0.0.0-20240726205327-4bde6969b0d5
Repository: https://github.com/amityahav/diskbst.git
Documentation: pkg.go.dev

# README

Disk based binary search tree

just a simple disk serialized binary search tree.

It can be used in a LSM kv store for flushing the memtable to disk as a binary search tree.

Example usage:

package main

import (
	"fmt"
	"github.com/amityahav/diskbst"
)

func main() {
	memtable := map[string][]byte{
		"key1": []byte("value1"),
		"key2": []byte("value2"),
		"key3": []byte("value3"),
	}

	// Open a new file to store the tree
	writer, _ := diskbst.OpenWriter("/path/to/bst")

	// Store all key-value pairs in the tree
	for key, val := range memtable {
		_ = writer.Put([]byte(key), val)
	}

	writer.Close()

	// Open a reader for the tree
	// the tree file will be memory-mapped
	reader, _ := diskbst.OpenReader("/path/to/bst")
	defer reader.Close()

	val, _ := reader.Get([]byte("key1"))
	fmt.Printf(string(val)) // value1

	_, err := reader.Get([]byte("doesnt_exist"))
	fmt.Printf(err.Error()) // key not found
}