Documentation
¶
Overview ¶
Package partition implements a location system to find a shard or index rule. This system reflects the entity identity which is a intermediate result in calculating the target shard.
Index ¶
- Variables
- func ApplyLocators(subject string, tagFamilies []*modelv1.TagFamilyForWrite, ...) (pbv1.EntityValues, common.ShardID, error)
- func GetTagByOffset(value []*modelv1.TagFamilyForWrite, fIndex, tIndex int) (*modelv1.TagValue, error)
- func ParseIndexRuleLocators(entity *databasev1.Entity, families []*databasev1.TagFamilySpec, ...) (locators IndexRuleLocator, fil FieldIndexLocation)
- func ShardID(key []byte, shardNum uint32) (uint, error)
- func TraceShardID(traceID string, shardNum uint32) common.ShardID
- type FieldIndexLocation
- type FieldWithType
- type IndexRuleLocator
- type Locator
- type Router
- type TagLocator
Constants ¶
This section is empty.
Variables ¶
var ErrMalformedElement = errors.New("element is malformed")
ErrMalformedElement indicates the element is malformed.
Functions ¶
func ApplyLocators ¶ added in v0.11.0
func ApplyLocators(subject string, tagFamilies []*modelv1.TagFamilyForWrite, entityRouter, shardingKeyRouter Router, shardNum uint32, ) (pbv1.EntityValues, common.ShardID, error)
ApplyLocators routes a write by entity tags then, when a non-nil shardingKey Router is supplied, overrides the shard id with the sharding-key derived one. EntityValues always come from the entity router.
func GetTagByOffset ¶
func GetTagByOffset(value []*modelv1.TagFamilyForWrite, fIndex, tIndex int) (*modelv1.TagValue, error)
GetTagByOffset gets a tag value based of a tag family offset and a tag offset in this family.
func ParseIndexRuleLocators ¶
func ParseIndexRuleLocators(entity *databasev1.Entity, families []*databasev1.TagFamilySpec, indexRules []*databasev1.IndexRule, indexMode bool, ) (locators IndexRuleLocator, fil FieldIndexLocation)
ParseIndexRuleLocators returns a IndexRuleLocator based on the tag family spec and index rules.
Types ¶
type FieldIndexLocation ¶ added in v0.7.0
type FieldIndexLocation map[string]map[string]FieldWithType
FieldIndexLocation is a helper struct to store the field index location.
type FieldWithType ¶ added in v0.7.0
FieldWithType is a helper struct to store the field type.
type IndexRuleLocator ¶
type IndexRuleLocator struct {
EntitySet map[string]int
TagFamilyTRule []map[string]*databasev1.IndexRule
}
IndexRuleLocator is a helper struct to locate the index rule by tag name.
type Locator ¶ added in v0.9.0
type Locator struct {
TagLocators []TagLocator
ModRevision int64
}
Locator combines several TagLocators that help find the entity or sharding key value.
func NewEntityLocator ¶
func NewEntityLocator(families []*databasev1.TagFamilySpec, entity *databasev1.Entity, modRevision int64) Locator
NewEntityLocator return a Locator based on tag family spec and entity spec.
func NewShardingKeyLocator ¶ added in v0.9.0
func NewShardingKeyLocator(families []*databasev1.TagFamilySpec, shardingKey *databasev1.ShardingKey) Locator
NewShardingKeyLocator returns a Locator based on tag family spec and sharding key spec.
type Router ¶ added in v0.11.0
type Router interface {
Locate(subject string, tagFamilies []*modelv1.TagFamilyForWrite, shardNum uint32) (pbv1.EntityValues, common.ShardID, error)
}
Router is anything that can map a write to its target (entityValues, shardID).
type TagLocator ¶
TagLocator contains offsets to retrieve a tag swiftly.