base

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: May 16, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BitreeFilePrefix  = "bitree."
	BitpageFilePrefix = "bitpage."
	BithashPathPrefix = "bithash."
	BitablePathPrefix = "bitable."
	WalPathPrefix     = "wal."
)

Variables

View Source
var DefaultComparer = &Comparer{
	Compare: bytes.Compare,
	Equal:   bytes.Equal,

	AbbreviatedKey: func(key []byte) uint64 {
		if len(key) >= 8 {
			return binary.BigEndian.Uint64(key)
		}
		var v uint64
		for _, b := range key {
			v <<= 8
			v |= uint64(b)
		}
		return v << uint(8*(8-len(key)))
	},

	FormatKey: DefaultFormatter,

	Separator: func(dst, a, b []byte) []byte {
		i, n := SharedPrefixLen(a, b), len(dst)
		dst = append(dst, a...)

		min := len(a)
		if min > len(b) {
			min = len(b)
		}
		if i >= min {
			return dst
		}

		if a[i] >= b[i] {
			return dst
		}

		if i < len(b)-1 || a[i]+1 < b[i] {
			i += n
			dst[i]++
			return dst[:i+1]
		}

		i += n + 1
		for ; i < len(dst); i++ {
			if dst[i] != 0xff {
				dst[i]++
				return dst[:i+1]
			}
		}
		return dst
	},

	Successor: func(dst, a []byte) (ret []byte) {
		for i := 0; i < len(a); i++ {
			if a[i] != 0xff {
				dst = append(dst, a[:i+1]...)
				dst[len(dst)-1]++
				return dst
			}
		}
		return append(dst, a...)
	},

	Name: "bitalosdb.BytewiseComparator",
}
View Source
var DefaultFormatter = func(key []byte) fmt.Formatter {
	return FormatBytes(key)
}
View Source
var DefaultLogger = defaultLogger{/* contains filtered or unexported fields */}
View Source
var DefaultMerger = &Merger{
	Merge: func(key, value []byte) (ValueMerger, error) {
		res := &AppendValueMerger{}
		res.buf = append(res.buf, value...)
		return res, nil
	},

	Name: "bitalosdb.concatenate",
}
View Source
var ErrCorruption = errors.New("bitalosdb: corruption")
View Source
var ErrNotFound = errors.New("bitalosdb: not found")

Functions

func CheckValueValidByKeySetBithash

func CheckValueValidByKeySetBithash(v []byte) bool

func CorruptionErrorf

func CorruptionErrorf(format string, args ...interface{}) error

func EncodeInternalValue

func EncodeInternalValue(value []byte, seqNum uint64, kind InternalKeyKind) ([]byte, func())

func FmtDuration

func FmtDuration(d time.Duration) string

func GetBitowerIndex added in v1.1.0

func GetBitowerIndex(i int) int

func GetFilePathBase

func GetFilePathBase(path string) string

func InternalCompare

func InternalCompare(userCmp Compare, a, b InternalKey) int

func MakeBitablepath added in v1.1.0

func MakeBitablepath(dir string, i int) string

func MakeBithashpath added in v1.1.0

func MakeBithashpath(dir string, i int) string

func MakeBitpagepath added in v1.1.0

func MakeBitpagepath(dir string, i int) string

func MakeBitreeFilepath added in v1.1.0

func MakeBitreeFilepath(dir string, i int) string

func MakeFilename

func MakeFilename(fileType FileType, fileNum FileNum) string

func MakeFilepath

func MakeFilepath(fs vfs.FS, dirname string, fileType FileType, fileNum FileNum) string

func MakeWalpath added in v1.1.0

func MakeWalpath(dir string, i int) string

func ParseFilename

func ParseFilename(fs vfs.FS, filename string) (fileType FileType, fileNum FileNum, ok bool)

func SharedPrefixLen

func SharedPrefixLen(a, b []byte) int

Types

type AbbreviatedKey

type AbbreviatedKey func(key []byte) uint64

type AppendValueMerger

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

func (*AppendValueMerger) Finish

func (a *AppendValueMerger) Finish(includesBase bool) ([]byte, io.Closer, error)

func (*AppendValueMerger) MergeNewer

func (a *AppendValueMerger) MergeNewer(value []byte) error

func (*AppendValueMerger) MergeOlder

func (a *AppendValueMerger) MergeOlder(value []byte) error

type ArchiveCleaner

type ArchiveCleaner struct{}

func (ArchiveCleaner) Clean

func (ArchiveCleaner) Clean(fs vfs.FS, fileType FileType, path string) error

func (ArchiveCleaner) String

func (ArchiveCleaner) String() string

type Cleaner

type Cleaner interface {
	Clean(fs vfs.FS, fileType FileType, path string) error
}

type Compare

type Compare func(a, b []byte) int

type Comparer

type Comparer struct {
	Compare        Compare
	Equal          Equal
	AbbreviatedKey AbbreviatedKey
	FormatKey      FormatKey
	FormatValue    FormatValue
	Separator      Separator
	Split          Split
	Successor      Successor
	Name           string
}

type DFLOption

type DFLOption struct {
	IOWriteLoadThresholdCB func() bool
	Logger                 Logger
	DeleteInterval         int
}

type DeleteCleaner

type DeleteCleaner struct{}

func (DeleteCleaner) Clean

func (DeleteCleaner) Clean(fs vfs.FS, fileType FileType, path string) error

func (DeleteCleaner) String

func (DeleteCleaner) String() string

type DeletionFileLimiter

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

func NewDeletionFileLimiter

func NewDeletionFileLimiter(opts *DFLOption) *DeletionFileLimiter

func (*DeletionFileLimiter) AddFile

func (d *DeletionFileLimiter) AddFile(file string)

func (*DeletionFileLimiter) AddFiles

func (d *DeletionFileLimiter) AddFiles(files []string)

func (*DeletionFileLimiter) Close

func (d *DeletionFileLimiter) Close()

func (*DeletionFileLimiter) Flush

func (d *DeletionFileLimiter) Flush()

func (*DeletionFileLimiter) Run

func (d *DeletionFileLimiter) Run(opts *DFLOption)

type Equal

type Equal func(a, b []byte) bool

type FileNum

type FileNum uint64

func (FileNum) String

func (fn FileNum) String() string

type FileType

type FileType int
const (
	FileTypeLog FileType = iota
	FileTypeLock
	FileTypeManifest
	FileTypeCurrent
	FileTypeMeta
)

type FormatBytes

type FormatBytes []byte

func (FormatBytes) Format

func (p FormatBytes) Format(s fmt.State, c rune)

type FormatKey

type FormatKey func(key []byte) fmt.Formatter

type FormatValue

type FormatValue func(key, value []byte) fmt.Formatter

type InternalIterator

type InternalIterator interface {
	SeekGE(key []byte) (*InternalKey, []byte)
	SeekPrefixGE(prefix, key []byte, trySeekUsingNext bool) (*InternalKey, []byte)
	SeekLT(key []byte) (*InternalKey, []byte)
	First() (*InternalKey, []byte)
	Last() (*InternalKey, []byte)
	Next() (*InternalKey, []byte)
	Prev() (*InternalKey, []byte)
	Error() error
	Close() error
	SetBounds(lower, upper []byte)
	fmt.Stringer
}

type InternalKey

type InternalKey struct {
	UserKey []byte
	Trailer uint64
}

func DecodeInternalKey

func DecodeInternalKey(encodedKey []byte) InternalKey

func MakeInternalKey

func MakeInternalKey(userKey []byte, seqNum uint64, kind InternalKeyKind) InternalKey

func MakeInternalKey2

func MakeInternalKey2(userKey []byte, trailer uint64) InternalKey

func MakeInternalSetKey

func MakeInternalSetKey(userKey []byte) InternalKey

func MakeSearchKey

func MakeSearchKey(userKey []byte) InternalKey

func (InternalKey) Clone

func (k InternalKey) Clone() InternalKey

func (InternalKey) Encode

func (k InternalKey) Encode(buf []byte)

func (InternalKey) EncodeTrailer

func (k InternalKey) EncodeTrailer() [8]byte

func (InternalKey) Kind

func (k InternalKey) Kind() InternalKeyKind

func (InternalKey) Pretty

func (k InternalKey) Pretty(f FormatKey) fmt.Formatter

func (InternalKey) SeqNum

func (k InternalKey) SeqNum() uint64

func (*InternalKey) SetKind

func (k *InternalKey) SetKind(kind InternalKeyKind)

func (*InternalKey) SetSeqNum

func (k *InternalKey) SetSeqNum(seqNum uint64)

func (InternalKey) Size

func (k InternalKey) Size() int

func (InternalKey) String

func (k InternalKey) String() string

func (InternalKey) Valid

func (k InternalKey) Valid() bool

func (InternalKey) Visible

func (k InternalKey) Visible(snapshot uint64) bool

type InternalKeyKind

type InternalKeyKind uint8
const (
	InternalKeyKindDelete       InternalKeyKind = 0
	InternalKeyKindSet          InternalKeyKind = 1
	InternalKeyKindSetBithash   InternalKeyKind = 2
	InternalKeyKindLogData      InternalKeyKind = 3
	InternalKeyKindPrefixDelete InternalKeyKind = 4
	InternalKeyKindMax          InternalKeyKind = 18
	InternalKeyKindInvalid      InternalKeyKind = 255

	InternalKeySeqNumBatch = uint64(1 << 55)
	InternalKeySeqNumMax   = uint64(1<<56 - 1)
)

func (InternalKeyKind) String

func (k InternalKeyKind) String() string

type InternalValue

type InternalValue struct {
	Header    uint64
	UserValue []byte
}

func DecodeInternalValue

func DecodeInternalValue(encodedValue []byte) InternalValue

func MakeInternalValue

func MakeInternalValue(value []byte, seqNum uint64, kind InternalKeyKind) InternalValue

func (InternalValue) Kind

func (v InternalValue) Kind() InternalKeyKind

func (InternalValue) SeqNum

func (v InternalValue) SeqNum() uint64

func (*InternalValue) SetKind

func (v *InternalValue) SetKind(kind InternalKeyKind)

func (*InternalValue) SetSeqNum

func (v *InternalValue) SetSeqNum(seqNum uint64)

type Logger

type Logger interface {
	Info(args ...interface{})
	Warn(args ...interface{})
	Error(args ...interface{})
	Cost(arg ...interface{}) func()
	Infof(format string, args ...interface{})
	Warnf(format string, args ...interface{})
	Errorf(format string, args ...interface{})
	Fatalf(format string, args ...interface{})
}

func NewLogger

func NewLogger(logger Logger, tag string) Logger

type Merge

type Merge func(key, value []byte) (ValueMerger, error)

type Merger

type Merger struct {
	Merge Merge
	Name  string
}

type NeedsFileContents

type NeedsFileContents interface {
	// contains filtered or unexported methods
}

type Separator

type Separator func(dst, a, b []byte) []byte

type Split

type Split func(a []byte) int

type Successor

type Successor func(dst, a []byte) []byte

type ValueMerger

type ValueMerger interface {
	MergeNewer(value []byte) error
	MergeOlder(value []byte) error
	Finish(includesBase bool) ([]byte, io.Closer, error)
}

Jump to

Keyboard shortcuts

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