public IDistribution GetDistribution(string cluster, string database, string collection) { ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster]; if (clusterInfo.Databases != null) { return clusterInfo.GetDatabase(database).GetCollection(collection).DataDistribution; } return null; }
public void SetDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy distribution) { ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster]; if (clusterInfo.Databases != null) { clusterInfo.GetDatabase(database).GetCollection(collection).DistributionStrategy = distribution; _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection); } }
public void RestoreDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy strategy) { ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster]; if (clusterInfo.Databases != null) { clusterInfo.GetDatabase(database).GetCollection(collection).DistributionStrategy = strategy; //clusterInfo.GetDatabase(database).GetCollection(collection).DataDistribution = strategy.GetCurrentBucketDistribution(); _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection); if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsInfoEnabled) LoggerManager.Instance.RecoveryLogger.Info("MetaStore.RestoreDistributionStrrategy()", "Updated"); } }
//IDictionary<string, ClusterInfo> _clusterMetaData = new Dictionary<string, ClusterInfo>(); public void AddDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy strategy, DistributionStrategyConfiguration configuration, Boolean needTransfer) { ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster]; if (clusterInfo.Databases != null) { DatabaseInfo databaseInfo = clusterInfo.GetDatabase(database); CollectionInfo collectionInfo = databaseInfo.GetCollection(collection); collectionInfo.SetDistributionStrategy(configuration, strategy); if (collectionInfo.DistributionStrategy.Name.Equals(DistributionType.NonSharded.ToString())) { collectionInfo.DistributionStrategy.AddShard(collectionInfo.CollectionShard, null, needTransfer); //In case of NonShardedDistributionStrategy: The shard told by user must be added first. That is why this check is placed } _clusterMetaData[cluster] = clusterInfo; _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection); } }