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

zhangliang 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 801a9dc51d3 Refactor DataSourceMetaDataNodePath (#34277)
801a9dc51d3 is described below

commit 801a9dc51d3660b42918ddd054bd5c158871716b
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jan 8 01:58:45 2025 +0800

    Refactor DataSourceMetaDataNodePath (#34277)
---
 .../node/metadata/DataSourceMetaDataNode.java      | 262 ---------------------
 .../node/metadata/DataSourceMetaDataNodePath.java  | 258 ++++++++++++++++++++
 .../database/DataSourceNodePersistService.java     |  18 +-
 .../database/DataSourceUnitPersistService.java     |  18 +-
 .../metadata/DataSourceMetaDataNodePathTest.java   | 153 ++++++++++++
 .../node/metadata/DataSourceMetaDataNodeTest.java  | 153 ------------
 .../database/metadata/MetaDataChangedHandler.java  |  16 +-
 7 files changed, 437 insertions(+), 441 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
deleted file mode 100644
index f87855d8917..00000000000
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNode.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.metadata.persist.node.metadata;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-import java.util.Optional;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Data source meta data node.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DataSourceMetaDataNode {
-    
-    private static final String ROOT_NODE = "metadata";
-    
-    private static final String DATA_SOURCES_NODE = "data_sources";
-    
-    private static final String DATA_SOURCE_NODES_NODE = "nodes";
-    
-    private static final String DATA_SOURCE_UNITS_NODE = "units";
-    
-    private static final String ACTIVE_VERSION = "active_version";
-    
-    private static final String VERSIONS = "versions";
-    
-    private static final String DATABASE_DATA_SOURCES_NODE = 
"/([\\w\\-]+)/data_sources/";
-    
-    private static final String ACTIVE_VERSION_SUFFIX = 
"/([\\w\\-]+)/active_version";
-    
-    private static final String DATA_SOURCE_SUFFIX = "/([\\w\\-]+)$";
-    
-    /**
-     * Get data source units node.
-     *
-     * @param databaseName database name
-     * @return data sources node
-     */
-    public static String getDataSourceUnitsNode(final String databaseName) {
-        return String.join("/", getMetaDataNode(), databaseName, 
DATA_SOURCES_NODE, DATA_SOURCE_UNITS_NODE);
-    }
-    
-    /**
-     * Get data source nodes node.
-     *
-     * @param databaseName database name
-     * @return data sources node
-     */
-    public static String getDataSourceNodesNode(final String databaseName) {
-        return String.join("/", getMetaDataNode(), databaseName, 
DATA_SOURCES_NODE, DATA_SOURCE_NODES_NODE);
-    }
-    
-    /**
-     * Get data source unit node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source node
-     */
-    public static String getDataSourceUnitNode(final String databaseName, 
final String dataSourceName) {
-        return String.join("/", getDataSourceUnitsNode(databaseName), 
dataSourceName);
-    }
-    
-    /**
-     * Get data source node node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source node
-     */
-    public static String getDataSourceNodeNode(final String databaseName, 
final String dataSourceName) {
-        return String.join("/", getDataSourceNodesNode(databaseName), 
dataSourceName);
-    }
-    
-    /**
-     * Get data source unit version node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @param version version
-     * @return data source unit version node
-     */
-    public static String getDataSourceUnitVersionNode(final String 
databaseName, final String dataSourceName, final String version) {
-        return String.join("/", getDataSourceUnitVersionsNode(databaseName, 
dataSourceName), version);
-    }
-    
-    /**
-     * Get data source unit versions node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source versions node
-     */
-    public static String getDataSourceUnitVersionsNode(final String 
databaseName, final String dataSourceName) {
-        return String.join("/", getDataSourceUnitsNode(databaseName), 
dataSourceName, VERSIONS);
-    }
-    
-    /**
-     * Get data source unit active version node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source active version node
-     */
-    public static String getDataSourceUnitActiveVersionNode(final String 
databaseName, final String dataSourceName) {
-        return String.join("/", getDataSourceUnitsNode(databaseName), 
dataSourceName, ACTIVE_VERSION);
-    }
-    
-    /**
-     * Get data source node versions node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source versions node
-     */
-    public static String getDataSourceNodeVersionsNode(final String 
databaseName, final String dataSourceName) {
-        return String.join("/", getDataSourceNodesNode(databaseName), 
dataSourceName, VERSIONS);
-    }
-    
-    /**
-     * Get data source node version node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @param version version
-     * @return data source node version node
-     */
-    public static String getDataSourceNodeVersionNode(final String 
databaseName, final String dataSourceName, final String version) {
-        return String.join("/", getDataSourceNodeVersionsNode(databaseName, 
dataSourceName), version);
-    }
-    
-    /**
-     * Get data source node active version node.
-     *
-     * @param databaseName database name
-     * @param dataSourceName data source name
-     * @return data source active version node
-     */
-    public static String getDataSourceNodeActiveVersionNode(final String 
databaseName, final String dataSourceName) {
-        return String.join("/", getDataSourceNodesNode(databaseName), 
dataSourceName, ACTIVE_VERSION);
-    }
-    
-    /**
-     * Is data sources node.
-     *
-     * @param path path
-     * @return true or false
-     */
-    public static boolean isDataSourcesNode(final String path) {
-        return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE 
+ "?", Pattern.CASE_INSENSITIVE).matcher(path).find();
-    }
-    
-    /**
-     * Get data source name by data source unit active version node.
-     *
-     * @param path path
-     * @return data source name
-     */
-    public static Optional<String> 
getDataSourceNameByDataSourceUnitActiveVersionNode(final String path) {
-        Pattern pattern = Pattern.compile(getMetaDataNode() + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
-    }
-    
-    /**
-     * Get data source name by data source unit node.
-     *
-     * @param path path
-     * @return data source name
-     */
-    public static Optional<String> getDataSourceNameByDataSourceUnitNode(final 
String path) {
-        Pattern pattern = Pattern.compile(getMetaDataNode() + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
-    }
-    
-    /**
-     * Get data source name by data source node active version node.
-     *
-     * @param path path
-     * @return data source name
-     */
-    public static Optional<String> 
getDataSourceNameByDataSourceNodeActiveVersionNode(final String path) {
-        Pattern pattern = Pattern.compile(getMetaDataNode() + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
-    }
-    
-    /**
-     * Get data source name by data source node.
-     *
-     * @param path path
-     * @return data source name
-     */
-    public static Optional<String> getDataSourceNameByDataSourceNodeNode(final 
String path) {
-        Pattern pattern = Pattern.compile(getMetaDataNode() + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(path);
-        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
-    }
-    
-    /**
-     * Is data source unit active version node.
-     *
-     * @param path path
-     * @return true or false
-     */
-    public static boolean isDataSourceUnitActiveVersionNode(final String path) 
{
-        return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE 
+ DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
-    }
-    
-    /**
-     * Is data source unit node.
-     *
-     * @param path path
-     * @return true or false
-     */
-    public static boolean isDataSourceUnitNode(final String path) {
-        return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE 
+ DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
-    }
-    
-    /**
-     * Is data source node active version node.
-     *
-     * @param path path
-     * @return true or false
-     */
-    public static boolean isDataSourceNodeActiveVersionNode(final String path) 
{
-        return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE 
+ DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
-    }
-    
-    /**
-     * Is data source node node.
-     *
-     * @param path path
-     * @return true or false
-     */
-    public static boolean isDataSourceNodeNode(final String path) {
-        return Pattern.compile(getMetaDataNode() + DATABASE_DATA_SOURCES_NODE 
+ DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
-    }
-    
-    private static String getMetaDataNode() {
-        return String.join("/", "", ROOT_NODE);
-    }
-}
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
new file mode 100644
index 00000000000..c04edad6b8b
--- /dev/null
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePath.java
@@ -0,0 +1,258 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.metadata.persist.node.metadata;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Data source meta data node path.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DataSourceMetaDataNodePath {
+    
+    private static final String ROOT_NODE = "/metadata";
+    
+    private static final String DATA_SOURCES_NODE = "data_sources";
+    
+    private static final String DATA_SOURCE_NODES_NODE = "nodes";
+    
+    private static final String DATA_SOURCE_UNITS_NODE = "units";
+    
+    private static final String VERSIONS_NODE = "versions";
+    
+    private static final String ACTIVE_VERSION_NODE = "active_version";
+    
+    private static final String DATABASE_DATA_SOURCES_NODE = 
"/([\\w\\-]+)/data_sources/";
+    
+    private static final String ACTIVE_VERSION_SUFFIX = 
"/([\\w\\-]+)/active_version";
+    
+    private static final String DATA_SOURCE_SUFFIX = "/([\\w\\-]+)$";
+    
+    /**
+     * Get data source units path.
+     *
+     * @param databaseName database name
+     * @return data sources path
+     */
+    public static String getDataSourceUnitsPath(final String databaseName) {
+        return String.join("/", ROOT_NODE, databaseName, DATA_SOURCES_NODE, 
DATA_SOURCE_UNITS_NODE);
+    }
+    
+    /**
+     * Get data source nodes path.
+     *
+     * @param databaseName database name
+     * @return data sources path
+     */
+    public static String getDataSourceNodesPath(final String databaseName) {
+        return String.join("/", ROOT_NODE, databaseName, DATA_SOURCES_NODE, 
DATA_SOURCE_NODES_NODE);
+    }
+    
+    /**
+     * Get data source unit path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source path
+     */
+    public static String getDataSourceUnitPath(final String databaseName, 
final String dataSourceName) {
+        return String.join("/", getDataSourceUnitsPath(databaseName), 
dataSourceName);
+    }
+    
+    /**
+     * Get data source node path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source path
+     */
+    public static String getDataSourceNodePath(final String databaseName, 
final String dataSourceName) {
+        return String.join("/", getDataSourceNodesPath(databaseName), 
dataSourceName);
+    }
+    
+    /**
+     * Get data source unit version path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @param version version
+     * @return data source unit version path
+     */
+    public static String getDataSourceUnitVersionPath(final String 
databaseName, final String dataSourceName, final String version) {
+        return String.join("/", getDataSourceUnitVersionsPath(databaseName, 
dataSourceName), version);
+    }
+    
+    /**
+     * Get data source unit versions path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source versions path
+     */
+    public static String getDataSourceUnitVersionsPath(final String 
databaseName, final String dataSourceName) {
+        return String.join("/", getDataSourceUnitsPath(databaseName), 
dataSourceName, VERSIONS_NODE);
+    }
+    
+    /**
+     * Get data source unit active version path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source active version path
+     */
+    public static String getDataSourceUnitActiveVersionPath(final String 
databaseName, final String dataSourceName) {
+        return String.join("/", getDataSourceUnitsPath(databaseName), 
dataSourceName, ACTIVE_VERSION_NODE);
+    }
+    
+    /**
+     * Get data source node versions path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source versions path
+     */
+    public static String getDataSourceNodeVersionsPath(final String 
databaseName, final String dataSourceName) {
+        return String.join("/", getDataSourceNodesPath(databaseName), 
dataSourceName, VERSIONS_NODE);
+    }
+    
+    /**
+     * Get data source node version path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @param version version
+     * @return data source node version path
+     */
+    public static String getDataSourceNodeVersionPath(final String 
databaseName, final String dataSourceName, final String version) {
+        return String.join("/", getDataSourceNodeVersionsPath(databaseName, 
dataSourceName), version);
+    }
+    
+    /**
+     * Get data source node active version path.
+     *
+     * @param databaseName database name
+     * @param dataSourceName data source name
+     * @return data source active version path
+     */
+    public static String getDataSourceNodeActiveVersionPath(final String 
databaseName, final String dataSourceName) {
+        return String.join("/", getDataSourceNodesPath(databaseName), 
dataSourceName, ACTIVE_VERSION_NODE);
+    }
+    
+    /**
+     * Is data sources path.
+     *
+     * @param path path
+     * @return true or false
+     */
+    public static boolean isDataSourcesPath(final String path) {
+        return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + "?", 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    }
+    
+    /**
+     * Find data source name by data source unit active version path.
+     *
+     * @param path path
+     * @return found data source name
+     */
+    public static Optional<String> 
findDataSourceNameByDataSourceUnitActiveVersionPath(final String path) {
+        Pattern pattern = Pattern.compile(ROOT_NODE + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
+    }
+    
+    /**
+     * Find data source name by data source unit path.
+     *
+     * @param path path
+     * @return data source name
+     */
+    public static Optional<String> 
findDataSourceNameByDataSourceUnitPath(final String path) {
+        Pattern pattern = Pattern.compile(ROOT_NODE + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
+    }
+    
+    /**
+     * Find data source name by data source node active version path.
+     *
+     * @param path path
+     * @return data source name
+     */
+    public static Optional<String> 
findDataSourceNameByDataSourceNodeActiveVersionPath(final String path) {
+        Pattern pattern = Pattern.compile(ROOT_NODE + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
+    }
+    
+    /**
+     * Find data source name by data source path.
+     *
+     * @param path path
+     * @return data source name
+     */
+    public static Optional<String> 
findDataSourceNameByDataSourceNodePath(final String path) {
+        Pattern pattern = Pattern.compile(ROOT_NODE + 
DATABASE_DATA_SOURCES_NODE + DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(path);
+        return matcher.find() ? Optional.of(matcher.group(2)) : 
Optional.empty();
+    }
+    
+    /**
+     * Is data source unit active version path.
+     *
+     * @param path path
+     * @return true or false
+     */
+    public static boolean isDataSourceUnitActiveVersionPath(final String path) 
{
+        return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + 
DATA_SOURCE_UNITS_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    }
+    
+    /**
+     * Is data source unit path.
+     *
+     * @param path path
+     * @return true or false
+     */
+    public static boolean isDataSourceUnitPath(final String path) {
+        return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + 
DATA_SOURCE_UNITS_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    }
+    
+    /**
+     * Is data source node active version path.
+     *
+     * @param path path
+     * @return true or false
+     */
+    public static boolean isDataSourceNodeActiveVersionPath(final String path) 
{
+        return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + 
DATA_SOURCE_NODES_NODE + ACTIVE_VERSION_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    }
+    
+    /**
+     * Is data source node path.
+     *
+     * @param path path
+     * @return true or false
+     */
+    public static boolean isDataSourceNodePath(final String path) {
+        return Pattern.compile(ROOT_NODE + DATABASE_DATA_SOURCES_NODE + 
DATA_SOURCE_NODES_NODE + DATA_SOURCE_SUFFIX, 
Pattern.CASE_INSENSITIVE).matcher(path).find();
+    }
+}
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
index 1090edfc2b5..fabf578c6de 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceNodePersistService.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
-import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
+import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNodePath;
 import 
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
@@ -54,10 +54,10 @@ public final class DataSourceNodePersistService {
      */
     @SuppressWarnings("unchecked")
     public Map<String, DataSourcePoolProperties> load(final String 
databaseName) {
-        Collection<String> childrenKeys = 
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceNodesNode(databaseName));
+        Collection<String> childrenKeys = 
repository.getChildrenKeys(DataSourceMetaDataNodePath.getDataSourceNodesPath(databaseName));
         Map<String, DataSourcePoolProperties> result = new 
LinkedHashMap<>(childrenKeys.size(), 1F);
         for (String each : childrenKeys) {
-            String dataSourceValue = 
repository.query(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
 each, getDataSourceActiveVersion(databaseName, each)));
+            String dataSourceValue = 
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
 each, getDataSourceActiveVersion(databaseName, each)));
             if (!Strings.isNullOrEmpty(dataSourceValue)) {
                 result.put(each, new 
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
 Map.class)));
             }
@@ -74,7 +74,7 @@ public final class DataSourceNodePersistService {
      */
     @SuppressWarnings("unchecked")
     public DataSourcePoolProperties load(final String databaseName, final 
String dataSourceName) {
-        String dataSourceValue = 
repository.query(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
 dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
+        String dataSourceValue = 
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
 dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
         return new 
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
 Map.class));
     }
     
@@ -87,18 +87,18 @@ public final class DataSourceNodePersistService {
     public void persist(final String databaseName, final Map<String, 
DataSourcePoolProperties> dataSourceConfigs) {
         for (Entry<String, DataSourcePoolProperties> entry : 
dataSourceConfigs.entrySet()) {
             String activeVersion = getDataSourceActiveVersion(databaseName, 
entry.getKey());
-            List<String> versions = 
metaDataVersionPersistService.getVersions(DataSourceMetaDataNode.getDataSourceNodeVersionsNode(databaseName,
 entry.getKey()));
-            
repository.persist(DataSourceMetaDataNode.getDataSourceNodeVersionNode(databaseName,
 entry.getKey(), versions.isEmpty()
+            List<String> versions = 
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getDataSourceNodeVersionsPath(databaseName,
 entry.getKey()));
+            
repository.persist(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath(databaseName,
 entry.getKey(), versions.isEmpty()
                     ? MetaDataVersion.DEFAULT_VERSION
                     : String.valueOf(Integer.parseInt(versions.get(0)) + 1)), 
YamlEngine.marshal(new 
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
             if (Strings.isNullOrEmpty(activeVersion)) {
-                
repository.persist(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
 entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
+                
repository.persist(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath(databaseName,
 entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
             }
         }
     }
     
     private String getDataSourceActiveVersion(final String databaseName, final 
String dataSourceName) {
-        return 
repository.query(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode(databaseName,
 dataSourceName));
+        return 
repository.query(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath(databaseName,
 dataSourceName));
     }
     
     /**
@@ -108,6 +108,6 @@ public final class DataSourceNodePersistService {
      * @param dataSourceName data source name
      */
     public void delete(final String databaseName, final String dataSourceName) 
{
-        
repository.delete(DataSourceMetaDataNode.getDataSourceNodeNode(databaseName, 
dataSourceName));
+        
repository.delete(DataSourceMetaDataNodePath.getDataSourceNodePath(databaseName,
 dataSourceName));
     }
 }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
index 4e9a4cc2b98..5fd34ee57c5 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourceUnitPersistService.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
-import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
+import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNodePath;
 import 
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
@@ -55,7 +55,7 @@ public final class DataSourceUnitPersistService {
      * @return data source pool properties map
      */
     public Map<String, DataSourcePoolProperties> load(final String 
databaseName) {
-        Collection<String> childrenKeys = 
repository.getChildrenKeys(DataSourceMetaDataNode.getDataSourceUnitsNode(databaseName));
+        Collection<String> childrenKeys = 
repository.getChildrenKeys(DataSourceMetaDataNodePath.getDataSourceUnitsPath(databaseName));
         return childrenKeys.stream().collect(Collectors.toMap(each -> each, 
each -> load(databaseName, each), (a, b) -> b, () -> new 
LinkedHashMap<>(childrenKeys.size(), 1F)));
     }
     
@@ -68,7 +68,7 @@ public final class DataSourceUnitPersistService {
      */
     @SuppressWarnings("unchecked")
     public DataSourcePoolProperties load(final String databaseName, final 
String dataSourceName) {
-        String dataSourceValue = 
repository.query(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
 dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
+        String dataSourceValue = 
repository.query(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath(databaseName,
 dataSourceName, getDataSourceActiveVersion(databaseName, dataSourceName)));
         return new 
YamlDataSourceConfigurationSwapper().swapToDataSourcePoolProperties(YamlEngine.unmarshal(dataSourceValue,
 Map.class));
     }
     
@@ -83,20 +83,20 @@ public final class DataSourceUnitPersistService {
         Collection<MetaDataVersion> result = new LinkedList<>();
         for (Entry<String, DataSourcePoolProperties> entry : 
dataSourcePropsMap.entrySet()) {
             String activeVersion = getDataSourceActiveVersion(databaseName, 
entry.getKey());
-            List<String> versions = 
metaDataVersionPersistService.getVersions(DataSourceMetaDataNode.getDataSourceUnitVersionsNode(databaseName,
 entry.getKey()));
+            List<String> versions = 
metaDataVersionPersistService.getVersions(DataSourceMetaDataNodePath.getDataSourceUnitVersionsPath(databaseName,
 entry.getKey()));
             String nextActiveVersion = versions.isEmpty() ? 
MetaDataVersion.DEFAULT_VERSION : 
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
-            
repository.persist(DataSourceMetaDataNode.getDataSourceUnitVersionNode(databaseName,
 entry.getKey(), nextActiveVersion),
+            
repository.persist(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath(databaseName,
 entry.getKey(), nextActiveVersion),
                     YamlEngine.marshal(new 
YamlDataSourceConfigurationSwapper().swapToMap(entry.getValue())));
             if (Strings.isNullOrEmpty(activeVersion)) {
-                
repository.persist(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
 entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
+                
repository.persist(DataSourceMetaDataNodePath.getDataSourceUnitActiveVersionPath(databaseName,
 entry.getKey()), MetaDataVersion.DEFAULT_VERSION);
             }
-            result.add(new 
MetaDataVersion(DataSourceMetaDataNode.getDataSourceUnitNode(databaseName, 
entry.getKey()), activeVersion, nextActiveVersion));
+            result.add(new 
MetaDataVersion(DataSourceMetaDataNodePath.getDataSourceUnitPath(databaseName, 
entry.getKey()), activeVersion, nextActiveVersion));
         }
         return result;
     }
     
     private String getDataSourceActiveVersion(final String databaseName, final 
String dataSourceName) {
-        return 
repository.query(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode(databaseName,
 dataSourceName));
+        return 
repository.query(DataSourceMetaDataNodePath.getDataSourceUnitActiveVersionPath(databaseName,
 dataSourceName));
     }
     
     /**
@@ -106,6 +106,6 @@ public final class DataSourceUnitPersistService {
      * @param dataSourceName data source name
      */
     public void delete(final String databaseName, final String dataSourceName) 
{
-        
repository.delete(DataSourceMetaDataNode.getDataSourceUnitNode(databaseName, 
dataSourceName));
+        
repository.delete(DataSourceMetaDataNodePath.getDataSourceUnitPath(databaseName,
 dataSourceName));
     }
 }
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
new file mode 100644
index 00000000000..778a54775ba
--- /dev/null
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodePathTest.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.metadata.persist.node.metadata;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Optional;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class DataSourceMetaDataNodePathTest {
+    
+    @Test
+    void assertGetDataSourceUnitsPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitsPath("foo_db"), 
is("/metadata/foo_db/data_sources/units"));
+    }
+    
+    @Test
+    void assertGetDataSourceNodesPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceNodesPath("foo_db"), 
is("/metadata/foo_db/data_sources/nodes"));
+    }
+    
+    @Test
+    void assertGetDataSourceUnitPath() {
+        assertThat(DataSourceMetaDataNodePath.getDataSourceUnitPath("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
+    }
+    
+    @Test
+    void assertGetDataSourceNodePath() {
+        assertThat(DataSourceMetaDataNodePath.getDataSourceNodePath("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds"));
+    }
+    
+    @Test
+    void assertGetDataSourceUnitVersionPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitVersionPath("foo_db", 
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
+    }
+    
+    @Test
+    void assertGetDataSourceUnitVersionsPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitVersionsPath("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
+    }
+    
+    @Test
+    void assertGetDataSourceUnitActiveVersionPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceUnitActiveVersionPath("foo_db",
 "foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
+    }
+    
+    @Test
+    void assertGetDataSourceNodeVersionsPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeVersionsPath("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
+    }
+    
+    @Test
+    void assertGetDataSourceNodeVersionPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeVersionPath("foo_db", 
"foo_ds", "1"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions/1"));
+    }
+    
+    @Test
+    void assertGetDataSourceNodeActiveVersionPath() {
+        
assertThat(DataSourceMetaDataNodePath.getDataSourceNodeActiveVersionPath("foo_db",
 "foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/active_version"));
+    }
+    
+    @Test
+    void assertIsDataSourcesPath() {
+        
assertTrue(DataSourceMetaDataNodePath.isDataSourcesPath("/metadata/logic_db/data_sources/foo_ds"));
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceUnitActiveVersionPath() {
+        Optional<String> actual = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath("/metadata/logic_db/data_sources/units/foo_ds/active_version");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("foo_ds"));
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceUnitActiveVersionPathIfNotFound() 
{
+        
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath("/xxx/logic_db/data_sources/units/foo_ds/active_version").isPresent());
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceUnitPath() {
+        Optional<String> actual = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath("/metadata/logic_db/data_sources/units/foo_ds");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("foo_ds"));
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceUnitPathIfNotFound() {
+        
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath("/xxx/logic_db/data_sources/units/foo_ds").isPresent());
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceNodeActiveVersionPath() {
+        Optional<String> actual = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath("/metadata/logic_db/data_sources/nodes/foo_ds/active_version");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("foo_ds"));
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceNodeActiveVersionPathIfNotFound() 
{
+        
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath("/xxx/logic_db/data_sources/nodes/foo_ds/active_version").isPresent());
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceNodePath() {
+        Optional<String> actual = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath("/metadata/logic_db/data_sources/nodes/foo_ds");
+        assertTrue(actual.isPresent());
+        assertThat(actual.get(), is("foo_ds"));
+    }
+    
+    @Test
+    void assertFindDataSourceNameByDataSourceNodePathIfNotFound() {
+        
assertFalse(DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath("/xxx/logic_db/data_sources/nodes/foo_ds").isPresent());
+    }
+    
+    @Test
+    void assertIsDataSourceUnitActiveVersionPath() {
+        
assertTrue(DataSourceMetaDataNodePath.isDataSourceUnitActiveVersionPath("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
+    }
+    
+    @Test
+    void assertIsDataSourceUnitPath() {
+        
assertTrue(DataSourceMetaDataNodePath.isDataSourceUnitPath("/metadata/logic_db/data_sources/units/foo_ds"));
+    }
+    
+    @Test
+    void assertIsDataSourceNodeActiveVersionPath() {
+        
assertTrue(DataSourceMetaDataNodePath.isDataSourceNodeActiveVersionPath("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
+    }
+    
+    @Test
+    void assertIsDataSourceNodePath() {
+        
assertTrue(DataSourceMetaDataNodePath.isDataSourceNodePath("/metadata/logic_db/data_sources/nodes/foo_ds"));
+    }
+}
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
deleted file mode 100644
index d41477b0e96..00000000000
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/metadata/DataSourceMetaDataNodeTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.metadata.persist.node.metadata;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.Optional;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-class DataSourceMetaDataNodeTest {
-    
-    @Test
-    void assertGetDataSourceUnitsNode() {
-        assertThat(DataSourceMetaDataNode.getDataSourceUnitsNode("foo_db"), 
is("/metadata/foo_db/data_sources/units"));
-    }
-    
-    @Test
-    void assertGetDataSourceNodesNode() {
-        assertThat(DataSourceMetaDataNode.getDataSourceNodesNode("foo_db"), 
is("/metadata/foo_db/data_sources/nodes"));
-    }
-    
-    @Test
-    void assertGetDataSourceUnitNode() {
-        assertThat(DataSourceMetaDataNode.getDataSourceUnitNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNodeNode() {
-        assertThat(DataSourceMetaDataNode.getDataSourceNodeNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceUnitVersionNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceUnitVersionNode("foo_db", 
"foo_ds", "0"), is("/metadata/foo_db/data_sources/units/foo_ds/versions/0"));
-    }
-    
-    @Test
-    void assertGetDataSourceUnitVersionsNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceUnitVersionsNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/versions"));
-    }
-    
-    @Test
-    void assertGetDataSourceUnitActiveVersionNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceUnitActiveVersionNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/units/foo_ds/active_version"));
-    }
-    
-    @Test
-    void assertGetDataSourceNodeVersionsNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceNodeVersionsNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions"));
-    }
-    
-    @Test
-    void assertGetDataSourceNodeVersionNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceNodeVersionNode("foo_db", 
"foo_ds", "1"), is("/metadata/foo_db/data_sources/nodes/foo_ds/versions/1"));
-    }
-    
-    @Test
-    void assertGetDataSourceNodeActiveVersionNode() {
-        
assertThat(DataSourceMetaDataNode.getDataSourceNodeActiveVersionNode("foo_db", 
"foo_ds"), is("/metadata/foo_db/data_sources/nodes/foo_ds/active_version"));
-    }
-    
-    @Test
-    void assertIsDataSourcesNode() {
-        
assertTrue(DataSourceMetaDataNode.isDataSourcesNode("/metadata/logic_db/data_sources/foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceUnitActiveVersionNode() {
-        Optional<String> actual = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceUnitActiveVersionNodeIfNotFound() {
-        
assertFalse(DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitActiveVersionNode("/xxx/logic_db/data_sources/units/foo_ds/active_version").isPresent());
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceUnitNode() {
-        Optional<String> actual = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceUnitNodeIfNotFound() {
-        
assertFalse(DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode("/xxx/logic_db/data_sources/units/foo_ds").isPresent());
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceNodeActiveVersionNode() {
-        Optional<String> actual = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceNodeActiveVersionNodeIfNotFound() {
-        
assertFalse(DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeActiveVersionNode("/xxx/logic_db/data_sources/nodes/foo_ds/active_version").isPresent());
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceNodeNode() {
-        Optional<String> actual = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode("/metadata/logic_db/data_sources/nodes/foo_ds");
-        assertTrue(actual.isPresent());
-        assertThat(actual.get(), is("foo_ds"));
-    }
-    
-    @Test
-    void assertGetDataSourceNameByDataSourceNodeNodeIfNotFound() {
-        
assertFalse(DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode("/xxx/logic_db/data_sources/nodes/foo_ds").isPresent());
-    }
-    
-    @Test
-    void assertIsDataSourceUnitActiveVersionNode() {
-        
assertTrue(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode("/metadata/logic_db/data_sources/units/foo_ds/active_version"));
-    }
-    
-    @Test
-    void assertIsDataSourceUnitNode() {
-        
assertTrue(DataSourceMetaDataNode.isDataSourceUnitNode("/metadata/logic_db/data_sources/units/foo_ds"));
-    }
-    
-    @Test
-    void assertIsDataSourceNodeActiveVersionNode() {
-        
assertTrue(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode("/metadata/logic_db/data_sources/nodes/foo_ds/active_version"));
-    }
-    
-    @Test
-    void assertIsDataSourceNodeNode() {
-        
assertTrue(DataSourceMetaDataNode.isDataSourceNodeNode("/metadata/logic_db/data_sources/nodes/foo_ds"));
-    }
-}
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
index 405cb3216a6..03244aa6d89 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
@@ -18,7 +18,7 @@
 package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
 
 import 
org.apache.shardingsphere.metadata.persist.node.DatabaseMetaDataNodePath;
-import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNode;
+import 
org.apache.shardingsphere.metadata.persist.node.metadata.DataSourceMetaDataNodePath;
 import 
org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNode;
 import 
org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNode;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
@@ -73,7 +73,7 @@ public final class MetaDataChangedHandler {
             handleViewChanged(databaseName, schemaName.get(), event);
             return true;
         }
-        if (DataSourceMetaDataNode.isDataSourcesNode(eventKey)) {
+        if (DataSourceMetaDataNodePath.isDataSourcesPath(eventKey)) {
             handleDataSourceChanged(databaseName, event);
             return true;
         }
@@ -113,15 +113,15 @@ public final class MetaDataChangedHandler {
     }
     
     private void handleDataSourceChanged(final String databaseName, final 
DataChangedEvent event) {
-        if 
(DataSourceMetaDataNode.isDataSourceUnitActiveVersionNode(event.getKey()) || 
DataSourceMetaDataNode.isDataSourceUnitNode(event.getKey())) {
+        if 
(DataSourceMetaDataNodePath.isDataSourceUnitActiveVersionPath(event.getKey()) 
|| DataSourceMetaDataNodePath.isDataSourceUnitPath(event.getKey())) {
             handleStorageUnitChanged(databaseName, event);
-        } else if 
(DataSourceMetaDataNode.isDataSourceNodeActiveVersionNode(event.getKey()) || 
DataSourceMetaDataNode.isDataSourceNodeNode(event.getKey())) {
+        } else if 
(DataSourceMetaDataNodePath.isDataSourceNodeActiveVersionPath(event.getKey()) 
|| DataSourceMetaDataNodePath.isDataSourceNodePath(event.getKey())) {
             handleStorageNodeChanged(databaseName, event);
         }
     }
     
     private void handleStorageUnitChanged(final String databaseName, final 
DataChangedEvent event) {
-        Optional<String> dataSourceUnitName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitActiveVersionNode(event.getKey());
+        Optional<String> dataSourceUnitName = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitActiveVersionPath(event.getKey());
         if (dataSourceUnitName.isPresent()) {
             if (Type.ADDED == event.getType()) {
                 storageUnitChangedHandler.handleRegistered(databaseName, 
dataSourceUnitName.get(), event);
@@ -130,14 +130,14 @@ public final class MetaDataChangedHandler {
             }
             return;
         }
-        dataSourceUnitName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
+        dataSourceUnitName = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceUnitPath(event.getKey());
         if (Type.DELETED == event.getType() && dataSourceUnitName.isPresent()) 
{
             storageUnitChangedHandler.handleUnregistered(databaseName, 
dataSourceUnitName.get());
         }
     }
     
     private void handleStorageNodeChanged(final String databaseName, final 
DataChangedEvent event) {
-        Optional<String> dataSourceNodeName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeActiveVersionNode(event.getKey());
+        Optional<String> dataSourceNodeName = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodeActiveVersionPath(event.getKey());
         if (dataSourceNodeName.isPresent()) {
             if (Type.ADDED == event.getType()) {
                 storageNodeChangedHandler.handleRegistered(databaseName, 
dataSourceNodeName.get(), event);
@@ -146,7 +146,7 @@ public final class MetaDataChangedHandler {
             }
             return;
         }
-        dataSourceNodeName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode(event.getKey());
+        dataSourceNodeName = 
DataSourceMetaDataNodePath.findDataSourceNameByDataSourceNodePath(event.getKey());
         if (Type.DELETED == event.getType() && dataSourceNodeName.isPresent()) 
{
             storageNodeChangedHandler.handleUnregistered(databaseName, 
dataSourceNodeName.get());
         }

Reply via email to