本文整理汇总了Java中com.mysql.fabric.ShardMapping类的典型用法代码示例。如果您正苦于以下问题:Java ShardMapping类的具体用法?Java ShardMapping怎么用?Java ShardMapping使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
ShardMapping类属于com.mysql.fabric包,在下文中一共展示了ShardMapping类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: addQueryTable
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Add a table to the set of tables used for the next query on this connection.
* This is used for:
* <ul>
* <li>Choosing a shard given the tables used</li>
* <li>Preventing cross-shard queries</li>
* </ul>
*/
public void addQueryTable(String tableName) throws SQLException {
ensureNoTransactionInProgress();
this.currentConnection = null;
// choose shard mapping if necessary
if (this.shardMapping == null) {
if (this.fabricConnection.getShardMapping(this.database, tableName) != null) {
setShardTable(tableName);
}
} else { // make sure we aren't in conflict with the chosen shard mapping
ShardMapping mappingForTableName = this.fabricConnection.getShardMapping(this.database, tableName);
if (mappingForTableName != null && !mappingForTableName.equals(this.shardMapping)) {
throw SQLError.createSQLException("Cross-shard query not allowed", SQLError.SQL_STATE_ILLEGAL_ARGUMENT, null, getExceptionInterceptor(), this);
}
}
this.queryTables.add(tableName);
}
示例2: addQueryTable
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Add a table to the set of tables used for the next query on this connection.
* This is used for:
* <ul>
* <li>Choosing a shard given the tables used</li>
* <li>Preventing cross-shard queries</li>
* </ul>
*/
public void addQueryTable(String tableName) throws SQLException {
ensureNoTransactionInProgress();
this.currentConnection = null;
try {
// choose shard mapping if necessary
if (this.shardMapping == null) {
if (this.fabricConnection.getShardMapping(this.database, tableName) != null) {
setShardTable(tableName);
}
} else { // make sure we aren't in conflict with the chosen shard mapping
ShardMapping mappingForTableName = this.fabricConnection.getShardMapping(this.database, tableName);
if (mappingForTableName != null && !mappingForTableName.equals(this.shardMapping)) {
throw SQLError.createSQLException("Cross-shard query not allowed", SQLError.SQL_STATE_ILLEGAL_ARGUMENT, null, getExceptionInterceptor(),
this);
}
}
this.queryTables.add(tableName);
} catch (FabricCommunicationException ex) {
throw SQLError.createSQLException("Fabric communication failure.", SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE, ex, getExceptionInterceptor(),
this);
}
}
示例3: testDumpShardMapsAll
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Test the Client.getShardMaps() without a match pattern (all maps).
*/
public void testDumpShardMapsAll() throws Exception {
if (!this.isSetForFabricTest) {
return;
}
Set<ShardMapping> shardMappings = this.client.getShardMappings().getData();
assertEquals(1, shardMappings.size());
ShardMapping shardMapping = shardMappings.iterator().next();
assertEquals(1, shardMapping.getShardTables().size());
}
示例4: testHashShardMappingKeyLookup
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
public void testHashShardMappingKeyLookup() throws Exception {
final String globalGroupName = "My global group";
final String lowerBounds[] = new String[] { /* 0 = */"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", /* 1 = */"66666666666666666666666666666666",
/* 2 = */"2809A05A22A4A9C1882A580BCC0AD8A6", /* 3 = */"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" };
// setup the mapping
Set<ShardIndex> shardIndices = new HashSet<ShardIndex>();
int shardId = 0; // shard id's added sequentially increasing from 0
for (String lowerBound : lowerBounds) {
ShardIndex i = new ShardIndex(lowerBound, shardId, "server_group_" + shardId);
shardId++;
shardIndices.add(i);
}
ShardMapping mapping = new HashShardMapping(5000, ShardingType.HASH, globalGroupName, null, shardIndices);
// test lookups mapping of test value to the group it maps to test values are hashed with MD5 and compared to lowerBounds values
String testPairs[][] = new String[][] {
// exact match should be in that shard
new String[] { "Jess", "server_group_2" }, // hash = 2809a05a22a4a9c1882a580bcc0ad8a6
new String[] { "x", "server_group_1" }, // hash = 9dd4e461268c8034f5c8564e155c67a6
new String[] { "X", "server_group_3" }, // hash = 02129bb861061d1a052c592e2dc6b383
new String[] { "Y", "server_group_2" }, // hash = 57cec4137b614c87cb4e24a3d003a3e0
new String[] { "g", "server_group_0" }, // hash = b2f5ff47436671b6e533d8dc3614845d
// leading zeroes
new String[] { "168", "server_group_3" }, // hash = 006f52e9102a8d3be2fe5614f42ba989
};
for (String[] testPair : testPairs) {
String key = testPair[0];
String serverGroup = testPair[1];
assertEquals(serverGroup, mapping.getGroupNameForKey(key));
}
// test a random set of values. we should never return null
for (int i = 0; i < 1000; ++i) {
assertNotNull(mapping.getGroupNameForKey("" + i));
}
}
示例5: getShardMappings
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Retrieve a set of complete shard mappings. The returned mappings include all information
* available about the mapping.
*
* @param shardMappingIdPattern
* the shard mapping id to retrieve
*/
public FabricStateResponse<Set<ShardMapping>> getShardMappings(String shardMappingIdPattern) throws FabricCommunicationException {
int version = 0;
Object args[] = new Object[] { version, shardMappingIdPattern }; // common to all calls
Response mapsResponse = errorSafeCallMethod(METHOD_DUMP_SHARD_MAPS, args);
// use the lowest ttl of all the calls
long minExpireTimeMillis = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(mapsResponse.getTtl());
int baseTtl = mapsResponse.getTtl();
// construct the maps
Set<ShardMapping> mappings = new HashSet<ShardMapping>();
for (Map<String, ?> rawMapping : mapsResponse.getResultSet()) {
int mappingId = (Integer) rawMapping.get(FIELD_MAPPING_ID);
ShardingType shardingType = ShardingType.valueOf((String) rawMapping.get(FIELD_TYPE_NAME));
String globalGroupName = (String) rawMapping.get(FIELD_GLOBAL_GROUP_ID);
FabricStateResponse<Set<ShardTable>> tables = getShardTables(mappingId);
FabricStateResponse<Set<ShardIndex>> indices = getShardIndices(mappingId);
if (tables.getExpireTimeMillis() < minExpireTimeMillis) {
minExpireTimeMillis = tables.getExpireTimeMillis();
}
if (indices.getExpireTimeMillis() < minExpireTimeMillis) {
minExpireTimeMillis = indices.getExpireTimeMillis();
}
ShardMapping m = new ShardMappingFactory().createShardMapping(mappingId, shardingType, globalGroupName, tables.getData(), indices.getData());
mappings.add(m);
}
return new FabricStateResponse<Set<ShardMapping>>(mappings, baseTtl, minExpireTimeMillis);
}
示例6: getShardMappings
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Retrieve a set of complete shard mappings. The returned mappings include all information
* available about the mapping.
*
* @param shardMappingIdPattern
* the shard mapping id to retrieve
*/
public FabricStateResponse<Set<ShardMapping>> getShardMappings(String shardMappingIdPattern) throws FabricCommunicationException {
int version = 0;
Object args[] = new Object[] { version, shardMappingIdPattern }; // common to all calls
Response mapsResponse = errorSafeCallMethod(METHOD_DUMP_SHARD_MAPS, args);
// use the lowest ttl of all the calls
long minExpireTimeMillis = System.currentTimeMillis() + (1000 * mapsResponse.getTtl());
// construct the maps
Set<ShardMapping> mappings = new HashSet<ShardMapping>();
for (Map rawMapping : mapsResponse.getResultSet()) {
int mappingId = (Integer) rawMapping.get(FIELD_MAPPING_ID);
ShardingType shardingType = ShardingType.valueOf((String) rawMapping.get(FIELD_TYPE_NAME));
String globalGroupName = (String) rawMapping.get(FIELD_GLOBAL_GROUP_ID);
FabricStateResponse<Set<ShardTable>> tables = getShardTables(mappingId);
FabricStateResponse<Set<ShardIndex>> indices = getShardIndices(mappingId);
if (tables.getExpireTimeMillis() < minExpireTimeMillis) {
minExpireTimeMillis = tables.getExpireTimeMillis();
}
if (indices.getExpireTimeMillis() < minExpireTimeMillis) {
minExpireTimeMillis = indices.getExpireTimeMillis();
}
ShardMapping m = new ShardMappingFactory().createShardMapping(mappingId, shardingType, globalGroupName, tables.getData(), indices.getData());
mappings.add(m);
}
return new FabricStateResponse<Set<ShardMapping>>(mappings, minExpireTimeMillis);
}
示例7: testDumpShardMapsAll
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Test the Client.getShardMaps() without a match pattern (all maps).
*/
public void testDumpShardMapsAll() throws Exception {
Set<ShardMapping> shardMappings = this.client.getShardMappings().getData();
assertEquals(1, shardMappings.size());
ShardMapping shardMapping = shardMappings.iterator().next();
assertEquals(1, shardMapping.getShardTables().size());
}
示例8: addQueryTable
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Add a table to the set of tables used for the next query on this connection.
* This is used for:
* <ul>
* <li>Choosing a shard given the tables used</li>
* <li>Preventing cross-shard queries</li>
* </ul>
*/
public void addQueryTable(String tableName) throws SQLException {
ensureNoTransactionInProgress();
this.currentConnection = null;
try {
// choose shard mapping if necessary
if (this.shardMapping == null) {
if (this.fabricConnection.getShardMapping(this.database, tableName) != null) {
setShardTable(tableName);
}
} else { // make sure we aren't in conflict with the chosen shard mapping
ShardMapping mappingForTableName = this.fabricConnection.getShardMapping(this.database, tableName);
if (mappingForTableName != null &&
!mappingForTableName.equals(this.shardMapping))
throw SQLError.createSQLException("Cross-shard query not allowed",
SQLError.SQL_STATE_ILLEGAL_ARGUMENT,
null,
getExceptionInterceptor(),
this);
}
this.queryTables.add(tableName);
} catch(FabricCommunicationException ex) {
throw SQLError.createSQLException("Fabric communication failure.",
SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE,
ex,
getExceptionInterceptor(),
this);
}
}
示例9: getShardMappings
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Retrieve a set of complete shard mappings. The returned mappings include all information
* available about the mapping.
* @param shardMappingIdPattern the shard mapping id to retrieve
*/
public FabricStateResponse<Set<ShardMapping>> getShardMappings(String shardMappingIdPattern) throws FabricCommunicationException {
int version = 0;
Object args[] = new Object[] {version, shardMappingIdPattern}; // common to all calls
DumpResponse mapsResponse = callDumpMethod("dump.shard_maps", args);
// use the lowest ttl of all the calls
long minExpireTimeMillis = System.currentTimeMillis() + (1000 * mapsResponse.getTtl());
// construct the maps
Set<ShardMapping> mappings = new HashSet<ShardMapping>();
for (List rawMapping : (List<List>) mapsResponse.getReturnValue()) {
String mappingId = (String)rawMapping.get(0);
ShardingType shardingType = ShardingType.valueOf((String)rawMapping.get(1));
String globalGroupName = (String)rawMapping.get(2);
FabricStateResponse<Set<ShardTable>> tables = getShardTables(mappingId);
FabricStateResponse<Set<ShardIndex>> indices = getShardIndices(mappingId);
if (tables.getExpireTimeMillis() < minExpireTimeMillis)
minExpireTimeMillis = tables.getExpireTimeMillis();
if (indices.getExpireTimeMillis() < minExpireTimeMillis)
minExpireTimeMillis = indices.getExpireTimeMillis();
ShardMapping m = new ShardMappingFactory().createShardMapping(mappingId, shardingType, globalGroupName,
tables.getData(), indices.getData());
mappings.add(m);
}
return new FabricStateResponse<Set<ShardMapping>>(mappings, minExpireTimeMillis);
}
示例10: testDumpShardMapsAll
import com.mysql.fabric.ShardMapping; //导入依赖的package包/类
/**
* Test the Client.getShardMaps() without a match pattern (all maps).
*/
public void testDumpShardMapsAll() throws Exception {
Set<ShardMapping> shardMappings = this.client.getShardMappings().getData();
assertEquals(1, shardMappings.size());
ShardMapping shardMapping = shardMappings.iterator().next();
assertEquals(1, shardMapping.getShardTables().size());
}