Documentation
¶
Index ¶
- Constants
- Variables
- func DeleteBlob(tx *Tx, startPageNum uint64) (int, error)
- func SetLogger(l *slog.Logger)
- func TempFileName(suffix string) string
- func WriteFreelist(dal *Dal, freelist *Freelist) error
- func WriteMeta(dal *Dal, m *Meta) error
- type BNode
- type Blob
- type Bucket
- func (bucket *Bucket) Cursor() *Cursor
- func (bucket *Bucket) ForEach(fn func(k, v []byte) error) error
- func (bucket *Bucket) Get(key []byte) ([]byte, bool)
- func (bucket *Bucket) NextSequence() (uint64, error)
- func (bucket *Bucket) Put(key, value []byte) error
- func (bucket *Bucket) Remove(key []byte) error
- func (bucket *Bucket) Sequence() uint64
- type BucketStat
- type Cursor
- type DB
- type DBStat
- type Dal
- type Freelist
- type Item
- type Meta
- type Options
- type Page
- type PageRecoveryCallback
- type Tx
- func (tx *Tx) Buckets() [][]byte
- func (tx *Tx) Commit() error
- func (tx *Tx) CreateBucket(name []byte) (*Bucket, error)
- func (tx *Tx) CreateBucketIfNotExists(name []byte) (*Bucket, error)
- func (tx *Tx) DeleteBucket(name []byte) error
- func (tx *Tx) GetBucket(name []byte) (*Bucket, error)
- func (tx *Tx) Rollback()
- type TxLog
Constants ¶
View Source
const ( ValueSimple = 0 ValueBlob = 1 NodePageTypeSize = UInt8Size NodeTypeSize = UInt8Size NodeNumItemsSize = UInt16Size NodeHeaderSize = NodePageTypeSize + NodeTypeSize + NodeNumItemsSize NodePageTypeOffset = 0 NodeTypeOffset = NodePageTypeOffset + NodePageTypeSize NodeNumItemsOffset = NodeTypeOffset + NodeTypeSize )
View Source
const ( MaxKeySize = 512 MaxValueSize = 1024 BucketRootSize = UInt64Size BucketCounterSize = UInt64Size BucketItemNSize = UInt64Size BucketBlobsNSize = UInt64Size BucketBytesInUseSize = UInt64Size BucketTotalSize = BucketRootSize + BucketCounterSize + BucketItemNSize + BucketBlobsNSize + BucketBytesInUseSize BucketRootOffset = 0 BucketCounterOffset = BucketRootOffset + BucketRootSize BucketItemNOffset = BucketCounterOffset + BucketCounterSize BucketBlobNOffset = BucketItemNOffset + BucketItemNSize BucketBytesInUseOffset = BucketBlobNOffset + BucketBlobsNSize )
View Source
const ( UInt64Size = 8 UInt32Size = 4 UInt16Size = 2 UInt8Size = 1 BTreePageSize = 4096 )
View Source
const ( MetaPage = 0 FreeListPage = 1 NodePage = 2 BlobPage = 3 )
View Source
const (
OneGigabyte = 1024 * 1024 * 1024
)
Variables ¶
View Source
var ( ErrKeyTooLarge = errors.New("key too large") ErrValueTooLarge = errors.New("value too large") ErrNotEnoughSpace = errors.New("not enough space to serialize node") ErrNoPagesLeft = errors.New("no pages left") ErrBucketNotFound = errors.New("bucket not found") ErrBucketExists = errors.New("bucket already exists") ErrTxClosed = errors.New("transaction closed") ErrWriteInRxTransaction = errors.New("write in read transaction") ErrNodeNotFound = errors.New("node not found") ErrBlobTooLarge = errors.New("blob too large") ErrUnknownItemType = errors.New("unknown item type") ErrBadDbVersion = errors.New("invalid db version") ErrBadDbName = errors.New("invalid db name") )
Functions ¶
func TempFileName ¶
func WriteFreelist ¶
Types ¶
type BNode ¶
type BNode struct {
// PageNum is the pageNum number of the node in the storage.
PageNum uint64
// contains filtered or unexported fields
}
BNode represents a node in a B-Tree. It contains Key-value pairs and child nodes.
func (*BNode) Deserialize ¶
type Blob ¶
type Blob struct {
// contains filtered or unexported fields
}
Blob represent data as linked page list
type Bucket ¶
type Bucket struct {
// contains filtered or unexported fields
}
func (*Bucket) NextSequence ¶
type BucketStat ¶
type DB ¶
func (*DB) GetOptions ¶ added in v0.0.2
type DBStat ¶
type DBStat struct {
TotalPageNum int // total number pages
FreePageN int // total number of free pages
UsedPageN int // total number of used pages
ReleasedPageN int // total number of released pages
FreeListPageN int // total number of pages allocated for freelist
TotalDBSize uint64 // amount of pages * page size
AvailDBSize uint64 // amount of free pages * page size
UsedDBSize uint64 // amount of used pages * page size
Buckets map[string]*BucketStat //
TxN int // total number of started read transactions
}
type Dal ¶
type Dal struct {
MinFillPercent float32
MaxFillPercent float32
// contains filtered or unexported fields
}
func (*Dal) AllocatePage ¶
func (*Dal) ReleasePage ¶
type Freelist ¶
type Freelist struct {
// contains filtered or unexported fields
}
func NewFreelist ¶
func ReadFreelist ¶
func (*Freelist) GetNextPageNumber ¶
func (*Freelist) ReleasePage ¶
type Meta ¶
type Meta struct {
// contains filtered or unexported fields
}
func (*Meta) Deserialize ¶
func (*Meta) GetDbVersion ¶
func (*Meta) GetDbVersionString ¶
type Options ¶ added in v0.0.2
func DefaultOptions ¶ added in v0.0.2
func DefaultOptions() *Options
func (*Options) WithFileMode ¶ added in v0.0.2
func (*Options) WithPageSize ¶ added in v0.0.2
func (*Options) WithRecovery ¶ added in v0.0.2
func (*Options) WithTxLogPath ¶ added in v0.0.2
type Page ¶
func (*Page) GetPageType ¶ added in v0.0.2
type PageRecoveryCallback ¶ added in v0.0.2
type Tx ¶
type Tx struct {
// contains filtered or unexported fields
}
func (*Tx) CreateBucketIfNotExists ¶
func (*Tx) DeleteBucket ¶
Click to show internal directories.
Click to hide internal directories.