pebble

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 21, 2024 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Overview

Package pebble implements the key-value database layer based on pebble.

Index

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

func New(file string, cache int, handles int, namespace string, readonly bool, ephemeral bool, extraOptions *ExtraOptions) (*Database, error)

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

func (d *Database) Close() error

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

func (d *Database) Compact(start []byte, limit []byte) error

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) Delete

func (d *Database) Delete(key []byte) error

Delete removes the key from the key-value store.

func (*Database) Get

func (d *Database) Get(key []byte) ([]byte, error)

Get retrieves the given key if it's present in the key-value store.

func (*Database) Has

func (d *Database) Has(key []byte) (bool, error)

Has retrieves if a key is present in the key-value store.

func (*Database) NewBatch

func (d *Database) NewBatch() ethdb.Batch

NewBatch creates a write-only key-value store that buffers changes to its host database until a final write is called.

func (*Database) NewBatchWithSize

func (d *Database) NewBatchWithSize(size int) ethdb.Batch

NewBatchWithSize creates a write-only database batch with pre-allocated buffer.

func (*Database) NewIterator

func (d *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator

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

func (d *Database) NewSnapshot() (ethdb.Snapshot, error)

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.

func (*Database) Path

func (d *Database) Path() string

Path returns the path to the database directory.

func (*Database) Put

func (d *Database) Put(key []byte, value []byte) error

Put inserts the given value into the key-value store.

func (*Database) Stat

func (d *Database) Stat(property string) (string, error)

Stat returns the internal metrics of Pebble in a text format. It's a developer method to read everything there is to read independent of Pebble version.

The property is unused in Pebble as there's only one thing to retrieve.

type ExtraLevelOptions

type ExtraLevelOptions struct {
	BlockSize      int
	IndexBlockSize int
	TargetFileSize int64
}

type ExtraOptions

type ExtraOptions struct {
	BytesPerSync                int
	L0CompactionFileThreshold   int
	L0CompactionThreshold       int
	L0StopWritesThreshold       int
	LBaseMaxBytes               int64
	MemTableStopWritesThreshold int
	MaxConcurrentCompactions    func() int
	DisableAutomaticCompactions bool
	WALBytesPerSync             int
	WALDir                      string
	WALMinSyncInterval          func() time.Duration
	TargetByteDeletionRate      int
	Experimental                ExtraOptionsExperimental
	Levels                      []ExtraLevelOptions
}

type ExtraOptionsExperimental

type ExtraOptionsExperimental struct {
	L0CompactionConcurrency   int
	CompactionDebtConcurrency uint64
	ReadCompactionRate        int64
	ReadSamplingMultiplier    int64
	MaxWriterConcurrency      int
	ForceWriterParallelism    bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL