Documentation ¶
Overview ¶
Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0
Index ¶
Constants ¶
View Source
const ( // UsersDBName holds all users information UsersDBName = "_users" // DatabasesDBName holds the name of all user databases DatabasesDBName = "_dbs" // ConfigDBName holds the name of the database that holds // the configuration details ConfigDBName = "_config" // MetadataDBName holds the name of the database that holds // the metadata about the worldstate database MetadataDBName = "_metadata" // DefaultDBName is the default database created during // node bootstrap DefaultDBName = "bdb" // ConfigKey holds the name of the key in the ConfigDB that // stores the cluster configuration ConfigKey = "config" // AllowedCharsInDBName holds the regexp for allowed characters // in a database name AllowedCharsInDBName = `^[0-9a-zA-Z_-.]+$` )
Variables ¶
This section is empty.
Functions ¶
func IsDefaultWorldStateDB ¶
IsDefaultWorldStateDB returns true if the given db is the default data DB
func IsSystemDB ¶
IsSystemDB returns true if the given db is a system database
Types ¶
type DB ¶
type DB interface { // Exist returns true if the database exist Exist(dbName string) bool // ListDBs lists all user databases (excludes system // databases) ListDBs() []string // Get returns the value of the key present in the // database Get(dbName, key string) ([]byte, *types.Metadata, error) // GetVersion returns the version of the key present // in the database GetVersion(dbName, key string) (*types.Version, error) // GetACL returns the access control rule for the given // key GetACL(dbName, key string) (*types.AccessControl, error) // Has returns true if the key exist in the database Has(dbName, key string) (bool, error) // GetConfig returns the cluster configuration GetConfig() (*types.ClusterConfig, *types.Metadata, error) // GetIndexDefinition returns the index definition of a given database GetIndexDefinition(dbName string) ([]byte, *types.Metadata, error) // GetIterator returns an iterator to fetch values associated with a range of keys // startKey is inclusive while the endKey is exclusive. An empty startKey (i.e., "") denotes that // the caller wants from the first key in the database (lexicographic order). An empty // endKey (i.e., "") denotes that the caller wants till the last key in the database (lexicographic order). GetIterator(dbName string, startKey, endKey string) (Iterator, error) // GetDBsSnapshot returns a latest snapshot of the given DB along with all system databases. // A snapshot is a frozen snapshot of a DB state at a particular point in time. // The content of snapshot are guaranteed to be consistent. // The snapshot must be released after use, by calling Release method on the DBSnapshot. GetDBsSnapshot(dbNames []string) (DBsSnapshot, error) // Commit commits the updates to each database Commit(dbsUpdates map[string]*DBUpdates, blockNumber uint64) error // Height returns the state database block height. In other // words, it returns the last committed block number Height() (uint64, error) // ValidDBName returns true if the given dbName is valid ValidDBName(dbName string) bool // Close closes the DB instance Close() error }
DB provides method to create and access states stored in a database.
type DBUpdates ¶
type DBUpdates struct { Writes []*KVWithMetadata Deletes []string }
DBUpdates holds writes of KV pairs and deletes of keys for each database
type DBsSnapshot ¶
type DBsSnapshot interface { // Get returns the value of the key present in the // database Get(dbName, key string) ([]byte, *types.Metadata, error) // GetIndexDefinition returns the index definition of a given database GetIndexDefinition(dbName string) ([]byte, *types.Metadata, error) // GetIterator returns an iterator to fetch values associated with a range of keys // startKey is inclusive while the endKey is exclusive. An empty startKey (i.e., "") denotes that // the caller wants from the first key in the database (lexicographic order). An empty // endKey (i.e., "") denotes that the caller wants till the last key in the database (lexicographic order). GetIterator(dbName string, startKey, endKey string) (Iterator, error) // Release releases the snapshot. This will not release any returned // iterators, the iterators would still be valid until released or the // underlying DB is closed. // Other methods should not be called after the snapshot has been released. Release() }
DBsSnapshot provides methods to read from a database snapshot
type Iterator ¶
type Iterator interface { // Key returns the key of the current key/value pair, or nil if done. // The caller should not modify the contents of the returned slice, and // its contents may change on the next call to 'Next()'. Key() []byte // Value returns the value and metadata of the current key/value // pair in bytes, nil if done. // The caller should not modify the contents of the returned slice, and // its contents may change on the next call to 'Next()'. To get the // exact `Value` and `Metadata` from the returned bytes, caller should // unmarshal the bytes to types.ValueWithMetadata Value() []byte // Next moves the iterator to the next key/value pair. // It returns false if the iterator is exhausted. Next() bool // Seek moves the iterator to the first key/value pair whose key is greater // than or equal to the given key. // It returns whether such pair exist Seek(key []byte) bool // Error returns any accumulated error during 'Next()'. An error could occur // when the 'Next()' is called on the closed iterator or closed database. Error() error // Release releases associated resources. Release should always succeed // and can be called multiple times without causing error. Release() }
Iterator provides methods to fetch a range of key-value pairs
Click to show internal directories.
Click to hide internal directories.