This is an automated email from the ASF dual-hosted git repository.

zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new f3adf7d7b0d Refactor shading event & subscriber (#26489)
f3adf7d7b0d is described below

commit f3adf7d7b0d2779ef01ac5eed98bbfb33a5ee020
Author: ChenJiaHao <[email protected]>
AuthorDate: Sat Jun 24 21:11:24 2023 +0800

    Refactor shading event & subscriber (#26489)
---
 .../ShardingRuleConfigurationEventBuilder.java     | 221 ++++++---------------
 .../event/algorithm/auditor/AlterAuditorEvent.java |   3 -
 .../algorithm/auditor/DeleteAuditorEvent.java      |   4 -
 .../keygenerator/AlterKeyGeneratorEvent.java       |   3 -
 .../keygenerator/DeleteKeyGeneratorEvent.java      |   4 -
 .../sharding/AlterShardingAlgorithmEvent.java      |   3 -
 .../sharding/DeleteShardingAlgorithmEvent.java     |   4 -
 .../cache/AddShardingCacheConfigurationEvent.java  |   3 -
 .../AlterShardingCacheConfigurationEvent.java      |   3 -
 .../DeleteShardingCacheConfigurationEvent.java     |   4 -
 ...dShardingAuditorStrategyConfigurationEvent.java |   3 -
 ...rShardingAuditorStrategyConfigurationEvent.java |   3 -
 ...eShardingAuditorStrategyConfigurationEvent.java |   4 -
 ...DatabaseShardingStrategyConfigurationEvent.java |   3 -
 ...DatabaseShardingStrategyConfigurationEvent.java |   3 -
 ...DatabaseShardingStrategyConfigurationEvent.java |   4 -
 .../AddKeyGenerateStrategyConfigurationEvent.java  |   3 -
 ...AlterKeyGenerateStrategyConfigurationEvent.java |   3 -
 ...eleteKeyGenerateStrategyConfigurationEvent.java |   4 -
 .../AddDefaultShardingColumnEvent.java             |   2 -
 .../AlterDefaultShardingColumnEvent.java           |   2 -
 .../DeleteDefaultShardingColumnEvent.java          |   4 -
 ...AddTableShardingStrategyConfigurationEvent.java |   3 -
 ...terTableShardingStrategyConfigurationEvent.java |   3 -
 ...eteTableShardingStrategyConfigurationEvent.java |   4 -
 .../AddShardingAutoTableConfigurationEvent.java    |   6 +-
 .../AlterShardingAutoTableConfigurationEvent.java  |   6 +-
 .../DeleteShardingAutoTableConfigurationEvent.java |   4 -
 ...ddShardingTableReferenceConfigurationEvent.java |   8 +-
 ...erShardingTableReferenceConfigurationEvent.java |   8 +-
 .../AddBroadcastTableConfigurationEvent.java       |  40 ----
 .../AlterBroadcastTableConfigurationEvent.java     |  40 ----
 .../DeleteBroadcastTableConfigurationEvent.java    |  36 ----
 .../AddShardingTableConfigurationEvent.java        |   6 +-
 .../AlterShardingTableConfigurationEvent.java      |   6 +-
 .../DeleteShardingTableConfigurationEvent.java     |   4 -
 .../metadata/converter/ShardingNodeConverter.java  | 161 +++++++--------
 .../subscriber/ShardingAlgorithmSubscriber.java    |  17 +-
 .../ShardingCacheConfigurationSubscriber.java      |  14 +-
 .../ShardingStrategyConfigurationSubscriber.java   |  47 ++++-
 .../ShardingTableConfigurationSubscriber.java      | 104 ++++------
 .../converter/ShardingNodeConverterTest.java       |  72 +++----
 42 files changed, 277 insertions(+), 602 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
index 7d0a74f71ea..a93f1f66dbb 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
@@ -18,21 +18,10 @@
 package org.apache.shardingsphere.sharding.event;
 
 import com.google.common.base.Strings;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
-import 
org.apache.shardingsphere.infra.yaml.config.swapper.algorithm.YamlAlgorithmConfigurationSwapper;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.spi.RuleConfigurationEventBuilder;
-import 
org.apache.shardingsphere.sharding.api.config.cache.ShardingCacheConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableReferenceRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 import 
org.apache.shardingsphere.sharding.event.algorithm.auditor.AlterAuditorEvent;
 import 
org.apache.shardingsphere.sharding.event.algorithm.auditor.DeleteAuditorEvent;
 import 
org.apache.shardingsphere.sharding.event.algorithm.keygenerator.AlterKeyGeneratorEvent;
@@ -60,28 +49,11 @@ import 
org.apache.shardingsphere.sharding.event.strategy.table.DeleteTableShardi
 import 
org.apache.shardingsphere.sharding.event.table.auto.AddShardingAutoTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.auto.AlterShardingAutoTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.auto.DeleteShardingAutoTableConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.AddBroadcastTableConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.AlterBroadcastTableConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.DeleteBroadcastTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.AddShardingTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.AlterShardingTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.DeleteShardingTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.metadata.converter.ShardingNodeConverter;
-import 
org.apache.shardingsphere.sharding.yaml.config.cache.YamlShardingCacheConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlShardingAutoTableRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlTableRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.config.strategy.audit.YamlShardingAuditStrategyConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.config.strategy.keygen.YamlKeyGenerateStrategyConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.config.strategy.sharding.YamlShardingStrategyConfiguration;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.cache.YamlShardingCacheConfigurationSwapper;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingAutoTableRuleConfigurationSwapper;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingTableReferenceRuleConfigurationConverter;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingTableRuleConfigurationSwapper;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlKeyGenerateStrategyConfigurationSwapper;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlShardingAuditStrategyConfigurationSwapper;
-import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlShardingStrategyConfigurationSwapper;
 
-import java.util.Collection;
 import java.util.Optional;
 
 /**
@@ -96,236 +68,157 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         }
         Optional<String> tableName = 
ShardingNodeConverter.getTableName(event.getKey());
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) 
{
-            Optional<String> tableNameVersion = 
ShardingNodeConverter.getTableNameVersion(event.getKey());
-            if (tableNameVersion.isPresent()) {
-                return createShardingTableConfigEvent(databaseName, 
tableName.get(), tableNameVersion.get(), event);
-            }
+            return createShardingTableConfigEvent(databaseName, 
tableName.get(), event);
         }
         Optional<String> autoTableName = 
ShardingNodeConverter.getAutoTableName(event.getKey());
         if (autoTableName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> autoTableNameVersion = 
ShardingNodeConverter.getAutoTableNameVersion(event.getKey());
-            if (autoTableNameVersion.isPresent()) {
-                return createShardingAutoTableConfigEvent(databaseName, 
autoTableName.get(), autoTableNameVersion.get(), event);
-            }
+            return createShardingAutoTableConfigEvent(databaseName, 
autoTableName.get(), event);
         }
         Optional<String> bindingTableName = 
ShardingNodeConverter.getBindingTableName(event.getKey());
         if (bindingTableName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> bingingTableNameVersion = 
ShardingNodeConverter.getBindingTableNameVersion(event.getKey());
-            if (bingingTableNameVersion.isPresent()) {
-                return createShardingTableReferenceConfigEvent(databaseName, 
bindingTableName.get(), bingingTableNameVersion.get(), event);
-            }
+            return createShardingTableReferenceConfigEvent(databaseName, 
bindingTableName.get(), event);
         }
         if 
(ShardingNodeConverter.isDefaultDatabaseStrategyPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> defaultDatabaseStrategyVersion = 
ShardingNodeConverter.getDefaultDatabaseStrategyVersion(event.getKey());
-            if (defaultDatabaseStrategyVersion.isPresent()) {
-                return createDefaultDatabaseStrategyConfigEvent(databaseName, 
defaultDatabaseStrategyVersion.get(), event);
-            }
+            return createDefaultDatabaseStrategyConfigEvent(databaseName, 
event);
         }
         if (ShardingNodeConverter.isDefaultTableStrategyPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> defaultTableStrategyVersion = 
ShardingNodeConverter.getDefaultTableStrategyVersion(event.getKey());
-            if (defaultTableStrategyVersion.isPresent()) {
-                return createDefaultTableStrategyConfigEvent(databaseName, 
defaultTableStrategyVersion.get(), event);
-            }
+            return createDefaultTableStrategyConfigEvent(databaseName, event);
         }
         if 
(ShardingNodeConverter.isDefaultKeyGenerateStrategyPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> defaultKeyGenerateStrategyVersion = 
ShardingNodeConverter.getDefaultKeyGenerateStrategyVersion(event.getKey());
-            if (defaultKeyGenerateStrategyVersion.isPresent()) {
-                return 
createDefaultKeyGenerateStrategyConfigEvent(databaseName, 
defaultKeyGenerateStrategyVersion.get(), event);
-            }
+            return createDefaultKeyGenerateStrategyConfigEvent(databaseName, 
event);
         }
         if (ShardingNodeConverter.isDefaultAuditStrategyPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> defaultAuditStrategyVersion = 
ShardingNodeConverter.getDefaultAuditStrategyVersion(event.getKey());
-            if (defaultAuditStrategyVersion.isPresent()) {
-                return 
createDefaultShardingAuditorStrategyConfigEvent(databaseName, 
defaultAuditStrategyVersion.get(), event);
-            }
+            return 
createDefaultShardingAuditorStrategyConfigEvent(databaseName, event);
         }
         if (ShardingNodeConverter.isDefaultShardingColumnPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> defaultShardingColumnVersion = 
ShardingNodeConverter.getDefaultShardingColumnVersion(event.getKey());
-            if (defaultShardingColumnVersion.isPresent()) {
-                return createDefaultShardingColumnEvent(databaseName, 
defaultShardingColumnVersion.get(), event);
-            }
+            return createDefaultShardingColumnEvent(databaseName, event);
         }
         Optional<String> algorithmName = 
ShardingNodeConverter.getShardingAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> algorithmVersion = 
ShardingNodeConverter.getShardingAlgorithmVersion(event.getKey());
-            if (algorithmVersion.isPresent()) {
-                return createShardingAlgorithmEvent(databaseName, 
algorithmName.get(), algorithmVersion.get(), event);
-            }
+            return createShardingAlgorithmEvent(databaseName, 
algorithmName.get(), event);
         }
         Optional<String> keyGeneratorName = 
ShardingNodeConverter.getKeyGeneratorName(event.getKey());
         if (keyGeneratorName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> keyGeneratorVersion = 
ShardingNodeConverter.getKeyGeneratorVersion(event.getKey());
-            if (keyGeneratorVersion.isPresent()) {
-                return createKeyGeneratorEvent(databaseName, 
keyGeneratorName.get(), keyGeneratorVersion.get(), event);
-            }
+            return createKeyGeneratorEvent(databaseName, 
keyGeneratorName.get(), event);
         }
         Optional<String> auditorName = 
ShardingNodeConverter.getAuditorName(event.getKey());
         if (auditorName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> auditorVersion = 
ShardingNodeConverter.getAuditorVersion(event.getKey());
-            if (auditorVersion.isPresent()) {
-                return createAuditorEvent(databaseName, auditorName.get(), 
auditorVersion.get(), event);
-            }
+            return createAuditorEvent(databaseName, auditorName.get(), event);
         }
         if (ShardingNodeConverter.isShardingCachePath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
-            Optional<String> shardingCacheVersion = 
ShardingNodeConverter.getShardingCacheVersion(event.getKey());
-            if (shardingCacheVersion.isPresent()) {
-                return createShardingCacheEvent(databaseName, 
shardingCacheVersion.get(), event);
-            }
+            return createShardingCacheEvent(databaseName, event);
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createShardingTableConfigEvent(final 
String databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingTableConfigEvent(final 
String databaseName, final String tableName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddShardingTableConfigurationEvent<>(databaseName, 
swapShardingTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddShardingTableConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterShardingTableConfigurationEvent<>(databaseName, tableName, 
swapShardingTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterShardingTableConfigurationEvent(databaseName, tableName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteShardingTableConfigurationEvent(databaseName, tableName, event.getKey(), 
version));
+        return Optional.of(new 
DeleteShardingTableConfigurationEvent(databaseName, tableName));
     }
     
-    private ShardingTableRuleConfiguration swapShardingTableRuleConfig(final 
String yamlContext) {
-        return new 
YamlShardingTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlTableRuleConfiguration.class));
-    }
-    
-    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final 
String databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final 
String databaseName, final String tableName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddShardingAutoTableConfigurationEvent<>(databaseName, 
swapShardingAutoTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddShardingAutoTableConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterShardingAutoTableConfigurationEvent<>(databaseName, tableName, 
swapShardingAutoTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterShardingAutoTableConfigurationEvent(databaseName, tableName, 
event.getKey(), event.getValue()));
         }
-        return Optional.of(new 
DeleteShardingAutoTableConfigurationEvent(databaseName, tableName, 
event.getKey(), version));
-    }
-    
-    private ShardingAutoTableRuleConfiguration 
swapShardingAutoTableRuleConfig(final String yamlContext) {
-        return new 
YamlShardingAutoTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAutoTableRuleConfiguration.class));
-    }
-    
-    private Optional<GovernanceEvent> 
createShardingTableReferenceConfigEvent(final String databaseName, final String 
tableName, final String version, final DataChangedEvent event) {
-        if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddShardingAutoTableConfigurationEvent<>(databaseName, 
swapShardingTableReferenceRuleConfig(event.getValue()), event.getKey(), 
version));
-        }
-        if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterShardingAutoTableConfigurationEvent<>(databaseName, tableName, 
swapShardingTableReferenceRuleConfig(event.getValue()), event.getKey(), 
version));
-        }
-        return Optional.of(new 
DeleteShardingAutoTableConfigurationEvent(databaseName, tableName, 
event.getKey(), version));
-    }
-    
-    private ShardingTableReferenceRuleConfiguration 
swapShardingTableReferenceRuleConfig(final String yamlContext) {
-        return 
YamlShardingTableReferenceRuleConfigurationConverter.convertToObject(yamlContext);
+        return Optional.of(new 
DeleteShardingAutoTableConfigurationEvent(databaseName, tableName));
     }
     
-    @SuppressWarnings("unchecked")
-    private Optional<GovernanceEvent> createBroadcastTableConfigEvent(final 
String databaseName, final String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createShardingTableReferenceConfigEvent(final String databaseName, final String 
tableName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddBroadcastTableConfigurationEvent(databaseName, 
YamlEngine.unmarshal(event.getValue(), Collection.class), event.getKey(), 
version));
+            return Optional.of(new 
AddShardingAutoTableConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterBroadcastTableConfigurationEvent(databaseName, 
YamlEngine.unmarshal(event.getValue(), Collection.class), event.getKey(), 
version));
+            return Optional.of(new 
AlterShardingAutoTableConfigurationEvent(databaseName, tableName, 
event.getKey(), event.getValue()));
         }
-        return Optional.of(new 
DeleteBroadcastTableConfigurationEvent(databaseName, event.getKey(), version));
+        return Optional.of(new 
DeleteShardingAutoTableConfigurationEvent(databaseName, tableName));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultDatabaseStrategyConfigEvent(final String databaseName, final 
String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultDatabaseStrategyConfigEvent(final String databaseName, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddDatabaseShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterDatabaseShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
version));
+        return Optional.of(new 
DeleteDatabaseShardingStrategyConfigurationEvent(databaseName));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultTableStrategyConfigEvent(final String databaseName, final String 
version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultTableStrategyConfigEvent(final String databaseName, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddTableShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterTableShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteTableShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
version));
-    }
-    
-    private ShardingStrategyConfiguration swapShardingStrategyConfig(final 
String yamlContext) {
-        return new 
YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingStrategyConfiguration.class));
+        return Optional.of(new 
DeleteTableShardingStrategyConfigurationEvent(databaseName));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final 
String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddKeyGenerateStrategyConfigurationEvent(databaseName, 
swapKeyGenerateStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterKeyGenerateStrategyConfigurationEvent(databaseName, 
swapKeyGenerateStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteKeyGenerateStrategyConfigurationEvent(databaseName, event.getKey(), 
version));
+        return Optional.of(new 
DeleteKeyGenerateStrategyConfigurationEvent(databaseName));
     }
     
-    private KeyGenerateStrategyConfiguration 
swapKeyGenerateStrategyConfig(final String yamlContext) {
-        return new 
YamlKeyGenerateStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlKeyGenerateStrategyConfiguration.class));
-    }
-    
-    private Optional<GovernanceEvent> 
createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, 
final String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, 
final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddShardingAuditorStrategyConfigurationEvent(databaseName, 
swapShardingAuditorStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterShardingAuditorStrategyConfigurationEvent(databaseName, 
swapShardingAuditorStrategyConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteShardingAuditorStrategyConfigurationEvent(databaseName, event.getKey(), 
version));
+        return Optional.of(new 
DeleteShardingAuditorStrategyConfigurationEvent(databaseName));
     }
     
-    private ShardingAuditStrategyConfiguration 
swapShardingAuditorStrategyConfig(final String yamlContext) {
-        return new 
YamlShardingAuditStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAuditStrategyConfiguration.class));
-    }
-    
-    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final 
String databaseName, final String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final 
String databaseName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new AddDefaultShardingColumnEvent(databaseName, 
event.getValue(), event.getKey(), version));
+            return Optional.of(new AddDefaultShardingColumnEvent(databaseName, 
event.getKey(), event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterDefaultShardingColumnEvent(databaseName, event.getValue(), event.getKey(), 
version));
+            return Optional.of(new 
AlterDefaultShardingColumnEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new DeleteDefaultShardingColumnEvent(databaseName, 
event.getKey(), version));
+        return Optional.of(new DeleteDefaultShardingColumnEvent(databaseName));
     }
     
-    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final 
String databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final 
String databaseName, final String algorithmName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-            return Optional.of(new AlterShardingAlgorithmEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
+            return Optional.of(new AlterShardingAlgorithmEvent(databaseName, 
algorithmName, event.getKey(), event.getValue()));
         }
-        return Optional.of(new DeleteShardingAlgorithmEvent(databaseName, 
algorithmName, event.getKey(), version));
+        return Optional.of(new DeleteShardingAlgorithmEvent(databaseName, 
algorithmName));
     }
     
-    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String 
databaseName, final String algorithmName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-            return Optional.of(new AlterKeyGeneratorEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
+            return Optional.of(new AlterKeyGeneratorEvent(databaseName, 
algorithmName, event.getKey(), event.getValue()));
         }
-        return Optional.of(new DeleteKeyGeneratorEvent(databaseName, 
algorithmName, event.getKey(), version));
+        return Optional.of(new DeleteKeyGeneratorEvent(databaseName, 
algorithmName));
     }
     
-    private Optional<GovernanceEvent> createAuditorEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createAuditorEvent(final String 
databaseName, final String algorithmName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-            return Optional.of(new AlterAuditorEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
+            return Optional.of(new AlterAuditorEvent(databaseName, 
algorithmName, event.getKey(), event.getValue()));
         }
-        return Optional.of(new DeleteAuditorEvent(databaseName, algorithmName, 
event.getKey(), version));
-    }
-    
-    private AlgorithmConfiguration swapToAlgorithmConfig(final String 
yamlContext) {
-        return new 
YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlAlgorithmConfiguration.class));
+        return Optional.of(new DeleteAuditorEvent(databaseName, 
algorithmName));
     }
     
-    private Optional<GovernanceEvent> createShardingCacheEvent(final String 
databaseName, final String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingCacheEvent(final String 
databaseName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddShardingCacheConfigurationEvent(databaseName, 
swapToShardingCacheConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AddShardingCacheConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterShardingCacheConfigurationEvent(databaseName, 
swapToShardingCacheConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new 
AlterShardingCacheConfigurationEvent(databaseName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteShardingCacheConfigurationEvent(databaseName, event.getKey(), version));
-    }
-    
-    private ShardingCacheConfiguration swapToShardingCacheConfig(final String 
yamlContext) {
-        return new 
YamlShardingCacheConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingCacheConfiguration.class));
+        return Optional.of(new 
DeleteShardingCacheConfigurationEvent(databaseName));
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
index 2173c690901..699fd5ccaed 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.event.algorithm.auditor;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
@@ -33,8 +32,6 @@ public final class AlterAuditorEvent implements 
GovernanceEvent {
     
     private final String auditorName;
     
-    private final AlgorithmConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
index 736477ff9ea..0d18f6f42cb 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
@@ -31,8 +31,4 @@ public final class DeleteAuditorEvent implements 
GovernanceEvent {
     private final String databaseName;
     
     private final String auditorName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
index 793063bbf07..062a88fdad7 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.event.algorithm.keygenerator;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
@@ -33,8 +32,6 @@ public final class AlterKeyGeneratorEvent implements 
GovernanceEvent {
     
     private final String keyGeneratorName;
     
-    private final AlgorithmConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
index db98d28a9cf..a56bfa0d959 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
@@ -31,8 +31,4 @@ public final class DeleteKeyGeneratorEvent implements 
GovernanceEvent {
     private final String databaseName;
     
     private final String keyGeneratorName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
index e6b93482aa2..e20deca76f3 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.event.algorithm.sharding;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
@@ -33,8 +32,6 @@ public final class AlterShardingAlgorithmEvent implements 
GovernanceEvent {
     
     private final String algorithmName;
     
-    private final AlgorithmConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
index 5cde97fe823..ec6363a8eb0 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
@@ -31,8 +31,4 @@ public final class DeleteShardingAlgorithmEvent implements 
GovernanceEvent {
     private final String databaseName;
     
     private final String algorithmName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
index fa67f8a8231..e60fb32dc8f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.event.cache;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.cache.ShardingCacheConfiguration;
 
 /**
  * Add sharding cache configuration event.
@@ -31,8 +30,6 @@ public final class AddShardingCacheConfigurationEvent 
implements GovernanceEvent
     
     private final String databaseName;
     
-    private final ShardingCacheConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
index 58f3ab7c735..ce1f9e4850f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.event.cache;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.cache.ShardingCacheConfiguration;
 
 /**
  * Alter sharding cache configuration event.
@@ -31,8 +30,6 @@ public final class AlterShardingCacheConfigurationEvent 
implements GovernanceEve
     
     private final String databaseName;
     
-    private final ShardingCacheConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
index 213fe176bd5..9e0878bc652 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteShardingCacheConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
index 8424b3baf0e..81570cfb382 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.audit;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
 
 /**
  * Add default sharding auditor strategy configuration event.
@@ -31,8 +30,6 @@ public final class 
AddShardingAuditorStrategyConfigurationEvent implements Gover
     
     private final String databaseName;
     
-    private final ShardingAuditStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
index 4b5c33756ab..bf05a29ec93 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.audit;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
 
 /**
  * Alter default sharding auditor strategy configuration event.
@@ -31,8 +30,6 @@ public final class 
AlterShardingAuditorStrategyConfigurationEvent implements Gov
     
     private final String databaseName;
     
-    private final ShardingAuditStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
index 3011094d542..8f30a81b869 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteShardingAuditorStrategyConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
index ae73d53d698..76e80a8f520 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.database;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 
 /**
  * Add default database sharding strategy configuration event.
@@ -31,8 +30,6 @@ public final class 
AddDatabaseShardingStrategyConfigurationEvent implements Gove
     
     private final String databaseName;
     
-    private final ShardingStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
index d2737e06e7b..291c0a6cc29 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.database;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 
 /**
  * Alter default database sharding strategy configuration event.
@@ -31,8 +30,6 @@ public final class 
AlterDatabaseShardingStrategyConfigurationEvent implements Go
     
     private final String databaseName;
     
-    private final ShardingStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
index 9ec3d1c125d..a6043d15ad9 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteDatabaseShardingStrategyConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
index 0b5f24122be..147be6d6884 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.keygenerate;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
 
 /**
  * Add default key generate strategy configuration event.
@@ -31,8 +30,6 @@ public final class AddKeyGenerateStrategyConfigurationEvent 
implements Governanc
     
     private final String databaseName;
     
-    private final KeyGenerateStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
index e45737c78d1..724faa81a2a 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.keygenerate;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
 
 /**
  * Alter default key generate strategy configuration event.
@@ -31,8 +30,6 @@ public final class AlterKeyGenerateStrategyConfigurationEvent 
implements Governa
     
     private final String databaseName;
     
-    private final KeyGenerateStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
index af39402f41d..5ea261f2bdc 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteKeyGenerateStrategyConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
index 1bcc3c35f64..8093babd599 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
@@ -30,8 +30,6 @@ public final class AddDefaultShardingColumnEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final String config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
index 7b4524963f8..d542d57856d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
@@ -30,8 +30,6 @@ public final class AlterDefaultShardingColumnEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final String config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
index d1eeb9edf06..5b68a6f910c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteDefaultShardingColumnEvent implements GovernanceEvent 
{
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
index 11f69ad1648..b51a9b3c627 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.table;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 
 /**
  * Add default database sharding strategy configuration event.
@@ -31,8 +30,6 @@ public final class AddTableShardingStrategyConfigurationEvent 
implements Governa
     
     private final String databaseName;
     
-    private final ShardingStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
index 0357be66b12..bab4e5cca7c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sharding.event.strategy.table;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
 
 /**
  * Alter default database sharding strategy configuration event.
@@ -31,8 +30,6 @@ public final class 
AlterTableShardingStrategyConfigurationEvent implements Gover
     
     private final String databaseName;
     
-    private final ShardingStrategyConfiguration config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
index 29439ba5ac1..146b9445aeb 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
@@ -29,8 +29,4 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteTableShardingStrategyConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
index c72b39d97bc..daa0bee68d0 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
@@ -23,17 +23,13 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Add sharding auto table configuration event.
- *
- * @param <T> sharding auto table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AddShardingAutoTableConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AddShardingAutoTableConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final T config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
index d4f4b6c77b4..f30b2639c83 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
@@ -23,19 +23,15 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Alter sharding auto table configuration event.
- *
- * @param <T> sharding auto table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AlterShardingAutoTableConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AlterShardingAutoTableConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
     private final String tableName;
     
-    private final T config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
index efd9cf3be81..b41ff63eb70 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
@@ -31,8 +31,4 @@ public final class DeleteShardingAutoTableConfigurationEvent 
implements Governan
     private final String databaseName;
     
     private final String tableName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AddShardingTableReferenceConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AddShardingTableReferenceConfigurationEvent.java
index fe6c7b2c00b..3e32f47c824 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AddShardingTableReferenceConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AddShardingTableReferenceConfigurationEvent.java
@@ -23,14 +23,14 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Add sharding binding table configuration event.
- *
- * @param <T> sharding binding table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AddShardingTableReferenceConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AddShardingTableReferenceConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final T config;
+    private final String activeVersionKey;
+    
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AlterShardingTableReferenceConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AlterShardingTableReferenceConfigurationEvent.java
index b4f9e19f9d3..a401c023313 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AlterShardingTableReferenceConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/binding/AlterShardingTableReferenceConfigurationEvent.java
@@ -23,16 +23,16 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Alter sharding binding table configuration event.
- *
- * @param <T> sharding binding table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AlterShardingTableReferenceConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AlterShardingTableReferenceConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
     private final String tableName;
     
-    private final T config;
+    private final String activeVersionKey;
+    
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
deleted file mode 100644
index d2ba149500a..00000000000
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sharding.event.table.broadcast;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-
-import java.util.Collection;
-
-/**
- * Add broadcast table configuration event.
- */
-@RequiredArgsConstructor
-@Getter
-public final class AddBroadcastTableConfigurationEvent implements 
GovernanceEvent {
-    
-    private final String databaseName;
-    
-    private final Collection<String> config;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
-}
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
deleted file mode 100644
index 11573ecedba..00000000000
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sharding.event.table.broadcast;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-
-import java.util.Collection;
-
-/**
- * Alter broadcast table configuration event.
- */
-@RequiredArgsConstructor
-@Getter
-public final class AlterBroadcastTableConfigurationEvent implements 
GovernanceEvent {
-    
-    private final String databaseName;
-    
-    private final Collection<String> config;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
-}
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
deleted file mode 100644
index fef0f3e094b..00000000000
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sharding.event.table.broadcast;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-
-/**
- * Delete broadcast table configuration event.
- */
-@RequiredArgsConstructor
-@Getter
-public final class DeleteBroadcastTableConfigurationEvent implements 
GovernanceEvent {
-    
-    private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
-}
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
index d2ec2bfea95..a90fe33d8d4 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
@@ -23,17 +23,13 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Add sharding table configuration event.
- *
- * @param <T> sharding table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AddShardingTableConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AddShardingTableConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final T config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
index 5d6b77d01af..959f5ebd332 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
@@ -23,19 +23,15 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
  * Alter sharding table configuration event.
- *
- * @param <T> sharding table configuration
  */
 @RequiredArgsConstructor
 @Getter
-public final class AlterShardingTableConfigurationEvent<T> implements 
GovernanceEvent {
+public final class AlterShardingTableConfigurationEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
     private final String tableName;
     
-    private final T config;
-    
     private final String activeVersionKey;
     
     private final String activeVersion;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
index cf865f50bcb..53ed30de9af 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
@@ -31,8 +31,4 @@ public final class DeleteShardingTableConfigurationEvent 
implements GovernanceEv
     private final String databaseName;
     
     private final String tableName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
index f19297654ab..acf45795c1f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
@@ -62,7 +62,9 @@ public final class ShardingNodeConverter {
     
     private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
     
-    private static final String RULE_VERSION = 
"/([\\w\\-]+)/versions/([\\w\\-]+)$";
+    private static final String RULE_ACTIVE_VERSION = 
"/([\\w\\-]+)?/active_version$";
+    
+    private static final String ACTIVE_VERSION = "/active_version$";
     
     /**
      * Get table name path.
@@ -407,147 +409,146 @@ public final class ShardingNodeConverter {
     }
     
     /**
-     * Get table name version.
+     * Get table name by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return table name version
      */
-    public static Optional<String> getTableNameVersion(final String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ TABLES_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> getTableNameByActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get auto table name version.
+     * Get auto table name by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return auto table name version
      */
-    public static Optional<String> getAutoTableNameVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ AUTO_TABLES_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> getAutoTableNameByActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ AUTO_TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get binding table name version.
+     * Get binding table name by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return binding table name version
      */
-    public static Optional<String> getBindingTableNameVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ BINDING_TABLES_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> 
getBindingTableNameByActiveVersionPath(final String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ BINDING_TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get sharding algorithm version.
+     * Is sharding algorithm with active version path.
      *
-     * @param rulePath rule path
-     * @return sharding algorithm version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getDefaultDatabaseStrategyVersion(final 
String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE + 
"/versions/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isDefaultDatabaseStrategyWithActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_DATABASE_STRATEGY_NODE + 
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
     
     /**
-     * Get default table strategy version.
+     * Is default table strategy with active version path.
      *
-     * @param rulePath rule path
-     * @return default table strategy version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getDefaultTableStrategyVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + 
"/versions/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isDefaultTableStrategyWithActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_TABLE_STRATEGY_NODE + ACTIVE_VERSION, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
     
     /**
-     * Get default key generate strategy version.
+     * Is default key generate strategy with active version path.
      *
-     * @param rulePath rule path
-     * @return default key generate strategy version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getDefaultKeyGenerateStrategyVersion(final 
String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE + 
"/versions/([\\w\\-]+)$",
-                Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean 
isDefaultKeyGenerateStrategyWithActiveVersionPath(final String 
activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_KEY_GENERATE_STRATEGY_NODE + 
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
     
     /**
-     * Get default audit strategy version.
+     * Is default audit strategy with active version path.
      *
-     * @param rulePath rule path
-     * @return default audit strategy version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getDefaultAuditStrategyVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + 
"/versions/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isDefaultAuditStrategyWithActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_AUDIT_STRATEGY_NODE + ACTIVE_VERSION, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
     
     /**
-     * Get default sharding column version.
+     * Is default sharding column with active version path.
      *
-     * @param rulePath rule path
-     * @return default sharding column version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getDefaultShardingColumnVersion(final 
String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE + 
"/versions/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isDefaultShardingColumnWithActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ DEFAULT_STRATEGIES_NODE + "/" + DEFAULT_SHARDING_COLUMN_NODE + 
ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
     
     /**
-     * Get sharding algorithm version.
+     * Get sharding algorithm by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return sharding algorithm version
      */
-    public static Optional<String> getShardingAlgorithmVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ SHARDING_ALGORITHMS_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> 
getShardingAlgorithmByActiveVersionPath(final String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ SHARDING_ALGORITHMS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get key generator version.
+     * Get key generator by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return key generator version
      */
-    public static Optional<String> getKeyGeneratorVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ KEY_GENERATORS_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> getKeyGeneratorByActiveVersionPath(final 
String activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ KEY_GENERATORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get auditor version.
+     * Get auditor by active version path.
      *
-     * @param rulePath rule path
+     * @param activeVersionPath active version path
      * @return auditor version
      */
-    public static Optional<String> getAuditorVersion(final String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ AUDITORS_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(4)) : 
Optional.empty();
+    public static Optional<String> getAuditorByActiveVersionPath(final String 
activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ AUDITORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
     }
     
     /**
-     * Get sharding cache version.
+     * Is sharding cache with active version path.
      *
-     * @param rulePath rule path
-     * @return sharding cache version
+     * @param activeVersionPath active version path
+     * @return true or false
      */
-    public static Optional<String> getShardingCacheVersion(final String 
rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ SHARDING_CACHE_NODE + "/versions/([\\w\\-]+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(rulePath);
-        return matcher.find() ? Optional.of(matcher.group(3)) : 
Optional.empty();
+    public static boolean isShardingCacheWithActiveVersionPath(final String 
activeVersionPath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ SHARDING_CACHE_NODE + ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(activeVersionPath);
+        return matcher.find();
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
index cb265bd2905..facc37c657a 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
@@ -19,9 +19,13 @@ package org.apache.shardingsphere.sharding.subscriber;
 
 import com.google.common.eventbus.Subscribe;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator;
+import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
+import 
org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.swapper.algorithm.YamlAlgorithmConfigurationSwapper;
 import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.event.algorithm.auditor.AlterAuditorEvent;
@@ -61,7 +65,8 @@ public final class ShardingAlgorithmSubscriber implements 
RuleConfigurationSubsc
     public synchronized void renew(final AlterShardingAlgorithmEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        config.getShardingAlgorithms().put(event.getAlgorithmName(), 
event.getConfig());
+        config.getShardingAlgorithms().put(event.getAlgorithmName(), 
swapToAlgorithmConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion())));
     }
     
     /**
@@ -73,7 +78,8 @@ public final class ShardingAlgorithmSubscriber implements 
RuleConfigurationSubsc
     public synchronized void renew(final AlterKeyGeneratorEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        config.getKeyGenerators().put(event.getKeyGeneratorName(), 
event.getConfig());
+        config.getKeyGenerators().put(event.getKeyGeneratorName(), 
swapToAlgorithmConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion())));
     }
     
     /**
@@ -85,7 +91,8 @@ public final class ShardingAlgorithmSubscriber implements 
RuleConfigurationSubsc
     public synchronized void renew(final AlterAuditorEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        config.getAuditors().put(event.getAuditorName(), event.getConfig());
+        config.getAuditors().put(event.getAuditorName(), swapToAlgorithmConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion())));
     }
     
     /**
@@ -125,4 +132,8 @@ public final class ShardingAlgorithmSubscriber implements 
RuleConfigurationSubsc
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getAuditors().remove(event.getAuditorName());
     }
+    
+    private AlgorithmConfiguration swapToAlgorithmConfig(final String 
yamlContext) {
+        return new 
YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlAlgorithmConfiguration.class));
+    }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
index 76c589c4bca..4b488385062 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
@@ -22,6 +22,7 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator;
+import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.cache.ShardingCacheConfiguration;
@@ -29,6 +30,8 @@ import 
org.apache.shardingsphere.sharding.event.cache.AddShardingCacheConfigurat
 import 
org.apache.shardingsphere.sharding.event.cache.AlterShardingCacheConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.cache.DeleteShardingCacheConfigurationEvent;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import 
org.apache.shardingsphere.sharding.yaml.config.cache.YamlShardingCacheConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.cache.YamlShardingCacheConfigurationSwapper;
 
 import java.util.Map;
 
@@ -57,7 +60,8 @@ public final class ShardingCacheConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AddShardingCacheConfigurationEvent 
event) {
-        renewShardingCacheConfig(event.getDatabaseName(), event.getConfig());
+        renewShardingCacheConfig(event.getDatabaseName(), 
swapToShardingCacheConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion())));
     }
     
     /**
@@ -67,7 +71,8 @@ public final class ShardingCacheConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AlterShardingCacheConfigurationEvent 
event) {
-        renewShardingCacheConfig(event.getDatabaseName(), event.getConfig());
+        renewShardingCacheConfig(event.getDatabaseName(), 
swapToShardingCacheConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion())));
     }
     
     /**
@@ -89,4 +94,9 @@ public final class ShardingCacheConfigurationSubscriber 
implements RuleConfigura
         config.setShardingCache(shardingCacheConfiguration);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(databaseName, config));
     }
+    
+    private ShardingCacheConfiguration swapToShardingCacheConfig(final String 
yamlContext) {
+        return new 
YamlShardingCacheConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingCacheConfiguration.class));
+    }
+    
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
index 673ce702464..eb1f60743c9 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
@@ -22,6 +22,7 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator;
+import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
@@ -43,6 +44,12 @@ import 
org.apache.shardingsphere.sharding.event.strategy.table.AddTableShardingS
 import 
org.apache.shardingsphere.sharding.event.strategy.table.AlterTableShardingStrategyConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.strategy.table.DeleteTableShardingStrategyConfigurationEvent;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import 
org.apache.shardingsphere.sharding.yaml.config.strategy.audit.YamlShardingAuditStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.strategy.keygen.YamlKeyGenerateStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.strategy.sharding.YamlShardingStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlKeyGenerateStrategyConfigurationSwapper;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlShardingAuditStrategyConfigurationSwapper;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.strategy.YamlShardingStrategyConfigurationSwapper;
 
 import java.util.Map;
 import java.util.Optional;
@@ -73,7 +80,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AddDatabaseShardingStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingStrategyConfiguration needToAddedConfig = event.getConfig();
+        ShardingStrategyConfiguration needToAddedConfig = 
swapShardingStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -94,7 +102,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AddTableShardingStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingStrategyConfiguration needToAddedConfig = event.getConfig();
+        ShardingStrategyConfiguration needToAddedConfig = 
swapShardingStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -115,7 +124,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AddKeyGenerateStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        KeyGenerateStrategyConfiguration needToAddedConfig = event.getConfig();
+        KeyGenerateStrategyConfiguration needToAddedConfig = 
swapKeyGenerateStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -136,7 +146,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AddShardingAuditorStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingAuditStrategyConfiguration needToAddedConfig = 
event.getConfig();
+        ShardingAuditStrategyConfiguration needToAddedConfig = 
swapShardingAuditorStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -157,7 +168,7 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final AddDefaultShardingColumnEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        String needToAddedConfig = event.getConfig();
+        String needToAddedConfig = 
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion());
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -178,7 +189,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AlterDatabaseShardingStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingStrategyConfiguration needToAlteredConfig = event.getConfig();
+        ShardingStrategyConfiguration needToAlteredConfig = 
swapShardingStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.setDefaultDatabaseShardingStrategy(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
@@ -192,7 +204,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AlterTableShardingStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingStrategyConfiguration needToAlteredConfig = event.getConfig();
+        ShardingStrategyConfiguration needToAlteredConfig = 
swapShardingStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.setDefaultTableShardingStrategy(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
@@ -206,7 +219,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AlterKeyGenerateStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        KeyGenerateStrategyConfiguration needToAlteredConfig = 
event.getConfig();
+        KeyGenerateStrategyConfiguration needToAlteredConfig = 
swapKeyGenerateStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.setDefaultKeyGenerateStrategy(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
@@ -220,7 +234,8 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final 
AlterShardingAuditorStrategyConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingAuditStrategyConfiguration needToAlteredConfig = 
event.getConfig();
+        ShardingAuditStrategyConfiguration needToAlteredConfig = 
swapShardingAuditorStrategyConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.setDefaultAuditStrategy(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
@@ -234,7 +249,7 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
     @Subscribe
     public synchronized void renew(final AlterDefaultShardingColumnEvent 
event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        String needToAlteredConfig = event.getConfig();
+        String needToAlteredConfig = 
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.setDefaultShardingColumn(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
@@ -304,4 +319,16 @@ public final class ShardingStrategyConfigurationSubscriber 
implements RuleConfig
         config.setDefaultAuditStrategy(null);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
+    
+    private ShardingStrategyConfiguration swapShardingStrategyConfig(final 
String yamlContext) {
+        return new 
YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingStrategyConfiguration.class));
+    }
+    
+    private KeyGenerateStrategyConfiguration 
swapKeyGenerateStrategyConfig(final String yamlContext) {
+        return new 
YamlKeyGenerateStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlKeyGenerateStrategyConfiguration.class));
+    }
+    
+    private ShardingAuditStrategyConfiguration 
swapShardingAuditorStrategyConfig(final String yamlContext) {
+        return new 
YamlShardingAuditStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAuditStrategyConfiguration.class));
+    }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
index 8d4b22125f0..505982ff890 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
@@ -22,6 +22,7 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator;
+import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -33,13 +34,15 @@ import 
org.apache.shardingsphere.sharding.event.table.auto.DeleteShardingAutoTab
 import 
org.apache.shardingsphere.sharding.event.table.binding.AddShardingTableReferenceConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.binding.AlterShardingTableReferenceConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.binding.DeleteShardingTableReferenceConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.AddBroadcastTableConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.AlterBroadcastTableConfigurationEvent;
-import 
org.apache.shardingsphere.sharding.event.table.broadcast.DeleteBroadcastTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.AddShardingTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.AlterShardingTableConfigurationEvent;
 import 
org.apache.shardingsphere.sharding.event.table.sharding.DeleteShardingTableConfigurationEvent;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlShardingAutoTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.config.rule.YamlTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingAutoTableRuleConfigurationSwapper;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingTableReferenceRuleConfigurationConverter;
+import 
org.apache.shardingsphere.sharding.yaml.swapper.rule.YamlShardingTableRuleConfigurationSwapper;
 
 import java.util.Map;
 import java.util.Optional;
@@ -68,12 +71,13 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      * @param event add sharding table configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AddShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
+    public synchronized void renew(final AddShardingTableConfigurationEvent 
event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingTableRuleConfiguration needToAddedConfig = event.getConfig();
+        ShardingTableRuleConfiguration needToAddedConfig = 
swapShardingTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -93,12 +97,13 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      * @param event add sharding auto table configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AddShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> 
event) {
+    public synchronized void renew(final 
AddShardingAutoTableConfigurationEvent event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingAutoTableRuleConfiguration needToAddedConfig = 
event.getConfig();
+        ShardingAutoTableRuleConfiguration needToAddedConfig = 
swapShardingAutoTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -118,9 +123,10 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      * @param event add sharding auto table configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AddShardingTableReferenceConfigurationEvent<ShardingTableReferenceRuleConfiguration>
 event) {
+    public synchronized void renew(final 
AddShardingTableReferenceConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingTableReferenceRuleConfiguration needToAddedConfig = 
event.getConfig();
+        ShardingTableReferenceRuleConfiguration needToAddedConfig = 
swapShardingTableReferenceRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
         ShardingRuleConfiguration config;
         if (rule.isPresent()) {
@@ -134,39 +140,19 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
-    /**
-     * Renew with add broadcast table configuration.
-     *
-     * @param event add broadcast table configuration event
-     */
-    @Subscribe
-    public synchronized void renew(final AddBroadcastTableConfigurationEvent 
event) {
-        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
-            return;
-        }
-        ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        Optional<ShardingRule> rule = 
database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-        } else {
-            config = new ShardingRuleConfiguration();
-        }
-        instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
-    }
-    
     /**
      * Renew with alter sharding table configuration.
      *
      * @param event alter sharding table configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AlterShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
+    public synchronized void renew(final AlterShardingTableConfigurationEvent 
event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingTableRuleConfiguration needToAlteredConfig = event.getConfig();
+        ShardingTableRuleConfiguration needToAlteredConfig = 
swapShardingTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getTables().removeIf(each -> 
each.getLogicTable().equals(event.getTableName()));
         config.getTables().add(needToAlteredConfig);
@@ -179,12 +165,13 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      * @param event alter sharding auto table configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AlterShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> 
event) {
+    public synchronized void renew(final 
AlterShardingAutoTableConfigurationEvent event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingAutoTableRuleConfiguration needToAlteredConfig = 
event.getConfig();
+        ShardingAutoTableRuleConfiguration needToAlteredConfig = 
swapShardingAutoTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getAutoTables().removeIf(each -> 
each.getLogicTable().equals(event.getTableName()));
         config.getAutoTables().add(needToAlteredConfig);
@@ -197,30 +184,16 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      * @param event alter sharding table reference configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AlterShardingTableReferenceConfigurationEvent<ShardingTableReferenceRuleConfiguration>
 event) {
+    public synchronized void renew(final 
AlterShardingTableReferenceConfigurationEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingTableReferenceRuleConfiguration needToAlteredConfig = 
event.getConfig();
+        ShardingTableReferenceRuleConfiguration needToAlteredConfig = 
swapShardingTableReferenceRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getBindingTableGroups().removeIf(each -> 
each.getName().equals(event.getTableName()));
         config.getBindingTableGroups().add(needToAlteredConfig);
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
-    /**
-     * Renew with alter broadcast table configuration.
-     *
-     * @param event alter broadcast table configuration event
-     */
-    @Subscribe
-    public synchronized void renew(final AlterBroadcastTableConfigurationEvent 
event) {
-        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
-            return;
-        }
-        ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
-    }
-    
     /**
      * Renew with delete sharding table configuration.
      *
@@ -228,9 +201,6 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final DeleteShardingTableConfigurationEvent 
event) {
-        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
-            return;
-        }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getTables().removeIf(each -> 
each.getLogicTable().equals(event.getTableName()));
@@ -244,9 +214,6 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
DeleteShardingAutoTableConfigurationEvent event) {
-        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
-            return;
-        }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getAutoTables().removeIf(each -> 
each.getLogicTable().equals(event.getTableName()));
@@ -266,18 +233,15 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
-    /**
-     * Renew with delete broadcast table configuration.
-     *
-     * @param event delete broadcast table configuration event
-     */
-    @Subscribe
-    public synchronized void renew(final 
DeleteBroadcastTableConfigurationEvent event) {
-        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
-            return;
-        }
-        ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+    private ShardingTableRuleConfiguration swapShardingTableRuleConfig(final 
String yamlContext) {
+        return new 
YamlShardingTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlTableRuleConfiguration.class));
+    }
+    
+    private ShardingAutoTableRuleConfiguration 
swapShardingAutoTableRuleConfig(final String yamlContext) {
+        return new 
YamlShardingAutoTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAutoTableRuleConfiguration.class));
+    }
+    
+    private ShardingTableReferenceRuleConfiguration 
swapShardingTableReferenceRuleConfig(final String yamlContext) {
+        return 
YamlShardingTableReferenceRuleConfigurationConverter.convertToObject(yamlContext);
     }
 }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
index 30708eaa0f8..51af7b819b0 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
@@ -161,86 +161,74 @@ class ShardingNodeConverterTest {
     }
     
     @Test
-    void assertGetTableNameVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getTableNameVersion("/metadata/foo_db/rules/sharding/tables/foo_table/versions/1");
+    void assertGetTableNameByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/tables/foo_table/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("foo_table"));
     }
     
     @Test
-    void assertGetAutoTableNameVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getAutoTableNameVersion("/metadata/foo_db/rules/sharding/auto_tables/foo_table/versions/1");
+    void assertGetAutoTableNameByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getAutoTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/auto_tables/foo_table/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("foo_table"));
     }
     
     @Test
-    void assertGetBindingTableNameVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getBindingTableNameVersion("/metadata/foo_db/rules/sharding/binding_tables/c018fb3cd8e530dd/versions/1");
+    void assertGetBindingTableNameByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getBindingTableNameByActiveVersionPath("/metadata/foo_db/rules/sharding/binding_tables/c018fb3cd8e530dd/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("c018fb3cd8e530dd"));
     }
     
     @Test
-    void assertGetDefaultDatabaseStrategyVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getDefaultDatabaseStrategyVersion("/metadata/foo_db/rules/sharding/default_strategies/default_database_strategy/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertIsDefaultDatabaseStrategyByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isDefaultDatabaseStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_database_strategy/active_version"));
     }
     
     @Test
-    void assertGetDefaultTableStrategyVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getDefaultTableStrategyVersion("/metadata/foo_db/rules/sharding/default_strategies/default_table_strategy/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertIsDefaultTableStrategyByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isDefaultTableStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_table_strategy/active_version"));
     }
     
     @Test
-    void assertGetDefaultKeyGenerateStrategyVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getDefaultKeyGenerateStrategyVersion("/metadata/foo_db/rules/sharding/default_strategies/default_key_generate_strategy/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertIsDefaultKeyGenerateStrategyByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isDefaultKeyGenerateStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_key_generate_strategy/active_version"));
     }
     
     @Test
-    void assertGetDefaultAuditStrategyVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getDefaultAuditStrategyVersion("/metadata/foo_db/rules/sharding/default_strategies/default_audit_strategy/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertIsDefaultAuditStrategyByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isDefaultAuditStrategyWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_audit_strategy/active_version"));
     }
     
     @Test
-    void assertGetDefaultShardingColumnVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getDefaultShardingColumnVersion("/metadata/foo_db/rules/sharding/default_strategies/default_sharding_column/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertIsDefaultShardingColumnByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isDefaultShardingColumnWithActiveVersionPath("/metadata/foo_db/rules/sharding/default_strategies/default_sharding_column/active_version"));
     }
     
     @Test
-    void assertGetShardingAlgorithmVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getShardingAlgorithmVersion("/metadata/foo_db/rules/sharding/algorithms/foo_table_algorithm/versions/1");
+    void assertGetShardingAlgorithmByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getShardingAlgorithmByActiveVersionPath("/metadata/foo_db/rules/sharding/algorithms/foo_table_algorithm/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("foo_table_algorithm"));
     }
     
     @Test
-    void assertGetKeyGeneratorVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getKeyGeneratorVersion("/metadata/foo_db/rules/sharding/key_generators/foo_table_key_generator/versions/1");
+    void assertGetKeyGeneratorByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getKeyGeneratorByActiveVersionPath("/metadata/foo_db/rules/sharding/key_generators/foo_table_key_generator/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("foo_table_key_generator"));
     }
     
     @Test
-    void assertGetAuditorVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getAuditorVersion("/metadata/foo_db/rules/sharding/auditors/foo_table_auditor/versions/1");
+    void assertGetAuditorByActiveVersionPath() {
+        Optional<String> actual = 
ShardingNodeConverter.getAuditorByActiveVersionPath("/metadata/foo_db/rules/sharding/auditors/foo_table_auditor/active_version");
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+        assertThat(actual.get(), is("foo_table_auditor"));
     }
     
     @Test
-    void assertGetShardingCacheVersion() {
-        Optional<String> actual = 
ShardingNodeConverter.getShardingCacheVersion("/metadata/foo_db/rules/sharding/sharding_cache/versions/1");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("1"));
+    void assertGetShardingCacheByActiveVersionPath() {
+        
assertTrue(ShardingNodeConverter.isShardingCacheWithActiveVersionPath("/metadata/foo_db/rules/sharding/sharding_cache/active_version"));
     }
 }

Reply via email to