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.