func (p *PoolHandle) prefixKey(key []byte) []byte {
	prefixedKey := make([]byte, 1, len(key)+1)
	prefixedKey[0] = p.prefix
	return append(prefixedKey, key...)
}
prepend the prefix onto the key
package storage
import (
	"encoding/binary"
	"github.com/syndtr/goleveldb/leveldb"
	ldb_util "github.com/syndtr/goleveldb/leveldb/util"
	"github.com/bitmark-inc/logger"
)
type Handle interface {
	Begin()
	Commit() error
	Query
	Retrieve
	Update
}
type Retrieve interface {
	Get([]byte) []byte
	GetN([]byte) (uint64, bool)
	GetNB([]byte) (uint64, []byte)
	LastElement() (Element, bool)
	NewFetchCursor() *FetchCursor
}
type Update interface {
	Put([]byte, []byte, []byte)
	PutN([]byte, uint64)
	Remove([]byte)
}
type Query interface {
	Has([]byte) bool
	Ready() bool
}
type PoolHandle struct {
	prefix     byte
	limit      []byte
	dataAccess Access
}
type Element struct {
	Key   []byte
	Value []byte
}