Class Murmur3Partitioner

java.lang.Object
org.apache.cassandra.dht.Murmur3Partitioner
All Implemented Interfaces:
IPartitioner

public class Murmur3Partitioner extends Object implements IPartitioner
This class generates a BigIntegerToken using a Murmur3 hash.
  • Field Details

  • Constructor Details

    • Murmur3Partitioner

      public Murmur3Partitioner()
  • Method Details

    • decorateKey

      public DecoratedKey decorateKey(ByteBuffer key)
      Description copied from interface: IPartitioner
      Transform key to object representation of the on-disk format.
      Specified by:
      decorateKey in interface IPartitioner
      Parameters:
      key - the raw, client-facing key
      Returns:
      decorated version of key
    • midpoint

      public Token midpoint(Token lToken, Token rToken)
      Description copied from interface: IPartitioner
      Calculate a Token representing the approximate "middle" of the given range.
      Specified by:
      midpoint in interface IPartitioner
      Returns:
      The approximate midpoint between left and right.
    • split

      public Token split(Token lToken, Token rToken, double ratioToLeft)
      Description copied from interface: IPartitioner
      Calculate a Token which take approximate 0 <= ratioToLeft <= 1 ownership of the given range.
      Specified by:
      split in interface IPartitioner
    • getMinimumToken

      public Murmur3Partitioner.LongToken getMinimumToken()
      Specified by:
      getMinimumToken in interface IPartitioner
      Returns:
      A Token smaller than all others in the range that is being partitioned. Not legal to assign to a node or key. (But legal to use in range scans.)
    • getToken

      Generate the token of a key. Note that we need to ensure all generated token are strictly bigger than MINIMUM. In particular we don't want MINIMUM to correspond to any key because the range (MINIMUM, X] doesn't include MINIMUM but we use such range to select all data whose token is smaller than X.
      Specified by:
      getToken in interface IPartitioner
      Returns:
      a Token that can be used to route a given key (This is NOT a method to create a Token from its string representation; for that, use TokenFactory.fromString.)
    • getMaxTokenSize

      public int getMaxTokenSize()
      Specified by:
      getMaxTokenSize in interface IPartitioner
    • getRandomToken

      public Murmur3Partitioner.LongToken getRandomToken()
      Specified by:
      getRandomToken in interface IPartitioner
      Returns:
      a randomly generated token
    • getRandomToken

      public Murmur3Partitioner.LongToken getRandomToken(Random r)
      Specified by:
      getRandomToken in interface IPartitioner
      Parameters:
      r - instance of Random to use when generating the token
      Returns:
      a randomly generated token
    • preservesOrder

      public boolean preservesOrder()
      Specified by:
      preservesOrder in interface IPartitioner
      Returns:
      True if the implementing class preserves key order in the Tokens it generates.
    • describeOwnership

      public Map<Token,Float> describeOwnership(List<Token> sortedTokens)
      Description copied from interface: IPartitioner
      Calculate the deltas between tokens in the ring in order to compare relative sizes.
      Specified by:
      describeOwnership in interface IPartitioner
      Parameters:
      sortedTokens - a sorted List of Tokens
      Returns:
      the mapping from 'token' to 'percentage of the ring owned by that token'.
    • getTokenFactory

      public Token.TokenFactory getTokenFactory()
      Specified by:
      getTokenFactory in interface IPartitioner
    • getTokenValidator

      public AbstractType<?> getTokenValidator()
      Specified by:
      getTokenValidator in interface IPartitioner
    • getMaximumToken

      public Token getMaximumToken()
      Description copied from interface: IPartitioner
      The biggest token for this partitioner, unlike getMinimumToken, this token is actually used and users wanting to include all tokens need to do getMaximumToken().maxKeyBound() Not implemented for the ordered partitioners
      Specified by:
      getMaximumToken in interface IPartitioner
    • partitionOrdering

      public AbstractType<?> partitionOrdering()
      Specified by:
      partitionOrdering in interface IPartitioner
    • partitionOrdering

      public AbstractType<?> partitionOrdering(AbstractType<?> partitionKeyType)
      Description copied from interface: IPartitioner
      Abstract type that orders the same way as DecoratedKeys provided by this partitioner. Used by secondary indices.
      Specified by:
      partitionOrdering in interface IPartitioner
      Parameters:
      partitionKeyType - partition key type for PartitionerDefinedOrder
    • splitter

      public Optional<Splitter> splitter()
      Specified by:
      splitter in interface IPartitioner