key

package
v0.0.0-...-7c5168d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2013 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MaxKey = KeyspaceId("")

MaxKey is bigger than all KeyspaceId (by convention).

View Source
var MinKey = KeyspaceId("")

MinKey is smaller than all KeyspaceId (the value really is).

Functions

func EncodeValue

func EncodeValue(value interface{}) string

func FindShardForKey

func FindShardForKey(key interface{}, tabletKeys []KeyspaceId) (i int, err error)

Finds the shard that covers the given interface. The returned index is between 0 and len(tabletKeys)-1). The tabletKeys is an ordered list of the End values of the KeyRange structures for the shards.

func FindShardForValue

func FindShardForValue(value string, tabletKeys []KeyspaceId) int

Finds the shard that covers the given value. The returned index is between 0 and len(tabletKeys)-1). The tabletKeys is an ordered list of the End values of the KeyRange structures for the shards.

This function will not check the value is under the last shard's max (we assume it will be empty, as checked by RebuildKeyspace)

func KeyRangesIntersect

func KeyRangesIntersect(first, second KeyRange) bool

KeyRangesIntersect returns true if some Keyspace values exist in both ranges.

See: http://stackoverflow.com/questions/4879315/what-is-a-tidy-algorithm-to-find-overlapping-intervals two segments defined as (a,b) and (c,d) (with a<b and c<d): intersects = (b > c) && (a < d) overlap = min(b, d) - max(c, a)

Types

type HexKeyspaceId

type HexKeyspaceId string

HexKeyspaceId is the hex represention of a KeyspaceId.

func (HexKeyspaceId) Unhex

func (hkid HexKeyspaceId) Unhex() (KeyspaceId, error)

Unhex converts a HexKeyspaceId into a KeyspaceId (hex decoding).

type KeyError

type KeyError string

func NewKeyError

func NewKeyError(format string, args ...interface{}) KeyError

func (KeyError) Error

func (ke KeyError) Error() string

type KeyRange

type KeyRange struct {
	Start KeyspaceId
	End   KeyspaceId
}

KeyRange is an interval of KeyspaceId values. It contains Start, but excludes End. In other words, it is: [Start, End[

func KeyRangesOverlap

func KeyRangesOverlap(first, second KeyRange) (KeyRange, error)

KeyRangesOverlap returns the overlap between two KeyRanges. They need to overlap, otherwise an error is returned.

func ParseKeyRangeParts

func ParseKeyRangeParts(start, end string) (KeyRange, error)

Parse a start and end hex values and build a KeyRange

func (KeyRange) Contains

func (kr KeyRange) Contains(i KeyspaceId) bool

func (KeyRange) IsPartial

func (kr KeyRange) IsPartial() bool

Returns true if the KeyRange does not cover the entire space.

func (KeyRange) MapKey

func (kr KeyRange) MapKey() string

func (*KeyRange) MarshalBson

func (kr *KeyRange) MarshalBson(buf *bytes2.ChunkedWriter)

func (KeyRange) String

func (kr KeyRange) String() string

func (*KeyRange) UnmarshalBson

func (kr *KeyRange) UnmarshalBson(buf *bytes.Buffer)

type KeyRangeArray

type KeyRangeArray []KeyRange

KeyRangeArray is an array of KeyRange that can be sorted

func ParseShardingSpec

func ParseShardingSpec(spec string) (KeyRangeArray, error)

ParseShardingSpec parses a string that describes a sharding specification. a-b-c-d will be parsed as a-b, b-c, c-d. The empty string may serve both as the start and end of the keyspace: -a-b- will be parsed as start-a, a-b, b-end.

func (KeyRangeArray) Len

func (p KeyRangeArray) Len() int

func (KeyRangeArray) Less

func (p KeyRangeArray) Less(i, j int) bool

func (KeyRangeArray) Sort

func (p KeyRangeArray) Sort()

func (KeyRangeArray) Swap

func (p KeyRangeArray) Swap(i, j int)

type KeyspaceId

type KeyspaceId string

KeyspaceId is the type we base sharding on.

func (KeyspaceId) Hex

func (kid KeyspaceId) Hex() HexKeyspaceId

Hex prints a KeyspaceId in capital hex.

func (KeyspaceId) MarshalJSON

func (kid KeyspaceId) MarshalJSON() ([]byte, error)

MarshalJSON turns a KeyspaceId into json (using hex encoding).

func (*KeyspaceId) UnmarshalJSON

func (kid *KeyspaceId) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON reads a KeyspaceId from json (hex decoding).

type KeyspaceIdArray

type KeyspaceIdArray []KeyspaceId

KeyspaceIdArray is an array of KeyspaceId that can be sorted

func (KeyspaceIdArray) Len

func (p KeyspaceIdArray) Len() int

func (KeyspaceIdArray) Less

func (p KeyspaceIdArray) Less(i, j int) bool

func (KeyspaceIdArray) Sort

func (p KeyspaceIdArray) Sort()

func (KeyspaceIdArray) Swap

func (p KeyspaceIdArray) Swap(i, j int)

type Uint64Key

type Uint64Key uint64

Uint64Key is a uint64 that can be converted into a KeyspaceId.

func (Uint64Key) KeyspaceId

func (i Uint64Key) KeyspaceId() KeyspaceId

KeyspaceId returns the KeyspaceId associated with a Uint64Key.

func (Uint64Key) String

func (i Uint64Key) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL