You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/03/02 08:01:02 UTC

[shardingsphere] branch master updated: Optimize ScalingEntry (#9562)

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

panjuan 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 6e07d0e  Optimize ScalingEntry (#9562)
6e07d0e is described below

commit 6e07d0e425d74a1e40fc68c595229ad4067fafb3
Author: 邱鹿 Lucas <lu...@163.com>
AuthorDate: Tue Mar 2 16:00:33 2021 +0800

    Optimize ScalingEntry (#9562)
    
    * Optimize ScalingEntry
    
    * Optimize FixtureScalingEntry
    
    Co-authored-by: qiulu3 <Lucas209910>
---
 .../scaling/web/HttpServerHandlerTest.java         |   2 +-
 .../scaling/core/api/ScalingAPI.java               |   2 +-
 .../scaling/core/api/impl/ScalingAPIImpl.java      |   8 +-
 .../scaling/core/job/FinishedCheckJob.java         |   2 +-
 ...istencyChecker.java => EnvironmentChecker.java} |  19 +--
 ...Factory.java => EnvironmentCheckerFactory.java} |  24 +++-
 .../AbstractDataConsistencyChecker.java            |   2 +-
 .../DataConsistencyCheckResult.java                |   2 +-
 .../{ => consistency}/DataConsistencyChecker.java  |   2 +-
 .../source}/AbstractDataSourceChecker.java         |   2 +-
 .../source}/DataSourceChecker.java                 |   2 +-
 .../job/position/PositionInitializerFactory.java   |   2 +-
 .../core/job/preparer/ScalingJobPreparer.java      |   8 +-
 .../preparer/checker/DataSourceCheckerFactory.java |  43 ------
 .../scaling/core/spi/ScalingEntry.java             |  18 +--
 .../scaling/core/api/impl/ScalingAPIImplTest.java  |   2 +-
 .../executor/importer/AbstractSqlBuilderTest.java  |   4 +-
 .../fixture/FixtureDataConsistencyChecker.java     |   6 +-
 ...eChecker.java => FixtureDataSourceChecker.java} |   4 +-
 ...Builder.java => FixtureEnvironmentChecker.java} |  21 ++-
 ...ixtureNopImporter.java => FixtureImporter.java} |   4 +-
 ...alDumper.java => FixtureIncrementalDumper.java} |   4 +-
 ...toryDumper.java => FixtureInventoryDumper.java} |   4 +-
 .../core/fixture/FixtureRegistryRepository.java    | 144 ---------------------
 ...alingSQLBuilder.java => FixtureSQLBuilder.java} |   4 +-
 ...2ScalingEntry.java => FixtureScalingEntry.java} |  24 ++--
 .../scaling/core/job/FinishedCheckJobTest.java     |   2 +-
 .../check/AbstractDataConsistencyCheckerTest.java  |   4 +-
 .../AbstractDataSourceCheckerTest.java             |   3 +-
 .../scaling/core/spi/ScalingEntryLoaderTest.java   |   4 +-
 ...re.governance.repository.api.RegistryRepository |  18 ---
 ...he.shardingsphere.scaling.core.spi.ScalingEntry |   2 +-
 .../scaling/mysql/MySQLScalingEntry.java           |  20 +--
 ...nlogDumper.java => MySQLIncrementalDumper.java} |   6 +-
 .../{ => checker}/MySQLDataConsistencyChecker.java |   5 +-
 .../{ => checker}/MySQLDataSourceChecker.java      |   5 +-
 .../checker/MySQLEnvironmentChecker.java}          |  28 ++--
 .../scaling/mysql/MySQLScalingEntryTest.java       |  18 +--
 .../component/MySQLDataSourceCheckerTest.java      |   1 +
 ...erTest.java => MySQLIncrementalDumperTest.java} |  22 ++--
 .../scaling/postgresql/PostgreSQLScalingEntry.java |  14 +-
 .../PostgreSQLDataConsistencyChecker.java          |   5 +-
 .../{ => checker}/PostgreSQLDataSourceChecker.java |   5 +-
 .../checker/PostgreSQLEnvironmentChecker.java}     |  21 +--
 .../postgresql/PostgreSQLScalingEntryTest.java     |  14 +-
 .../component/PostgreSQLDataSourceCheckerTest.java |   1 +
 46 files changed, 168 insertions(+), 389 deletions(-)

diff --git a/shardingsphere-scaling/shardingsphere-scaling-bootstrap/src/test/java/org/apache/shardingsphere/scaling/web/HttpServerHandlerTest.java b/shardingsphere-scaling/shardingsphere-scaling-bootstrap/src/test/java/org/apache/shardingsphere/scaling/web/HttpServerHandlerTest.java
index 434b7c2..839c6a3 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-bootstrap/src/test/java/org/apache/shardingsphere/scaling/web/HttpServerHandlerTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-bootstrap/src/test/java/org/apache/shardingsphere/scaling/web/HttpServerHandlerTest.java
@@ -34,7 +34,7 @@ import org.apache.shardingsphere.scaling.core.api.JobInfo;
 import org.apache.shardingsphere.scaling.core.api.ScalingAPI;
 import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 import org.apache.shardingsphere.scaling.core.job.progress.JobProgress;
 import org.apache.shardingsphere.scaling.core.util.ReflectionUtil;
 import org.apache.shardingsphere.scaling.util.ServerConfigurationInitializer;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/ScalingAPI.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/ScalingAPI.java
index de78cf0..fb56f8d 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/ScalingAPI.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/ScalingAPI.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.scaling.core.api;
 
 import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 import org.apache.shardingsphere.scaling.core.job.progress.JobProgress;
 
 import java.sql.SQLException;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImpl.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImpl.java
index ca68fb8..8c3ff12 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImpl.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImpl.java
@@ -28,9 +28,9 @@ import org.apache.shardingsphere.scaling.core.common.exception.ScalingJobNotFoun
 import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
 import org.apache.shardingsphere.scaling.core.job.ScalingJob;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyChecker;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckerFactory;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentCheckerFactory;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
 import org.apache.shardingsphere.scaling.core.job.environment.ScalingEnvironmentManager;
 import org.apache.shardingsphere.scaling.core.job.progress.JobProgress;
 import org.apache.shardingsphere.scaling.core.util.JobConfigurationUtil;
@@ -124,7 +124,7 @@ public final class ScalingAPIImpl implements ScalingAPI {
     
     @Override
     public Map<String, DataConsistencyCheckResult> dataConsistencyCheck(final long jobId) {
-        DataConsistencyChecker dataConsistencyChecker = DataConsistencyCheckerFactory.newInstance(new JobContext(getJobConfig(jobId)));
+        DataConsistencyChecker dataConsistencyChecker = EnvironmentCheckerFactory.newInstance(new JobContext(getJobConfig(jobId)));
         Map<String, DataConsistencyCheckResult> result = dataConsistencyChecker.countCheck();
         if (result.values().stream().allMatch(DataConsistencyCheckResult::isCountValid)) {
             Map<String, Boolean> dataCheckResult = dataConsistencyChecker.dataCheck();
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJob.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJob.java
index fa43389..450ff87 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJob.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJob.java
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.scaling.core.api.ScalingAPIFactory;
 import org.apache.shardingsphere.scaling.core.common.constant.ScalingConstant;
 import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
 import org.apache.shardingsphere.scaling.core.config.WorkflowConfiguration;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 import org.apache.shardingsphere.scaling.core.util.ScalingTaskUtil;
 import org.apache.shardingsphere.scaling.core.util.ThreadUtil;
 
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
similarity index 62%
copy from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
index bf506ab..84e9434 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
@@ -17,24 +17,25 @@
 
 package org.apache.shardingsphere.scaling.core.job.check;
 
-import java.util.Map;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
 
 /**
- * Data consistency checker interface.
+ * Environment checker.
  */
-public interface DataConsistencyChecker {
+public interface EnvironmentChecker {
     
     /**
-     * Check each table count is valid.
+     * Get data source checker type.
      *
-     * @return count check result
+     * @return data source checker type.
      */
-    Map<String, DataConsistencyCheckResult> countCheck();
+    Class<? extends DataSourceChecker> getDataSourceCheckerClass();
     
     /**
-     * Check each table data is valid.
+     * Get data consistency checker type.
      *
-     * @return data is valid or not
+     * @return data consistency checker type.
      */
-    Map<String, Boolean> dataCheck();
+    Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass();
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckerFactory.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
similarity index 61%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckerFactory.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
index 03a454a..3d5f659 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckerFactory.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
@@ -17,18 +17,18 @@
 
 package org.apache.shardingsphere.scaling.core.job.check;
 
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntryLoader;
 
 /**
- * Data consistency checker factory.
+ * Environment checker factory.
  */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DataConsistencyCheckerFactory {
+public final class EnvironmentCheckerFactory {
+    
     
     /**
      * Create data consistency checker instance.
@@ -39,6 +39,18 @@ public final class DataConsistencyCheckerFactory {
     @SneakyThrows(ReflectiveOperationException.class)
     public static DataConsistencyChecker newInstance(final JobContext jobContext) {
         ScalingEntry scalingEntry = ScalingEntryLoader.getInstance(jobContext.getJobConfig().getHandleConfig().getDatabaseType());
-        return scalingEntry.getDataConsistencyCheckerClass().getConstructor(JobContext.class).newInstance(jobContext);
+        return scalingEntry.getEnvironmentCheckerClass().getConstructor().newInstance().getDataConsistencyCheckerClass().getConstructor(JobContext.class).newInstance(jobContext);
+    }
+    
+    /**
+     * Create data source checker instance.
+     *
+     * @param databaseType database type
+     * @return data source checker
+     */
+    @SneakyThrows(ReflectiveOperationException.class)
+    public static DataSourceChecker newInstance(final String databaseType) {
+        ScalingEntry scalingEntry = ScalingEntryLoader.getInstance(databaseType);
+        return scalingEntry.getEnvironmentCheckerClass().getConstructor().newInstance().getDataSourceCheckerClass().getConstructor().newInstance();
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/AbstractDataConsistencyChecker.java
similarity index 98%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/AbstractDataConsistencyChecker.java
index c83c94e..e2861a5 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/AbstractDataConsistencyChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.check;
+package org.apache.shardingsphere.scaling.core.job.check.consistency;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckResult.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyCheckResult.java
similarity index 95%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckResult.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyCheckResult.java
index 40d293e..e039a4d 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyCheckResult.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyCheckResult.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.check;
+package org.apache.shardingsphere.scaling.core.job.check.consistency;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyChecker.java
similarity index 94%
copy from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyChecker.java
index bf506ab..758a243 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/consistency/DataConsistencyChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.check;
+package org.apache.shardingsphere.scaling.core.job.check.consistency;
 
 import java.util.Map;
 
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/AbstractDataSourceChecker.java
similarity index 97%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/AbstractDataSourceChecker.java
index 052b108..47d15a4 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/AbstractDataSourceChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.preparer.checker;
+package org.apache.shardingsphere.scaling.core.job.check.source;
 
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/DataSourceChecker.java
similarity index 96%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/DataSourceChecker.java
index eec3083..fa2de9c 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/source/DataSourceChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.preparer.checker;
+package org.apache.shardingsphere.scaling.core.job.check.source;
 
 import javax.sql.DataSource;
 import java.util.Collection;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/position/PositionInitializerFactory.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/position/PositionInitializerFactory.java
index 0bbf66f..55fd35d 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/position/PositionInitializerFactory.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/position/PositionInitializerFactory.java
@@ -36,6 +36,6 @@ public final class PositionInitializerFactory {
      */
     @SneakyThrows(ReflectiveOperationException.class)
     public static PositionInitializer newInstance(final String databaseType) {
-        return ScalingEntryLoader.getInstance(databaseType).getPositionInitializer().newInstance();
+        return ScalingEntryLoader.getInstance(databaseType).getPositionInitializerClass().newInstance();
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
index 94fc1d9..9120a54 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
@@ -23,10 +23,10 @@ import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedExce
 import org.apache.shardingsphere.scaling.core.config.TaskConfiguration;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
 import org.apache.shardingsphere.scaling.core.job.JobStatus;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentCheckerFactory;
+import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
 import org.apache.shardingsphere.scaling.core.job.position.PositionInitializerFactory;
 import org.apache.shardingsphere.scaling.core.job.position.ScalingPosition;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.DataSourceChecker;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.DataSourceCheckerFactory;
 import org.apache.shardingsphere.scaling.core.job.preparer.splitter.InventoryTaskSplitter;
 import org.apache.shardingsphere.scaling.core.job.task.ScalingTaskFactory;
 import org.apache.shardingsphere.scaling.core.job.task.inventory.InventoryTask;
@@ -67,14 +67,14 @@ public final class ScalingJobPreparer {
     }
     
     private void checkSourceDataSources(final JobContext jobContext, final DataSourceManager dataSourceManager) {
-        DataSourceChecker dataSourceChecker = DataSourceCheckerFactory.newInstance(jobContext.getJobConfig().getHandleConfig().getDatabaseType());
+        DataSourceChecker dataSourceChecker = EnvironmentCheckerFactory.newInstance(jobContext.getJobConfig().getHandleConfig().getDatabaseType());
         dataSourceChecker.checkConnection(dataSourceManager.getCachedDataSources().values());
         dataSourceChecker.checkPrivilege(dataSourceManager.getSourceDataSources().values());
         dataSourceChecker.checkVariable(dataSourceManager.getSourceDataSources().values());
     }
     
     private void checkTargetDataSources(final JobContext jobContext, final DataSourceManager dataSourceManager) {
-        DataSourceChecker dataSourceChecker = DataSourceCheckerFactory.newInstance(jobContext.getJobConfig().getHandleConfig().getDatabaseType());
+        DataSourceChecker dataSourceChecker = EnvironmentCheckerFactory.newInstance(jobContext.getJobConfig().getHandleConfig().getDatabaseType());
         dataSourceChecker.checkTargetTable(dataSourceManager.getTargetDataSources().values(), jobContext.getTaskConfigs().iterator().next().getImporterConfig().getShardingColumnsMap().keySet());
     }
     
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceCheckerFactory.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceCheckerFactory.java
deleted file mode 100644
index 679506b..0000000
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/DataSourceCheckerFactory.java
+++ /dev/null
@@ -1,43 +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.scaling.core.job.preparer.checker;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.SneakyThrows;
-import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
-import org.apache.shardingsphere.scaling.core.spi.ScalingEntryLoader;
-
-/**
- * Data source checker factory.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DataSourceCheckerFactory {
-    
-    /**
-     * New instance of data source checker.
-     *
-     * @param databaseType database type
-     * @return data source checker
-     */
-    @SneakyThrows(ReflectiveOperationException.class)
-    public static DataSourceChecker newInstance(final String databaseType) {
-        ScalingEntry scalingEntry = ScalingEntryLoader.getInstance(databaseType);
-        return scalingEntry.getDataSourceCheckerClass().getConstructor().newInstance();
-    }
-}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntry.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntry.java
index fdc5087..448ebc0 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntry.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntry.java
@@ -22,9 +22,8 @@ import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilde
 import org.apache.shardingsphere.scaling.core.executor.dumper.IncrementalDumper;
 import org.apache.shardingsphere.scaling.core.executor.dumper.InventoryDumper;
 import org.apache.shardingsphere.scaling.core.executor.importer.Importer;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
 import org.apache.shardingsphere.scaling.core.job.position.PositionInitializer;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.DataSourceChecker;
 
 /**
  * Scaling entry.
@@ -50,7 +49,7 @@ public interface ScalingEntry extends DatabaseTypeAwareSPI {
      *
      * @return position initializer type
      */
-    Class<? extends PositionInitializer> getPositionInitializer();
+    Class<? extends PositionInitializer> getPositionInitializerClass();
     
     /**
      * Get importer type.
@@ -60,18 +59,11 @@ public interface ScalingEntry extends DatabaseTypeAwareSPI {
     Class<? extends Importer> getImporterClass();
     
     /**
-     * Get data source checker.
+     * Get environment checker type.
      *
-     * @return data source checker type
+     * @return environment checker type
      */
-    Class<? extends DataSourceChecker> getDataSourceCheckerClass();
-    
-    /**
-     * Get data consistency checker.
-     *
-     * @return data consistency checker type
-     */
-    Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass();
+    Class<? extends EnvironmentChecker> getEnvironmentCheckerClass();
     
     /**
      * Get SQL builder class.
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImplTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImplTest.java
index d932eb2..5c5f281 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImplTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/api/impl/ScalingAPIImplTest.java
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.scaling.core.config.RuleConfiguration;
 import org.apache.shardingsphere.scaling.core.config.ScalingContext;
 import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
 import org.apache.shardingsphere.scaling.core.fixture.EmbedTestingServer;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 import org.apache.shardingsphere.scaling.core.job.progress.JobProgress;
 import org.apache.shardingsphere.scaling.core.util.ReflectionUtil;
 import org.apache.shardingsphere.scaling.core.util.ResourceUtil;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/executor/importer/AbstractSqlBuilderTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/executor/importer/AbstractSqlBuilderTest.java
index 5949c45..aca5c0c 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/executor/importer/AbstractSqlBuilderTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/executor/importer/AbstractSqlBuilderTest.java
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.scaling.core.common.record.Column;
 import org.apache.shardingsphere.scaling.core.common.record.DataRecord;
 import org.apache.shardingsphere.scaling.core.common.record.RecordUtil;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
-import org.apache.shardingsphere.scaling.core.fixture.FixtureScalingSQLBuilder;
+import org.apache.shardingsphere.scaling.core.fixture.FixtureSQLBuilder;
 import org.apache.shardingsphere.scaling.core.job.position.PlaceholderPosition;
 import org.junit.Test;
 
@@ -34,7 +34,7 @@ import static org.junit.Assert.assertThat;
 
 public final class AbstractSqlBuilderTest {
     
-    private final ScalingSQLBuilder scalingSqlBuilder = new FixtureScalingSQLBuilder(Maps.newHashMap());
+    private final ScalingSQLBuilder scalingSqlBuilder = new FixtureSQLBuilder(Maps.newHashMap());
     
     @Test
     public void assertBuildInsertSQL() {
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataConsistencyChecker.java
index e1474aa..232226c 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataConsistencyChecker.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.scaling.core.fixture;
 import com.google.common.collect.Maps;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
-import org.apache.shardingsphere.scaling.core.job.check.AbstractDataConsistencyChecker;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.AbstractDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 
 import java.util.Collections;
 import java.util.Map;
@@ -44,6 +44,6 @@ public final class FixtureDataConsistencyChecker extends AbstractDataConsistency
     
     @Override
     protected ScalingSQLBuilder getSqlBuilder() {
-        return new FixtureScalingSQLBuilder(Maps.newHashMap());
+        return new FixtureSQLBuilder(Maps.newHashMap());
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2DataSourceChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourceChecker.java
similarity index 89%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2DataSourceChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourceChecker.java
index fae4f29..d9c1954 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2DataSourceChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourceChecker.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.scaling.core.fixture;
 
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.DataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
 
 import javax.sql.DataSource;
 import java.util.Collection;
 
-public final class FixtureH2DataSourceChecker implements DataSourceChecker {
+public final class FixtureDataSourceChecker implements DataSourceChecker {
     
     @Override
     public void checkConnection(final Collection<? extends DataSource> dataSources) {
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
similarity index 60%
copy from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
index 9c59296..0a8066e 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
@@ -17,24 +17,19 @@
 
 package org.apache.shardingsphere.scaling.core.fixture;
 
-import org.apache.shardingsphere.scaling.core.common.sqlbuilder.AbstractScalingSQLBuilder;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
 
-import java.util.Map;
-import java.util.Set;
-
-public final class FixtureScalingSQLBuilder extends AbstractScalingSQLBuilder {
-    
-    public FixtureScalingSQLBuilder(final Map<String, Set<String>> shardingColumnsMap) {
-        super(shardingColumnsMap);
-    }
+public final class FixtureEnvironmentChecker implements EnvironmentChecker {
     
     @Override
-    protected String getLeftIdentifierQuoteString() {
-        return "`";
+    public Class<? extends DataSourceChecker> getDataSourceCheckerClass() {
+        return FixtureDataSourceChecker.class;
     }
     
     @Override
-    protected String getRightIdentifierQuoteString() {
-        return "`";
+    public Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass() {
+        return FixtureDataConsistencyChecker.class;
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureNopImporter.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureImporter.java
similarity index 89%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureNopImporter.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureImporter.java
index 3d4d1a6..ed32b4a 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureNopImporter.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureImporter.java
@@ -22,9 +22,9 @@ import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceManage
 import org.apache.shardingsphere.scaling.core.config.ImporterConfiguration;
 import org.apache.shardingsphere.scaling.core.executor.importer.Importer;
 
-public final class FixtureNopImporter implements Importer {
+public final class FixtureImporter implements Importer {
     
-    public FixtureNopImporter(final ImporterConfiguration importerConfig, final DataSourceManager dataSourceManager) {
+    public FixtureImporter(final ImporterConfiguration importerConfig, final DataSourceManager dataSourceManager) {
     }
     
     @Override
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2IncrementalDumper.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureIncrementalDumper.java
similarity index 87%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2IncrementalDumper.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureIncrementalDumper.java
index f872216..47a5ed1 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2IncrementalDumper.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureIncrementalDumper.java
@@ -22,9 +22,9 @@ import org.apache.shardingsphere.scaling.core.config.DumperConfiguration;
 import org.apache.shardingsphere.scaling.core.executor.dumper.IncrementalDumper;
 import org.apache.shardingsphere.scaling.core.job.position.ScalingPosition;
 
-public final class FixtureH2IncrementalDumper implements IncrementalDumper {
+public final class FixtureIncrementalDumper implements IncrementalDumper {
     
-    public FixtureH2IncrementalDumper(final DumperConfiguration dumperConfig, final ScalingPosition<?> position) {
+    public FixtureIncrementalDumper(final DumperConfiguration dumperConfig, final ScalingPosition<?> position) {
     }
     
     @Override
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2InventoryDumper.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureInventoryDumper.java
similarity index 87%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2InventoryDumper.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureInventoryDumper.java
index e7c9f68..d653080 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2InventoryDumper.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureInventoryDumper.java
@@ -25,9 +25,9 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 
-public final class FixtureH2InventoryDumper extends AbstractInventoryDumper {
+public final class FixtureInventoryDumper extends AbstractInventoryDumper {
     
-    public FixtureH2InventoryDumper(final InventoryDumperConfiguration dumperConfig, final DataSourceManager dataSourceManager) {
+    public FixtureInventoryDumper(final InventoryDumperConfiguration dumperConfig, final DataSourceManager dataSourceManager) {
         super(dumperConfig, dataSourceManager);
     }
     
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureRegistryRepository.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureRegistryRepository.java
deleted file mode 100644
index bab5023..0000000
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureRegistryRepository.java
+++ /dev/null
@@ -1,144 +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.scaling.core.fixture;
-
-import com.google.common.collect.Maps;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
-import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.config.GovernanceCenterConfiguration;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEventListener;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-public final class FixtureRegistryRepository implements RegistryRepository, ConfigurationRepository {
-    
-    private static final Node REGISTRY_DATA = new Node();
-    
-    @Override
-    public void init(final String name, final GovernanceCenterConfiguration config) {
-    }
-    
-    @Override
-    public String get(final String key) {
-        String[] paths = key.split("/");
-        Node temp = REGISTRY_DATA;
-        for (String path : paths) {
-            if (null == temp) {
-                return null;
-            }
-            temp = temp.get(path);
-        }
-        return null == temp ? null : temp.getValue();
-    }
-    
-    @Override
-    public List<String> getChildrenKeys(final String key) {
-        String[] paths = key.split("/");
-        Node temp = REGISTRY_DATA;
-        for (String path : paths) {
-            if (null == temp) {
-                return Collections.emptyList();
-            }
-            temp = temp.get(path);
-        }
-        return null == temp ? Collections.emptyList() : new ArrayList<>(temp.getChildren().keySet());
-    }
-    
-    @Override
-    public void persist(final String key, final String value) {
-        String[] paths = key.split("/");
-        Node temp = REGISTRY_DATA;
-        for (int i = 0; i < paths.length; i++) {
-            if (i != paths.length - 1) {
-                temp.add(paths[i]);
-            } else {
-                temp.put(paths[i], value);
-            }
-            temp = temp.get(paths[i]);
-        }
-    }
-    
-    @Override
-    public void persistEphemeral(final String key, final String value) {
-        persist(key, value);
-    }
-    
-    @Override
-    public boolean tryLock(final String key, final long time, final TimeUnit unit) {
-        return false;
-    }
-    
-    @Override
-    public void releaseLock(final String key) {
-    }
-    
-    @Override
-    public void delete(final String key) {
-    }
-    
-    @Override
-    public void watch(final String key, final DataChangedEventListener listener) {
-    }
-    
-    @Override
-    public void close() {
-        REGISTRY_DATA.clear();
-    }
-    
-    @Override
-    public String getType() {
-        return "REG_FIXTURE";
-    }
-    
-    @Getter
-    @Setter
-    private static class Node {
-        
-        private String value;
-        
-        private Map<String, Node> children = Maps.newHashMap();
-        
-        public void add(final String key) {
-            if (!children.containsKey(key)) {
-                children.put(key, new Node());
-            }
-        }
-        
-        public void put(final String key, final String value) {
-            if (!children.containsKey(key)) {
-                children.put(key, new Node());
-            }
-            children.get(key).setValue(value);
-        }
-        
-        public Node get(final String key) {
-            return children.get(key);
-        }
-        
-        public void clear() {
-            value = null;
-            children.clear();
-        }
-    }
-}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureSQLBuilder.java
similarity index 88%
copy from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureSQLBuilder.java
index 9c59296..29d8ae0 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureSQLBuilder.java
@@ -22,9 +22,9 @@ import org.apache.shardingsphere.scaling.core.common.sqlbuilder.AbstractScalingS
 import java.util.Map;
 import java.util.Set;
 
-public final class FixtureScalingSQLBuilder extends AbstractScalingSQLBuilder {
+public final class FixtureSQLBuilder extends AbstractScalingSQLBuilder {
     
-    public FixtureScalingSQLBuilder(final Map<String, Set<String>> shardingColumnsMap) {
+    public FixtureSQLBuilder(final Map<String, Set<String>> shardingColumnsMap) {
         super(shardingColumnsMap);
     }
     
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2ScalingEntry.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingEntry.java
similarity index 73%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2ScalingEntry.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingEntry.java
index 478f9aa..f1e7315 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureH2ScalingEntry.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingEntry.java
@@ -21,46 +21,40 @@ import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilde
 import org.apache.shardingsphere.scaling.core.executor.dumper.IncrementalDumper;
 import org.apache.shardingsphere.scaling.core.executor.dumper.InventoryDumper;
 import org.apache.shardingsphere.scaling.core.executor.importer.Importer;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
 import org.apache.shardingsphere.scaling.core.job.position.PositionInitializer;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.DataSourceChecker;
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
 
-public final class FixtureH2ScalingEntry implements ScalingEntry {
+public final class FixtureScalingEntry implements ScalingEntry {
     
     @Override
     public Class<? extends InventoryDumper> getInventoryDumperClass() {
-        return FixtureH2InventoryDumper.class;
+        return FixtureInventoryDumper.class;
     }
     
     @Override
     public Class<? extends IncrementalDumper> getIncrementalDumperClass() {
-        return FixtureH2IncrementalDumper.class;
+        return FixtureIncrementalDumper.class;
     }
     
     @Override
-    public Class<? extends PositionInitializer> getPositionInitializer() {
+    public Class<? extends PositionInitializer> getPositionInitializerClass() {
         return FixturePositionInitializer.class;
     }
     
     @Override
     public Class<? extends Importer> getImporterClass() {
-        return FixtureNopImporter.class;
+        return FixtureImporter.class;
     }
     
     @Override
-    public Class<? extends DataSourceChecker> getDataSourceCheckerClass() {
-        return FixtureH2DataSourceChecker.class;
-    }
-    
-    @Override
-    public Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass() {
-        return FixtureDataConsistencyChecker.class;
+    public Class<? extends EnvironmentChecker> getEnvironmentCheckerClass() {
+        return FixtureEnvironmentChecker.class;
     }
     
     @Override
     public Class<? extends ScalingSQLBuilder> getSQLBuilderClass() {
-        return FixtureScalingSQLBuilder.class;
+        return FixtureSQLBuilder.class;
     }
     
     @Override
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJobTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJobTest.java
index d03f30e..799ff5a 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJobTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/FinishedCheckJobTest.java
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.scaling.core.config.ScalingContext;
 import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
 import org.apache.shardingsphere.scaling.core.config.WorkflowConfiguration;
 import org.apache.shardingsphere.scaling.core.fixture.EmbedTestingServer;
-import org.apache.shardingsphere.scaling.core.job.check.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
 import org.apache.shardingsphere.scaling.core.util.ReflectionUtil;
 import org.apache.shardingsphere.scaling.core.util.ResourceUtil;
 import org.junit.AfterClass;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyCheckerTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyCheckerTest.java
index b55466d..09ab29a 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyCheckerTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataConsistencyCheckerTest.java
@@ -21,6 +21,8 @@ import lombok.SneakyThrows;
 import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceManager;
 import org.apache.shardingsphere.scaling.core.config.datasource.ScalingDataSourceConfiguration;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyCheckResult;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
 import org.apache.shardingsphere.scaling.core.util.ResourceUtil;
 import org.junit.Test;
 
@@ -39,7 +41,7 @@ public final class AbstractDataConsistencyCheckerTest {
     @Test
     public void assertCountCheck() {
         JobContext jobContext = new JobContext(ResourceUtil.mockJobConfig());
-        DataConsistencyChecker dataConsistencyChecker = DataConsistencyCheckerFactory.newInstance(jobContext);
+        DataConsistencyChecker dataConsistencyChecker = EnvironmentCheckerFactory.newInstance(jobContext);
         initTableData(jobContext.getTaskConfigs().get(0).getDumperConfig().getDataSourceConfig());
         initTableData(jobContext.getTaskConfigs().get(0).getImporterConfig().getDataSourceConfig());
         Map<String, DataConsistencyCheckResult> resultMap = dataConsistencyChecker.countCheck();
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceCheckerTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataSourceCheckerTest.java
similarity index 94%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceCheckerTest.java
rename to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataSourceCheckerTest.java
index 623a218..1325a81 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/preparer/checker/AbstractDataSourceCheckerTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/check/AbstractDataSourceCheckerTest.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.preparer.checker;
+package org.apache.shardingsphere.scaling.core.job.check;
 
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
+import org.apache.shardingsphere.scaling.core.job.check.source.AbstractDataSourceChecker;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
index 70aecf4..cba302a 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.scaling.core.spi;
 
-import org.apache.shardingsphere.scaling.core.fixture.FixtureH2ScalingEntry;
+import org.apache.shardingsphere.scaling.core.fixture.FixtureScalingEntry;
 import org.junit.Test;
 
 import static org.junit.Assert.assertTrue;
@@ -27,7 +27,7 @@ public final class ScalingEntryLoaderTest {
     @Test
     public void assertGetFixtureInstance() {
         ScalingEntry actual = ScalingEntryLoader.getInstance("H2");
-        assertTrue(actual instanceof FixtureH2ScalingEntry);
+        assertTrue(actual instanceof FixtureScalingEntry);
     }
     
     @Test(expected = UnsupportedOperationException.class)
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.governance.repository.api.RegistryRepository b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.governance.repository.api.RegistryRepository
deleted file mode 100644
index df0fa47..0000000
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.governance.repository.api.RegistryRepository
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.scaling.core.fixture.FixtureRegistryRepository
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.scaling.core.spi.ScalingEntry b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.scaling.core.spi.ScalingEntry
index 281bbdb..bb0a722 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.scaling.core.spi.ScalingEntry
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/resources/META-INF/services/org.apache.shardingsphere.scaling.core.spi.ScalingEntry
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.scaling.core.fixture.FixtureH2ScalingEntry
+org.apache.shardingsphere.scaling.core.fixture.FixtureScalingEntry
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntry.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntry.java
index e7afc30..495916d 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntry.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntry.java
@@ -18,13 +18,12 @@
 package org.apache.shardingsphere.scaling.mysql;
 
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLBinlogDumper;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLDataConsistencyChecker;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLDataSourceChecker;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLImporter;
+import org.apache.shardingsphere.scaling.mysql.component.MySQLIncrementalDumper;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLInventoryDumper;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLPositionInitializer;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLScalingSQLBuilder;
+import org.apache.shardingsphere.scaling.mysql.component.checker.MySQLEnvironmentChecker;
 
 /**
  * MySQL scaling entry.
@@ -37,12 +36,12 @@ public final class MySQLScalingEntry implements ScalingEntry {
     }
     
     @Override
-    public Class<MySQLBinlogDumper> getIncrementalDumperClass() {
-        return MySQLBinlogDumper.class;
+    public Class<MySQLIncrementalDumper> getIncrementalDumperClass() {
+        return MySQLIncrementalDumper.class;
     }
     
     @Override
-    public Class<MySQLPositionInitializer> getPositionInitializer() {
+    public Class<MySQLPositionInitializer> getPositionInitializerClass() {
         return MySQLPositionInitializer.class;
     }
     
@@ -52,13 +51,8 @@ public final class MySQLScalingEntry implements ScalingEntry {
     }
     
     @Override
-    public Class<MySQLDataSourceChecker> getDataSourceCheckerClass() {
-        return MySQLDataSourceChecker.class;
-    }
-    
-    @Override
-    public Class<MySQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
-        return MySQLDataConsistencyChecker.class;
+    public Class<MySQLEnvironmentChecker> getEnvironmentCheckerClass() {
+        return MySQLEnvironmentChecker.class;
     }
     
     @Override
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumper.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumper.java
similarity index 97%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumper.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumper.java
index 075440f..8a0a9b1 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumper.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumper.java
@@ -54,10 +54,10 @@ import java.util.Objects;
 import java.util.Random;
 
 /**
- * MySQL binlog dumper.
+ * MySQL incremental dumper.
  */
 @Slf4j
-public final class MySQLBinlogDumper extends AbstractScalingExecutor implements IncrementalDumper {
+public final class MySQLIncrementalDumper extends AbstractScalingExecutor implements IncrementalDumper {
     
     private final BinlogPosition binlogPosition;
     
@@ -70,7 +70,7 @@ public final class MySQLBinlogDumper extends AbstractScalingExecutor implements
     @Setter
     private Channel channel;
     
-    public MySQLBinlogDumper(final DumperConfiguration dumperConfig, final ScalingPosition<BinlogPosition> binlogPosition) {
+    public MySQLIncrementalDumper(final DumperConfiguration dumperConfig, final ScalingPosition<BinlogPosition> binlogPosition) {
         this.binlogPosition = (BinlogPosition) binlogPosition;
         this.dumperConfig = dumperConfig;
         Preconditions.checkArgument(dumperConfig.getDataSourceConfig() instanceof StandardJDBCDataSourceConfiguration, "MySQLBinlogDumper only support StandardJDBCDataSourceConfiguration");
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataConsistencyChecker.java
similarity index 94%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataConsistencyChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataConsistencyChecker.java
index 6c325a2..82f7d8a 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataConsistencyChecker.java
@@ -15,13 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.mysql.component;
+package org.apache.shardingsphere.scaling.mysql.component.checker;
 
 import com.google.common.collect.Maps;
 import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceWrapper;
 import org.apache.shardingsphere.scaling.core.common.exception.DataCheckFailException;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
-import org.apache.shardingsphere.scaling.core.job.check.AbstractDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.AbstractDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.mysql.component.MySQLScalingSQLBuilder;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourceChecker.java
similarity index 95%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourceChecker.java
index ff6a24b..7b1552b 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourceChecker.java
@@ -15,11 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.mysql.component;
+package org.apache.shardingsphere.scaling.mysql.component.checker;
 
 import com.google.common.collect.Maps;
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.AbstractDataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.AbstractDataSourceChecker;
+import org.apache.shardingsphere.scaling.mysql.component.MySQLScalingSQLBuilder;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
similarity index 60%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
index bf506ab..ce34ebf 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/DataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
@@ -15,26 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.job.check;
+package org.apache.shardingsphere.scaling.mysql.component.checker;
 
-import java.util.Map;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
 
 /**
- * Data consistency checker interface.
+ * MySQL environment checker.
  */
-public interface DataConsistencyChecker {
+public final class MySQLEnvironmentChecker implements EnvironmentChecker {
     
-    /**
-     * Check each table count is valid.
-     *
-     * @return count check result
-     */
-    Map<String, DataConsistencyCheckResult> countCheck();
+    @Override
+    public Class<MySQLDataSourceChecker> getDataSourceCheckerClass() {
+        return MySQLDataSourceChecker.class;
+    }
     
-    /**
-     * Check each table data is valid.
-     *
-     * @return data is valid or not
-     */
-    Map<String, Boolean> dataCheck();
+    @Override
+    public Class<MySQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
+        return MySQLDataConsistencyChecker.class;
+    }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntryTest.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntryTest.java
index 3249dcf..d5297e1 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntryTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/MySQLScalingEntryTest.java
@@ -19,12 +19,13 @@ package org.apache.shardingsphere.scaling.mysql;
 
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntryLoader;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLBinlogDumper;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLDataConsistencyChecker;
-import org.apache.shardingsphere.scaling.mysql.component.MySQLDataSourceChecker;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLImporter;
+import org.apache.shardingsphere.scaling.mysql.component.MySQLIncrementalDumper;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLInventoryDumper;
 import org.apache.shardingsphere.scaling.mysql.component.MySQLPositionInitializer;
+import org.apache.shardingsphere.scaling.mysql.component.checker.MySQLDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.mysql.component.checker.MySQLDataSourceChecker;
+import org.apache.shardingsphere.scaling.mysql.component.checker.MySQLEnvironmentChecker;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -34,14 +35,15 @@ import static org.junit.Assert.assertTrue;
 public final class MySQLScalingEntryTest {
     
     @Test
-    public void assertGetScalingEntryByDatabaseType() {
+    public void assertGetScalingEntryByDatabaseType() throws IllegalAccessException, InstantiationException {
         ScalingEntry scalingEntry = ScalingEntryLoader.getInstance("MySQL");
         assertTrue(scalingEntry instanceof MySQLScalingEntry);
-        assertThat(scalingEntry.getPositionInitializer(), equalTo(MySQLPositionInitializer.class));
-        assertThat(scalingEntry.getDataSourceCheckerClass(), equalTo(MySQLDataSourceChecker.class));
+        assertThat(scalingEntry.getPositionInitializerClass(), equalTo(MySQLPositionInitializer.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass(), equalTo(MySQLEnvironmentChecker.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass().newInstance().getDataSourceCheckerClass(), equalTo(MySQLDataSourceChecker.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass().newInstance().getDataConsistencyCheckerClass(), equalTo(MySQLDataConsistencyChecker.class));
         assertThat(scalingEntry.getImporterClass(), equalTo(MySQLImporter.class));
         assertThat(scalingEntry.getInventoryDumperClass(), equalTo(MySQLInventoryDumper.class));
-        assertThat(scalingEntry.getIncrementalDumperClass(), equalTo(MySQLBinlogDumper.class));
-        assertThat(scalingEntry.getDataConsistencyCheckerClass(), equalTo(MySQLDataConsistencyChecker.class));
+        assertThat(scalingEntry.getIncrementalDumperClass(), equalTo(MySQLIncrementalDumper.class));
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceCheckerTest.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceCheckerTest.java
index 7a0c75a..45d086b 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceCheckerTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLDataSourceCheckerTest.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.scaling.mysql.component;
 
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
+import org.apache.shardingsphere.scaling.mysql.component.checker.MySQLDataSourceChecker;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumperTest.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumperTest.java
similarity index 95%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumperTest.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumperTest.java
index 6c72173..8c029e7 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLBinlogDumperTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/test/java/org/apache/shardingsphere/scaling/mysql/component/MySQLIncrementalDumperTest.java
@@ -19,17 +19,17 @@ package org.apache.shardingsphere.scaling.mysql.component;
 
 import lombok.SneakyThrows;
 import org.apache.commons.collections4.map.HashedMap;
-import org.apache.shardingsphere.scaling.core.config.DumperConfiguration;
-import org.apache.shardingsphere.scaling.core.config.datasource.StandardJDBCDataSourceConfiguration;
-import org.apache.shardingsphere.scaling.core.config.ScalingContext;
-import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
+import org.apache.shardingsphere.scaling.core.common.channel.MemoryChannel;
 import org.apache.shardingsphere.scaling.core.common.constant.ScalingConstant;
 import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceManager;
-import org.apache.shardingsphere.scaling.core.common.channel.MemoryChannel;
+import org.apache.shardingsphere.scaling.core.common.datasource.JdbcUri;
 import org.apache.shardingsphere.scaling.core.common.record.DataRecord;
 import org.apache.shardingsphere.scaling.core.common.record.PlaceholderRecord;
 import org.apache.shardingsphere.scaling.core.common.record.Record;
-import org.apache.shardingsphere.scaling.core.common.datasource.JdbcUri;
+import org.apache.shardingsphere.scaling.core.config.DumperConfiguration;
+import org.apache.shardingsphere.scaling.core.config.ScalingContext;
+import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
+import org.apache.shardingsphere.scaling.core.config.datasource.StandardJDBCDataSourceConfiguration;
 import org.apache.shardingsphere.scaling.core.util.ReflectionUtil;
 import org.apache.shardingsphere.scaling.mysql.binlog.BinlogPosition;
 import org.apache.shardingsphere.scaling.mysql.binlog.event.AbstractBinlogEvent;
@@ -53,11 +53,11 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-public final class MySQLBinlogDumperTest {
+public final class MySQLIncrementalDumperTest {
     
     private static final String URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL";
     
-    private MySQLBinlogDumper mysqlBinlogDumper;
+    private MySQLIncrementalDumper incrementalDumper;
     
     private MemoryChannel channel;
     
@@ -68,8 +68,8 @@ public final class MySQLBinlogDumperTest {
         initTableData(dumperConfig);
         channel = new MemoryChannel(records -> {
         });
-        mysqlBinlogDumper = new MySQLBinlogDumper(dumperConfig, new BinlogPosition("binlog-000001", 4L));
-        mysqlBinlogDumper.setChannel(channel);
+        incrementalDumper = new MySQLIncrementalDumper(dumperConfig, new BinlogPosition("binlog-000001", 4L));
+        incrementalDumper.setChannel(channel);
     }
     
     private DumperConfiguration mockDumperConfiguration() {
@@ -160,6 +160,6 @@ public final class MySQLBinlogDumperTest {
     
     @SneakyThrows({NoSuchMethodException.class, ReflectiveOperationException.class})
     private void invokeHandleEvent(final JdbcUri uri, final AbstractBinlogEvent event) {
-        ReflectionUtil.invokeMethod(mysqlBinlogDumper, "handleEvent", new Class[]{JdbcUri.class, AbstractBinlogEvent.class}, new Object[]{uri, event});
+        ReflectionUtil.invokeMethod(incrementalDumper, "handleEvent", new Class[]{JdbcUri.class, AbstractBinlogEvent.class}, new Object[]{uri, event});
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntry.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntry.java
index 90b5a4d..68d9e59 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntry.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntry.java
@@ -18,13 +18,12 @@
 package org.apache.shardingsphere.scaling.postgresql;
 
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
-import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLDataConsistencyChecker;
-import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLDataSourceChecker;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLImporter;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLInventoryDumper;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLPositionInitializer;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLScalingSQLBuilder;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLWalDumper;
+import org.apache.shardingsphere.scaling.postgresql.component.checker.PostgreSQLEnvironmentChecker;
 
 /**
  * PostgreSQL scaling entry.
@@ -42,7 +41,7 @@ public final class PostgreSQLScalingEntry implements ScalingEntry {
     }
     
     @Override
-    public Class<PostgreSQLPositionInitializer> getPositionInitializer() {
+    public Class<PostgreSQLPositionInitializer> getPositionInitializerClass() {
         return PostgreSQLPositionInitializer.class;
     }
     
@@ -52,13 +51,8 @@ public final class PostgreSQLScalingEntry implements ScalingEntry {
     }
     
     @Override
-    public Class<PostgreSQLDataSourceChecker> getDataSourceCheckerClass() {
-        return PostgreSQLDataSourceChecker.class;
-    }
-    
-    @Override
-    public Class<PostgreSQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
-        return PostgreSQLDataConsistencyChecker.class;
+    public Class<PostgreSQLEnvironmentChecker> getEnvironmentCheckerClass() {
+        return PostgreSQLEnvironmentChecker.class;
     }
     
     @Override
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataConsistencyChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataConsistencyChecker.java
similarity index 85%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataConsistencyChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataConsistencyChecker.java
index 1758448..6e14615 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataConsistencyChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataConsistencyChecker.java
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.postgresql.component;
+package org.apache.shardingsphere.scaling.postgresql.component.checker;
 
 import com.google.common.collect.Maps;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
 import org.apache.shardingsphere.scaling.core.job.JobContext;
-import org.apache.shardingsphere.scaling.core.job.check.AbstractDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.core.job.check.consistency.AbstractDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLScalingSQLBuilder;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataSourceChecker.java
similarity index 90%
rename from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceChecker.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataSourceChecker.java
index 4f88642..00accd5 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLDataSourceChecker.java
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.postgresql.component;
+package org.apache.shardingsphere.scaling.postgresql.component.checker;
 
 import com.google.common.collect.Maps;
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
 import org.apache.shardingsphere.scaling.core.common.sqlbuilder.ScalingSQLBuilder;
-import org.apache.shardingsphere.scaling.core.job.preparer.checker.AbstractDataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.check.source.AbstractDataSourceChecker;
+import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLScalingSQLBuilder;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
similarity index 60%
rename from shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
rename to shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
index 9c59296..a75d9ea 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureScalingSQLBuilder.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
@@ -15,26 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.scaling.core.fixture;
+package org.apache.shardingsphere.scaling.postgresql.component.checker;
 
-import org.apache.shardingsphere.scaling.core.common.sqlbuilder.AbstractScalingSQLBuilder;
+import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
 
-import java.util.Map;
-import java.util.Set;
-
-public final class FixtureScalingSQLBuilder extends AbstractScalingSQLBuilder {
-    
-    public FixtureScalingSQLBuilder(final Map<String, Set<String>> shardingColumnsMap) {
-        super(shardingColumnsMap);
-    }
+public final class PostgreSQLEnvironmentChecker implements EnvironmentChecker {
     
     @Override
-    protected String getLeftIdentifierQuoteString() {
-        return "`";
+    public Class<PostgreSQLDataSourceChecker> getDataSourceCheckerClass() {
+        return PostgreSQLDataSourceChecker.class;
     }
     
     @Override
-    protected String getRightIdentifierQuoteString() {
-        return "`";
+    public Class<PostgreSQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
+        return PostgreSQLDataConsistencyChecker.class;
     }
 }
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntryTest.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntryTest.java
index 62270bc..430b490 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntryTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/PostgreSQLScalingEntryTest.java
@@ -19,12 +19,13 @@ package org.apache.shardingsphere.scaling.postgresql;
 
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
 import org.apache.shardingsphere.scaling.core.spi.ScalingEntryLoader;
-import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLDataConsistencyChecker;
-import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLDataSourceChecker;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLImporter;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLInventoryDumper;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLPositionInitializer;
 import org.apache.shardingsphere.scaling.postgresql.component.PostgreSQLWalDumper;
+import org.apache.shardingsphere.scaling.postgresql.component.checker.PostgreSQLDataConsistencyChecker;
+import org.apache.shardingsphere.scaling.postgresql.component.checker.PostgreSQLDataSourceChecker;
+import org.apache.shardingsphere.scaling.postgresql.component.checker.PostgreSQLEnvironmentChecker;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -34,12 +35,13 @@ import static org.junit.Assert.assertTrue;
 public final class PostgreSQLScalingEntryTest {
     
     @Test
-    public void assertGetScalingEntryByDatabaseType() {
+    public void assertGetScalingEntryByDatabaseType() throws IllegalAccessException, InstantiationException {
         ScalingEntry scalingEntry = ScalingEntryLoader.getInstance("PostgreSQL");
         assertTrue(scalingEntry instanceof PostgreSQLScalingEntry);
-        assertThat(scalingEntry.getPositionInitializer(), equalTo(PostgreSQLPositionInitializer.class));
-        assertThat(scalingEntry.getDataSourceCheckerClass(), equalTo(PostgreSQLDataSourceChecker.class));
-        assertThat(scalingEntry.getDataConsistencyCheckerClass(), equalTo(PostgreSQLDataConsistencyChecker.class));
+        assertThat(scalingEntry.getPositionInitializerClass(), equalTo(PostgreSQLPositionInitializer.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass(), equalTo(PostgreSQLEnvironmentChecker.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass().newInstance().getDataSourceCheckerClass(), equalTo(PostgreSQLDataSourceChecker.class));
+        assertThat(scalingEntry.getEnvironmentCheckerClass().newInstance().getDataConsistencyCheckerClass(), equalTo(PostgreSQLDataConsistencyChecker.class));
         assertThat(scalingEntry.getImporterClass(), equalTo(PostgreSQLImporter.class));
         assertThat(scalingEntry.getInventoryDumperClass(), equalTo(PostgreSQLInventoryDumper.class));
         assertThat(scalingEntry.getIncrementalDumperClass(), equalTo(PostgreSQLWalDumper.class));
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceCheckerTest.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceCheckerTest.java
index e2b7380..cfdbc0f 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceCheckerTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/test/java/org/apache/shardingsphere/scaling/postgresql/component/PostgreSQLDataSourceCheckerTest.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.scaling.postgresql.component;
 
 import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
+import org.apache.shardingsphere.scaling.postgresql.component.checker.PostgreSQLDataSourceChecker;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;