database

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: May 15, 2020 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package database defines interfaces to key value type databases used by various components in go-libonomy node

Index

Constants

View Source
const IdealBatchSize = 100 * 1024

IdealBatchSize is the best batch size Code using batches should try to add this much data to the batch. The value was determined empirically.

Variables

View Source
var ErrNotFound = errors.ErrNotFound

ErrNotFound is special type error for not found in DB

Functions

This section is empty.

Types

type Batch

type Batch interface {
	Putter
	Deleter
	ValueSize() int // amount of data in the batch
	Write() error
	// Reset resets the batch for reuse
	Reset()
}

Batch is a write-only database that commits changes to its host database when Write is called. Batch cannot be used concurrently.

func NewTableBatch

func NewTableBatch(db Database, prefix string) Batch

NewTableBatch returns a Batch object which prefixes all keys with a given string.

type Database

type Database interface {
	Putter
	Deleter
	Get(key []byte) ([]byte, error)
	Has(key []byte) (bool, error)
	Close()
	NewBatch() Batch
	Find(key []byte) Iterator
}

Database wraps all database operations. All methods are safe for concurrent use.

func NewTable

func NewTable(db Database, prefix string) Database

NewTable returns a Database object that prefixes all keys with a given string.

type Deleter

type Deleter interface {
	Delete(key []byte) error
}

Deleter wraps the database delete operation supported by both batches and regular databases.

type Iterator

type Iterator interface {
	iterator.IteratorSeeker
	Key() []byte
	Value() []byte
}

Iterator defined basic iterator interface

type LDBDatabase

type LDBDatabase struct {
	// contains filtered or unexported fields
}

LDBDatabase is a wrapper for leveldb database with concurrent access

func NewLDBDatabase

func NewLDBDatabase(file string, cache int, handles int, logger log.Log) (*LDBDatabase, error)

NewLDBDatabase returns a LevelDB wrapped object.

func (*LDBDatabase) Close

func (db *LDBDatabase) Close()

Close closes database, flushing writes and denying all new write requests

func (*LDBDatabase) Delete

func (db *LDBDatabase) Delete(key []byte) error

Delete deletes the key from the queue and database

func (*LDBDatabase) Find

func (db *LDBDatabase) Find(key []byte) Iterator

Find returns iterator to iterate over values with given prefix key

func (*LDBDatabase) Get

func (db *LDBDatabase) Get(key []byte) ([]byte, error)

Get returns the given key if it's present.

func (*LDBDatabase) Has

func (db *LDBDatabase) Has(key []byte) (bool, error)

Has returns whether the db contains the key

func (*LDBDatabase) Iterator

func (db *LDBDatabase) Iterator() iterator.Iterator

Iterator returns iterator iterating over all database keys

func (*LDBDatabase) LDB

func (db *LDBDatabase) LDB() *leveldb.DB

LDB returns the actual inner leveldb struct refrence

func (*LDBDatabase) Meter

func (db *LDBDatabase) Meter(prefix string)

Meter configures the database metrics collectors and

func (*LDBDatabase) NewBatch

func (db *LDBDatabase) NewBatch() Batch

NewBatch creates a new batch write struct, able to add multiple values in a single operation

func (*LDBDatabase) NewIterator

func (db *LDBDatabase) NewIterator() iterator.Iterator

NewIterator creates a new leveldb iterator struct compliant with Iterator interface

func (*LDBDatabase) NewIteratorWithPrefix

func (db *LDBDatabase) NewIteratorWithPrefix(prefix []byte) iterator.Iterator

NewIteratorWithPrefix returns a iterator to iterate over subset of database content with a particular prefix.

func (*LDBDatabase) Path

func (db *LDBDatabase) Path() string

Path returns the path to the database directory.

func (*LDBDatabase) Put

func (db *LDBDatabase) Put(key []byte, value []byte) error

Put puts the given key / value to the queue

type MemDatabase

type MemDatabase struct {
	// contains filtered or unexported fields
}

MemDatabase is a test memory database. Do not use for any production it does not get persisted

func NewMemDatabase

func NewMemDatabase() *MemDatabase

NewMemDatabase returns a memory database instance

func (*MemDatabase) Close

func (db *MemDatabase) Close()

Close closes the database

func (*MemDatabase) Delete

func (db *MemDatabase) Delete(key []byte) error

Delete removes the key from db

func (*MemDatabase) Find

func (db *MemDatabase) Find(key []byte) Iterator

Find returns iterator iterating items with given key as prefix

func (*MemDatabase) Get

func (db *MemDatabase) Get(key []byte) ([]byte, error)

Get gets the value for the given key, returns an error if key wasn't found

func (*MemDatabase) Has

func (db *MemDatabase) Has(key []byte) (bool, error)

Has returns a boolean if key is in db or not

func (*MemDatabase) Iterator

func (db *MemDatabase) Iterator() Iterator

Iterator returns iterator for memory database iterating all items in database

func (*MemDatabase) Keys

func (db *MemDatabase) Keys() [][]byte

Keys returns all keys found in database

func (*MemDatabase) Len

func (db *MemDatabase) Len() int

Len returns number of items in database

func (*MemDatabase) NewBatch

func (db *MemDatabase) NewBatch() Batch

NewBatch returns batch object to aggregate writes to db

func (*MemDatabase) NewMemDatabaseIterator

func (db *MemDatabase) NewMemDatabaseIterator() *MemDatabaseIterator

NewMemDatabaseIterator iterator for memory database iterating all items in database

func (*MemDatabase) Put

func (db *MemDatabase) Put(key []byte, value []byte) error

Put inserts value value by provided key

type MemDatabaseIterator

type MemDatabaseIterator struct {
	// contains filtered or unexported fields
}

MemDatabaseIterator is an iterator for memory database

func (*MemDatabaseIterator) Error

func (iter *MemDatabaseIterator) Error() error

Error is a stub to comply with DB interface

func (*MemDatabaseIterator) First

func (iter *MemDatabaseIterator) First() bool

First moves the iterator to first object

func (*MemDatabaseIterator) Key

func (iter *MemDatabaseIterator) Key() []byte

Key returns the key of the current item iterator is pointing at

func (*MemDatabaseIterator) Last

func (iter *MemDatabaseIterator) Last() bool

Last moves the iterator to last object

func (*MemDatabaseIterator) Next

func (iter *MemDatabaseIterator) Next() bool

Next advances iterator to next item

func (*MemDatabaseIterator) Prev

func (iter *MemDatabaseIterator) Prev() bool

Prev moves the iterator one item back

func (*MemDatabaseIterator) Release

func (iter *MemDatabaseIterator) Release()

Release is a stub to comply with DB interface

func (*MemDatabaseIterator) Seek

func (iter *MemDatabaseIterator) Seek(key []byte) bool

Seek returns true if key is found in iterator object

func (*MemDatabaseIterator) Value

func (iter *MemDatabaseIterator) Value() []byte

Value returns the value of the current item iterator is pointing at

type Putter

type Putter interface {
	Put(key []byte, value []byte) error
}

Putter wraps the database write operation supported by both batches and regular databases.

Jump to

Keyboard shortcuts

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