Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BreakScan = errors.New("break scan")
BreakScan error can be used on scanning function to notify termination of scanning
View Source
var ErrNotFound = errors.New("not found")
Functions ¶
This section is empty.
Types ¶
type Batch ¶
type Batch interface {
Flush(ctx context.Context) error
FlushIfFull(ctx context.Context) error
// FIXME: Maybe the batch "adder/setter" should not event care about the key and compute
// it straight? Since this is per storage engine, it would be a good place since
// all saved element would pass through those methods...
SetABI(key string, value []byte)
SetRow(key string, value []byte)
SetLast(key string, value []byte)
SetIndex(key string, value []byte)
Reset()
}
type KVStore ¶
type KVStore interface {
Close() error
// NewBatch returns the batch implementation suitable for the underlying store.
//
// FIXME: For now, we kept the `logger` parameter, not clear the intent was here. Let's
// decide if this was required later on when we are close to finish the refactoring.
NewBatch(logger *zap.Logger) Batch
FetchABI(ctx context.Context, prefixKey, keyStart, keyEnd string) (rowKey string, rawABI []byte, err error)
FetchIndex(ctx context.Context, tableKey, prefixKey, keyStart string) (rowKey string, rawIndex []byte, err error)
HasTabletRow(ctx context.Context, keyPrefix string) (exists bool, err error)
FetchTabletRow(ctx context.Context, key string, onTabletRow OnTabletRow) error
FetchTabletRows(ctx context.Context, keys []string, onTabletRow OnTabletRow) error
ScanTabletRows(ctx context.Context, keyStart, keyEnd string, onTabletRow OnTabletRow) error
// FetchLastWrittenBlock returns the latest written block reference that was correctly
// committed to the storage system.
//
// If no block was ever written yet, this must return `nil, ErrNotFound`.
FetchLastWrittenBlock(ctx context.Context, key string) (out bstream.BlockRef, err error)
ScanLastShardsWrittenBlock(ctx context.Context, keyPrefix string, onBlockRef OnBlockRef) error
}
KVStore represents the abstraction needed by FluxDB to correctly use different underlying KV storage engine.
TODO: For now, most functions receive the actual pre-computed key to fetch or to write.
While we affine the interface, we will see if make it lower-level (i.e. `Get(key)` directly) or if we keep higher level and defer more job into the implementation (i.e. removing the key parameters).
type OnTabletRow ¶
Click to show internal directories.
Click to hide internal directories.