/// <summary> /// Creates a shard map manager, creates a shard map, and creates a shard /// with a mapping for the full range of 32-bit integers. /// </summary> private static void CreateShardMapManagerAndShard() { if (MultiShardConfiguration.objShardMapManager != null) { ConsoleUtils.WriteWarning("Shard Map Manager already exists"); return; } // Create shard map manager database if (!SqlDatabaseUtils.ExistsDatabase(MultiShardConfiguration.ShardMapManagerServerName, MultiShardConfiguration.ShardMapManagerDatabaseName)) { SqlDatabaseUtils.CreateDatabase(MultiShardConfiguration.ShardMapManagerServerName, MultiShardConfiguration.ShardMapManagerDatabaseName); } // Create shard map manager string shardMapManagerConnectionString = MultiShardConfiguration.GetConnectionString(); MultiShardConfiguration.objShardMapManager = ShardManagementUtils.CreateOrGetShardMapManager(shardMapManagerConnectionString); // Create shard map RangeShardMap <int> shardMap = ShardManagementUtils.CreateOrGetRangeShardMap <int>( MultiShardConfiguration.objShardMapManager, MultiShardConfiguration.ShardMapName); // Create schema info so that the split-merge service can be used to move data in sharded tables // and reference tables. CreateSchemaInfo(shardMap.Name); // If there are no shards, add two shards: one for [0,100) and one for [100,+inf) if (!shardMap.GetShards().Any()) { CreateShardSample.CreateShard(shardMap, new Range <int>(0, 100)); CreateShardSample.CreateShard(shardMap, new Range <int>(100, 200)); } }
/// <summary> /// Tries to get the ShardMapManager that is stored in the specified database. /// </summary> public static ShardMapManager TryGetShardMapManager() { if (!SqlDatabaseUtils.ExistsDatabase(MultiShardConfiguration.ShardMapManagerServerName, MultiShardConfiguration.ShardMapManagerDatabaseName)) { // Shard Map Manager database has not yet been created return(null); } ShardMapManager shardMapManager; bool smmExists = ShardMapManagerFactory.TryGetSqlShardMapManager(MultiShardConfiguration.GetConnectionString(), ShardMapManagerLoadPolicy.Lazy, out shardMapManager); if (!smmExists) { // Shard Map Manager database exists, but Shard Map Manager has not been created return(null); } return(shardMapManager); }