Package com.tangosol.net.partition
Class DefaultKeyPartitioningStrategy
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.BitHelper
-
- com.tangosol.util.ExternalizableHelper
-
- com.tangosol.net.partition.DefaultKeyPartitioningStrategy
-
- All Implemented Interfaces:
KeyPartitioningStrategy
- Direct Known Subclasses:
BroadKeyPartitioningStrategy
public class DefaultKeyPartitioningStrategy extends ExternalizableHelper implements KeyPartitioningStrategy
DefaultKeyPartitioningStrategy provides a simple strategy for assigning keys to partitions which is based on the hash code of keys in internal (serialized to Binary) form.- Since:
- Coherence 3.6
- Author:
- gg 2010.05.19
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
Nested classes/interfaces inherited from interface com.tangosol.net.partition.KeyPartitioningStrategy
KeyPartitioningStrategy.PartitionAwareKey
-
-
Field Summary
Fields Modifier and Type Field Description protected PartitionedService
m_service
The PartitionedService that this strategy is bound to.-
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
-
-
Constructor Summary
Constructors Constructor Description DefaultKeyPartitioningStrategy()
Default constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static int
calculateBasePartitionHash(PartitionedService service, Object oKey)
Determine the partition-hash of the given key.static int
calculateKeyPartition(PartitionedService service, Object oKey)
Determine the partition to which the given key should be assigned for the specified PartitionService, taking into consideration the associations provided by the service's KeyAssociator.static int
calculateKeyPartitionHash(PartitionedService service, Object oKey)
Determine the partition-hash of the given key.static int
calculatePartition(PartitionedService service, int nHash)
Return the partition associated with the specified hash value in the specified PartitionedService.PartitionSet
getAssociatedPartitions(Object oKey)
Determine the set of partitions that all keys associated with the specified key are assigned to.int
getKeyPartition(Object oKey)
Determine the partition to which a particular key should be assigned.void
init(PartitionedService service)
Initialize the KeyPartitioningStrategy and bind it to the specified PartitionedService.-
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isPatchCompatible, isPatchCompatible, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
-
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
Field Detail
-
m_service
protected PartitionedService m_service
The PartitionedService that this strategy is bound to.
-
-
Method Detail
-
init
public void init(PartitionedService service)
Initialize the KeyPartitioningStrategy and bind it to the specified PartitionedService.- Specified by:
init
in interfaceKeyPartitioningStrategy
- Parameters:
service
- the PartitionedService that this strategy is being bound to
-
getKeyPartition
public int getKeyPartition(Object oKey)
Determine the partition to which a particular key should be assigned.In general, implementations are expected to respect the associations provided by the service's KeyAssociator in such a way that keys that return the same
associated key
would be assigned to the same partition. Furthermore, implementations are also expected to respect explicit partition-assignments dictated by theKeyPartitioningStrategy.PartitionAwareKey
interface. Naturally, those two interfaces should not be combined for a given key.The resulting partition must be in the range [0..N-1], where N is the value returned from
PartitionedService.getPartitionCount()
.- Specified by:
getKeyPartition
in interfaceKeyPartitioningStrategy
- Parameters:
oKey
- a key in its Object form- Returns:
- the partition ID that the specified key is assigned to
- See Also:
PartitionedService.getPartitionOwner(int)
-
getAssociatedPartitions
public PartitionSet getAssociatedPartitions(Object oKey)
Determine the set of partitions that all keys associated with the specified key are assigned to. Most commonly, this method returns a partition set containing a single partition returned by thegetKeyPartition
method.- Specified by:
getAssociatedPartitions
in interfaceKeyPartitioningStrategy
- Parameters:
oKey
- a key in its Object form- Returns:
- the PartitionSet associated with the specified key
-
calculateKeyPartition
public static int calculateKeyPartition(PartitionedService service, Object oKey)
Determine the partition to which the given key should be assigned for the specified PartitionService, taking into consideration the associations provided by the service's KeyAssociator.The resulting partition will be in the range [0..N), where N is the value returned from the
PartitionedService.getPartitionCount()
method.- Parameters:
service
- the PartitionedServiceoKey
- a key in its original (Object) format- Returns:
- the partition that the corresponding key is assigned to
-
calculateKeyPartitionHash
public static int calculateKeyPartitionHash(PartitionedService service, Object oKey)
Determine the partition-hash of the given key. The partition-hash is a property of the key identity itself, irrespective of the associated PartitionService's configured partition-count. The returned partition-hash is calculated by taking into consideration the associations provided by the service's KeyAssociator.- Parameters:
service
- the PartitionedServiceoKey
- a key in its original (Object) format- Returns:
- the partition-hash of the corresponding key
-
calculateBasePartitionHash
public static int calculateBasePartitionHash(PartitionedService service, Object oKey)
Determine the partition-hash of the given key. The partition-hash is a property of the key identity itself, irrespective of the associated PartitionService's configured partition-count.- Parameters:
service
- the PartitionedServiceoKey
- a key in its original (Object) format- Returns:
- the partition-hash of the corresponding key
-
calculatePartition
public static int calculatePartition(PartitionedService service, int nHash)
Return the partition associated with the specified hash value in the specified PartitionedService.- Parameters:
service
- the PartitionedServicenHash
- the hash value- Returns:
- the partition-id that the specified hash value belongs to
-
-