Documentation ¶
Overview ¶
Package sorted provides a KeyValue interface and constructor registry.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrNotFound = errors.New("index: key not found")
Functions ¶
func RegisterKeyValue ¶
func RegisterKeyValue(typ string, fn func(jsonconfig.Obj) (KeyValue, error))
Types ¶
type BatchMutation ¶
func NewBatchMutation ¶
func NewBatchMutation() BatchMutation
type Iterator ¶
type Iterator interface { // Next moves the iterator to the next key/value pair. // It returns false when the iterator is exhausted. Next() bool // Key returns the key of the current key/value pair. // Only valid after a call to Next returns true. Key() string // KeyBytes returns the key as bytes. The returned bytes // should not be written and are invalid after the next call // to Next or Close. // TODO(bradfitz): rename this and change it to return a // mem.RO instead? KeyBytes() []byte // Value returns the value of the current key/value pair. // Only valid after a call to Next returns true. Value() string // ValueBytes returns the value as bytes. The returned bytes // should not be written and are invalid after the next call // to Next or Close. // TODO(bradfitz): rename this and change it to return a // mem.RO instead? ValueBytes() []byte // Close closes the iterator and returns any accumulated error. Exhausting // all the key/value pairs in a table is not considered to be an error. // It is valid to call Close multiple times. Other methods should not be // called after the iterator has been closed. Close() error }
Iterator iterates over an index KeyValue's key/value pairs in key order.
An iterator must be closed after use, but it is not necessary to read an iterator until exhaustion.
An iterator is not necessarily goroutine-safe, but it is safe to use multiple iterators concurrently, with each in a dedicated goroutine.
type KeyValue ¶
type KeyValue interface { // Get gets the value for the given key. It returns ErrNotFound if the DB // does not contain the key. Get(key string) (string, error) Set(key, value string) error // Delete deletes keys. Deleting a non-existent key does not return an error. Delete(key string) error BeginBatch() BatchMutation CommitBatch(b BatchMutation) error // Find returns an iterator positioned before the first key/value pair // whose key is 'greater than or equal to' the given key. There may be no // such pair, in which case the iterator will return false on Next. // // The optional end value specifies the exclusive upper // bound. If the empty string, the iterator returns keys // where "key >= start". // If non-empty, the iterator returns keys where // "key >= start && key < endHint". // // Any error encountered will be implicitly returned via the iterator. An // error-iterator will yield no key/value pairs and closing that iterator // will return that error. Find(start, end string) Iterator // Close is a polite way for the server to shut down the storage. // Implementations should never lose data after a Set, Delete, // or CommmitBatch, though. Close() error }
KeyValue is a sorted, enumerable key-value interface supporting batch mutations.
func NewKeyValue ¶
func NewKeyValue(cfg jsonconfig.Obj) (KeyValue, error)
func NewMemoryKeyValue ¶
func NewMemoryKeyValue() KeyValue
NewMemoryKeyValue returns a KeyValue implementation that's backed only by memory. It's mostly useful for tests and development.
Directories ¶
Path | Synopsis |
---|---|
Package kvfile provides an implementation of sorted.KeyValue on top of a single mutable database file on disk using github.com/cznic/kv.
|
Package kvfile provides an implementation of sorted.KeyValue on top of a single mutable database file on disk using github.com/cznic/kv. |
Package kvtest tests sorted.KeyValue implementations.
|
Package kvtest tests sorted.KeyValue implementations. |
Package mongo provides an implementation of sorted.KeyValue using MongoDB.
|
Package mongo provides an implementation of sorted.KeyValue using MongoDB. |
Package mysql provides an implementation of sorted.KeyValue on top of MySQL.
|
Package mysql provides an implementation of sorted.KeyValue on top of MySQL. |
Package postgres provides an implementation of sorted.KeyValue on top of PostgreSQL.
|
Package postgres provides an implementation of sorted.KeyValue on top of PostgreSQL. |
Package sqlite provides an implementation of sorted.KeyValue using an SQLite database file.
|
Package sqlite provides an implementation of sorted.KeyValue using an SQLite database file. |
Package sqlkv implements the sorted.KeyValue interface using an *sql.DB.
|
Package sqlkv implements the sorted.KeyValue interface using an *sql.DB. |
Click to show internal directories.
Click to hide internal directories.