table

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2024 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyKeys = errors.New("empty keys under store builder")
)
View Source
var (
	ErrKeyNotExist = errors.New("key not exist in kv table")
)

for testing

Functions

This section is empty.

Types

type Builder

type Builder interface {
	// FileNumber returns file name for store builder
	FileNumber() FileNumber
	// Add puts k/v pair init sst file write buffer
	// NOTICE: key must key in sort by desc
	Add(key uint32, value []byte) error
	// StreamWriter returns a writer for streaming writing data
	StreamWriter() StreamWriter
	// MinKey returns min key in store
	MinKey() uint32
	// MaxKey returns max key in store
	MaxKey() uint32
	// Size returns the length of store file
	Size() uint32
	// Count returns the number of k/v pairs contained in the store
	Count() uint64
	// Abandon abandons current store build for some reason
	Abandon() error
	// Close closes sst file write buffer
	Close() error
}

Builder represents sst file builder

func NewStoreBuilder

func NewStoreBuilder(fileNumber FileNumber, fileName string) (Builder, error)

NewStoreBuilder creates store builder instance for building store file

type Cache

type Cache interface {
	// GetReader returns store reader from cache, create new reader if not exist.
	GetReader(family string, fileName string) (Reader, error)
	// ReleaseReaders releases reader after read completed.
	ReleaseReaders(readers []Reader)
	// Evict evicts file reader from cache.
	Evict(fileName string)
	// Cleanup cleans the expired reader from cache.
	Cleanup()
	// Close cleans cache data after closing reader resource firstly.
	Close() error
}

Cache caches table readers.

func NewCache

func NewCache(storePath string, ttl time.Duration) Cache

NewCache creates cache for store readers.

type FileNumber

type FileNumber int64

FileNumber represents sst file number

func (FileNumber) Int64

func (i FileNumber) Int64() int64

Int64 returns the int64 value of file number

type Iterator

type Iterator interface {
	// HasNext returns if the iteration has more element.
	// It returns false if the iterator is exhausted.
	HasNext() bool
	// Key returns the key of the current key/value pair
	Key() uint32
	// Value returns the value of the current key/value pair
	Value() []byte
}

Iterator iterates over a store's key/value pairs in key order.

func NewMergedIterator

func NewMergedIterator(its []Iterator) Iterator

NewMergedIterator create merged iterator for multi iterators

type LRUCache

type LRUCache struct {
	// contains filtered or unexported fields
}

func NewLRUCache

func NewLRUCache() *LRUCache

NewLRUCache constructs an LRU cache.

func (*LRUCache) Add

func (c *LRUCache) Add(key string, value *cacheEntry)

Add adds a value to the cache.

func (*LRUCache) Get

func (c *LRUCache) Get(key string) (value *cacheEntry, ok bool)

Get looks up a key's value from the cache.

func (*LRUCache) Purge

func (c *LRUCache) Purge(fn func(entry *cacheEntry))

Purge is used to completely clear the cache.

func (*LRUCache) Remove

func (c *LRUCache) Remove(key string)

Remove removes the provided key from the cache.

func (*LRUCache) Walk

func (c *LRUCache) Walk(fn func(entry *cacheEntry) bool)

Walk walks the old entries, if it's expired, need to remove.

type Reader

type Reader interface {
	// Path returns the file path.
	Path() string
	// FileName returns the file name of reader.
	FileName() string
	// Get returns value for giving key,
	// if key not exist, return nil, ErrKeyNotExist.
	Get(key uint32) ([]byte, error)
	// Iterator iterates over a store's key/value pairs in key order.
	Iterator() Iterator
	// Close closes reader, release related resources.
	Close() error
}

Reader represents reader which reads k/v pair from store file.

type StreamWriter

type StreamWriter interface {
	// Prepare the writer with specified key
	// Resets the size and checksum
	Prepare(key uint32)
	// Writer writes buffer into the underlying file
	io.Writer
	// Size returns total written size of Write
	// Prepare will resets it to zero.
	Size() uint32
	// CRC32CheckSum returns a IEEE checksum of written bytes
	CRC32CheckSum() uint32
	// Commit marks the key/value pair has been written
	Commit() error
}

StreamWriter writes multi buffer into the builder continuously Call Prepare, Write, Commit in order. sw.Prepare(1) sw.Write(...) sw.Write(...) sw.Commit()

Jump to

Keyboard shortcuts

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