Documentation
¶
Overview ¶
Package db is an wrapper of key-value database implementations. Currently, this supports badgerdb (https://github.com/dgraph-io/badger).
Basic Usage ¶
You can create database using a newdb func like this
database := NewDB(BadgerImpl, "./test")
A first argument is a backend db type to use, and a second is a root directory to store db files. After creating db, you can write, read or delete single key-value using funcs in DB interface.
// write data
database.Set([]byte("key"), []byte("val"))
// read data
read := Get([]byte("key"))
// delete data
database.Delete([]byte("key"))
Transaction ¶
A Transaction is a bulk set of operations to ensure atomic success or fail.
// create a new transaction
tx := database.NewTX(true)
// reserve writing
tx.Set([]byte("keyA"), []byte("valA"))
tx.Set([]byte("keyB"), []byte("valB"))
// Get will return a value reserved to write in this transaction
mustBeValA := tx.Get([]byte("keyA"))
// Perform writing
tx.Commit()
If you want to cancel and discard operations in tx, then you must call Discard() func to prevent a memory leack
// If you create a tx, but do not commit, than you have to call this tx.Discard()
Iterator ¶
An iteractor provides a way to get all keys sequentially.
// create an iterator that covers all range
for iter := database.Iterator(nil, nil); iter.Valid(); iter.Next() {
// print each key-value pair
fmt.Printf("%s = %s", string(iter.Key()), string(iter.Value()))
}
You can find more detail usages at a db_test.go file
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bulk ¶
Bulk is used to batch multiple transactions This will internally commit transactions when reach maximum tx size
type DB ¶
type DB interface {
Type() string
Set(key, value []byte)
Delete(key []byte)
Get(key []byte) []byte
Exist(key []byte) bool
Iterator(start, end []byte) Iterator
NewTx() Transaction
NewBulk() Bulk
Close()
}
DB is an general interface to access at storage data
func NewBadgerDB ¶
NewBadgerDB create a DB instance that uses badger db and implements DB interface. An input parameter, dir, is a root directory to store db files.
func NewLevelDB ¶
func NewMemoryDB ¶
type ImplType ¶
type ImplType string
ImplType represents implementators of a DB interface
const ( // BadgerImpl represents a name of DB interface implementation using badgerdb BadgerImpl ImplType = "badgerdb" // LevelImpl represents a name of DB interface implementation using leveldb LevelImpl ImplType = "leveldb" // MemoryImpl represents a name of DB interface implementation in memory MemoryImpl ImplType = "memorydb" )
type Transaction ¶
type Transaction interface {
// Get(key []byte) []byte
Set(key, value []byte)
Delete(key []byte)
Commit()
Discard()
}
Transaction is used to batch multiple operations