Documentation ¶
Index ¶
- Constants
- func ManifestFileName(fileNumber table.FileNumber) string
- func RegisterLogType(logType LogType, fn NewLogFunc)
- func Table(fileNumber table.FileNumber) string
- type Compaction
- func (c *Compaction) AddFile(level int, file *FileMeta)
- func (c *Compaction) AddReferenceFiles(newReferenceFileLogs []Log)
- func (c *Compaction) DeleteFile(level int, fileNumber table.FileNumber)
- func (c *Compaction) GetEditLog() EditLog
- func (c *Compaction) GetInputs() [][]*FileMeta
- func (c *Compaction) GetLevel() int
- func (c *Compaction) GetLevelFiles() []*FileMeta
- func (c *Compaction) IsTrivialMove() bool
- func (c *Compaction) MarkInputDeletes()
- type EditLog
- type FamilyID
- type FamilyVersion
- type FileDesc
- type FileMeta
- type FileType
- type Log
- func CreateDeleteReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber) Log
- func CreateDeleteRollupFile(fileNumber table.FileNumber, interval timeutil.Interval) Log
- func CreateNewFile(level int32, file *FileMeta) Log
- func CreateNewReferenceFile(store string, familyID FamilyID, fileNumber table.FileNumber) Log
- func CreateNewRollupFile(fileNumber table.FileNumber, interval timeutil.Interval) Log
- func CreateSequence(leader int32, seq int64) Log
- func NewDeleteFile(level int32, fileNumber table.FileNumber) Log
- func NewNextFileNumber(fileNumber table.FileNumber) Log
- type LogType
- type NewLogFunc
- type Snapshot
- type StoreLog
- type StoreVersionSet
- type Version
Constants ¶
const Lock = "LOCK"
const ManifestPrefix = "MANIFEST-"
const Options = "OPTIONS"
const StoreFamilyID = -99999999
StoreFamilyID is store level edit log, actually store family is not actual family just save store level edit log for metadata.
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.
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
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 ¶
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 ¶
GetFileSize gets file size for sst file
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 ¶
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 ¶
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 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 }