Exemplo n.º 1
0
        public TableRule(TableRuleConfiguration tableRuleConfig, ShardingDataSourceNames shardingDataSourceNames,
                         string defaultGenerateKeyColumn)
        {
            LogicTable = tableRuleConfig.LogicTable.ToLower();
            List <string> dataNodes = tableRuleConfig.ActualDataNodes ?? new List <string>(0);

            // List<string> dataNodes = new InlineExpressionParser(tableRuleConfig.GetActualDataNodes()).splitAndEvaluate();
            // dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1);
            dataNodeIndexMap = new Dictionary <DataNode, int>(dataNodes.Count);
            ActualDataNodes  = IsEmptyDataNodes(dataNodes)
                ? GenerateDataNodes(tableRuleConfig.LogicTable, shardingDataSourceNames.DataSourceNames) : GenerateDataNodes(dataNodes, shardingDataSourceNames.DataSourceNames);
            //ActualDataNodes = GenerateDataNodes(tableRuleConfig.LogicTable, shardingDataSourceNames.DataSourceNames);
            actualTables             = GetActualTables();
            DatabaseShardingStrategy = null == tableRuleConfig.DatabaseShardingStrategyConfig
                ? null
                : ShardingStrategyFactory.NewInstance(tableRuleConfig.DatabaseShardingStrategyConfig);
            TableShardingStrategy = null == tableRuleConfig.TableShardingStrategyConfig
                ? null
                : ShardingStrategyFactory.NewInstance(tableRuleConfig.TableShardingStrategyConfig);
            KeyGeneratorConfiguration keyGeneratorConfiguration = tableRuleConfig.KeyGeneratorConfig;

            generateKeyColumn =
                null != keyGeneratorConfiguration && !string.IsNullOrWhiteSpace(keyGeneratorConfiguration.Column)
                    ? keyGeneratorConfiguration.Column
                    : defaultGenerateKeyColumn;
            ShardingKeyGenerator = ContainsKeyGeneratorConfiguration(tableRuleConfig)
                ? new ShardingKeyGeneratorServiceLoader().NewService(tableRuleConfig.KeyGeneratorConfig.Type,
                                                                     tableRuleConfig.KeyGeneratorConfig.Properties)
                : null;
            // CheckRule(dataNodes);
        }
Exemplo n.º 2
0
 public TableRule(ICollection <string> dataSourceNames, string logicTableName)
 {
     LogicTable               = logicTableName.ToLower();
     dataNodeIndexMap         = new Dictionary <DataNode, int>(dataSourceNames.Count);
     ActualDataNodes          = GenerateDataNodes(logicTableName, dataSourceNames);
     actualTables             = GetActualTables();
     DatabaseShardingStrategy = null;
     TableShardingStrategy    = null;
     generateKeyColumn        = null;
     ShardingKeyGenerator     = null;
 }
Exemplo n.º 3
0
 public TableRule(string defaultDataSourceName, string logicTableName)
 {
     LogicTable      = logicTableName.ToLower();
     ActualDataNodes = new List <DataNode>()
     {
         new DataNode(defaultDataSourceName, logicTableName)
     };
     actualTables = GetActualTables();
     CacheActualDataSourcesAndTables();
     dataNodeIndexMap         = new Dictionary <DataNode, int>();
     DatabaseShardingStrategy = null;
     TableShardingStrategy    = null;
     generateKeyColumn        = null;
     ShardingKeyGenerator     = null;
 }