Documentation ¶
Overview ¶
Package pebble implements the key-value database layer based on pebble.
Index ¶
- type Database
- func (d *Database) Close() error
- func (d *Database) Compact(start []byte, limit []byte) error
- func (d *Database) Delete(key []byte) error
- func (d *Database) Get(key []byte) ([]byte, error)
- func (d *Database) Has(key []byte) (bool, error)
- func (d *Database) NewBatch() ethdb.Batch
- func (d *Database) NewBatchWithSize(_ int) ethdb.Batch
- func (d *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator
- func (d *Database) NewSnapshot() (ethdb.Snapshot, error)
- func (d *Database) Path() string
- func (d *Database) Put(key []byte, value []byte) error
- func (d *Database) Stat(property string) (string, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database is a persistent key-value store based on the pebble storage engine. Apart from basic data storage functionality it also supports batch writes and iterating over the keyspace in binary-alphabetical order.
func New ¶
New returns a wrapped pebble DB object. The namespace is the prefix that the metrics reporting should use for surfacing internal stats.
func (*Database) Close ¶
Close stops the metrics collection, flushes any pending data to disk and closes all io accesses to the underlying key-value store.
func (*Database) Compact ¶
Compact flattens the underlying data store for the given key range. In essence, deleted and overwritten versions are discarded, and the data is rearranged to reduce the cost of operations needed to access them.
A nil start is treated as a key before all keys in the data store; a nil limit is treated as a key after all keys in the data store. If both is nil then it will compact entire data store.
func (*Database) NewBatch ¶
NewBatch creates a write-only key-value store that buffers changes to its host database until a final write is called.
func (*Database) NewBatchWithSize ¶
NewBatchWithSize creates a write-only database batch with pre-allocated buffer. It's not supported by pebble, but pebble has better memory allocation strategy which turns out a lot faster than leveldb. It's performant enough to construct batch object without any pre-allocated space.
func (*Database) NewIterator ¶
NewIterator creates a binary-alphabetical iterator over a subset of database content with a particular key prefix, starting at a particular initial key (or after, if it does not exist).
func (*Database) NewSnapshot ¶
NewSnapshot creates a database snapshot based on the current state. The created snapshot will not be affected by all following mutations happened on the database. Note don't forget to release the snapshot once it's used up, otherwise the stale data will never be cleaned up by the underlying compactor.