Package partition encapsulates partitioning and querying large keyspace which can't be expressed even as uint64.

All to/from string functions use hex encoding.



This section is empty.


This section is empty.


This section is empty.


type Partition

type Partition struct {
	Low  big.Int // inclusive
	High big.Int // exclusive. May be equal to max SHA2 hash value + 1.

Partition represents a range [Low..High).

func FromInts

func FromInts(low, high int64) *Partition

func FromString

func FromString(s string) (*Partition, error)

func SpanInclusive

func SpanInclusive(low, highInclusive string) (*Partition, error)

func Universe

func Universe(keySpaceBytes int) *Partition

func (Partition) Copy

func (p Partition) Copy() *Partition

func (Partition) EducatedSplitAfter

func (p Partition) EducatedSplitAfter(exclusive string, beforeItems, targetItems, maxShards int) SortedPartitions

EducatedSplitAfter splits partition after a given boundary assuming constant density s.t. each shard has approximately targetItems.

Caps the number of resulting partitions to at most maxShards. panics if called on invalid data.

func (Partition) MarshalJSON

func (p Partition) MarshalJSON() ([]byte, error)

func (Partition) QueryBounds

func (p Partition) QueryBounds(keySpaceBytes int) (low, high string)

func (Partition) Split

func (p Partition) Split(shards int) SortedPartitions

func (Partition) String

func (p Partition) String() string

func (*Partition) UnmarshalJSON

func (p *Partition) UnmarshalJSON(bs []byte) error

type SortedPartitions

type SortedPartitions []*Partition

SortedPartitions are disjoint partitions sorted by ascending .Low field.

func (SortedPartitions) OnlyIn

func (ps SortedPartitions) OnlyIn(n int, key func(i int) string, use func(l, h int), keySpaceBytes int)

OnlyIn efficiently returns a subsequence of the `n` sorted by key objects whose key belongs to one of the partitions.

Calls use(i,j) for each objects[i:j] which belong to the range.

type SortedPartitionsBuilder

type SortedPartitionsBuilder struct {
	// contains filtered or unexported fields

SortedPartitionsBuilder constructs a sequence of partitions by excluding chunks from a starting partion.

Not intended to scale to large number of exclusion operations.

func NewSortedPartitionsBuilder

func NewSortedPartitionsBuilder(p *Partition) SortedPartitionsBuilder

func (*SortedPartitionsBuilder) Exclude

func (b *SortedPartitionsBuilder) Exclude(exclude *Partition)

func (*SortedPartitionsBuilder) IsEmpty

func (b *SortedPartitionsBuilder) IsEmpty() bool

func (*SortedPartitionsBuilder) Result

Source Files