Documentation
¶
Index ¶
- func Bytes2String(v []byte) string
- func Bytes2Uint64(v []byte) (b uint64, err error)
- func DecodeIndex(data []byte) (aoe.IndexInfo, error)
- func DecodeTable(data []byte) (aoe.TableInfo, error)
- func EncodeIndex(idx aoe.IndexInfo) ([]byte, error)
- func EncodeKey(ks ...interface{}) []byte
- func EncodeTable(tbl aoe.TableInfo) ([]byte, error)
- func String2Bytes(v string) []byte
- func Uint642Bytes(v uint64) []byte
- type CubeDriver
- func ErrorResp1(err error, infos string) (CubeDriver, []byte)
- func NewCubeDriver(kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage) (CubeDriver, error)
- func NewCubeDriverWithFactory(kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage, ...) (CubeDriver, error)
- func NewCubeDriverWithOptions(kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage, ...) (CubeDriver, error)
- type CustomRequest
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Bytes2String ¶
func Bytes2Uint64 ¶
func String2Bytes ¶
func Uint642Bytes ¶
Types ¶
type CubeDriver ¶
type CubeDriver interface {
// Start the driver.
Start() error
// Close close the driver.
Close()
// GetShardPool return ShardsPool instance.
GetShardPool() raftstore.ShardsPool
// Set set key value.
Set([]byte, []byte) error
// SetWithGroup set key value in specific group.
SetWithGroup([]byte, []byte, pb.Group) error
// Set async set key value.
AsyncSet([]byte, []byte, func(CustomRequest, []byte, error), interface{})
TpeAsyncSetKeysValuesInbatch(shardID uint64, keys [][]byte, values [][]byte, timeout time.Duration, cb func(CustomRequest, []byte, error))
TpeAsyncSet([]byte, []byte, int, time.Duration, func(CustomRequest, []byte, error), interface{})
// AsyncSetIfNotExist async set key value if key not exists.
AsyncSetIfNotExist([]byte, []byte, func(CustomRequest, []byte, error), interface{})
// Set async set key value in specific group.
AsyncSetWithGroup([]byte, []byte, pb.Group, func(CustomRequest, []byte, error), interface{})
// SetIfNotExist set key value if key not exists.
SetIfNotExist([]byte, []byte) error
// Get returns the value of key.
Get([]byte) ([]byte, error)
// GetWithGroup returns the value of key from specific group.
GetWithGroup([]byte, pb.Group) ([]byte, error)
// Delete remove the key from the store.
Delete([]byte) error
// DeleteIfExist remove the key from the store if key exists.
DeleteIfExist([]byte) error
// TpeDeleteBatch deletes keys in the parameter.
TpeDeleteBatch(keys [][]byte) error
// TpeDeleteBatchWithRange deletes keys in the range [startKey,endKey)
TpeDeleteBatchWithRange([]byte, []byte) error
// Scan scan [start,end) data
Scan([]byte, []byte, uint64) ([][]byte, error)
// ScanWithGroup scan [start,end) data in specific group.
ScanWithGroup([]byte, []byte, uint64, pb.Group) ([][]byte, error)
// TpeScan gets the keys in the range [startKey,endKey), return keys/values.
//a. startKey maybe nil.
//b. endKey maybe nil.
//c. limit: if it is the math.MaxUint64,
// it means there is not limitation on the count of keys.
//d. needKey: if it is true, the keys and the values are returned.
// if it is false, the keys are returned only.
//return parameters:
//[][]byte : return keys
//[][]byte : return values
//bool: true - the scanner accomplished in all shards.
//[]byte : the start key for the next scan. If last parameter is false, this parameter is nil.
TpeScan(startKey, endKey, prefix []byte, limit uint64, needKey bool, tryCount int, timeout time.Duration) ([][]byte, [][]byte, bool, []byte, error)
// TpeCheckKeysExist checks the shard has keys.
// return the index of the key that existed in the shard.
TpeAsyncCheckKeysExist(shardID uint64, keys [][]byte, timeout time.Duration, cb func(CustomRequest, []byte, error))
// PrefixScan scan k-vs which k starts with prefix.
PrefixScan([]byte, uint64) ([][]byte, error)
// PrefixScanWithGroup scan k-vs which k starts with prefix
PrefixScanWithGroup([]byte, uint64, pb.Group) ([][]byte, error)
// TpePrefixScan gets the values of the prefix with limit.
//a. startKeyOrPrefix : When we invoke TpePrefixScan several times,
// the startKeyOrPrefix is the real prefix in the first time.
// But from the second time, the startKeyOrPrefix is the next scan key
// that generated from results in the previous TpePrefixScan.
//b. prefixLength : it denotes startKeyOrPrefix[:prefixLength] is the real prefix.
//c. prefixEnd : the next key of the keys started with the prefix
//d. needKeyOnly: only return the keys without theirs values
//e. limit: if it is the math.MaxUint64,
// it means there is not limitation on the count of keys.
//return parameters:
//[][]byte : return keys
//[][]byte : return values
//bool: true - the scanner accomplished in all shards.
//[]byte : the start key for the next scan. If last parameter is false, this parameter is nil.
TpePrefixScan(startKeyOrPrefix []byte, prefixLength int, prefixEnd []byte, needKeyOnly bool, limit uint64, tryCount int, timeout time.Duration) ([][]byte, [][]byte, bool, []byte, error)
// PrefixScan returns the values whose key starts with prefix.
PrefixKeys([]byte, uint64) ([][]byte, error)
// PrefixKeysWithGroup scans prefix with specific group.
PrefixKeysWithGroup([]byte, uint64, pb.Group) ([][]byte, error)
// AllocID allocs id.
AllocID([]byte, uint64) (uint64, error)
// AsyncAllocID async alloc id.
AsyncAllocID([]byte, uint64, func(CustomRequest, []byte, error), interface{})
// Append appends the data in the table
Append(string, uint64, []byte) error
//GetSnapshot gets the snapshot from the table.
//If there's no segment, it returns an empty snapshot.
GetSnapshot(dbi.GetSnapshotCtx) (*handle.Snapshot, error)
//GetSegmentIds returns the ids of segments of the table.
GetSegmentIds(string, uint64) (dbi.IDS, error)
//GetSegmentedId returns the smallest segmente id among the tables with the shard.
GetSegmentedId(uint64) (uint64, error)
//CreateTablet creates a table in the storage.
CreateTablet(name string, shardId uint64, tbl *aoe.TableInfo) error
//DropTablet drops the table in the storage.
DropTablet(string, uint64) (uint64, error)
//CreateIndex creates an index
CreateIndex(tableName string, indexInfo *aoe.IndexInfo, toShard uint64) error
//DropIndex drops an index
DropIndex(tableName, indexName string, toShard uint64) error
// TabletIDs returns the ids of all the tables in the storage.
TabletIDs() ([]uint64, error)
// TabletNames returns the names of all the tables in the storage.
TabletNames(uint64) ([]string, error)
// Exec exec command
Exec(cmd interface{}) ([]byte, error)
// AsyncExec async exec command
AsyncExec(interface{}, func(CustomRequest, []byte, error), interface{})
// ExecWithGroup exec command with group
ExecWithGroup(interface{}, pb.Group) ([]byte, error)
TpeExecWithGroup(interface{}, pb.Group, int, time.Duration) ([]byte, error)
// AsyncExecWithGroup async exec command with group
AsyncExecWithGroup(interface{}, pb.Group, func(CustomRequest, []byte, error), interface{})
TpeAsyncExecWithGroup(interface{}, pb.Group, time.Duration, func(CustomRequest, []byte, error), interface{})
// RaftStore returns the raft store
RaftStore() raftstore.Store
//AOEStore returns h.aoeDB
AOEStore() *aoedb.DB
//AddLabelToShard add a label to the shard
AddLabelToShard(shardID uint64, name, value string) error
AddSchedulingRule(ruleName string, groupByLabel string) error
}
CubeDriver implements distributed kv and aoe.
func ErrorResp1 ¶
func ErrorResp1(err error, infos string) (CubeDriver, []byte)
func NewCubeDriver ¶
func NewCubeDriver( kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage) (CubeDriver, error)
NewCubeDriver returns a aoe request handler
func NewCubeDriverWithFactory ¶
func NewCubeDriverWithFactory( kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage, c *config.Config, raftStoreFactory func(*cConfig.Config) (raftstore.Store, error)) (CubeDriver, error)
NewCubeDriverWithFactory creates the cube driver with raftstore factory
func NewCubeDriverWithOptions ¶
func NewCubeDriverWithOptions( kvDataStorage cstorage.DataStorage, aoeDataStorage cstorage.DataStorage, c *config.Config) (CubeDriver, error)
NewCubeDriverWithOptions returns an aoe request handler
type CustomRequest ¶
type CustomRequest struct {
// Group used to indicate which group of Shards to send
Group uint64
// Key the key used to indicate which shard to send
Key []byte
// ToShard if the field is specified, Key are disabled
ToShard uint64
// CustomType type of custom request
CustomType uint64
// Cmd serialized custom request content
Cmd []byte
// Read read request
Read bool
// Write write request
Write bool
}
CustomRequest custom request
Click to show internal directories.
Click to hide internal directories.