It is the storage engine realised the lsm tree structure, used by ReconDB
//Base mem interface, you can implement own realisation
type MemStorage interface {
Get(key string) ([]byte, error)
Set(key string, value []byte)
Del(key string) error
Sync() error
Len() int
SsTable() SsTableStorage
}
// Mem constructor, create structure realised MemStorage interface
// ssTable argument may be a nil
// Dir is the link to directory for data storing
func NewMem(ssTable SsTableStorage, dir *string) MemStorage
//Base SsTable interface, you can implement own realisation
type SsTableStorage interface {
Get(key string) ([]byte, error)
Set(key string, value []byte) error
Del(key string) error
CreatePartition() SsTablePartitionStorage
ClosePartition(partition SsTablePartitionStorage) error
OpenPartition(createdAt int64) SsTablePartitionStorage
Range(cb func(createdAt int64, partitionStorage SsTablePartitionStorage) bool)
Len() int
CloseAll() error
MergeSort() error
}
// SsTable constructor, create structure realised SsTableStorage interface
// Dir is the link to directory for data storing
func NewSsTable(dir *string) SsTableStorage
//Base ss table partition interface, you can implement own realisation
type SsTablePartitionStorage interface {
Get(key string) ([]byte, error)
Set(key string, value []byte) error
Del(key string) error
Range(cb func(key string, value []byte) bool)
Key() int64
Close() error
}
// SsTable partition constructor, create structure realised SsTablePartitionStorage interface
// Dir is the link to directory for data storing
func NewSStablePartition(createdAt int64, dir *string) SsTablePartitionStorage
// Error used when key don't exists
var KeyNotFoundErr = errors.New("can't found value by that key")
// Error used when key removed
var KeyRemovedErr = errors.New("that key was removed")