Documentation
¶
Index ¶
- Constants
- func BlockOffset(offset uint32) int64
- func NeedleOffset(offset int64) uint32
- func Size(n uint32) uint32
- type Data
- func (_this *Data) AppendNeedle(needle *Needle) (region NeedleRegion, err error)
- func (_this *Data) Close()
- func (_this *Data) DeleteNeedle(needle *Needle) (err error)
- func (_this *Data) FindNeedle(key int64) (needle *Needle, err error)
- func (_this *Data) GetNeedle(key int64, region NeedleRegion) (needle *Needle, err error)
- func (_this *Data) Init() (err error)
- func (_this *Data) String() string
- func (_this *Data) UpdateNeedle(needle *Needle) (region NeedleRegion, err error)
- type Index
- func (_this *Index) AppendIndexEntry(entry IndexEntry) (err error)
- func (_this *Index) Close()
- func (_this *Index) GetNeedleRegion(key int64) (NeedleRegion, bool)
- func (_this *Index) Init() (err error)
- func (_this *Index) SetNeedleRegion(key int64, region NeedleRegion) error
- func (_this *Index) String() string
- type IndexEntry
- type Metrics
- type Needle
- func (_this *Needle) Buffer() []byte
- func (_this *Needle) BuildFrom(buf []byte) (err error)
- func (_this *Needle) Close()
- func (_this *Needle) DataBuffer() []byte
- func (_this *Needle) FillBuffer() (err error)
- func (_this *Needle) ReadFrom(file io.Reader) (err error)
- func (_this *Needle) Renew(size uint32)
- func (_this *Needle) String() string
- type NeedleRegion
- type Store
- type SuperBlock
- type Volume
Constants ¶
const ( // 一个卷(volume)数据文件大小最大32GB。 DatafileMaxSize = 4 * 1024 * 1024 * 1024 * NeedlePaddingSize DatafileMaxOffset = 4*1024*1024*1024 - 1 // 4294967295 DatafileMaxCacheWrite = 1 )
const ( // IndexfileMaxSize - IndexfileMaxSize = int64((unsafe.Sizeof(int64(0)) + unsafe.Sizeof(int64(0))) * 32 * 1024 * 1024) // IndexEntrySize - IndexEntrySize = 16 // IndexfileMaxCacheWrite - IndexfileMaxCacheWrite = 1 )
const ( NeedlePaddingSize = 8 NeedleMagicSize = 4 NeedleCookieSize = 4 NeedleKeySize = 8 NeedleFlagsSize = 1 NeedleSizeSize = 4 NeedleChecksumSize = 4 // constant 21 NeedleHeaderSize = NeedleMagicSize + NeedleCookieSize + NeedleKeySize + NeedleFlagsSize + NeedleSizeSize NeedleFooterSize = NeedleMagicSize + NeedleChecksumSize NeedleMagicOffset = 0 NeedleCookieOffset = NeedleMagicOffset + NeedleMagicSize NeedleKeyOffset = NeedleCookieOffset + NeedleCookieSize NeedleFlagsOffset = NeedleKeyOffset + NeedleKeySize NeedleSizeOffset = NeedleFlagsOffset + NeedleFlagsSize NeedleDataOffset = NeedleSizeOffset + NeedleSizeSize NeedleChecksumOffset = NeedleMagicOffset + NeedleMagicSize NeedlePaddingOffset = NeedleChecksumOffset + NeedleChecksumSize )
const ( SuperBlockSize = NeedlePaddingSize SuperBlockMagicOffset = 0 SuperBlockMagicSize = 4 SuperBlockVersionOffset = SuperBlockMagicOffset + SuperBlockMagicSize SuperBlockVersionSize = 1 SuperBlockPaddingOffset = SuperBlockVersionOffset + SuperBlockVersionSize SuperBlockPaddingSize = SuperBlockSize - SuperBlockPaddingOffset )
Variables ¶
This section is empty.
Functions ¶
func NeedleOffset ¶
NeedleOffset convert offset to needle offset.
Types ¶
type Data ¶
type Data struct {
Dir string
FileSize uint64
AlignedOffset uint64 // FileSize / NeedlePaddingSize
// contains filtered or unexported fields
}
Data - **************** Data ****************
func (*Data) AppendNeedle ¶
func (_this *Data) AppendNeedle(needle *Needle) (region NeedleRegion, err error)
AppendNeedle - ======== AppendNeedle() ======== Keep write needles to the end of data file.
func (*Data) DeleteNeedle ¶
DeleteNeedle - ======== DeleteNeedle() ========
func (*Data) FindNeedle ¶
FindNeedle - ======== FindNeedle() ========
func (*Data) GetNeedle ¶
func (_this *Data) GetNeedle(key int64, region NeedleRegion) (needle *Needle, err error)
GetNeedle -
func (*Data) UpdateNeedle ¶
func (_this *Data) UpdateNeedle(needle *Needle) (region NeedleRegion, err error)
UpdateNeedle - ======== UpdateNeedle() ========
type Index ¶
Index - **************** Index ****************
func (*Index) AppendIndexEntry ¶
func (_this *Index) AppendIndexEntry(entry IndexEntry) (err error)
AppendIndexEntry ()
======== Index::AppendIndexEntry() ========
func (*Index) GetNeedleRegion ¶
func (_this *Index) GetNeedleRegion(key int64) (NeedleRegion, bool)
GetNeedleRegion () ======== Index::GetNeedleRegion() ========
func (*Index) SetNeedleRegion ¶
func (_this *Index) SetNeedleRegion(key int64, region NeedleRegion) error
SetNeedleRegion () ======== Index::SetNeedleRegion() ========
type Metrics ¶
type Metrics struct {
ReadCount uint64
ReadBytes uint64
ReadTime uint64
WriteCount uint64
WriteBytes uint64
WriteTime uint64
DeleteCount uint64
DeleteBytes uint64
DeleteTime uint64
}
Metrics - **************** Metrics ****************
type Needle ¶
type Needle struct {
HeaderMagic []byte
Cookie int32
Key int64
MTime int64
Flags byte
Size uint32
Data []byte
//DataReader *io.Reader
Checksum uint32
Padding []byte
WriteSize uint32 // 对齐后实际写入的字节数
PaddingSize uint32 // 对齐后增加的字节数
AlignedSize uint32 // needle.WriteSize / NeedlePaddingSize
// contains filtered or unexported fields
}
**************** Needle ****************
func (*Needle) DataBuffer ¶
DataBuffer () ======== DataBuffer() ========
func (*Needle) FillBuffer ¶
FillBuffer () ======== FillBuffer() ========
type NeedleRegion ¶
type NeedleRegion struct {
// use late 40 bits.
// Single data file max size is
// 1TB (2^40=1,099,511,627,776) * NEEDLE_PADDINGSIZE (8 bytes aligned.)
AlignedOffset uint64
// use late 24 bits. single file size has to less 16MB (2^24).
Size uint32
}
NeedleRegion - **************** NeedleRegion ****************
func (*NeedleRegion) GetOffset ¶
func (_this *NeedleRegion) GetOffset() uint64
GetOffset ()
======== NeedleRegion::GetOffset() ========
func (*NeedleRegion) GetSize ¶
func (_this *NeedleRegion) GetSize() uint32
GetSize () ======== NeedleRegion::GetSize() ========
type Store ¶
**************** Store ****************
func (*Store) CreateVolume ¶
======== CreateVolume() ========
type SuperBlock ¶
SuperBlock - **************** SuperBlock ****************
func NewSuperBlock ¶
func NewSuperBlock() *SuperBlock
NewSuperBlock - ======== NewSuperBlock() ========
func (*SuperBlock) ReadFromFile ¶
func (_this *SuperBlock) ReadFromFile(reader *os.File) (err error)
ReadFromFile - ======== ReadFromFile() ========
func (*SuperBlock) WriteToFile ¶
func (_this *SuperBlock) WriteToFile(writer *os.File) (writedSize uint64, err error)
WriteToFile - ======== WriteToFile() ========
type Volume ¶
type Volume struct {
ID int32
// contains filtered or unexported fields
}
Volume - **************** Volume ****************
func (*Volume) ReadNeedle ¶
ReadNeedle () ======== ReadNeedle() ========
func (*Volume) WriteNeedle ¶
WriteNeedle () ======== WriteNeedle() ========