RangeShardMapper Class

  • java.lang.Object
    • BaseShardMapper
      • com.microsoft.azure.elasticdb.shard.mapper.RangeShardMapper

public class RangeShardMapper extends BaseShardMapper implements IShardMapper<RangeMapping, Object>

Mapper from a range of keys to their corresponding shards.

Constructor Summary

Constructor Description
RangeShardMapper(ShardMapManager shardMapManager, ShardMap sm)

Range shard mapper, which managers range mappings.

Method Summary

Modifier and Type Method and Description
final RangeMapping add(RangeMapping mapping)

Adds a range mapping.

final UUID getLockOwnerForMapping(RangeMapping mapping)

Gets the lock owner of a mapping.

final List<RangeMapping> getMappingsForRange(Range range, Shard shard, LookupOptions lookupOptions)

Gets all the mappings that exist within given range.

final void lockOrUnlockMappings(RangeMapping mapping, UUID lockOwnerId, LockOwnerIdOpType lockOwnerIdOpType)

Locks or unlocks a given mapping or all mappings.

final RangeMapping lookup(Object key, LookupOptions lookupOptions)

Looks up the key value and returns the corresponding mapping.

final RangeMapping markMappingOffline(RangeMapping mapping, UUID lockOwnerId)

Marks the given mapping offline.

final RangeMapping markMappingOnline(RangeMapping mapping, UUID lockOwnerId)

Marks the given mapping online.

final RangeMapping merge(RangeMapping left, RangeMapping right, UUID leftLockOwnerId, UUID rightLockOwnerId)

Merges 2 contiguous mappings into a single mapping. Both left and right mappings should point to the same location and must be contiguous.

final Connection openConnectionForKey(Object key, String connectionString)
final Connection openConnectionForKey(Object key, String connectionString, ConnectionOptions options)

Given a key value, obtains a SqlConnection to the shard in the mapping that contains the key value.

final Callable<Connection> openConnectionForKeyAsync(Object key, String connectionString)
final Callable<Connection> openConnectionForKeyAsync(Object key, String connectionString, ConnectionOptions options)

Given a key value, asynchronously obtains a SqlConnection to the shard in the mapping that contains the key value.

final void remove(RangeMapping mapping, UUID lockOwnerId)

Removes a range mapping.

final List<RangeMapping> split(RangeMapping existingMapping, Object splitAt, UUID lockOwnerId)

Splits the given mapping into 2 at the given key. The new mappings point to the same shard as the existing mapping.

final boolean tryLookup(Object key, LookupOptions lookupOptions, ReferenceObjectHelper<RangeMapping> mapping)

Tries to looks up the key value and returns the corresponding mapping.

final RangeMapping update(RangeMapping currentMapping, RangeMappingUpdate update, UUID lockOwnerId)

Allows for update to a range mapping with the updates provided in the update parameter.

Inherited Members

BaseShardMapper.add(MappingT mapping, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping) IShardMapper<MappingT,ValueT>.add(MappingT mapping) BaseShardMapper.BaseShardMapper(ShardMapManager shardMapManager, ShardMap sm) BaseShardMapper.DEFAULT_OWNER BaseShardMapper.ensureMappingBelongsToShardMap(MappingT mapping, String operationName, String parameterName) BaseShardMapper.getLockOwnerForMapping(MappingT mapping, ShardManagementErrorCategory errorCategory) BaseShardMapper.getMappingsForRange(Range range, Shard shard, LookupOptions lookupOptions, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory, String mappingType) BaseShardMapper.getShardMap() BaseShardMapper.getShardMapManager() BaseShardMapper.lockOrUnlockMappings(MappingT mapping, UUID lockOwnerId, LockOwnerIdOpType lockOwnerIdOpType, ShardManagementErrorCategory errorCategory) BaseShardMapper.lookup(KeyT key, LookupOptions lookupOptions, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory) IShardMapper<MappingT,ValueT>.lookup(ValueT key, LookupOptions lookupOptions) BaseShardMapper.openConnectionForKey(KeyT key, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory, String connectionString) BaseShardMapper.openConnectionForKey(KeyT key, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory, String connectionString, ConnectionOptions options) IShardMapper<MappingT,ValueT>.openConnectionForKey(ValueT key, String connectionString) IShardMapper<MappingT,ValueT>.openConnectionForKey(ValueT key, String connectionString, ConnectionOptions options) BaseShardMapper.openConnectionForKeyAsync(KeyT key, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory, String connectionString) BaseShardMapper.openConnectionForKeyAsync(KeyT key, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, ShardManagementErrorCategory errorCategory, String connectionString, ConnectionOptions options) IShardMapper<MappingT,ValueT>.openConnectionForKeyAsync(ValueT key, String connectionString) IShardMapper<MappingT,ValueT>.openConnectionForKeyAsync(ValueT key, String connectionString, ConnectionOptions options) BaseShardMapper.remove(MappingT mapping, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, UUID lockOwnerId) IShardMapper<MappingT,ValueT>.remove(MappingT mapping, UUID lockOwnerId) BaseShardMapper.setStatus(MappingT mapping, StatusT status, Function<StatusT, StatusT> getStatus, Function<StatusT, UpdateT> createUpdate, ActionGeneric3Param<MappingT, UpdateT, UUID, MappingT> runUpdate) BaseShardMapper.setStatus(MappingT mapping, StatusT status, Function<StatusT, StatusT> getStatus, Function<StatusT, UpdateT> createUpdate, ActionGeneric3Param<MappingT, UpdateT, UUID, MappingT> runUpdate, UUID lockOwnerId) BaseShardMapper.shardMap BaseShardMapper.shardMapManager IShardMapper<MappingT,ValueT>.tryLookup(ValueT key, LookupOptions lookupOptions, ReferenceObjectHelper<MappingT> mapping) BaseShardMapper.update(MappingT currentMapping, UpdateT update, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, Function<StatusT, Integer> statusAsInt, Function<Integer, StatusT> intAsStatus) BaseShardMapper.update(MappingT currentMapping, UpdateT update, ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping, Function<StatusT, Integer> statusAsInt, Function<Integer, StatusT> intAsStatus, UUID lockOwnerId)

Constructor Details

RangeShardMapper

public RangeShardMapper(ShardMapManager shardMapManager, ShardMap sm)

Range shard mapper, which managers range mappings.

Parameters:

shardMapManager - Reference to ShardMapManager.
sm - Containing shard map.

Method Details

add

public final RangeMapping add(RangeMapping mapping)

Adds a range mapping.

Parameters:

mapping - Mapping being added.

Returns:

The added mapping object.

getLockOwnerForMapping

public final UUID getLockOwnerForMapping(RangeMapping mapping)

Gets the lock owner of a mapping.

Parameters:

mapping - The mapping

Returns:

Lock owner for the mapping.

getMappingsForRange

public final List getMappingsForRange(Range range, Shard shard, LookupOptions lookupOptions)

Gets all the mappings that exist within given range.

Parameters:

range - Optional range value, if null, we cover everything.
shard - Optional shard parameter, if null, we cover all shards.
lookupOptions - Whether to use cache and/or storage for lookups.

Returns:

Read-only collection of mappings that overlap with given range.

lockOrUnlockMappings

public final void lockOrUnlockMappings(RangeMapping mapping, UUID lockOwnerId, LockOwnerIdOpType lockOwnerIdOpType)

Locks or unlocks a given mapping or all mappings.

Parameters:

mapping - Optional mapping
lockOwnerId - The lock owner id
lockOwnerIdOpType - Operation to perform on this mapping with the given lockOwnerId

lookup

public final RangeMapping lookup(Object key, LookupOptions lookupOptions)

Looks up the key value and returns the corresponding mapping.

Parameters:

key - Input key value.
lookupOptions - Whether to use cache and/or storage for lookups.

Returns:

Mapping that contains the key value.

markMappingOffline

public final RangeMapping markMappingOffline(RangeMapping mapping, UUID lockOwnerId)

Marks the given mapping offline.

Parameters:

mapping - Input range mapping.
lockOwnerId - Lock owner id of this mapping

Returns:

An offline mapping.

markMappingOnline

public final RangeMapping markMappingOnline(RangeMapping mapping, UUID lockOwnerId)

Marks the given mapping online.

Parameters:

mapping - Input range mapping.
lockOwnerId - Lock owner id of this mapping

Returns:

An online mapping.

merge

public final RangeMapping merge(RangeMapping left, RangeMapping right, UUID leftLockOwnerId, UUID rightLockOwnerId)

Merges 2 contiguous mappings into a single mapping. Both left and right mappings should point to the same location and must be contiguous.

Parameters:

left - Left mapping.
right - Right mapping.
leftLockOwnerId - Lock owner id of the left mapping
rightLockOwnerId - Lock owner id of the right mapping

Returns:

Mapping that results from the merge operation.

openConnectionForKey

public final Connection openConnectionForKey(Object key, String connectionString)

Parameters:

key
connectionString

openConnectionForKey

public final Connection openConnectionForKey(Object key, String connectionString, ConnectionOptions options)

Given a key value, obtains a SqlConnection to the shard in the mapping that contains the key value.

Parameters:

key - Input key value.
connectionString - Connection string with credential information, the DataSource and Database are obtained from the results of the lookup operation for key.
options - Options for validation operations to perform on opened connection.

Returns:

An opened SqlConnection.

openConnectionForKeyAsync

public final Callable openConnectionForKeyAsync(Object key, String connectionString)

Parameters:

key
connectionString

openConnectionForKeyAsync

public final Callable openConnectionForKeyAsync(Object key, String connectionString, ConnectionOptions options)

Given a key value, asynchronously obtains a SqlConnection to the shard in the mapping that contains the key value.

Parameters:

key - Input key value.
connectionString - Connection string with credential information, the DataSource and Database are obtained from the results of the lookup operation for key.
options - Options for validation operations to perform on opened connection.

Returns:

A Task encapsulating an opened SqlConnection.

remove

public final void remove(RangeMapping mapping, UUID lockOwnerId)

Removes a range mapping.

Parameters:

mapping - Mapping being removed.
lockOwnerId - Lock owner id of this mapping

split

public final List split(RangeMapping existingMapping, Object splitAt, UUID lockOwnerId)

Splits the given mapping into 2 at the given key. The new mappings point to the same shard as the existing mapping.

Parameters:

existingMapping - Given existing mapping.
splitAt - Split point.
lockOwnerId - Lock owner id of this mapping

Returns:

Read-only collection of 2 new mappings thus created.

tryLookup

public final boolean tryLookup(Object key, LookupOptions lookupOptions, ReferenceObjectHelper mapping)

Tries to looks up the key value and returns the corresponding mapping.

Parameters:

key - Input key value.
lookupOptions - Whether to use cache and/or storage for lookups.
mapping - Mapping that contains the key value.

Returns:

true if mapping is found, false otherwise.

update

public final RangeMapping update(RangeMapping currentMapping, RangeMappingUpdate update, UUID lockOwnerId)

Allows for update to a range mapping with the updates provided in the update parameter.

Parameters:

currentMapping - Mapping being updated.
update - Updated properties of the Shard.
lockOwnerId - Lock owner id of this mapping

Returns:

New instance of mapping with updated information.

Applies to