lsm

package
v0.0.0-...-a38de57 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2022 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCache

func NewCache(cfg *Config) *cache

func NewMergeIterator

func NewMergeIterator(iters []utils2.Iterator, reverse bool) utils2.Iterator

NewMergeIterator creates a merge iterator.

Types

type ConcatIterator

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

ConcatIterator 将table 数组链接成一个迭代器,这样迭代效率更高

func NewConcatIterator

func NewConcatIterator(tbls []*table, opt *utils2.Options) *ConcatIterator

NewConcatIterator creates a new concatenated iterator

func (*ConcatIterator) Close

func (s *ConcatIterator) Close() error

func (*ConcatIterator) Item

func (s *ConcatIterator) Item() utils2.Item

func (*ConcatIterator) Next

func (s *ConcatIterator) Next()

func (*ConcatIterator) Rewind

func (s *ConcatIterator) Rewind()

func (*ConcatIterator) Seek

func (s *ConcatIterator) Seek(key []byte)

func (*ConcatIterator) Valid

func (s *ConcatIterator) Valid() bool

type Config

type Config struct {
	WorkDir      string
	MemTableSize int64
	SSTableMaxSz int64
	// BlockSize is the size of each block inside SSTable in bytes.
	BlockSize int
	// BloomFalsePositive is the false positive probabiltiy of bloom filter.
	BloomFalsePositive float64
	// compact
	NumCompactors       int
	BaseLevelSize       int64
	LevelSizeMultiplier int // 决定level之间期望的size比例
	TableSizeMultiplier int
	BaseTableSize       int64
	NumLevelZeroTables  int
	MaxLevelNum         int
	DiscardStatsCh      *chan map[uint32]int64
}

type Item

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

func (*Item) Entry

func (it *Item) Entry() *utils2.Entry

type Iterator

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

Iterator 通用的Iterator迭代器

func (*Iterator) Close

func (iter *Iterator) Close() error

func (*Iterator) Item

func (iter *Iterator) Item() utils2.Item

func (*Iterator) Next

func (iter *Iterator) Next()

func (*Iterator) Rewind

func (iter *Iterator) Rewind()

func (*Iterator) Seek

func (iter *Iterator) Seek(key []byte)

func (*Iterator) Valid

func (iter *Iterator) Valid() bool

type LSM

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

func NewLSM

func NewLSM(cfg *Config) *LSM

func (*LSM) Close

func (l *LSM) Close() error

func (*LSM) Get

func (l *LSM) Get(key []byte) (*utils2.Entry, error)

func (*LSM) NewIterator

func (l *LSM) NewIterator(opt *utils2.Options) []utils2.Iterator

NewIterator 创建LSM迭代器

func (*LSM) NewMemTable

func (l *LSM) NewMemTable() *MemTable

NewMemTable 当内存中memtable已满时,创建新的内存索引

func (*LSM) Rotate

func (l *LSM) Rotate()

func (*LSM) Set

func (l *LSM) Set(entry *utils2.Entry) error

func (*LSM) StartCompaction

func (l *LSM) StartCompaction()

type LevelManager

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

func (*LevelManager) CalcL0Score

func (l *LevelManager) CalcL0Score() float64

CalcL0Score 计算l0层的得分:sst文件数/L0最多文件数

func (*LevelManager) Get

func (l *LevelManager) Get(key []byte) (*utils2.Entry, error)

Get query key in sst files from L0-L7

func (*LevelManager) NewIterator

func (l *LevelManager) NewIterator(options *utils2.Options) utils2.Iterator

type MemTable

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

func (*MemTable) Close

func (m *MemTable) Close() error

func (*MemTable) Get

func (m *MemTable) Get(key []byte) (*utils2.Entry, error)

func (*MemTable) NewIterator

func (m *MemTable) NewIterator(opt *utils2.Options) utils2.Iterator

func (*MemTable) Set

func (m *MemTable) Set(entry *utils2.Entry) error

type MergeIterator

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

MergeIterator 多路合并迭代器 NOTE: MergeIterator owns the array of iterators and is responsible for closing them.

func (*MergeIterator) Close

func (mi *MergeIterator) Close() error

Close implements Iterator.

func (*MergeIterator) Item

func (mi *MergeIterator) Item() utils2.Item

Key returns the key associated with the current iterator.

func (*MergeIterator) Next

func (mi *MergeIterator) Next()

Next returns the next element. If it is the same as the current key, ignore it.

func (*MergeIterator) Rewind

func (mi *MergeIterator) Rewind()

Rewind seeks to first element (or last element for reverse iterator).

func (*MergeIterator) Seek

func (mi *MergeIterator) Seek(key []byte)

Seek brings us to element with key >= given key.

func (*MergeIterator) Valid

func (mi *MergeIterator) Valid() bool

Valid returns whether the MergeIterator is at a valid element.

Jump to

Keyboard shortcuts

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