version

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: 14 Imported by: 0

Documentation

Index

Constants

View Source
const Lock = "LOCK"
View Source
const ManifestPrefix = "MANIFEST-"
View Source
const Options = "OPTIONS"
View Source
const StoreFamilyID = -99999999

StoreFamilyID is store level edit log, actually store family is not actual family just save store level edit log for metadata.

View Source
const TmpSuffix = "tmp"

Variables

This section is empty.

Functions

func ManifestFileName

func ManifestFileName(fileNumber table.FileNumber) string

ManifestFileName returns manifest file name

func RegisterLogType

func RegisterLogType(logType LogType, fn NewLogFunc)

RegisterLogType registers edit log type when system init, if it has duplicate log type, system need panic and exit.

func Table

func Table(fileNumber table.FileNumber) string

Table returns the sst's file name

Types

type Compaction

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

Compaction represents the compaction job context.

func NewCompaction

func NewCompaction(familyID FamilyID, level int, levelInputs, levelUpInputs []*FileMeta) *Compaction

NewCompaction create a compaction job context.

func (*Compaction) AddFile

func (c *Compaction) AddFile(level int, file *FileMeta)

AddFile adds a new file which compaction output file.

func (*Compaction) AddReferenceFiles

func (c *Compaction) AddReferenceFiles(newReferenceFileLogs []Log)

AddReferenceFiles adds new reference file for checking if file already rollup.

func (*Compaction) DeleteFile

func (c *Compaction) DeleteFile(level int, fileNumber table.FileNumber)

DeleteFile deletes an old file which compaction input file.

func (*Compaction) GetEditLog

func (c *Compaction) GetEditLog() EditLog

GetEditLog returns edit log.

func (*Compaction) GetInputs

func (c *Compaction) GetInputs() [][]*FileMeta

GetInputs returns all input files for compaction job.

func (*Compaction) GetLevel

func (c *Compaction) GetLevel() int

GetLevel returns compaction level.

func (*Compaction) GetLevelFiles

func (c *Compaction) GetLevelFiles() []*FileMeta

GetLevelFiles returns low level files.

func (*Compaction) IsTrivialMove

func (c *Compaction) IsTrivialMove() bool

IsTrivialMove returns a trivial compaction that can be implemented by just moving a single input file to the next level (no merging or splitting). returns true: can just move file to the next level.

func (*Compaction) MarkInputDeletes

func (c *Compaction) MarkInputDeletes()

MarkInputDeletes marks all inputs of this compaction as deletion, adds log to version edit.

type EditLog

type EditLog interface {
	fmt.Stringer

	// FamilyID return family id
	FamilyID() FamilyID
	// Add adds edit log into log list
	Add(log Log)
	// GetLogs return the logs under edit log
	GetLogs() []Log
	// IsEmpty returns edit logs is empty or not.
	IsEmpty() bool
	// contains filtered or unexported methods
}

EditLog represents the version metadata edit log

func NewEditLog

func NewEditLog(familyID FamilyID) EditLog

NewEditLog new editLog instance

type FamilyID

type FamilyID int

FamilyID represents internal family id.

func (FamilyID) Int

func (f FamilyID) Int() int

Int returns int value of family id

func (FamilyID) Int32

func (f FamilyID) Int32() int32

Int32 returns int32 value of family id

type FamilyVersion

type FamilyVersion interface {
	// GetID returns the family id
	GetID() FamilyID
	// GetVersionSet returns the store version set
	GetVersionSet() StoreVersionSet
	// GetAllActiveFiles returns all files based on all active versions
	GetAllActiveFiles() []*FileMeta
	// GetSnapshot returns the current version's snapshot
	GetSnapshot() Snapshot
	// GetLiveRollupFiles returns all need rollup files
	GetLiveRollupFiles() map[table.FileNumber][]timeutil.Interval
	// GetLiveReferenceFiles returns all rollup reference files
	GetLiveReferenceFiles(store string) map[FamilyID][]table.FileNumber
	// contains filtered or unexported methods
}

type FileDesc

type FileDesc struct {
	FileType   FileType
	FileNumber table.FileNumber
}

FileDesc represents file type and file number

func ParseFileName

func ParseFileName(fileName string) *FileDesc

ParseFileName parses file name. if the file name was successfully parsed, returns file desc instance, else return nil.

type FileMeta

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

FileMeta is the metadata for sst file

func NewFileMeta

func NewFileMeta(fileNumber table.FileNumber, minKey, maxKey, fileSize uint32) *FileMeta

NewFileMeta new FileMeta instance

func (*FileMeta) GetFileNumber

func (f *FileMeta) GetFileNumber() table.FileNumber

GetFileNumber gets file number for sst file

func (*FileMeta) GetFileSize

func (f *FileMeta) GetFileSize() uint32

GetFileSize gets file size for sst file

func (*FileMeta) GetMaxKey

func (f *FileMeta) GetMaxKey() uint32

GetMaxKey gets max key in sst file

func (*FileMeta) GetMinKey

func (f *FileMeta) GetMinKey() uint32

GetMinKey gets min key in sst file

func (*FileMeta) String

func (f *FileMeta) String() string

String returns the string value of file meta

type FileType

type FileType int

FileType represents a file type.

const (
	TypeManifest FileType = iota
	TypeJournal
	TypeTable
	TypeTemp
	TypeInfo
)

File types.

type Log

type Log interface {
	// Encode writes log from binary, if error return err
	Encode() ([]byte, error)
	// Decode reads log from binary, if error return err
	Decode(v []byte) error
	// contains filtered or unexported methods
}

Log represents metadata edit log for family level

func CreateDeleteReferenceFile

func CreateDeleteReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber) Log

CreateDeleteReferenceFile creates a delete reference file

func CreateDeleteRollupFile

func CreateDeleteRollupFile(fileNumber table.FileNumber, interval timeutil.Interval) Log

CreateDeleteRollupFile creates a remove rollup file

func CreateNewFile

func CreateNewFile(level int32, file *FileMeta) Log

CreateNewFile creates NewFile instance for add new file

func CreateNewReferenceFile

func CreateNewReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber) Log

CreateNewReferenceFile creates a new reference file

func CreateNewRollupFile

func CreateNewRollupFile(fileNumber table.FileNumber, interval timeutil.Interval) Log

CreateNewRollupFile creates a new rollup file

func CreateSequence

func CreateSequence(leader int32, seq int64) Log

CreateSequence creates a sequence number.

func NewDeleteFile

func NewDeleteFile(level int32, fileNumber table.FileNumber) Log

NewDeleteFile creates DeleteFile instance

func NewNextFileNumber

func NewNextFileNumber(fileNumber table.FileNumber) Log

NewNextFileNumber creates NextFileNumber instance

type LogType

type LogType int

LogType represents the version edit log type

const (
	NewFileLog LogType = iota + 1
	DeleteFileLog
	NextFileNumberLog
	NewRollupFileLog
	DeleteRollupFileLog
	NewReferenceFileLog
	DeleteReferenceFileLog
	SequenceNumberLog
)

Defines all version edit log types, Rollup/Reference file is spec version edit log for metric data rollup with difference target time interval.

type NewLogFunc

type NewLogFunc func() Log

NewLogFunc creates specific edit log instance

type Snapshot

type Snapshot interface {
	// GetCurrent returns current mutable version
	GetCurrent() Version
	// FindReaders finds all files include key
	FindReaders(key uint32) ([]table.Reader, error)
	// GetReader returns file reader
	GetReader(fileNumber table.FileNumber) (table.Reader, error)
	// Close releases related resources
	Close()
}

Snapshot represents a current family version for reading data. NOTICE: current version will retain like ref count, so snapshot must close.

type StoreLog

type StoreLog interface {
	Log
	// contains filtered or unexported methods
}

StoreLog represents metadata edit log store level

type StoreVersionSet

type StoreVersionSet interface {
	// Recover recover version set if exist, recover been invoked when kv store init.
	Recover() error
	// Destroy closes version set, release resource, such as journal writer etc.
	Destroy() error
	// NextFileNumber generates next file number
	NextFileNumber() table.FileNumber
	// ManifestFileNumber returns the current manifest file number
	ManifestFileNumber() table.FileNumber
	// CommitFamilyEditLog persists edit logs to manifest file, then apply new version to family version
	CommitFamilyEditLog(family string, editLog EditLog) error
	// CreateFamilyVersion creates family version using family name,
	// if family version exist, return exist one
	CreateFamilyVersion(family string, familyID FamilyID) FamilyVersion
	// GetFamilyVersion returns family version if it existed, else return nil
	GetFamilyVersion(family string) FamilyVersion
	// contains filtered or unexported methods
}

StoreVersionSet maintains all metadata for kv store

func NewStoreVersionSet

func NewStoreVersionSet(storePath string, storeCache table.Cache, numOfLevels int) StoreVersionSet

NewStoreVersionSet new VersionSet instance

type Version

type Version interface {
	// ID returns version id
	ID() int64
	// AddFile adds file meta into spec level
	AddFile(level int, file *FileMeta)
	// AddFiles adds file meta into spec level
	AddFiles(level int, files []*FileMeta)
	// DeleteFile deletes file from spec level file list
	DeleteFile(level int, fileNumber table.FileNumber)
	// GetFiles returns files by level
	GetFiles(level int) []*FileMeta
	GetFile(level int, fileNumber table.FileNumber) (*FileMeta, bool)
	// GetFamilyVersion return the family version
	GetFamilyVersion() FamilyVersion
	// NumOfRef returns the number of reference which version be used by search/compact/rollup
	NumOfRef() int32
	// Retain increments version ref count
	Retain()
	// Release decrements version ref count,
	// if ref==0, then remove current version from list of family level.
	Release()
	// FindFiles finds all files include key from each level
	FindFiles(key uint32) []*FileMeta
	// GetAllFiles returns all active files of each level
	GetAllFiles() []*FileMeta
	// Clone builds new version based on current version
	Clone() Version
	// Levels returns the files in each level
	Levels() []*level
	// NumberOfFilesInLevel returns the number of files by spec level,
	// if level > numOfLevels return 0.
	NumberOfFilesInLevel(level int) int
	// PickL0Compaction picks level0 compaction context,
	// if it hasn't congruent compaction return nil.
	PickL0Compaction(compactThreshold int) *Compaction

	// AddRollupFile adds need rollup file and target interval
	AddRollupFile(fileNumber table.FileNumber, interval timeutil.Interval)
	// DeleteRollupFile removes rollup file after rollup job complete successfully
	DeleteRollupFile(fileNumber table.FileNumber, interval timeutil.Interval)
	// AddReferenceFile adds rollup reference file under target family
	AddReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber)
	// DeleteReferenceFile removes rollup reference file under target family
	DeleteReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber)
	// GetRollupFiles returns all need rollup files
	GetRollupFiles() map[table.FileNumber][]timeutil.Interval
	// GetReferenceFiles returns the reference files under target store
	GetReferenceFiles(store string) map[FamilyID][]table.FileNumber
	// GetAllReferenceFiles returns all reference files
	GetAllReferenceFiles() map[string]map[FamilyID][]table.FileNumber
	// Sequence set sequence number.
	Sequence(leader int32, seq int64)
	// GetSequences returns all sequence number.
	GetSequences() map[int32]int64
}

Jump to

Keyboard shortcuts

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