data

package
v0.0.0-...-50ac2b6 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DataFileNameSuffix    = ".data"
	HintFileName          = "hint-index"
	MergeFinishedFileName = "merge-finished"
	SeqNoFileName         = "seq-no"
)

Variables

View Source
var (
	ErrInvalidCRC = errors.New("invalid crc value, log record maybe corrupted")
)

Functions

func EncodeLogRecord

func EncodeLogRecord(logRecord *LogRecord) ([]byte, int64)

EncodeLogRecord 对 LogRecord 进行编码,返回字节数组及长度

+-------------+-------------+-------------+--------------+-------------+--------------+
| crc 校验值  |  type 类型   |    key size |   value size |      key    |      value   |
+-------------+-------------+-------------+--------------+-------------+--------------+
    4字节          1字节        变长(最大5)   变长(最大5)     变长           变长

func EncodeLogRecordPos

func EncodeLogRecordPos(pos *LogRecordPos) []byte

EncodeLogRecordPos 对位置信息进行编码

func GetDataFileName

func GetDataFileName(dirPath string, fileId uint32) string

Types

type DataFile

type DataFile struct {
	FileId    uint32        // 文件id
	WriteOff  int64         // 文件写到了哪个位置
	IoManager fio.IOManager // io 读写管理器
}

DataFile 数据文件

func OpenDataFile

func OpenDataFile(dirPath string, fileId uint32, ioType fio.FileIOType) (*DataFile, error)

OpenDataFile 打开新的数据文件

func OpenHintFile

func OpenHintFile(dirPath string) (*DataFile, error)

OpenHintFile 打开 Hint 索引文件

func OpenMergeFinishedFile

func OpenMergeFinishedFile(dirPath string) (*DataFile, error)

OpenMergeFinishedFile 打开标识 merge 完成的文件

func OpenSeqNoFile

func OpenSeqNoFile(dirPath string) (*DataFile, error)

OpenSeqNoFile 存储事务序列号的文件

func (*DataFile) Close

func (df *DataFile) Close() error

func (*DataFile) ReadLogRecord

func (df *DataFile) ReadLogRecord(offset int64) (*LogRecord, int64, error)

ReadLogRecord 根据 offset 从数据文件中读取 LogRecord

func (*DataFile) SetIOManager

func (df *DataFile) SetIOManager(dirPath string, ioType fio.FileIOType) error

func (*DataFile) Sync

func (df *DataFile) Sync() error

func (*DataFile) Write

func (df *DataFile) Write(buf []byte) error

func (*DataFile) WriteHintRecord

func (df *DataFile) WriteHintRecord(key []byte, pos *LogRecordPos) error

WriteHintRecord 写入索引信息到 hint 文件中

type LogRecord

type LogRecord struct {
	Key   []byte
	Value []byte
	Type  LogRecordType // tombstone墓碑值,删除数据时需要使用
}

Logecord 写入到数据文件的记录。日志:数据文件中的数据是追加写入的,类似日志格式

type LogRecordPos

type LogRecordPos struct {
	Fid    uint32 // 文件id,表示数据存储到到了哪个文件当中
	Offset int64  // 偏移量,表示数据村书到了文件当中的位置
}

数据的内存索引,主要描述数据在磁盘上的位置

func DecodeLogRecordPos

func DecodeLogRecordPos(buf []byte) *LogRecordPos

DecodeLogRecordPos 解码 LogRecordPos

type LogRecordType

type LogRecordType = byte
const (
	LogRecordNormal LogRecordType = iota
	LogRecordDeleted
	LogRecordTxnFinished
)

type TransactionRecord

type TransactionRecord struct {
	Record *LogRecord
	Pos    *LogRecordPos
}

TransactionRecord 暂存的事务相关的数据

Jump to

Keyboard shortcuts

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