You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/06/20 11:49:49 UTC

[shardingsphere] branch master updated: Adjustment refresh meta data when switch active version (#26458)

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

sunnianjun 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 929b179ee09 Adjustment refresh meta data when switch active version (#26458)
929b179ee09 is described below

commit 929b179ee09174c5fc65ea3fdd5be0522853ffed
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Tue Jun 20 19:49:42 2023 +0800

    Adjustment refresh meta data when switch active version (#26458)
    
    * Adjustment refresh meta data when switch active version
    
    * Fix checkstyle
    
    * Fix unit test
    
    * Fix ci
    
    * Revise
---
 .../BroadcastRuleConfigurationEventBuilder.java    |  4 +-
 .../event/config/AddBroadcastTableEvent.java       |  4 +-
 .../event/config/AlterBroadcastTableEvent.java     |  4 +-
 .../event/config/DeleteBroadcastTableEvent.java    |  4 +-
 .../BroadcastConfigurationSubscriber.java          |  6 +--
 .../EncryptRuleConfigurationEventBuilder.java      |  8 ++--
 .../event/config/AddEncryptConfigurationEvent.java |  4 +-
 .../config/AlterEncryptConfigurationEvent.java     |  4 +-
 .../config/DeleteEncryptConfigurationEvent.java    |  4 +-
 .../event/encryptor/AlterEncryptorEvent.java       |  4 +-
 .../event/encryptor/DeleteEncryptorEvent.java      |  4 +-
 .../subscriber/EncryptConfigurationSubscriber.java |  6 +--
 .../encrypt/subscriber/EncryptorSubscriber.java    |  4 +-
 .../event/MaskRuleConfigurationEventBuilder.java   |  8 ++--
 .../event/algorithm/AlterMaskAlgorithmEvent.java   |  4 +-
 .../event/algorithm/DeleteMaskAlgorithmEvent.java  |  4 +-
 .../event/config/AddMaskConfigurationEvent.java    |  4 +-
 .../event/config/AlterMaskConfigurationEvent.java  |  4 +-
 .../event/config/DeleteMaskConfigurationEvent.java |  4 +-
 .../subscriber/MaskConfigurationSubscriber.java    |  6 +--
 ...riteSplittingRuleConfigurationEventBuilder.java |  8 ++--
 .../AddReadwriteSplittingConfigurationEvent.java   |  4 +-
 .../AlterReadwriteSplittingConfigurationEvent.java |  4 +-
 ...DeleteReadwriteSplittingConfigurationEvent.java |  4 +-
 .../event/loadbalance/AlterLoadBalanceEvent.java   |  4 +-
 .../event/loadbalance/DeleteLoadBalanceEvent.java  |  4 +-
 .../ReadwriteSplittingConfigurationSubscriber.java |  6 +--
 .../ReadwriteSplittingLoadBalanceSubscriber.java   |  4 +-
 .../event/ShadowRuleConfigurationEventBuilder.java | 12 +++---
 .../event/algorithm/AlterShadowAlgorithmEvent.java |  4 +-
 .../algorithm/DeleteShadowAlgorithmEvent.java      |  4 +-
 .../event/config/AddShadowConfigurationEvent.java  |  4 +-
 .../config/AlterShadowConfigurationEvent.java      |  4 +-
 .../config/DeleteShadowConfigurationEvent.java     |  4 +-
 .../shadow/event/table/AddShadowTableEvent.java    |  4 +-
 .../shadow/event/table/AlterShadowTableEvent.java  |  4 +-
 .../shadow/event/table/DeleteShadowTableEvent.java |  4 +-
 .../subscriber/ShadowConfigurationSubscriber.java  |  6 +--
 .../ShardingRuleConfigurationEventBuilder.java     | 50 +++++++++++-----------
 .../event/algorithm/auditor/AlterAuditorEvent.java |  4 +-
 .../algorithm/auditor/DeleteAuditorEvent.java      |  4 +-
 .../keygenerator/AlterKeyGeneratorEvent.java       |  4 +-
 .../keygenerator/DeleteKeyGeneratorEvent.java      |  4 +-
 .../sharding/AlterShardingAlgorithmEvent.java      |  4 +-
 .../sharding/DeleteShardingAlgorithmEvent.java     |  4 +-
 .../cache/AddShardingCacheConfigurationEvent.java  |  4 +-
 .../AlterShardingCacheConfigurationEvent.java      |  4 +-
 .../DeleteShardingCacheConfigurationEvent.java     |  4 +-
 ...dShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...rShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...eShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 .../AddKeyGenerateStrategyConfigurationEvent.java  |  4 +-
 ...AlterKeyGenerateStrategyConfigurationEvent.java |  4 +-
 ...eleteKeyGenerateStrategyConfigurationEvent.java |  4 +-
 .../AddDefaultShardingColumnEvent.java             |  4 +-
 .../AlterDefaultShardingColumnEvent.java           |  4 +-
 .../DeleteDefaultShardingColumnEvent.java          |  4 +-
 ...AddTableShardingStrategyConfigurationEvent.java |  4 +-
 ...terTableShardingStrategyConfigurationEvent.java |  4 +-
 ...eteTableShardingStrategyConfigurationEvent.java |  4 +-
 .../AddShardingAutoTableConfigurationEvent.java    |  4 +-
 .../AlterShardingAutoTableConfigurationEvent.java  |  4 +-
 .../DeleteShardingAutoTableConfigurationEvent.java |  4 +-
 .../AddBroadcastTableConfigurationEvent.java       |  4 +-
 .../AlterBroadcastTableConfigurationEvent.java     |  4 +-
 .../DeleteBroadcastTableConfigurationEvent.java    |  4 +-
 .../AddShardingTableConfigurationEvent.java        |  4 +-
 .../AlterShardingTableConfigurationEvent.java      |  4 +-
 .../DeleteShardingTableConfigurationEvent.java     |  4 +-
 .../ShardingTableConfigurationSubscriber.java      | 18 ++++----
 .../event/AlterGlobalRuleConfigurationEvent.java   |  4 +-
 .../event/DeleteGlobalRuleConfigurationEvent.java  |  4 +-
 .../infra/instance/mode/ModeContextManager.java    |  4 +-
 .../AuthorityRuleConfigurationEventBuilder.java    |  4 +-
 .../GlobalClockRuleConfigurationEventBuilder.java  |  4 +-
 .../LoggingRuleConfigurationEventBuilder.java      |  4 +-
 .../persist/node/NewDatabaseMetaDataNode.java      |  9 ++--
 .../persist/node/NewDatabaseMetaDataNodeTest.java  |  6 +--
 ...SQLFederationRuleConfigurationEventBuilder.java |  4 +-
 .../SQLParserRuleConfigurationEventBuilder.java    |  4 +-
 .../SQLTranslatorConfigurationEventBuilder.java    |  4 +-
 .../TrafficRuleConfigurationEventBuilder.java      |  4 +-
 .../TransactionRuleConfigurationEventBuilder.java  |  4 +-
 .../event/datasource/AlterStorageUnitEvent.java    |  4 +-
 .../event/datasource/RegisterStorageUnitEvent.java |  4 +-
 .../datasource/UnregisterStorageUnitEvent.java     |  4 +-
 .../mode/event/schema/table/AlterTableEvent.java   |  4 +-
 .../mode/event/schema/table/DropTableEvent.java    |  4 +-
 .../mode/event/schema/view/AlterViewEvent.java     |  4 +-
 .../mode/event/schema/view/DropViewEvent.java      |  4 +-
 .../cluster/NewClusterModeContextManager.java      |  7 +--
 .../watcher/NewMetaDataChangedWatcher.java         | 14 +++---
 .../subscriber/NewDataSourceChangedSubscriber.java |  6 +--
 .../NewResourceMetaDataChangedSubscriber.java      |  8 ++--
 97 files changed, 251 insertions(+), 253 deletions(-)

diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
index 88ac3987f18..eeac4f5d710 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
@@ -45,13 +45,13 @@ public final class BroadcastRuleConfigurationEventBuilder implements RuleConfigu
         if (BroadcastNodeConverter.isTablesPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> tablesVersion = BroadcastNodeConverter.getTablesVersion(event.getKey());
             if (tablesVersion.isPresent()) {
-                return createBroadcastConfigEvent(databaseName, Integer.parseInt(tablesVersion.get()), event);
+                return createBroadcastConfigEvent(databaseName, tablesVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddBroadcastTableEvent(databaseName, swapBroadcastTableRuleConfig(event.getValue()), event.getKey(), version));
         }
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
index ce5be3d6e81..5a701ead7a5 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
@@ -33,7 +33,7 @@ public final class AddBroadcastTableEvent implements GovernanceEvent {
     
     private final BroadcastRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
index 998e9536472..a16aa8e8975 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
@@ -33,7 +33,7 @@ public final class AlterBroadcastTableEvent implements GovernanceEvent {
     
     private final BroadcastRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
index 09132477652..1e97aca73da 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
@@ -30,7 +30,7 @@ public final class DeleteBroadcastTableEvent implements GovernanceEvent {
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
index 3180c28f8c5..caa843450e4 100644
--- a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
+++ b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
@@ -57,7 +57,7 @@ public final class BroadcastConfigurationSubscriber implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AddBroadcastTableEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -81,7 +81,7 @@ public final class BroadcastConfigurationSubscriber implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AlterBroadcastTableEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -99,7 +99,7 @@ public final class BroadcastConfigurationSubscriber implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final DeleteBroadcastTableEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
index aee8ede97b2..f330ff3897b 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
@@ -52,20 +52,20 @@ public final class EncryptRuleConfigurationEventBuilder implements RuleConfigura
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> encryptTableVersion = EncryptNodeConverter.getEncryptTableVersion(event.getKey());
             if (encryptTableVersion.isPresent()) {
-                return createEncryptConfigEvent(databaseName, tableName.get(), Integer.parseInt(encryptTableVersion.get()), event);
+                return createEncryptConfigEvent(databaseName, tableName.get(), encryptTableVersion.get(), event);
             }
         }
         Optional<String> encryptorName = EncryptNodeConverter.getEncryptorName(event.getKey());
         if (encryptorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> encryptorVersion = EncryptNodeConverter.getEncryptorVersion(event.getKey());
             if (encryptorVersion.isPresent()) {
-                return createEncryptorEvent(databaseName, encryptorName.get(), Integer.parseInt(encryptorVersion.get()), event);
+                return createEncryptorEvent(databaseName, encryptorName.get(), encryptorVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createEncryptConfigEvent(final String databaseName, final String groupName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createEncryptConfigEvent(final String databaseName, final String groupName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddEncryptConfigurationEvent(databaseName, swapEncryptTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -79,7 +79,7 @@ public final class EncryptRuleConfigurationEventBuilder implements RuleConfigura
         return new YamlEncryptTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlEncryptTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createEncryptorEvent(final String databaseName, final String encryptorName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createEncryptorEvent(final String databaseName, final String encryptorName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterEncryptorEvent(databaseName, encryptorName, swapToAlgorithmConfig(event.getValue()), event.getKey(), version));
         }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
index 153c4585435..295bbcb7cb4 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddEncryptConfigurationEvent implements GovernanceEvent {
     
     private final EncryptTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
index 8cab6a51665..a2085ecd132 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterEncryptConfigurationEvent implements GovernanceEvent {
     
     private final EncryptTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
index 58574cc8587..834a3ba1415 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteEncryptConfigurationEvent implements GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
index a23891bb3b5..84cc8841ae2 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
@@ -35,7 +35,7 @@ public final class AlterEncryptorEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
index 9ced8866498..af6428835be 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
@@ -32,7 +32,7 @@ public final class DeleteEncryptorEvent implements GovernanceEvent {
     
     private final String encryptorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
index 88da97bd91c..600079a96ff 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class EncryptConfigurationSubscriber implements RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final AddEncryptConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -82,7 +82,7 @@ public final class EncryptConfigurationSubscriber implements RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final AlterEncryptConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -100,7 +100,7 @@ public final class EncryptConfigurationSubscriber implements RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final DeleteEncryptConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
index c4b0bf2698f..2ade171d753 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
@@ -55,7 +55,7 @@ public final class EncryptorSubscriber implements RuleConfigurationSubscribeCoor
      */
     @Subscribe
     public synchronized void renew(final AlterEncryptorEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -70,7 +70,7 @@ public final class EncryptorSubscriber implements RuleConfigurationSubscribeCoor
      */
     @Subscribe
     public synchronized void renew(final DeleteEncryptorEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
index 7206bc693ad..8935941a895 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
@@ -52,20 +52,20 @@ public final class MaskRuleConfigurationEventBuilder implements RuleConfiguratio
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> version = MaskNodeConverter.getMaskTableVersion(event.getKey());
             if (version.isPresent()) {
-                return createMaskConfigEvent(databaseName, tableName.get(), Integer.parseInt(version.get()), event);
+                return createMaskConfigEvent(databaseName, tableName.get(), version.get(), event);
             }
         }
         Optional<String> algorithmName = MaskNodeConverter.getAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> algorithmVersion = MaskNodeConverter.getMaskAlgorithmVersion(event.getKey());
             if (algorithmVersion.isPresent()) {
-                return createMaskAlgorithmEvent(databaseName, algorithmName.get(), Integer.parseInt(algorithmVersion.get()), event);
+                return createMaskAlgorithmEvent(databaseName, algorithmName.get(), algorithmVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createMaskConfigEvent(final String databaseName, final String tableName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createMaskConfigEvent(final String databaseName, final String tableName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddMaskConfigurationEvent(databaseName, swapMaskTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -79,7 +79,7 @@ public final class MaskRuleConfigurationEventBuilder implements RuleConfiguratio
         return new YamlMaskTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlMaskTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String databaseName, final String algorithmName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String databaseName, final String algorithmName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterMaskAlgorithmEvent(databaseName, algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), version));
         }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
index b3a9edc7cd6..3b28cbc7529 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
@@ -35,7 +35,7 @@ public final class AlterMaskAlgorithmEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
index 1aebedbbdbf..f2c425dad79 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
@@ -32,7 +32,7 @@ public final class DeleteMaskAlgorithmEvent implements GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
index 6c891575c71..647f7568384 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddMaskConfigurationEvent implements GovernanceEvent {
     
     private final MaskTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
index 4600e76c7f2..2e16f8f87b9 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterMaskConfigurationEvent implements GovernanceEvent {
     
     private final MaskTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
index 7302194d2fa..8f2ffcf6f37 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteMaskConfigurationEvent implements GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
index 4cd32d4ef0d..c34d5906793 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final AddMaskConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -83,7 +83,7 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final AlterMaskConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -101,7 +101,7 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final DeleteMaskConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
index bd728bbb2aa..c3435ee8e0e 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
@@ -51,17 +51,17 @@ public final class ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
         if (ReadwriteSplittingNodeConverter.isDataSourcePath(event.getKey())) {
             Optional<String> groupNameVersion = ReadwriteSplittingNodeConverter.getGroupNameVersion(event.getKey());
             if (groupNameVersion.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-                return createReadwriteSplittingConfigEvent(databaseName, Integer.parseInt(groupNameVersion.get()), event);
+                return createReadwriteSplittingConfigEvent(databaseName, groupNameVersion.get(), event);
             }
         }
         Optional<String> loadBalancerNameVersion = ReadwriteSplittingNodeConverter.getLoadBalancerNameVersion(event.getKey());
         if (loadBalancerNameVersion.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return createLoadBalanceEvent(databaseName, Integer.parseInt(loadBalancerNameVersion.get()), event);
+            return createLoadBalanceEvent(databaseName, loadBalancerNameVersion.get(), event);
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createReadwriteSplittingConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createReadwriteSplittingConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         String groupName = ReadwriteSplittingNodeConverter.getGroupName(event.getKey()).orElse("");
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddReadwriteSplittingConfigurationEvent(databaseName, swapDataSource(groupName, event.getValue()), event.getKey(), version));
@@ -84,7 +84,7 @@ public final class ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
                 : TransactionalReadQueryStrategy.valueOf(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy());
     }
     
-    private Optional<GovernanceEvent> createLoadBalanceEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createLoadBalanceEvent(final String databaseName, final String version, final DataChangedEvent event) {
         String loadBalanceName = ReadwriteSplittingNodeConverter.getLoadBalancerName(event.getKey()).orElse("");
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterLoadBalanceEvent(databaseName, loadBalanceName, swapToAlgorithmConfig(event.getValue()), event.getKey(), version));
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
index 6affb7bf400..e5a717f0508 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddReadwriteSplittingConfigurationEvent implements Governance
     
     private final ReadwriteSplittingDataSourceRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
index e17987c4320..0bd0d423196 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterReadwriteSplittingConfigurationEvent implements Governan
     
     private final ReadwriteSplittingDataSourceRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
index 2c5ec048a05..0b74264c768 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteReadwriteSplittingConfigurationEvent implements Governa
     
     private final String groupName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
index 32546b28d31..719cd2a80eb 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
@@ -35,7 +35,7 @@ public final class AlterLoadBalanceEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
index 782844e0938..6dcf83a6232 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
@@ -32,7 +32,7 @@ public final class DeleteLoadBalanceEvent implements GovernanceEvent {
     
     private final String loadBalanceName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
index 7332bd77806..1522de32f36 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class ReadwriteSplittingConfigurationSubscriber implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final AddReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -82,7 +82,7 @@ public final class ReadwriteSplittingConfigurationSubscriber implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final AlterReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -100,7 +100,7 @@ public final class ReadwriteSplittingConfigurationSubscriber implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final DeleteReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
index 274d470068c..83547e663f2 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
@@ -55,7 +55,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleConfig
      */
     @Subscribe
     public synchronized void renew(final AlterLoadBalanceEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -70,7 +70,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleConfig
      */
     @Subscribe
     public synchronized void renew(final DeleteLoadBalanceEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
index 935d53cf873..24640b86aea 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
@@ -57,27 +57,27 @@ public final class ShadowRuleConfigurationEventBuilder implements RuleConfigurat
         if (dataSourceName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> dataSourceVersion = ShadowNodeConverter.getDataSourceVersion(event.getKey());
             if (dataSourceVersion.isPresent()) {
-                return createShadowConfigEvent(databaseName, dataSourceName.get(), Integer.parseInt(dataSourceVersion.get()), event);
+                return createShadowConfigEvent(databaseName, dataSourceName.get(), dataSourceVersion.get(), event);
             }
         }
         Optional<String> tableName = ShadowNodeConverter.getTableName(event.getKey());
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> tableVersion = ShadowNodeConverter.getTableVersion(event.getKey());
             if (tableVersion.isPresent()) {
-                return createShadowTableConfigEvent(databaseName, tableName.get(), Integer.parseInt(tableVersion.get()), event);
+                return createShadowTableConfigEvent(databaseName, tableName.get(), tableVersion.get(), event);
             }
         }
         Optional<String> algorithmName = ShadowNodeConverter.getAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> algorithmVersion = ShadowNodeConverter.getAlgorithmVersion(event.getKey());
             if (algorithmVersion.isPresent()) {
-                return createShadowAlgorithmEvent(databaseName, algorithmName.get(), Integer.parseInt(algorithmVersion.get()), event);
+                return createShadowAlgorithmEvent(databaseName, algorithmName.get(), algorithmVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createShadowConfigEvent(final String databaseName, final String dataSourceName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowConfigEvent(final String databaseName, final String dataSourceName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShadowConfigurationEvent(databaseName, swapShadowDataSourceRuleConfig(dataSourceName, event.getValue()), event.getKey(), version));
         }
@@ -92,7 +92,7 @@ public final class ShadowRuleConfigurationEventBuilder implements RuleConfigurat
         return new ShadowDataSourceConfiguration(dataSourceName, yamlConfig.getProductionDataSourceName(), yamlConfig.getShadowDataSourceName());
     }
     
-    private Optional<GovernanceEvent> createShadowTableConfigEvent(final String databaseName, final String tableName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowTableConfigEvent(final String databaseName, final String tableName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShadowTableEvent(databaseName, tableName, swapToTableConfig(event.getValue()), event.getKey(), version));
         }
@@ -106,7 +106,7 @@ public final class ShadowRuleConfigurationEventBuilder implements RuleConfigurat
         return new YamlShadowTableConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShadowTableConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShadowAlgorithmEvent(final String databaseName, final String algorithmName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowAlgorithmEvent(final String databaseName, final String algorithmName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterShadowAlgorithmEvent(databaseName, algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), version));
         }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
index 685097c9e78..a26cb5d37e5 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowAlgorithmEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
index ed6c2bb9cf7..1e995d6bf2e 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowAlgorithmEvent implements GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
index 55e191f4ade..7d1998df59a 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddShadowConfigurationEvent implements GovernanceEvent {
     
     private final ShadowDataSourceConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
index ea79962a159..2c93fb437e6 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowConfigurationEvent implements GovernanceEvent {
     
     private final ShadowDataSourceConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
index c20d9e88843..73312231953 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowConfigurationEvent implements GovernanceEvent {
     
     private final String dataSourceName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
index 41e0472cdd3..db2dea1a69b 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
@@ -35,7 +35,7 @@ public final class AddShadowTableEvent implements GovernanceEvent {
     
     private final ShadowTableConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
index b7ff128e4d2..cf5c2c26869 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowTableEvent implements GovernanceEvent {
     
     private final ShadowTableConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
index 1e992131e75..ea4772f8de0 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowTableEvent implements GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
index c87ed38eec5..37c30c9a773 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
@@ -58,7 +58,7 @@ public final class ShadowConfigurationSubscriber implements RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final AddShadowConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -83,7 +83,7 @@ public final class ShadowConfigurationSubscriber implements RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final AlterShadowConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -101,7 +101,7 @@ public final class ShadowConfigurationSubscriber implements RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final DeleteShadowConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
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 e3a056fab67..7d0a74f71ea 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
@@ -98,84 +98,84 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> tableNameVersion = ShardingNodeConverter.getTableNameVersion(event.getKey());
             if (tableNameVersion.isPresent()) {
-                return createShardingTableConfigEvent(databaseName, tableName.get(), Integer.parseInt(tableNameVersion.get()), event);
+                return createShardingTableConfigEvent(databaseName, tableName.get(), tableNameVersion.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(), Integer.parseInt(autoTableNameVersion.get()), event);
+                return createShardingAutoTableConfigEvent(databaseName, autoTableName.get(), autoTableNameVersion.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(), Integer.parseInt(bingingTableNameVersion.get()), event);
+                return createShardingTableReferenceConfigEvent(databaseName, bindingTableName.get(), bingingTableNameVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultDatabaseStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultDatabaseStrategyVersion = ShardingNodeConverter.getDefaultDatabaseStrategyVersion(event.getKey());
             if (defaultDatabaseStrategyVersion.isPresent()) {
-                return createDefaultDatabaseStrategyConfigEvent(databaseName, Integer.parseInt(defaultDatabaseStrategyVersion.get()), event);
+                return createDefaultDatabaseStrategyConfigEvent(databaseName, defaultDatabaseStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultTableStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultTableStrategyVersion = ShardingNodeConverter.getDefaultTableStrategyVersion(event.getKey());
             if (defaultTableStrategyVersion.isPresent()) {
-                return createDefaultTableStrategyConfigEvent(databaseName, Integer.parseInt(defaultTableStrategyVersion.get()), event);
+                return createDefaultTableStrategyConfigEvent(databaseName, defaultTableStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultKeyGenerateStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultKeyGenerateStrategyVersion = ShardingNodeConverter.getDefaultKeyGenerateStrategyVersion(event.getKey());
             if (defaultKeyGenerateStrategyVersion.isPresent()) {
-                return createDefaultKeyGenerateStrategyConfigEvent(databaseName, Integer.parseInt(defaultKeyGenerateStrategyVersion.get()), event);
+                return createDefaultKeyGenerateStrategyConfigEvent(databaseName, defaultKeyGenerateStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultAuditStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultAuditStrategyVersion = ShardingNodeConverter.getDefaultAuditStrategyVersion(event.getKey());
             if (defaultAuditStrategyVersion.isPresent()) {
-                return createDefaultShardingAuditorStrategyConfigEvent(databaseName, Integer.parseInt(defaultAuditStrategyVersion.get()), event);
+                return createDefaultShardingAuditorStrategyConfigEvent(databaseName, defaultAuditStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultShardingColumnPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultShardingColumnVersion = ShardingNodeConverter.getDefaultShardingColumnVersion(event.getKey());
             if (defaultShardingColumnVersion.isPresent()) {
-                return createDefaultShardingColumnEvent(databaseName, Integer.parseInt(defaultShardingColumnVersion.get()), event);
+                return createDefaultShardingColumnEvent(databaseName, defaultShardingColumnVersion.get(), 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(), Integer.parseInt(algorithmVersion.get()), event);
+                return createShardingAlgorithmEvent(databaseName, algorithmName.get(), algorithmVersion.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(), Integer.parseInt(keyGeneratorVersion.get()), event);
+                return createKeyGeneratorEvent(databaseName, keyGeneratorName.get(), keyGeneratorVersion.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(), Integer.parseInt(auditorVersion.get()), event);
+                return createAuditorEvent(databaseName, auditorName.get(), auditorVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isShardingCachePath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> shardingCacheVersion = ShardingNodeConverter.getShardingCacheVersion(event.getKey());
             if (shardingCacheVersion.isPresent()) {
-                return createShardingCacheEvent(databaseName, Integer.parseInt(shardingCacheVersion.get()), event);
+                return createShardingCacheEvent(databaseName, shardingCacheVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createShardingTableConfigEvent(final String databaseName, final String tableName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingTableConfigEvent(final String databaseName, final String tableName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShardingTableConfigurationEvent<>(databaseName, swapShardingTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -189,7 +189,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlShardingTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final String databaseName, final String tableName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final String databaseName, final String tableName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShardingAutoTableConfigurationEvent<>(databaseName, swapShardingAutoTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -203,7 +203,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlShardingAutoTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShardingAutoTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShardingTableReferenceConfigEvent(final String databaseName, final String tableName, final int version, final DataChangedEvent event) {
+    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));
         }
@@ -218,7 +218,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
     }
     
     @SuppressWarnings("unchecked")
-    private Optional<GovernanceEvent> createBroadcastTableConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createBroadcastTableConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddBroadcastTableConfigurationEvent(databaseName, YamlEngine.unmarshal(event.getValue(), Collection.class), event.getKey(), version));
         }
@@ -228,7 +228,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return Optional.of(new DeleteBroadcastTableConfigurationEvent(databaseName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createDefaultDatabaseStrategyConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultDatabaseStrategyConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddDatabaseShardingStrategyConfigurationEvent(databaseName, swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -238,7 +238,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return Optional.of(new DeleteDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createDefaultTableStrategyConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultTableStrategyConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddTableShardingStrategyConfigurationEvent(databaseName, swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -252,7 +252,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShardingStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddKeyGenerateStrategyConfigurationEvent(databaseName, swapKeyGenerateStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -266,7 +266,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlKeyGenerateStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlKeyGenerateStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShardingAuditorStrategyConfigurationEvent(databaseName, swapShardingAuditorStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -280,7 +280,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlShardingAuditStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShardingAuditStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddDefaultShardingColumnEvent(databaseName, event.getValue(), event.getKey(), version));
         }
@@ -290,21 +290,21 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return Optional.of(new DeleteDefaultShardingColumnEvent(databaseName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final String databaseName, final String algorithmName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final String databaseName, final String algorithmName, final String version, 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 DeleteShardingAlgorithmEvent(databaseName, algorithmName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String databaseName, final String algorithmName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String databaseName, final String algorithmName, final String version, 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 DeleteKeyGeneratorEvent(databaseName, algorithmName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createAuditorEvent(final String databaseName, final String algorithmName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createAuditorEvent(final String databaseName, final String algorithmName, final String version, 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));
         }
@@ -315,7 +315,7 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         return new YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlAlgorithmConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShardingCacheEvent(final String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingCacheEvent(final String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShardingCacheConfigurationEvent(databaseName, swapToShardingCacheConfig(event.getValue()), event.getKey(), version));
         }
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 3cec62e0bdc..2173c690901 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
@@ -35,7 +35,7 @@ public final class AlterAuditorEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 4af20de8d8d..736477ff9ea 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
@@ -32,7 +32,7 @@ public final class DeleteAuditorEvent implements GovernanceEvent {
     
     private final String auditorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 3d296a4a4bd..793063bbf07 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
@@ -35,7 +35,7 @@ public final class AlterKeyGeneratorEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 10adf800c7e..db98d28a9cf 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
@@ -32,7 +32,7 @@ public final class DeleteKeyGeneratorEvent implements GovernanceEvent {
     
     private final String keyGeneratorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 9d384e5993b..e6b93482aa2 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
@@ -35,7 +35,7 @@ public final class AlterShardingAlgorithmEvent implements GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 e514033d67d..5cde97fe823 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
@@ -32,7 +32,7 @@ public final class DeleteShardingAlgorithmEvent implements GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 0195fc1263a..fa67f8a8231 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
@@ -33,7 +33,7 @@ public final class AddShardingCacheConfigurationEvent implements GovernanceEvent
     
     private final ShardingCacheConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 c99f3e890e1..58f3ab7c735 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
@@ -33,7 +33,7 @@ public final class AlterShardingCacheConfigurationEvent implements GovernanceEve
     
     private final ShardingCacheConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 c3aa7931194..213fe176bd5 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
@@ -30,7 +30,7 @@ public final class DeleteShardingCacheConfigurationEvent implements GovernanceEv
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 332fa8c66a4..8424b3baf0e 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
@@ -33,7 +33,7 @@ public final class AddShardingAuditorStrategyConfigurationEvent implements Gover
     
     private final ShardingAuditStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 2ef6ce7318d..4b5c33756ab 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
@@ -33,7 +33,7 @@ public final class AlterShardingAuditorStrategyConfigurationEvent implements Gov
     
     private final ShardingAuditStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 1f9b02def80..3011094d542 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
@@ -30,7 +30,7 @@ public final class DeleteShardingAuditorStrategyConfigurationEvent implements Go
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 04e01af0f49..ae73d53d698 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
@@ -33,7 +33,7 @@ public final class AddDatabaseShardingStrategyConfigurationEvent implements Gove
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 7733e3d24fe..d2737e06e7b 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
@@ -33,7 +33,7 @@ public final class AlterDatabaseShardingStrategyConfigurationEvent implements Go
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 d83cad340ef..9ec3d1c125d 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
@@ -30,7 +30,7 @@ public final class DeleteDatabaseShardingStrategyConfigurationEvent implements G
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 d934edd1f5d..0b5f24122be 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
@@ -33,7 +33,7 @@ public final class AddKeyGenerateStrategyConfigurationEvent implements Governanc
     
     private final KeyGenerateStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 9bd670da19e..e45737c78d1 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
@@ -33,7 +33,7 @@ public final class AlterKeyGenerateStrategyConfigurationEvent implements Governa
     
     private final KeyGenerateStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 30e61a61472..af39402f41d 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
@@ -30,7 +30,7 @@ public final class DeleteKeyGenerateStrategyConfigurationEvent implements Govern
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 7b6dc682ef1..1bcc3c35f64 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
@@ -32,7 +32,7 @@ public final class AddDefaultShardingColumnEvent implements GovernanceEvent {
     
     private final String config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 96f87c7bce1..7b4524963f8 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
@@ -32,7 +32,7 @@ public final class AlterDefaultShardingColumnEvent implements GovernanceEvent {
     
     private final String config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 8a48e126d9c..d1eeb9edf06 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
@@ -30,7 +30,7 @@ public final class DeleteDefaultShardingColumnEvent implements GovernanceEvent {
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 47f74b96091..11f69ad1648 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
@@ -33,7 +33,7 @@ public final class AddTableShardingStrategyConfigurationEvent implements Governa
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 75e511608fe..0357be66b12 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
@@ -33,7 +33,7 @@ public final class AlterTableShardingStrategyConfigurationEvent implements Gover
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 06edf5c322a..29439ba5ac1 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
@@ -30,7 +30,7 @@ public final class DeleteTableShardingStrategyConfigurationEvent implements Gove
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 5ec27146340..c72b39d97bc 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
@@ -34,7 +34,7 @@ public final class AddShardingAutoTableConfigurationEvent<T> implements Governan
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 40296c7bf46..d4f4b6c77b4 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
@@ -36,7 +36,7 @@ public final class AlterShardingAutoTableConfigurationEvent<T> implements Govern
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 68f8f854720..efd9cf3be81 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
@@ -32,7 +32,7 @@ public final class DeleteShardingAutoTableConfigurationEvent implements Governan
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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
index 035f18b59a0..d2ba149500a 100644
--- 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
@@ -34,7 +34,7 @@ public final class AddBroadcastTableConfigurationEvent implements GovernanceEven
     
     private final Collection<String> config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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
index 67e75bb3bd1..11573ecedba 100644
--- 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
@@ -34,7 +34,7 @@ public final class AlterBroadcastTableConfigurationEvent implements GovernanceEv
     
     private final Collection<String> config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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
index dd0e82b9f1a..fef0f3e094b 100644
--- 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
@@ -30,7 +30,7 @@ public final class DeleteBroadcastTableConfigurationEvent implements GovernanceE
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 71870cc9c93..d2ec2bfea95 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
@@ -34,7 +34,7 @@ public final class AddShardingTableConfigurationEvent<T> implements GovernanceEv
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 2f0470f1ec5..5d6b77d01af 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
@@ -36,7 +36,7 @@ public final class AlterShardingTableConfigurationEvent<T> implements Governance
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    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 3ee92742afd..cf865f50bcb 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
@@ -32,7 +32,7 @@ public final class DeleteShardingTableConfigurationEvent implements GovernanceEv
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
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 74be7f6895a..8d4b22125f0 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
@@ -69,7 +69,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AddShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -94,7 +94,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AddShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -141,7 +141,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AddBroadcastTableConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -162,7 +162,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AlterShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -180,7 +180,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AlterShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -213,7 +213,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AlterBroadcastTableConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -228,7 +228,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final DeleteShardingTableConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -244,7 +244,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final DeleteShardingAutoTableConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
@@ -273,7 +273,7 @@ public final class ShardingTableConfigurationSubscriber implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final DeleteBroadcastTableConfigurationEvent event) {
-        if (event.getVersion() < instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
index 62c27a8780f..a06748a47bb 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterGlobalRuleConfigurationEvent implements GovernanceEvent
     
     private final String ruleSimpleName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
index e3512b0dfbe..a603147d5fb 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class DeleteGlobalRuleConfigurationEvent implements GovernanceEvent
     
     private final String ruleSimpleName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
index 6660949e2ab..6ca92f08fd3 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
@@ -172,7 +172,7 @@ public interface ModeContextManager {
      * @param key key
      * @return active version
      */
-    default int getActiveVersionByKey(String key) {
-        return 0;
+    default String getActiveVersionByKey(String key) {
+        return "";
     }
 }
diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
index 19156f96667..1d46a33e041 100644
--- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
+++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class AuthorityRuleConfigurationEventBuilder implements GlobalRuleC
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(AUTHORITY, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
index 09ad07a890c..3ed057a98c4 100644
--- a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
+++ b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class GlobalClockRuleConfigurationEventBuilder implements GlobalRul
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(GLOBAL_CLOCK, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
index 2ba642d2a9e..0f717806e2d 100644
--- a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
+++ b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class LoggingRuleConfigurationEventBuilder implements GlobalRuleCon
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(LOGGING, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
index 74652002e36..167f4033dab 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
@@ -396,13 +396,14 @@ public final class NewDatabaseMetaDataNode {
     }
     
     /**
-     * Decorate active version.
+     * Get version node by active version path.
      *
      * @param rulePath rule path
-     * @return group name
+     * @param activeVersion active version
+     * @return active version node
      */
-    public static String decorateActiveVersion(final String rulePath) {
-        return rulePath.substring(0, rulePath.indexOf(VERSIONS)) + ACTIVE_VERSION;
+    public static String getVersionNodeByActiveVersionPath(final String rulePath, final String activeVersion) {
+        return rulePath.substring(0, rulePath.indexOf(ACTIVE_VERSION)) + VERSIONS + "/" + activeVersion;
     }
     
     private static String getMetaDataNodeNode() {
diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
index 408659711b4..e3f396f18ff 100644
--- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
+++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
@@ -104,9 +104,9 @@ class NewDatabaseMetaDataNodeTest {
     }
     
     @Test
-    void assertDecorateActiveVersion() {
-        assertThat(NewDatabaseMetaDataNode.decorateActiveVersion("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"),
-                is("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
+    void assertGetVersionNodeByActiveVersionPath() {
+        assertThat(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version", "0"),
+                is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
     }
     
     @Test
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
index c1d833fc9a3..f568d13e924 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class SQLFederationRuleConfigurationEventBuilder implements GlobalR
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(SQL_FEDERATION, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
index 299f137acef..87afe5f5719 100644
--- a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
+++ b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class SQLParserRuleConfigurationEventBuilder implements GlobalRuleC
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(SQL_PARSER, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
index 3e58ed9b7e0..9897d20ca7a 100644
--- a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
+++ b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class SQLTranslatorConfigurationEventBuilder implements GlobalRuleC
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(SQL_TRANSLATOR, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
index 1e8d1df6bc2..3a77bc1c3ce 100644
--- a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
+++ b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class TrafficRuleConfigurationEventBuilder implements GlobalRuleCon
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(TRAFFIC, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
index 535dd8c7cea..3ed67e264f5 100644
--- a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
+++ b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class TransactionRuleConfigurationEventBuilder implements GlobalRul
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(TRANSACTION, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, event.getKey(), version));
         }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
index 14071820767..7652d840b4a 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
@@ -35,7 +35,7 @@ public final class AlterStorageUnitEvent implements GovernanceEvent {
     
     private final DataSourceProperties props;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
index 18b5e01cbb4..48c37521db7 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
@@ -35,7 +35,7 @@ public final class RegisterStorageUnitEvent implements GovernanceEvent {
     
     private final DataSourceProperties props;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
index 7a036bf56d3..ff44a047813 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
@@ -32,7 +32,7 @@ public final class UnregisterStorageUnitEvent implements GovernanceEvent {
     
     private final String storageUnitName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
index 278bb4fef71..6019513632c 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
@@ -35,7 +35,7 @@ public final class AlterTableEvent implements GovernanceEvent {
     
     private final ShardingSphereTable table;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
index 27146d7c2bb..dccc650771c 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
@@ -34,7 +34,7 @@ public final class DropTableEvent implements GovernanceEvent {
     
     private final String tableName;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
index 77914291c40..5eb6f79c4bc 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
@@ -35,7 +35,7 @@ public final class AlterViewEvent implements GovernanceEvent {
     
     private final ShardingSphereView view;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
index 1054db29149..9c881bf8c3f 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
@@ -34,7 +34,7 @@ public final class DropViewEvent implements GovernanceEvent {
     
     private final String viewName;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
index 6ed45642749..b55f1e057a9 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.mode.manager.cluster;
 
-import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
@@ -27,7 +26,6 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 import org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-import org.apache.shardingsphere.metadata.persist.node.NewDatabaseMetaDataNode;
 import org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataBasedPersistService;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerAware;
@@ -152,9 +150,8 @@ public final class NewClusterModeContextManager implements ModeContextManager, C
     }
     
     @Override
-    public int getActiveVersionByKey(final String key) {
-        String activeVersion = contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(NewDatabaseMetaDataNode.decorateActiveVersion(key));
-        return Strings.isNullOrEmpty(activeVersion) ? 0 : Integer.parseInt(activeVersion);
+    public String getActiveVersionByKey(final String key) {
+        return contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(key);
     }
     
     @Override
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
index 19e78207628..0fba67a4519 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
@@ -120,18 +120,18 @@ public final class NewMetaDataChangedWatcher implements NewGovernanceWatcher<Gov
     
     private Optional<GovernanceEvent> createTableChangedEvent(final String databaseName, final String schemaName, final String tableNameVersion, final DataChangedEvent event) {
         if (Type.DELETED == event.getType()) {
-            return Optional.of(new DropTableEvent(databaseName, schemaName, NewDatabaseMetaDataNode.getTableName(event.getKey()).orElse(""), Integer.parseInt(tableNameVersion), event.getKey()));
+            return Optional.of(new DropTableEvent(databaseName, schemaName, NewDatabaseMetaDataNode.getTableName(event.getKey()).orElse(""), event.getKey(), tableNameVersion));
         }
         return Optional.of(new AlterTableEvent(databaseName, schemaName,
-                new YamlTableSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlShardingSphereTable.class)), Integer.parseInt(tableNameVersion), event.getKey()));
+                new YamlTableSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlShardingSphereTable.class)), event.getKey(), tableNameVersion));
     }
     
     private Optional<GovernanceEvent> createViewChangedEvent(final String databaseName, final String schemaName, final String viewNameVersion, final DataChangedEvent event) {
         if (Type.DELETED == event.getType()) {
-            return Optional.of(new DropViewEvent(databaseName, schemaName, NewDatabaseMetaDataNode.getViewName(event.getKey()).orElse(""), Integer.parseInt(viewNameVersion), event.getKey()));
+            return Optional.of(new DropViewEvent(databaseName, schemaName, NewDatabaseMetaDataNode.getViewName(event.getKey()).orElse(""), event.getKey(), viewNameVersion));
         }
         return Optional.of(new AlterViewEvent(databaseName, schemaName,
-                new YamlViewSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlShardingSphereView.class)), Integer.parseInt(viewNameVersion), event.getKey()));
+                new YamlViewSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlShardingSphereView.class)), event.getKey(), viewNameVersion));
     }
     
     @SuppressWarnings("unchecked")
@@ -146,13 +146,13 @@ public final class NewMetaDataChangedWatcher implements NewGovernanceWatcher<Gov
         }
         if (Type.ADDED == event.getType()) {
             return Optional.of(new RegisterStorageUnitEvent(databaseName, dataSourceName.get(),
-                    new YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(), Map.class)), event.getKey(), Integer.parseInt(version.get())));
+                    new YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(), Map.class)), event.getKey(), version.get()));
         }
         if (Type.UPDATED == event.getType()) {
             return Optional.of(new AlterStorageUnitEvent(databaseName, dataSourceName.get(),
-                    new YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(), Map.class)), event.getKey(), Integer.parseInt(version.get())));
+                    new YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(), Map.class)), event.getKey(), version.get()));
         }
-        return Optional.of(new UnregisterStorageUnitEvent(databaseName, dataSourceName.get(), event.getKey(), Integer.parseInt(version.get())));
+        return Optional.of(new UnregisterStorageUnitEvent(databaseName, dataSourceName.get(), event.getKey(), version.get()));
     }
     
     private Optional<GovernanceEvent> createDatabaseRuleEvent(final String databaseName, final DataChangedEvent event) {
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
index e90cb07e78d..e782292f91b 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
@@ -44,7 +44,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final RegisterStorageUnitEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.registerStorageUnit(event.getDatabaseName(), event.getStorageUnitName(), event.getProps());
@@ -57,7 +57,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final AlterStorageUnitEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.alterStorageUnit(event.getDatabaseName(), event.getStorageUnitName(), event.getProps());
@@ -70,7 +70,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final UnregisterStorageUnitEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.unregisterStorageUnit(event.getDatabaseName(), event.getStorageUnitName());
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
index 6122ff27d98..70996a146f7 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
@@ -89,7 +89,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterTableEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), event.getTable(), null);
@@ -102,7 +102,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final DropTableEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), event.getTableName(), null);
@@ -116,7 +116,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterViewEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), null, event.getView());
@@ -129,7 +129,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final DropViewEvent event) {
-        if (event.getVersion() < contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey())) {
+        if (!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), event.getSchemaName(), null, event.getViewName());