Documentation
¶
Index ¶
- func EncodeWriteTask(task *WriteTask) []byte
- type Batch
- type Database
- type DatabaseBatcher
- type DatabaseDeleter
- type DatabaseDispatcher
- type DatabaseGetter
- type DatabaseGroup
- type DatabasePutter
- type DatabaseScanner
- type DatabaseService
- func (s *DatabaseService) BeginTransaction()
- func (s *DatabaseService) Close()
- func (s *DatabaseService) Delete(key []byte) error
- func (s *DatabaseService) DeleteAll() error
- func (s *DatabaseService) DeleteBatch(b iservices.IDatabaseBatch)
- func (s *DatabaseService) DeleteIterator(it iservices.IDatabaseIterator)
- func (s *DatabaseService) EndTransaction(commit bool) error
- func (s *DatabaseService) Get(key []byte) ([]byte, error)
- func (s *DatabaseService) GetRevision() uint64
- func (s *DatabaseService) GetRevisionAndBase() (current uint64, base uint64)
- func (s *DatabaseService) GetRevisionTag(r uint64) string
- func (s *DatabaseService) GetTagRevision(tag string) (uint64, error)
- func (s *DatabaseService) Has(key []byte) (bool, error)
- func (s *DatabaseService) NewBatch() iservices.IDatabaseBatch
- func (s *DatabaseService) NewIterator(start []byte, limit []byte) iservices.IDatabaseIterator
- func (s *DatabaseService) NewReversedIterator(start []byte, limit []byte) iservices.IDatabaseIterator
- func (s *DatabaseService) Put(key []byte, value []byte) error
- func (s *DatabaseService) RebaseToRevision(r uint64) error
- func (s *DatabaseService) RebaseToTag(tag string) error
- func (s *DatabaseService) RevertToRevision(r uint64) error
- func (s *DatabaseService) RevertToTag(tag string) error
- func (s *DatabaseService) Start(node *node.Node) error
- func (s *DatabaseService) Stop() error
- func (s *DatabaseService) TagRevision(r uint64, tag string) error
- func (s *DatabaseService) TransactionHeight() uint
- type GuardedDatabaseService
- type Iterator
- type KeyHashDispatcher
- type LevelDatabase
- func (db *LevelDatabase) Close()
- func (db *LevelDatabase) Delete(key []byte) error
- func (db *LevelDatabase) DeleteBatch(b Batch)
- func (db *LevelDatabase) DeleteIterator(it Iterator)
- func (db *LevelDatabase) FileName() string
- func (db *LevelDatabase) Get(key []byte) ([]byte, error)
- func (db *LevelDatabase) Has(key []byte) (bool, error)
- func (db *LevelDatabase) NewBatch() Batch
- func (db *LevelDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *LevelDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *LevelDatabase) Put(key []byte, value []byte) error
- type LevelDatabaseBatch
- type LevelDatabaseIterator
- type LevelWriteAheadLog
- func (wal *LevelWriteAheadLog) Close()
- func (wal *LevelWriteAheadLog) DeleteTask(taskId uint64) error
- func (wal *LevelWriteAheadLog) DeleteTasks(taskIds []uint64) error
- func (wal *LevelWriteAheadLog) GetTask(taskId uint64) (*WriteTask, error)
- func (wal *LevelWriteAheadLog) GetTasks() ([]*WriteTask, error)
- func (wal *LevelWriteAheadLog) NewTaskID() uint64
- func (wal *LevelWriteAheadLog) PutTask(task *WriteTask) error
- func (wal *LevelWriteAheadLog) PutTasks(tasks []*WriteTask) error
- type MemoryDatabase
- func (db *MemoryDatabase) Close()
- func (db *MemoryDatabase) Delete(key []byte) error
- func (db *MemoryDatabase) DeleteBatch(b Batch)
- func (db *MemoryDatabase) DeleteIterator(it Iterator)
- func (db *MemoryDatabase) Get(key []byte) ([]byte, error)
- func (db *MemoryDatabase) Has(key []byte) (bool, error)
- func (db *MemoryDatabase) NewBatch() Batch
- func (db *MemoryDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *MemoryDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *MemoryDatabase) Put(key []byte, value []byte) error
- type RevDatabase
- type Revertible
- type RevertibleDatabase
- func (db *RevertibleDatabase) Close()
- func (db *RevertibleDatabase) Delete(key []byte) error
- func (db *RevertibleDatabase) DeleteBatch(b Batch)
- func (db *RevertibleDatabase) DeleteIterator(it Iterator)
- func (db *RevertibleDatabase) Get(key []byte) ([]byte, error)
- func (db *RevertibleDatabase) GetRevision() uint64
- func (db *RevertibleDatabase) GetRevisionAndBase() (current uint64, base uint64)
- func (db *RevertibleDatabase) GetRevisionTag(r uint64) string
- func (db *RevertibleDatabase) GetTagRevision(tag string) (uint64, error)
- func (db *RevertibleDatabase) Has(key []byte) (bool, error)
- func (db *RevertibleDatabase) NewBatch() Batch
- func (db *RevertibleDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *RevertibleDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *RevertibleDatabase) Put(key []byte, value []byte) error
- func (db *RevertibleDatabase) RebaseToRevision(r uint64) error
- func (db *RevertibleDatabase) RebaseToTag(tag string) error
- func (db *RevertibleDatabase) RevertToRevision(r uint64) error
- func (db *RevertibleDatabase) RevertToTag(tag string) error
- func (db *RevertibleDatabase) TagRevision(r uint64, tag string) error
- type SimpleDatabaseGroup
- func (g *SimpleDatabaseGroup) Close()
- func (g *SimpleDatabaseGroup) Crashed() bool
- func (g *SimpleDatabaseGroup) Delete(key []byte) error
- func (g *SimpleDatabaseGroup) DeleteBatch(b Batch)
- func (g *SimpleDatabaseGroup) DeleteIterator(it Iterator)
- func (g *SimpleDatabaseGroup) Get(key []byte) ([]byte, error)
- func (g *SimpleDatabaseGroup) Has(key []byte) (bool, error)
- func (g *SimpleDatabaseGroup) NewBatch() Batch
- func (g *SimpleDatabaseGroup) NewIterator(start []byte, limit []byte) Iterator
- func (g *SimpleDatabaseGroup) NewReversedIterator(start []byte, limit []byte) Iterator
- func (g *SimpleDatabaseGroup) Put(key []byte, value []byte) error
- type TagRevDatabase
- type TagRevertible
- type Transactional
- type TransactionalDatabase
- func (db *TransactionalDatabase) BeginTransaction()
- func (db *TransactionalDatabase) Close()
- func (db *TransactionalDatabase) Delete(key []byte) error
- func (db *TransactionalDatabase) DeleteBatch(b Batch)
- func (db *TransactionalDatabase) DeleteIterator(it Iterator)
- func (db *TransactionalDatabase) EndTransaction(commit bool) error
- func (db *TransactionalDatabase) Get(key []byte) ([]byte, error)
- func (db *TransactionalDatabase) Has(key []byte) (bool, error)
- func (db *TransactionalDatabase) NewBatch() Batch
- func (db *TransactionalDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *TransactionalDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *TransactionalDatabase) Put(key []byte, value []byte) error
- func (db *TransactionalDatabase) TransactionHeight() uint
- type TrxDatabase
- type TrxLevelDatabase
- func (db *TrxLevelDatabase) BeginTransaction()
- func (db *TrxLevelDatabase) Close()
- func (db *TrxLevelDatabase) Delete(key []byte) error
- func (db *TrxLevelDatabase) DeleteBatch(b Batch)
- func (db *TrxLevelDatabase) DeleteIterator(it Iterator)
- func (db *TrxLevelDatabase) EndTransaction(commit bool) error
- func (db *TrxLevelDatabase) Get(key []byte) ([]byte, error)
- func (db *TrxLevelDatabase) Has(key []byte) (bool, error)
- func (db *TrxLevelDatabase) NewBatch() Batch
- func (db *TrxLevelDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *TrxLevelDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *TrxLevelDatabase) Put(key []byte, value []byte) error
- func (db *TrxLevelDatabase) TransactionHeight() uint
- type TrxMemoryDatabase
- func (db *TrxMemoryDatabase) BeginTransaction()
- func (db *TrxMemoryDatabase) Close()
- func (db *TrxMemoryDatabase) Delete(key []byte) error
- func (db *TrxMemoryDatabase) DeleteBatch(b Batch)
- func (db *TrxMemoryDatabase) DeleteIterator(it Iterator)
- func (db *TrxMemoryDatabase) EndTransaction(commit bool) error
- func (db *TrxMemoryDatabase) Get(key []byte) ([]byte, error)
- func (db *TrxMemoryDatabase) Has(key []byte) (bool, error)
- func (db *TrxMemoryDatabase) NewBatch() Batch
- func (db *TrxMemoryDatabase) NewIterator(start []byte, limit []byte) Iterator
- func (db *TrxMemoryDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
- func (db *TrxMemoryDatabase) Put(key []byte, value []byte) error
- func (db *TrxMemoryDatabase) TransactionHeight() uint
- type WriteAheadLog
- type WriteTask
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EncodeWriteTask ¶
Types ¶
type Batch ¶
type Batch interface {
DatabasePutter
DatabaseDeleter
// execute all batched operations
Write() error
// reset the batch to empty
Reset()
}
interface for transaction executor methods must be thread safe write operations must be executed atomically
type Database ¶
type Database interface {
DatabaseGetter
DatabasePutter
DatabaseDeleter
DatabaseScanner
DatabaseBatcher
Close()
}
interface for full functional database methods must be thread safe
func NewNamespace ¶
type DatabaseBatcher ¶
type DatabaseBatcher interface {
// create a batch which can pack DatabasePutter & DatabaseDeleter operations and execute them atomically
NewBatch() Batch
// release a Batch
DeleteBatch(b Batch)
}
interface for transactional execution of multiple writes methods must be thread safe
type DatabaseDeleter ¶
type DatabaseDeleter interface {
// delete the given key and its value
// if the given key does not exist, just return nil, indicating a successful deletion without doing anything.
Delete(key []byte) error
}
interface for deletion methods must be thread safe
type DatabaseDispatcher ¶
type DatabaseDispatcher interface {
// return members of database group.
// members must be fixed once the DatabaseDispatcher object is created
MemberDatabases() []Database
// return the index number of the mapped member database
DatabaseForKey(key []byte) int
// return databases who possibly contains keys from given range
DatabasesForKeyRange(start []byte, limit []byte) []int
}
interface for key->database mapping policy for a group of databases
type DatabaseGetter ¶
type DatabaseGetter interface {
// check existence of the given key
Has(key []byte) (bool, error)
// query the value of the given key
Get(key []byte) ([]byte, error)
}
interface for key & value query methods must be thread safe
type DatabaseGroup ¶
type DatabaseGroup interface {
DatabaseDispatcher
Database
}
interface for a logical database consisting of a group of databases
type DatabasePutter ¶
type DatabasePutter interface {
// insert a new key-value pair, or update the value if the given key already exists
Put(key []byte, value []byte) error
}
interface for insertion and updating methods must be thread safe
type DatabaseScanner ¶
type DatabaseScanner interface {
// create an iterator containing keys from [start, limit)
// returned iterator points before the first key of given range
// a nil start is the logical minimal key that is lesser than any existing keys
// a nil limit is the logical maximum key that is greater than any existing keys
NewIterator(start []byte, limit []byte) Iterator
// same as NewIterator, but iteration will be in reversed order.
NewReversedIterator(start []byte, limit []byte) Iterator
// release an iterator.
DeleteIterator(it Iterator)
}
interface for key-space range scan methods must be thread safe
type DatabaseService ¶
type DatabaseService struct {
// contains filtered or unexported fields
}
the service type
func NewDatabase ¶
func NewDatabase(dbPath string) (*DatabaseService, error)
func NewDatabaseService ¶
func NewDatabaseService(ctx *node.ServiceContext, dbPath string) (*DatabaseService, error)
service constructor
func (*DatabaseService) BeginTransaction ¶
func (s *DatabaseService) BeginTransaction()
func (*DatabaseService) Close ¶
func (s *DatabaseService) Close()
func (*DatabaseService) Delete ¶
func (s *DatabaseService) Delete(key []byte) error
func (*DatabaseService) DeleteAll ¶
func (s *DatabaseService) DeleteAll() error
func (*DatabaseService) DeleteBatch ¶
func (s *DatabaseService) DeleteBatch(b iservices.IDatabaseBatch)
func (*DatabaseService) DeleteIterator ¶
func (s *DatabaseService) DeleteIterator(it iservices.IDatabaseIterator)
func (*DatabaseService) EndTransaction ¶
func (s *DatabaseService) EndTransaction(commit bool) error
func (*DatabaseService) GetRevision ¶
func (s *DatabaseService) GetRevision() uint64
func (*DatabaseService) GetRevisionAndBase ¶
func (s *DatabaseService) GetRevisionAndBase() (current uint64, base uint64)
func (*DatabaseService) GetRevisionTag ¶
func (s *DatabaseService) GetRevisionTag(r uint64) string
func (*DatabaseService) GetTagRevision ¶
func (s *DatabaseService) GetTagRevision(tag string) (uint64, error)
func (*DatabaseService) Has ¶
func (s *DatabaseService) Has(key []byte) (bool, error)
implementation of Database interface
func (*DatabaseService) NewBatch ¶
func (s *DatabaseService) NewBatch() iservices.IDatabaseBatch
func (*DatabaseService) NewIterator ¶
func (s *DatabaseService) NewIterator(start []byte, limit []byte) iservices.IDatabaseIterator
func (*DatabaseService) NewReversedIterator ¶
func (s *DatabaseService) NewReversedIterator(start []byte, limit []byte) iservices.IDatabaseIterator
same as NewIterator, but iteration will be in reversed order.
func (*DatabaseService) RebaseToRevision ¶
func (s *DatabaseService) RebaseToRevision(r uint64) error
func (*DatabaseService) RebaseToTag ¶
func (s *DatabaseService) RebaseToTag(tag string) error
func (*DatabaseService) RevertToRevision ¶
func (s *DatabaseService) RevertToRevision(r uint64) error
func (*DatabaseService) RevertToTag ¶
func (s *DatabaseService) RevertToTag(tag string) error
func (*DatabaseService) Stop ¶
func (s *DatabaseService) Stop() error
func (*DatabaseService) TagRevision ¶
func (s *DatabaseService) TagRevision(r uint64, tag string) error
func (*DatabaseService) TransactionHeight ¶
func (s *DatabaseService) TransactionHeight() uint
type GuardedDatabaseService ¶
type GuardedDatabaseService struct {
DatabaseService
}
func NewGuardedDatabaseService ¶
func NewGuardedDatabaseService(ctx *node.ServiceContext, dbPath string) (*GuardedDatabaseService, error)
func (*GuardedDatabaseService) RevertToRevision ¶
func (s *GuardedDatabaseService) RevertToRevision(r uint64) error
func (*GuardedDatabaseService) RevertToTag ¶
func (s *GuardedDatabaseService) RevertToTag(tag string) error
type Iterator ¶
type Iterator interface {
// check if the iterator is a valid position, i.e. safe to call other methods
Valid() bool
// query the key of current position
Key() ([]byte, error)
// query the value of current position
Value() ([]byte, error)
// move to the next position
// return true after success move, otherwise, false
Next() bool
}
Interface for key iterator Iterator is *NOT* thread safe. you *cannot* share the same iterator among concurrent routines. but routines are safe to create and use their own iterators by calling NewIterator().
An iterator represents the static view (snapshot) of the database at the time the iterator was created. Later changes to the database will not affect the iteration.
Iterators is the same concept as "cursors" in DBMS docs. More specifically, our iterators are forward-only, read-only and static "cursors".
type KeyHashDispatcher ¶
type KeyHashDispatcher struct {
// contains filtered or unexported fields
}
func NewKeyHashDispatcher ¶
func NewKeyHashDispatcher(databases []Database) *KeyHashDispatcher
func (*KeyHashDispatcher) DatabaseForKey ¶
func (dp *KeyHashDispatcher) DatabaseForKey(key []byte) int
func (*KeyHashDispatcher) DatabasesForKeyRange ¶
func (dp *KeyHashDispatcher) DatabasesForKeyRange(start []byte, limit []byte) []int
func (*KeyHashDispatcher) MemberDatabases ¶
func (dp *KeyHashDispatcher) MemberDatabases() []Database
type LevelDatabase ¶
type LevelDatabase struct {
// contains filtered or unexported fields
}
func NewLevelDatabase ¶
func NewLevelDatabase(file string) (*LevelDatabase, error)
create a database
func (*LevelDatabase) Delete ¶
func (db *LevelDatabase) Delete(key []byte) error
delete the given key and its value
func (*LevelDatabase) DeleteIterator ¶
func (db *LevelDatabase) DeleteIterator(it Iterator)
func (*LevelDatabase) Get ¶
func (db *LevelDatabase) Get(key []byte) ([]byte, error)
query the value of the given key
func (*LevelDatabase) Has ¶
func (db *LevelDatabase) Has(key []byte) (bool, error)
check existence of the given key
func (*LevelDatabase) NewBatch ¶
func (db *LevelDatabase) NewBatch() Batch
create a batch which can pack DatabasePutter & DatabaseDeleter operations and execute them atomically
func (*LevelDatabase) NewIterator ¶
func (db *LevelDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*LevelDatabase) NewReversedIterator ¶
func (db *LevelDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
type LevelDatabaseBatch ¶
type LevelDatabaseBatch struct {
// contains filtered or unexported fields
}
func (*LevelDatabaseBatch) Delete ¶
func (b *LevelDatabaseBatch) Delete(key []byte) error
func (*LevelDatabaseBatch) Write ¶
func (b *LevelDatabaseBatch) Write() error
execute all batched operations
type LevelDatabaseIterator ¶
type LevelDatabaseIterator struct {
// contains filtered or unexported fields
}
func (*LevelDatabaseIterator) Key ¶
func (it *LevelDatabaseIterator) Key() ([]byte, error)
query the key of current position
func (*LevelDatabaseIterator) Next ¶
func (it *LevelDatabaseIterator) Next() bool
move to the next position
func (*LevelDatabaseIterator) Valid ¶
func (it *LevelDatabaseIterator) Valid() bool
check if the iterator is a valid position, i.e. safe to call other methods
func (*LevelDatabaseIterator) Value ¶
func (it *LevelDatabaseIterator) Value() ([]byte, error)
query the value of current position
type LevelWriteAheadLog ¶
type LevelWriteAheadLog struct {
// contains filtered or unexported fields
}
func NewLevelWriteAheadLog ¶
func NewLevelWriteAheadLog(file string) (*LevelWriteAheadLog, error)
func (*LevelWriteAheadLog) Close ¶
func (wal *LevelWriteAheadLog) Close()
func (*LevelWriteAheadLog) DeleteTask ¶
func (wal *LevelWriteAheadLog) DeleteTask(taskId uint64) error
func (*LevelWriteAheadLog) DeleteTasks ¶
func (wal *LevelWriteAheadLog) DeleteTasks(taskIds []uint64) error
func (*LevelWriteAheadLog) GetTask ¶
func (wal *LevelWriteAheadLog) GetTask(taskId uint64) (*WriteTask, error)
func (*LevelWriteAheadLog) GetTasks ¶
func (wal *LevelWriteAheadLog) GetTasks() ([]*WriteTask, error)
func (*LevelWriteAheadLog) NewTaskID ¶
func (wal *LevelWriteAheadLog) NewTaskID() uint64
func (*LevelWriteAheadLog) PutTask ¶
func (wal *LevelWriteAheadLog) PutTask(task *WriteTask) error
func (*LevelWriteAheadLog) PutTasks ¶
func (wal *LevelWriteAheadLog) PutTasks(tasks []*WriteTask) error
type MemoryDatabase ¶
type MemoryDatabase struct {
// contains filtered or unexported fields
}
func NewMemoryDatabase ¶
func NewMemoryDatabase() *MemoryDatabase
func (*MemoryDatabase) Close ¶
func (db *MemoryDatabase) Close()
func (*MemoryDatabase) Delete ¶
func (db *MemoryDatabase) Delete(key []byte) error
delete the given key and its value
func (*MemoryDatabase) DeleteIterator ¶
func (db *MemoryDatabase) DeleteIterator(it Iterator)
func (*MemoryDatabase) Get ¶
func (db *MemoryDatabase) Get(key []byte) ([]byte, error)
query the value of the given key
func (*MemoryDatabase) Has ¶
func (db *MemoryDatabase) Has(key []byte) (bool, error)
check existence of the given key
func (*MemoryDatabase) NewBatch ¶
func (db *MemoryDatabase) NewBatch() Batch
create a batch which can pack DatabasePutter & DatabaseDeleter operations and execute them atomically
func (*MemoryDatabase) NewIterator ¶
func (db *MemoryDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*MemoryDatabase) NewReversedIterator ¶
func (db *MemoryDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
type RevDatabase ¶
type RevDatabase interface {
Revertible
Database
}
interface for databases that support reversion
type Revertible ¶
type Revertible interface {
// get current revision
GetRevision() uint64
// get current revision and base revision
GetRevisionAndBase() (current uint64, base uint64)
// revert to the given revision
// you can only revert to a revision that is less than or equal to current revision.
// after reverted to revision r, r will be the current revision.
RevertToRevision(r uint64) error
// rebase to the given revision
// after rebased to revision r, r will be the minimal revision you can revert to.
RebaseToRevision(r uint64) error
}
interface for revertible feature methods must be thread safe
type RevertibleDatabase ¶
type RevertibleDatabase struct {
// contains filtered or unexported fields
}
func NewRevertibleDatabase ¶
func NewRevertibleDatabase(db Database) *RevertibleDatabase
func (*RevertibleDatabase) Close ¶
func (db *RevertibleDatabase) Close()
func (*RevertibleDatabase) Delete ¶
func (db *RevertibleDatabase) Delete(key []byte) error
func (*RevertibleDatabase) DeleteBatch ¶
func (db *RevertibleDatabase) DeleteBatch(b Batch)
func (*RevertibleDatabase) DeleteIterator ¶
func (db *RevertibleDatabase) DeleteIterator(it Iterator)
func (*RevertibleDatabase) GetRevision ¶
func (db *RevertibleDatabase) GetRevision() uint64
func (*RevertibleDatabase) GetRevisionAndBase ¶
func (db *RevertibleDatabase) GetRevisionAndBase() (current uint64, base uint64)
func (*RevertibleDatabase) GetRevisionTag ¶
func (db *RevertibleDatabase) GetRevisionTag(r uint64) string
func (*RevertibleDatabase) GetTagRevision ¶
func (db *RevertibleDatabase) GetTagRevision(tag string) (uint64, error)
func (*RevertibleDatabase) NewBatch ¶
func (db *RevertibleDatabase) NewBatch() Batch
func (*RevertibleDatabase) NewIterator ¶
func (db *RevertibleDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*RevertibleDatabase) NewReversedIterator ¶
func (db *RevertibleDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
func (*RevertibleDatabase) RebaseToRevision ¶
func (db *RevertibleDatabase) RebaseToRevision(r uint64) error
func (*RevertibleDatabase) RebaseToTag ¶
func (db *RevertibleDatabase) RebaseToTag(tag string) error
func (*RevertibleDatabase) RevertToRevision ¶
func (db *RevertibleDatabase) RevertToRevision(r uint64) error
func (*RevertibleDatabase) RevertToTag ¶
func (db *RevertibleDatabase) RevertToTag(tag string) error
func (*RevertibleDatabase) TagRevision ¶
func (db *RevertibleDatabase) TagRevision(r uint64, tag string) error
type SimpleDatabaseGroup ¶
type SimpleDatabaseGroup struct {
// contains filtered or unexported fields
}
the database group
func NewSimpleDatabaseGroup ¶
func NewSimpleDatabaseGroup(dp DatabaseDispatcher, wal WriteAheadLog) (*SimpleDatabaseGroup, error)
func (*SimpleDatabaseGroup) Close ¶
func (g *SimpleDatabaseGroup) Close()
func (*SimpleDatabaseGroup) Crashed ¶
func (g *SimpleDatabaseGroup) Crashed() bool
func (*SimpleDatabaseGroup) Delete ¶
func (g *SimpleDatabaseGroup) Delete(key []byte) error
func (*SimpleDatabaseGroup) DeleteBatch ¶
func (g *SimpleDatabaseGroup) DeleteBatch(b Batch)
func (*SimpleDatabaseGroup) DeleteIterator ¶
func (g *SimpleDatabaseGroup) DeleteIterator(it Iterator)
func (*SimpleDatabaseGroup) NewBatch ¶
func (g *SimpleDatabaseGroup) NewBatch() Batch
func (*SimpleDatabaseGroup) NewIterator ¶
func (g *SimpleDatabaseGroup) NewIterator(start []byte, limit []byte) Iterator
func (*SimpleDatabaseGroup) NewReversedIterator ¶
func (g *SimpleDatabaseGroup) NewReversedIterator(start []byte, limit []byte) Iterator
type TagRevDatabase ¶
type TagRevDatabase interface {
TagRevertible
Database
}
interface for databases that support reversion and revision tagging
type TagRevertible ¶
type TagRevertible interface {
Revertible
// tag a revision
TagRevision(r uint64, tag string) error
// get revision of a tag
GetTagRevision(tag string) (uint64, error)
// get tag of a revision
GetRevisionTag(r uint64) string
// revert to a revision by its tag
RevertToTag(tag string) error
// rebase to a revision by its tag
RebaseToTag(tag string) error
}
interface for databases that support reversion and revision tagging
type Transactional ¶
type Transactional interface {
// start a new transaction session
BeginTransaction()
// end current transaction session, commit or discard changes
EndTransaction(commit bool) error
// current transaction height
TransactionHeight() uint
}
interface for transaction feature methods must be thread safe transaction sessions can be nested. BeginTransaction()/EndTransaction() must be paired.
type TransactionalDatabase ¶
type TransactionalDatabase struct {
// contains filtered or unexported fields
}
TransactionalDatabase adds transactional feature on its underlying database
func NewTransactionalDatabase ¶
func NewTransactionalDatabase(db Database, dirtyRead bool) *TransactionalDatabase
func (*TransactionalDatabase) BeginTransaction ¶
func (db *TransactionalDatabase) BeginTransaction()
start a transaction session
func (*TransactionalDatabase) Close ¶
func (db *TransactionalDatabase) Close()
func (*TransactionalDatabase) Delete ¶
func (db *TransactionalDatabase) Delete(key []byte) error
func (*TransactionalDatabase) DeleteBatch ¶
func (db *TransactionalDatabase) DeleteBatch(b Batch)
func (*TransactionalDatabase) DeleteIterator ¶
func (db *TransactionalDatabase) DeleteIterator(it Iterator)
func (*TransactionalDatabase) EndTransaction ¶
func (db *TransactionalDatabase) EndTransaction(commit bool) error
end a transaction session. commit or discard changes
func (*TransactionalDatabase) Get ¶
func (db *TransactionalDatabase) Get(key []byte) ([]byte, error)
func (*TransactionalDatabase) NewBatch ¶
func (db *TransactionalDatabase) NewBatch() Batch
func (*TransactionalDatabase) NewIterator ¶
func (db *TransactionalDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*TransactionalDatabase) NewReversedIterator ¶
func (db *TransactionalDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
func (*TransactionalDatabase) Put ¶
func (db *TransactionalDatabase) Put(key []byte, value []byte) error
func (*TransactionalDatabase) TransactionHeight ¶
func (db *TransactionalDatabase) TransactionHeight() uint
type TrxDatabase ¶
type TrxDatabase interface {
Transactional
Database
}
interface for databases that support transactions
type TrxLevelDatabase ¶
type TrxLevelDatabase struct {
// contains filtered or unexported fields
}
func NewTrxLevelDatabase ¶
func NewTrxLevelDatabase(file string, dirtyRead bool) (*TrxLevelDatabase, error)
func (*TrxLevelDatabase) BeginTransaction ¶
func (db *TrxLevelDatabase) BeginTransaction()
func (*TrxLevelDatabase) Close ¶
func (db *TrxLevelDatabase) Close()
func (*TrxLevelDatabase) Delete ¶
func (db *TrxLevelDatabase) Delete(key []byte) error
func (*TrxLevelDatabase) DeleteBatch ¶
func (db *TrxLevelDatabase) DeleteBatch(b Batch)
func (*TrxLevelDatabase) DeleteIterator ¶
func (db *TrxLevelDatabase) DeleteIterator(it Iterator)
func (*TrxLevelDatabase) EndTransaction ¶
func (db *TrxLevelDatabase) EndTransaction(commit bool) error
func (*TrxLevelDatabase) NewBatch ¶
func (db *TrxLevelDatabase) NewBatch() Batch
func (*TrxLevelDatabase) NewIterator ¶
func (db *TrxLevelDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*TrxLevelDatabase) NewReversedIterator ¶
func (db *TrxLevelDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
func (*TrxLevelDatabase) TransactionHeight ¶
func (db *TrxLevelDatabase) TransactionHeight() uint
type TrxMemoryDatabase ¶
type TrxMemoryDatabase struct {
// contains filtered or unexported fields
}
func NewTrxMemoryDatabase ¶
func NewTrxMemoryDatabase(file string, dirtyRead bool) (*TrxMemoryDatabase, error)
func (*TrxMemoryDatabase) BeginTransaction ¶
func (db *TrxMemoryDatabase) BeginTransaction()
func (*TrxMemoryDatabase) Close ¶
func (db *TrxMemoryDatabase) Close()
func (*TrxMemoryDatabase) Delete ¶
func (db *TrxMemoryDatabase) Delete(key []byte) error
func (*TrxMemoryDatabase) DeleteBatch ¶
func (db *TrxMemoryDatabase) DeleteBatch(b Batch)
func (*TrxMemoryDatabase) DeleteIterator ¶
func (db *TrxMemoryDatabase) DeleteIterator(it Iterator)
func (*TrxMemoryDatabase) EndTransaction ¶
func (db *TrxMemoryDatabase) EndTransaction(commit bool) error
func (*TrxMemoryDatabase) NewBatch ¶
func (db *TrxMemoryDatabase) NewBatch() Batch
func (*TrxMemoryDatabase) NewIterator ¶
func (db *TrxMemoryDatabase) NewIterator(start []byte, limit []byte) Iterator
func (*TrxMemoryDatabase) NewReversedIterator ¶
func (db *TrxMemoryDatabase) NewReversedIterator(start []byte, limit []byte) Iterator
func (*TrxMemoryDatabase) TransactionHeight ¶
func (db *TrxMemoryDatabase) TransactionHeight() uint