bithash

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jul 8, 2024 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InternalKeyKindDelete  = base.InternalKeyKindDelete
	InternalKeyKindSet     = base.InternalKeyKindSet
	InternalKeyKindInvalid = base.InternalKeyKindInvalid
)
View Source
const (
	MetaIndexHashBH   = "indexhash_blockhandle"
	MetaConflictBH    = "conflict_blockhandle"
	MetaDataBH        = "data_blockhandle"
	IndexHashData     = "indexhash_data"
	IndexHashChecksum = "indexhash_checksum"
)

Variables

View Source
var (
	ErrBhNewReaderNoFile     = errors.New("bithash new reader nil file")
	ErrBhNewReaderFail       = errors.New("bithash: new reader fail")
	ErrBhReaderClosed        = errors.New("bithash: reader is closed")
	ErrBhWriterClosed        = errors.New("bithash: writer is closed")
	ErrBhIllegalBlockLength  = errors.New("bithash: illegal block handle length")
	ErrBhCreateTableFile     = errors.New("bithash: create table file fail")
	ErrBhOpenTableFile       = errors.New("bithash: open table file fail")
	ErrBhFileNumError        = errors.New("bithash: fileNum error")
	ErrBhFileNotImmutable    = errors.New("bithash: table is not immutable")
	ErrBhFileNumZero         = errors.New("bithash: fileNum zero")
	ErrBhReadRecordNil       = errors.New("bithash: read record nil")
	ErrBhReadAtIncomplete    = errors.New("bithash: readAt incomplete")
	ErrBhNotFound            = errors.New("bithash: not found")
	ErrBhKeyTooLarge         = errors.New("bithash: key too large")
	ErrBhValueTooLarge       = errors.New("bithash: value too large")
	ErrBhHashIndexWriteFail  = errors.New("bithash: hash_index write fail")
	ErrBhHashIndexReadFail   = errors.New("bithash: hash_index read fail")
	ErrBhFileNumMapCheckFail = errors.New("bithash: check fileNumMap file footer fail")
	ErrBhInvalidTableSize    = errors.New("bithash: invalid table file size is too small")
	ErrBhInvalidTableMeta    = errors.New("bithash:invalid table bad metaBH")
)

Functions

func MakeFilename

func MakeFilename(fileType FileType, fileNum FileNum) string

func MakeFilepath

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

func ParseFilename

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

Types

type Bithash

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

func Open

func Open(dirname string, opts *options.BithashOptions) (b *Bithash, err error)

func (*Bithash) CheckFilesDelPercent

func (b *Bithash) CheckFilesDelPercent(cfgPercent float64) []CompactFiles

func (*Bithash) CheckFilesMiniSize

func (b *Bithash) CheckFilesMiniSize() []CompactFiles

func (*Bithash) Checkpoint

func (b *Bithash) Checkpoint(fs vfs.FS, destDir string) (err error)

func (*Bithash) Close

func (b *Bithash) Close() (err error)

func (*Bithash) DebugInfo

func (b *Bithash) DebugInfo(dataType string) string

func (*Bithash) Delete

func (b *Bithash) Delete(fn FileNum) error

func (*Bithash) DeleteFileNumMap

func (b *Bithash) DeleteFileNumMap(fn FileNum)

func (*Bithash) FlushFinish

func (b *Bithash) FlushFinish(wr *BithashWriter) error

func (*Bithash) FlushStart

func (b *Bithash) FlushStart() (*BithashWriter, error)

func (*Bithash) Get

func (b *Bithash) Get(key []byte, khash uint32, fn FileNum) (value []byte, putPool func(), err error)

func (*Bithash) GetFileNumMap

func (b *Bithash) GetFileNumMap(src FileNum) (dst FileNum)

func (*Bithash) NewBithashWriter

func (b *Bithash) NewBithashWriter(compact bool) (*BithashWriter, error)

func (*Bithash) NewTableIter

func (b *Bithash) NewTableIter(fileNum FileNum) (*TableIterator, error)

func (*Bithash) RemoveTableFiles

func (b *Bithash) RemoveTableFiles(fileNums []FileNum)

func (*Bithash) SetFileNumMap

func (b *Bithash) SetFileNumMap(dst FileNum, src FileNum)

func (*Bithash) Stats

func (b *Bithash) Stats() *Stats

func (*Bithash) StatsAddKeyTotal

func (b *Bithash) StatsAddKeyTotal(n int)

func (*Bithash) StatsGetDelKeyTotal

func (b *Bithash) StatsGetDelKeyTotal() uint64

func (*Bithash) StatsSetDelKeyTotal

func (b *Bithash) StatsSetDelKeyTotal(n int)

func (*Bithash) StatsSubDelKeyTotal

func (b *Bithash) StatsSubDelKeyTotal(n int)

func (*Bithash) StatsSubKeyTotal

func (b *Bithash) StatsSubKeyTotal(n int)

func (*Bithash) StatsToString

func (b *Bithash) StatsToString() string

func (*Bithash) TableMaxSize

func (b *Bithash) TableMaxSize() int64

type BithashMetadata

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

type BithashWriter

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

func (*BithashWriter) Add

func (w *BithashWriter) Add(ikey base.InternalKey, value []byte) (FileNum, error)

func (*BithashWriter) AddIkey

func (w *BithashWriter) AddIkey(key *InternalKey, value []byte, khash uint32, fileNum FileNum) error

func (*BithashWriter) Finish

func (w *BithashWriter) Finish() error

func (*BithashWriter) GetFileNum

func (w *BithashWriter) GetFileNum() FileNum

func (*BithashWriter) Remove

func (w *BithashWriter) Remove() error

type BlockHandle

type BlockHandle struct {
	Offset, Length uint32
}

type CompactFiles

type CompactFiles struct {
	FileNum    FileNum
	DelPercent float64
	Size       int64
}

type Compare

type Compare = base.Compare

type Comparer

type Comparer = base.Comparer

type Equal

type Equal = base.Equal

type FS

type FS vfs.FS

type File

type File vfs.File

type FileNum

type FileNum uint32

func (FileNum) String

func (fn FileNum) String() string

type FileReopenOpt

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

type FileType

type FileType int

type InternalKey

type InternalKey = base.InternalKey

type ReadableFile

type ReadableFile interface {
	io.ReaderAt
	io.Closer
	Stat() (os.FileInfo, error)
}

type Reader

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

func NewReader

func NewReader(b *Bithash, f ReadableFile, extraOpts ...ReaderOption) (r *Reader, err error)

func (*Reader) Close

func (r *Reader) Close() error

func (*Reader) Get

func (r *Reader) Get(key []byte, khash uint32) ([]byte, func(), error)

type ReaderOption

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

type Separator

type Separator = base.Separator

type Split

type Split = base.Split

type Stats

type Stats struct {
	FileTotal   atomic.Uint32
	KeyTotal    atomic.Uint64
	DelKeyTotal atomic.Uint64
}

func (*Stats) String

func (s *Stats) String() string

type Successor

type Successor = base.Successor

type TableIterator

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

func (*TableIterator) Close

func (i *TableIterator) Close() error

func (*TableIterator) First

func (i *TableIterator) First() (key *InternalKey, value []byte, fileNum FileNum)

func (*TableIterator) Next

func (i *TableIterator) Next() (key *InternalKey, value []byte, fileNum FileNum)

func (*TableIterator) Valid

func (i *TableIterator) Valid() bool

type Writer

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

func NewTableWriter

func NewTableWriter(b *Bithash, isCompact bool) (*Writer, error)

func (*Writer) Add

func (w *Writer) Add(ikey base.InternalKey, value []byte) error

func (*Writer) AddIkey

func (w *Writer) AddIkey(ikey InternalKey, value []byte, khash uint32, fileNum FileNum) error

func (*Writer) Close

func (w *Writer) Close() (err error)

func (*Writer) Flush

func (w *Writer) Flush() error

func (*Writer) Get

func (w *Writer) Get(key []byte, khash uint32) ([]byte, func(), error)

func (*Writer) Remove

func (w *Writer) Remove() error

type WriterMetadata

type WriterMetadata struct {
	Size uint32
	// contains filtered or unexported fields
}

type WriterOption

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

Jump to

Keyboard shortcuts

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