Documentation ¶
Overview ¶
Example ¶
dbDir, err := ioutil.TempDir(os.TempDir(), "example") if err != nil { panic(fmt.Errorf("failed to create %s: %w", dbDir, err)) } defer func() { if err := os.RemoveAll(dbDir); err != nil { panic(fmt.Errorf("failed to remove %s: %w", dbDir, err)) } }() dbPath := path.Join(dbDir, "sample.data") tree, err := Open(dbPath, PageSize(4096), Order(500)) if err != nil { panic(fmt.Errorf("failed to open B+ tree %s: %w", dbDir, err)) } _, _, err = tree.Put([]byte("Hi!"), []byte("Hello world, B+ tree!")) if err != nil { panic(fmt.Errorf("failed to put: %w", err)) } _, _, err = tree.Put([]byte("Does it override key?"), []byte("No!")) if err != nil { panic(fmt.Errorf("failed to put: %w", err)) } _, _, err = tree.Put([]byte("Does it override key?"), []byte("Yes, absolutely! The key has been overridden.")) if err != nil { panic(fmt.Errorf("failed to put: %w", err)) } if err := tree.Close(); err != nil { panic(fmt.Errorf("failed to close: %w", err)) } tree, err = Open(dbPath, PageSize(4096), Order(500)) if err != nil { panic(fmt.Errorf("failed to open B+ tree %s: %w", dbDir, err)) } value, ok, err := tree.Get([]byte("Hi!")) if err != nil { panic(fmt.Errorf("failed to get value: %w", err)) } if !ok { fmt.Println("failed to find value") } fmt.Println(string(value)) value, ok, err = tree.Get([]byte("Does it override key?")) if err != nil { panic(fmt.Errorf("failed to get value: %w", err)) } if !ok { fmt.Println("failed to find value") } if err := tree.Close(); err != nil { panic(fmt.Errorf("failed to close: %w", err)) } fmt.Println(string(value))
Output: Hello world, B+ tree! Yes, absolutely! The key has been overridden.
Index ¶
- func Order(order int) func(*config) error
- func PageSize(pageSize int) func(*config) error
- type FBPTree
- func (t *FBPTree) Close() error
- func (t *FBPTree) Delete(key []byte) ([]byte, bool, error)
- func (t *FBPTree) ForEach(action func(key []byte, value []byte)) error
- func (t *FBPTree) Get(key []byte) ([]byte, bool, error)
- func (t *FBPTree) Iterator() (*Iterator, error)
- func (t *FBPTree) Put(key, value []byte) ([]byte, bool, error)
- func (t *FBPTree) Size() int
- type Iterator
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type FBPTree ¶
type FBPTree struct {
// contains filtered or unexported fields
}
FBPTree represents B+ tree store in the file.
func (*FBPTree) Iterator ¶
Iterator returns a stateful iterator that traverses the tree in ascending key order.
Click to show internal directories.
Click to hide internal directories.