kvstore

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package kvstore defines a shared, minimal key/value store API used across gomap engines (HashDB, TreeDB, BTreeOnHashDB) and tooling like cmd/unified_bench.

Iterator semantics (performance-first):

  • Key() and Value() may return read-only views into underlying storage.
  • Returned slices are valid until the next Next()/Close() call on that iterator.
  • Callers must not modify returned slices; use KeyCopy/ValueCopy for stable bytes.

Index

Constants

This section is empty.

Variables

View Source
var ErrUnsupported = errors.New("kvstore: unsupported")

ErrUnsupported is returned by optional capabilities that are not implemented by a particular engine (e.g. ordered iteration for HashDB).

Functions

This section is empty.

Types

type Batch

type Batch interface {
	Set(key, value []byte) error
	Delete(key []byte) error
	Commit() error
	CommitSync() error
	Close() error
}

Batch is a buffered write unit.

type BatchReader added in v0.4.0

type BatchReader interface {
	ReadBatch(keys [][]byte) error
}

BatchReader is an optional capability for batched read execution where callers only need completion/error, not materialized values.

Semantics:

  • Missing keys are not errors (same model as GetMany nil entries).
  • Duplicate keys are not errors (implementations may deduplicate).
  • Empty key slices are a no-op and must return nil.
  • If a batch-read mechanism is unavailable for the current DB state (for example, snapshot acquisition fails), return ErrUnsupported.
  • Errors should represent batch-level failures, not per-key absence.

type Batcher

type Batcher interface {
	NewBatch() (Batch, error)
}

Batcher is an optional capability for batched writes.

type DB

type DB interface {
	Name() string
	Close() error

	Get(key []byte) ([]byte, error)
	Set(key, value []byte) error
	Delete(key []byte) error
}

DB is the minimal common interface shared across all engines.

type ForEacher

type ForEacher interface {
	ForEach(func(key, value []byte) error) error
}

ForEacher is an optional capability for visiting all live key/value pairs. Iteration order is engine-defined and may be arbitrary.

type Haser

type Haser interface {
	Has(key []byte) (bool, error)
}

Haser is an optional capability for checking existence without retrieving values.

type Iterator

type Iterator interface {
	Valid() bool
	Next()

	Key() []byte
	Value() []byte
	KeyCopy(dst []byte) []byte
	ValueCopy(dst []byte) []byte

	Error() error
	Close() error
}

Iterator is a forward-only iterator over key/value pairs.

type MultiGetter added in v0.4.0

type MultiGetter interface {
	GetMany(keys [][]byte) ([][]byte, error)
}

MultiGetter is an optional capability for batched point reads.

type Printer

type Printer interface {
	Print() error
}

Printer is an optional capability for debug printing.

type RangeScanner

type RangeScanner interface {
	Iterator(start, end []byte) (Iterator, error)
	ReverseIterator(start, end []byte) (Iterator, error)
}

RangeScanner is an optional capability for ordered iteration over a key domain. Start is inclusive, End is exclusive; nil means unbounded.

type ReadSnapshot added in v0.4.0

type ReadSnapshot interface {
	Get(key []byte) ([]byte, error)
	GetAppend(key, dst []byte) ([]byte, error)
	Close() error
}

ReadSnapshot is an optional point-read snapshot used by benchmarks to measure snapshot-amortized read throughput.

type ReadSnapshotter added in v0.4.0

type ReadSnapshotter interface {
	AcquireReadSnapshot() (ReadSnapshot, error)
}

ReadSnapshotter is an optional capability for acquiring a point-read snapshot that can be reused across many reads.

type StatsProvider

type StatsProvider interface {
	Stats() map[string]string
}

StatsProvider is an optional capability for exposing engine stats.

type Syncer

type Syncer interface {
	SetSync(key, value []byte) error
	DeleteSync(key []byte) error
}

Syncer is an optional capability for durability-oriented writes.

Directories

Path Synopsis
adapters

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL