class ShardingKeyIndex[K] extends KeyIndex[K]

An example of a generic KeyIndex which accounts for sharding that could occur in a data store like Apache Accumulo. Given a shard count (pre-configured), this index adds a "shard prefix" to the true index as given by the inner argument. Accumulo can shard based off of the first digit of a row ID, and since we use a round-robin approach to generate prefixes, this distributes spatially close indices across different shards, and thus helps avoid hot spots.

Assumptions

  • The given shard count will be between 1 and 8.
  • The inner index will produce a value less than 2^60 for any given key.
Linear Supertypes
KeyIndex[K], Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ShardingKeyIndex
  2. KeyIndex
  3. Serializable
  4. Serializable
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ShardingKeyIndex(inner: KeyIndex[K], shardCount: Int)

Value Members

  1. def indexRanges(keyRange: (K, K)): Seq[(BigInt, BigInt)]
    Definition Classes
    ShardingKeyIndexKeyIndex
  2. val inner: KeyIndex[K]
  3. def keyBounds: KeyBounds[K]

    Some(keybounds) if the indexed space is bounded; None if it is unbounded

    Some(keybounds) if the indexed space is bounded; None if it is unbounded

    Definition Classes
    ShardingKeyIndexKeyIndex
  4. val shardCount: Int
  5. def toIndex(key: K): BigInt
    Definition Classes
    ShardingKeyIndexKeyIndex