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 ¶
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
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 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 ¶
ForEacher is an optional capability for visiting all live key/value pairs. Iteration order is engine-defined and may be arbitrary.
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
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 ¶
StatsProvider is an optional capability for exposing engine stats.