You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/04/11 00:46:53 UTC

[iotdb] branch master updated: [IOTDB-2872] Rename vsg to dataRegion (#5470)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 600ba97481 [IOTDB-2872] Rename vsg to dataRegion (#5470)
600ba97481 is described below

commit 600ba97481cc57dc5dedd27a3dceacd8b45419a5
Author: Haonan <hh...@outlook.com>
AuthorDate: Mon Apr 11 08:46:46 2022 +0800

    [IOTDB-2872] Rename vsg to dataRegion (#5470)
---
 .../iotdb/cluster/ClusterFileFlushPolicy.java      |  11 +-
 .../partition/slot/SlotTimePartitionFilter.java    |   2 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |   2 +-
 .../cluster/server/member/DataGroupMember.java     |   2 +-
 .../apache/iotdb/cluster/utils/StatusUtils.java    |   2 +-
 .../cluster/log/applier/DataLogApplierTest.java    |  10 +-
 .../cluster/log/snapshot/FileSnapshotTest.java     |  14 +-
 .../log/snapshot/PartitionedSnapshotTest.java      |   6 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |   4 +-
 .../cluster/server/member/DataGroupMemberTest.java |   4 +-
 .../cluster/server/member/MetaGroupMemberTest.java |   4 +-
 .../{VirtualStorageGroup.md => DataRegion.md}      |  10 +-
 docs/UserGuide/Reference/Config-Manual.md          |  16 +-
 .../{VirtualStorageGroup.md => DataRegion.md}      |  12 +-
 docs/zh/UserGuide/Reference/Config-Manual.md       |  16 +-
 .../iotdb/integration/env/ClusterEnvConfig.java    |   5 +-
 .../org/apache/iotdb/itbase/env/BaseConfig.java    |   2 +-
 .../iotdb/db/integration/IoTDBCompleteIT.java      |   9 +-
 .../db/integration/IoTDBLoadExternalTsfileIT.java  |   6 +-
 .../db/integration/IoTDBNewTsFileCompactionIT.java |   7 +-
 .../aligned/IoTDBLoadExternalAlignedTsFileIT.java  |   6 +-
 .../db/integration/env/StandaloneEnvConfig.java    |   4 +-
 .../resources/conf/iotdb-engine.properties         |   8 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  12 +-
 .../org/apache/iotdb/db/conf/IoTDBConfigCheck.java |  15 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   5 +-
 .../apache/iotdb/db/consensus/ConsensusImpl.java   |   4 +-
 .../statemachine/DataRegionStateMachine.java       |   2 +-
 .../org/apache/iotdb/db/engine/StorageEngine.java  | 116 ++++++------
 .../apache/iotdb/db/engine/StorageEngineV2.java    |  87 +++++----
 .../db/engine/compaction/CompactionScheduler.java  |   6 +-
 .../db/engine/compaction/TsFileIdentifier.java     |  30 ++--
 .../AbstractCrossSpaceCompactionSelector.java      |   6 +-
 .../RewriteCrossSpaceCompactionSelector.java       |   4 +-
 .../AbstractInnerSpaceCompactionSelector.java      |   6 +-
 .../sizetiered/SizeTieredCompactionSelector.java   |   2 +-
 .../compaction/task/CompactionRecoverManager.java  |  25 +--
 .../iotdb/db/engine/flush/TsFileFlushPolicy.java   |  14 +-
 ...lStorageGroupProcessor.java => DataRegion.java} | 144 +++++++--------
 .../db/engine/storagegroup/StorageGroupInfo.java   |  10 +-
 .../db/engine/storagegroup/TsFileManager.java      |  15 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   4 +-
 .../engine/storagegroup/TsFileProcessorInfo.java   |   9 +-
 .../db/engine/storagegroup/TsFileResource.java     |   4 +-
 .../HashVirtualPartitioner.java                    |   6 +-
 .../StorageGroupManager.java                       | 195 +++++++++------------
 .../VirtualPartitioner.java                        |  10 +-
 ...ssorException.java => DataRegionException.java} |  10 +-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |  10 +-
 .../apache/iotdb/db/mpp/execution/DataDriver.java  |   4 +-
 .../iotdb/db/mpp/execution/DataDriverContext.java  |   8 +-
 .../db/mpp/execution/FragmentInstanceManager.java  |   4 +-
 .../db/mpp/sql/planner/LocalExecutionPlanner.java  |   4 +-
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |   2 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |   2 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |   2 +-
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |   2 +-
 .../db/query/control/QueryResourceManager.java     |  12 +-
 .../groupby/GroupByWithValueFilterDataSet.java     |  11 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |  11 +-
 .../db/query/executor/AggregationExecutor.java     |  20 +--
 .../iotdb/db/query/executor/FillQueryExecutor.java |  10 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |  10 +-
 .../db/query/executor/RawDataQueryExecutor.java    |  20 +--
 .../query/timegenerator/ServerTimeGenerator.java   |  10 +-
 .../org/apache/iotdb/db/rescon/SystemInfo.java     |  10 +-
 .../db/sync/sender/manage/ISyncFileManager.java    |   4 +-
 .../db/sync/sender/manage/SyncFileManager.java     |  12 +-
 .../iotdb/db/sync/sender/transfer/SyncClient.java  |   8 +-
 .../DeviceMappingViewer.java                       |   7 +-
 .../java/org/apache/iotdb/db/wal/node/WALNode.java |  28 ++-
 .../iotdb/db/wal/recover/WALRecoverManager.java    |  16 +-
 .../file/AbstractTsFileRecoverPerformer.java       |  10 +-
 .../recover/file/SealedTsFileRecoverPerformer.java |   6 +-
 .../file/UnsealedTsFileRecoverPerformer.java       |   4 +-
 .../db/engine/compaction/TsFileIdentifierUT.java   |   8 +-
 .../cross/RewriteCrossSpaceCompactionTest.java     |  10 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |   8 +-
 .../engine/modification/DeletionFileNodeTest.java  |  24 ++-
 .../storagegroup/StorageGroupProcessorTest.java    |   8 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |  60 +++----
 .../HashVirtualPartitionerTest.java                |   6 +-
 .../db/metadata/idtable/IDTableFlushTimeTest.java  |  10 +-
 .../iotdb/db/mpp/execution/DataDriverTest.java     |   4 +-
 .../db/sync/receiver/load/FileLoaderTest.java      |  23 +--
 .../recover/SyncReceiverLogAnalyzerTest.java       |   5 +-
 .../db/wal/recover/WALRecoverManagerTest.java      |   2 +-
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |   2 +-
 .../apache/iotdb/tsfile/utils/FilePathUtils.java   |   2 +-
 .../org/apache/iotdb/tsfile/utils/TsFileUtils.java |   6 +-
 .../iotdb/tsfile/utils/FilePathUtilsTest.java      |  12 +-
 91 files changed, 617 insertions(+), 723 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterFileFlushPolicy.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterFileFlushPolicy.java
index 81ef9edc23..c642632206 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterFileFlushPolicy.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterFileFlushPolicy.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.cluster;
 
 import org.apache.iotdb.cluster.server.member.MetaGroupMember;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,10 +56,7 @@ public class ClusterFileFlushPolicy implements TsFileFlushPolicy {
   }
 
   @Override
-  public void apply(
-      VirtualStorageGroupProcessor virtualStorageGroupProcessor,
-      TsFileProcessor processor,
-      boolean isSeq) {
+  public void apply(DataRegion dataRegion, TsFileProcessor processor, boolean isSeq) {
     logger.info(
         "The memtable size reaches the threshold, async flush it to tsfile: {}",
         processor.getTsFileResource().getTsFile().getAbsolutePath());
@@ -70,9 +67,7 @@ public class ClusterFileFlushPolicy implements TsFileFlushPolicy {
       closePartitionExecutor.submit(
           () ->
               metaGroupMember.closePartition(
-                  virtualStorageGroupProcessor.getVirtualStorageGroupId(),
-                  processor.getTimeRangeId(),
-                  isSeq));
+                  dataRegion.getDataRegionId(), processor.getTimeRangeId(), isSeq));
     }
     // flush the memtable anyway to avoid the insertion trigger the policy again
     processor.asyncFlush();
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/partition/slot/SlotTimePartitionFilter.java b/cluster/src/main/java/org/apache/iotdb/cluster/partition/slot/SlotTimePartitionFilter.java
index 7a7825f236..5bd42bb8fb 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/partition/slot/SlotTimePartitionFilter.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/partition/slot/SlotTimePartitionFilter.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.cluster.partition.slot;
 
 import org.apache.iotdb.cluster.config.ClusterConstant;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 
 import java.util.Objects;
 import java.util.Set;
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
index 8b149bba22..0fbd5d2820 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
@@ -38,7 +38,7 @@ import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
index 47f88b6cab..c94a5afc0a 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
@@ -77,7 +77,7 @@ import org.apache.iotdb.commons.service.JMXService;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/utils/StatusUtils.java b/cluster/src/main/java/org/apache/iotdb/cluster/utils/StatusUtils.java
index 93a90d630a..08a9cc0248 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/utils/StatusUtils.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/utils/StatusUtils.java
@@ -108,7 +108,7 @@ public class StatusUtils {
       case SYNC_CONNECTION_EXCEPTION:
         status.setMessage("Meet error while sync connecting. ");
         break;
-      case STORAGE_GROUP_PROCESSOR_ERROR:
+      case DATA_REGION_ERROR:
         status.setMessage("Storage group processor related error. ");
         break;
       case STORAGE_GROUP_ERROR:
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
index 8fa0ad7be0..36e389bf60 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
@@ -53,8 +53,8 @@ import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.commons.exception.StartupException;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -407,13 +407,13 @@ public class DataLogApplierTest extends IoTDBTest {
 
   @Test
   public void testApplyCloseFile() throws IoTDBException {
-    VirtualStorageGroupProcessor virtualStorageGroupProcessor =
+    DataRegion dataRegion =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
-    TestCase.assertFalse(virtualStorageGroupProcessor.getWorkSequenceTsFileProcessors().isEmpty());
+    TestCase.assertFalse(dataRegion.getWorkSequenceTsFileProcessors().isEmpty());
 
     CloseFileLog closeFileLog = new CloseFileLog(TestUtils.getTestSg(0), 0, true);
     applier.apply(closeFileLog);
-    TestCase.assertTrue(virtualStorageGroupProcessor.getWorkSequenceTsFileProcessors().isEmpty());
+    TestCase.assertTrue(dataRegion.getWorkSequenceTsFileProcessors().isEmpty());
   }
 
   @Test
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
index d43258b3c3..36e0d9ecc8 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
@@ -27,8 +27,8 @@ import org.apache.iotdb.cluster.partition.slot.SlotManager.SlotStatus;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.modification.Deletion;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.LoadFileException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
@@ -117,7 +117,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
       assertTrue(
           IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertEquals(9, processor.getPartitionMaxFileVersions(0));
     List<TsFileResource> loadedFiles = processor.getSequenceFileList();
@@ -161,7 +161,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
         assertTrue(
             IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
       }
-      VirtualStorageGroupProcessor processor =
+      DataRegion processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
       assertEquals(9, processor.getPartitionMaxFileVersions(0));
       List<TsFileResource> loadedFiles = processor.getSequenceFileList();
@@ -211,7 +211,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
       assertTrue(
           IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertEquals(9, processor.getPartitionMaxFileVersions(0));
     List<TsFileResource> loadedFiles = processor.getSequenceFileList();
@@ -251,7 +251,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
     defaultInstaller.install(snapshotMap, false);
 
     for (int j = 0; j < 10; j++) {
-      VirtualStorageGroupProcessor processor =
+      DataRegion processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(j)));
       assertEquals(9, processor.getPartitionMaxFileVersions(0));
       List<TsFileResource> loadedFiles = processor.getSequenceFileList();
@@ -276,7 +276,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
       timeseriesSchemas.add(TestUtils.getTestTimeSeriesSchema(0, i));
     }
     for (int i = 0; i < 5; i++) {
-      VirtualStorageGroupProcessor processor =
+      DataRegion processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
       TsFileResource resource = tsFileResources.get(i);
       String pathWithoutHardlinkSuffix =
@@ -297,7 +297,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
       assertTrue(
           IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertEquals(10, processor.getPartitionMaxFileVersions(0));
     List<TsFileResource> loadedFiles = processor.getSequenceFileList();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
index 77ebfcd9d5..dea05a1dbd 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
@@ -23,8 +23,8 @@ import org.apache.iotdb.cluster.common.TestUtils;
 import org.apache.iotdb.cluster.exception.SnapshotInstallationException;
 import org.apache.iotdb.cluster.partition.slot.SlotManager.SlotStatus;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -110,7 +110,7 @@ public class PartitionedSnapshotTest extends DataSnapshotTest {
       assertTrue(
           IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertEquals(9, processor.getPartitionMaxFileVersions(0));
     List<TsFileResource> loadedFiles = processor.getSequenceFileList();
@@ -187,7 +187,7 @@ public class PartitionedSnapshotTest extends DataSnapshotTest {
         assertFalse(
             IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
       }
-      VirtualStorageGroupProcessor processor =
+      DataRegion processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
       assertEquals(-1, processor.getPartitionMaxFileVersions(0));
       List<TsFileResource> loadedFiles = processor.getSequenceFileList();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
index 603f85f817..2bf2c8da52 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
@@ -37,8 +37,8 @@ import org.apache.iotdb.cluster.utils.IOUtils;
 import org.apache.iotdb.commons.exception.StartupException;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -292,7 +292,7 @@ public class PullSnapshotTaskTest extends DataSnapshotTest {
       assertTrue(
           IoTDB.schemaProcessor.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertEquals(9, processor.getPartitionMaxFileVersions(0));
     List<TsFileResource> loadedFiles = processor.getSequenceFileList();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
index c82800f203..4eb9057291 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
@@ -64,8 +64,8 @@ import org.apache.iotdb.cluster.utils.Constants;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.modification.Deletion;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.TriggerExecutionException;
 import org.apache.iotdb.db.exception.WriteProcessException;
@@ -502,7 +502,7 @@ public class DataGroupMemberTest extends BaseMember {
     snapshot.addFile(tsFileResource, TestUtils.getNode(0), true);
 
     // create a local resource1
-    VirtualStorageGroupProcessor processor;
+    DataRegion processor;
     while (true) {
       try {
         processor =
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
index da1cb4bf14..7fa84ef91a 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
@@ -84,7 +84,7 @@ import org.apache.iotdb.db.auth.authorizer.LocalFileAuthorizer;
 import org.apache.iotdb.db.auth.entity.Role;
 import org.apache.iotdb.db.auth.entity.User;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -613,7 +613,7 @@ public class MetaGroupMemberTest extends BaseMember {
     ExecutorService testThreadPool = Executors.newFixedThreadPool(4);
     assertTrue(testMetaMember.closePartition(TestUtils.getTestSg(0), 0, true));
 
-    VirtualStorageGroupProcessor processor =
+    DataRegion processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
     assertTrue(processor.getWorkSequenceTsFileProcessors().isEmpty());
 
diff --git a/docs/UserGuide/Data-Modeling/VirtualStorageGroup.md b/docs/UserGuide/Data-Modeling/DataRegion.md
similarity index 85%
rename from docs/UserGuide/Data-Modeling/VirtualStorageGroup.md
rename to docs/UserGuide/Data-Modeling/DataRegion.md
index 0ad959875e..fe69585842 100644
--- a/docs/UserGuide/Data-Modeling/VirtualStorageGroup.md
+++ b/docs/UserGuide/Data-Modeling/DataRegion.md
@@ -39,17 +39,17 @@ The number of storage groups may be small which makes the parallelism of data in
 
 Our idea is to group devices into buckets and change the granularity of synchronization from storage group level to device buckets level.
 
-In detail, we use hash to group different devices into buckets called virtual storage group. 
-For example, one device called "root.sg.d"(assume it's storage group is "root.sg") is belonged to virtual storage group "root.sg.[hash("root.sg.d") mod num_of_virtual_storage_group]"
+In detail, we use hash to group different devices into buckets called data region. 
+For example, one device called "root.sg.d"(assume it's storage group is "root.sg") is belonged to data region "root.sg.[hash("root.sg.d") mod num_of_data_region]"
 
 # Usage
 
-To use virtual storage group, you can set this config below:
+To use data region, you can set this config below:
 
 ```
-virtual_storage_group_num
+data_region_num
 ```
 
-Recommended value is [virtual storage group number] = [CPU core number] / [user-defined storage group number]
+Recommended value is [data region number] = [CPU core number] / [user-defined storage group number]
 
 For more information, you can refer to [this page](../Reference/Config-Manual.md).
\ No newline at end of file
diff --git a/docs/UserGuide/Reference/Config-Manual.md b/docs/UserGuide/Reference/Config-Manual.md
index b2a6b2e20f..d044811ffa 100644
--- a/docs/UserGuide/Reference/Config-Manual.md
+++ b/docs/UserGuide/Reference/Config-Manual.md
@@ -989,14 +989,14 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |Default| 604800 |
 |Effective|Only allowed to be modified in first start up|
 
-* virtual\_storage\_group\_num
-
-|Name| virtual\_storage\_group\_num |
-|:---:|:---|
-|Description| number of virtual storage groups per user-defined storage group, a virtual storage group is the unit of parallelism in memory as all ingestions in one virtual storage group are serialized, recommended value is [virtual storage group number] = [CPU core number] / [user-defined storage group number]|
-|Type| LONG |
-|Default| 1 |
-|Effective|Only allowed to be modified in first start up|
+* data\_region\_num
+
+|    Name     | data\_region\_num                                                                                                                                                                                                                                                  |
+|:-----------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Description | number of data regions per user-defined storage group, a data region is the unit of parallelism in memory as all ingestions in one data region are serialized, recommended value is [data region number] = [CPU core number] / [user-defined storage group number] |
+|    Type     | LONG                                                                                                                                                                                                                                                               |
+|   Default   | 1                                                                                                                                                                                                                                                                  |
+|  Effective  | Only allowed to be modified in first start up                                                                                                                                                                                                                      |
 
 <!--
 * enable\_id\_table
diff --git a/docs/zh/UserGuide/Data-Modeling/VirtualStorageGroup.md b/docs/zh/UserGuide/Data-Modeling/DataRegion.md
similarity index 78%
rename from docs/zh/UserGuide/Data-Modeling/VirtualStorageGroup.md
rename to docs/zh/UserGuide/Data-Modeling/DataRegion.md
index c98504eb2c..f753ffb2ff 100644
--- a/docs/zh/UserGuide/Data-Modeling/VirtualStorageGroup.md
+++ b/docs/zh/UserGuide/Data-Modeling/DataRegion.md
@@ -35,19 +35,19 @@
 
 # 解决方案
 
-我们的方案是将一个存储组下的设备分为若干个设备组(称为虚拟存储组),将同步粒度从存储组级别改为虚拟存储组粒度。
+我们的方案是将一个存储组下的设备分为若干个设备组(称为 data region),将同步粒度从存储组级别改为 data region 粒度。
 
-更具体的,我们使用哈希将设备分到不同的虚拟存储组下,例如:
-对于一个名为"root.sg.d"的设备(假设其存储组为"root.sg"),它属于的虚拟存储组为"root.sg.[hash("root.sg.d") mod num_of_virtual_storage_group]"
+更具体的,我们使用哈希将设备分到不同的 data region 下,例如:
+对于一个名为"root.sg.d"的设备(假设其存储组为"root.sg"),它属于的 data region 为"root.sg.[hash("root.sg.d") mod num_of_data_region]"
 
 # 使用方法
 
-通过改变如下配置来设置每一个存储组下虚拟存储组的数量:
+通过改变如下配置来设置每一个存储组下 data region 的数量:
 
 ```
-virtual_storage_group_num
+data_region_num
 ```
 
-推荐值为[virtual storage group number] = [CPU core number] / [user-defined storage group number]
+推荐值为[data region number] = [CPU core number] / [user-defined storage group number]
 
 参考[配置手册](../Reference/Config-Manual.md)以获取更多信息。
\ No newline at end of file
diff --git a/docs/zh/UserGuide/Reference/Config-Manual.md b/docs/zh/UserGuide/Reference/Config-Manual.md
index ef00a49a70..9404d1f91f 100644
--- a/docs/zh/UserGuide/Reference/Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/Config-Manual.md
@@ -1580,14 +1580,14 @@ Server,客户端的使用方式详见 [SQL 命令行终端(CLI)](https://i
 |默认值| 604800 |
 |改后生效方式|仅允许在第一次启动服务前修改|
 
-* virtual\_storage\_group\_num
-
-|名字| virtual\_storage\_group\_num |
-|:---:|:---|
-|描述| 每一个用户定义存储组下虚拟存储组的数量, 虚拟存储组是内存中写入的并行单位,每一个虚拟存储组内的写入请求是串行的,推荐值为: [virtual storage group number] = [CPU core number] / [user-defined storage group number]|
-|类型| INT32 |
-|默认值| 1 |
-|改后生效方式|仅允许在第一次启动服务前修改|
+* data\_region\_num
+
+|   名字   | data\_region\_num                                                                                                                                                    |
+|:------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|   描述   | 每一个用户定义存储组下 data region 的数量, data region 是内存中写入的并行单位,每一个 data region 内的写入请求是串行的,推荐值为: [data region number] = [CPU core number] / [user-defined storage group number] |
+|   类型   | INT32                                                                                                                                                                |
+|  默认值   | 1                                                                                                                                                                    |
+| 改后生效方式 | 仅允许在第一次启动服务前修改                                                                                                                                                       |
 
 <!--
 * enable\_id\_table
diff --git a/integration/src/main/java/org/apache/iotdb/integration/env/ClusterEnvConfig.java b/integration/src/main/java/org/apache/iotdb/integration/env/ClusterEnvConfig.java
index 90d9dd40c6..79ad60ce87 100644
--- a/integration/src/main/java/org/apache/iotdb/integration/env/ClusterEnvConfig.java
+++ b/integration/src/main/java/org/apache/iotdb/integration/env/ClusterEnvConfig.java
@@ -65,9 +65,8 @@ public class ClusterEnvConfig implements BaseConfig {
     return this;
   }
 
-  public BaseConfig setVirtualStorageGroupNum(int virtualStorageGroupNum) {
-    engineProperties.setProperty(
-        "virtual_storage_group_num", String.valueOf(virtualStorageGroupNum));
+  public BaseConfig setDataRegionNum(int dataRegionNum) {
+    engineProperties.setProperty("data_region_num", String.valueOf(dataRegionNum));
     return this;
   }
 
diff --git a/integration/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java b/integration/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
index 8f041c05dc..1fd81d1775 100644
--- a/integration/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
+++ b/integration/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
@@ -50,7 +50,7 @@ public interface BaseConfig {
     return this;
   }
 
-  default BaseConfig setVirtualStorageGroupNum(int virtualStorageGroupNum) {
+  default BaseConfig setDataRegionNum(int dataRegionNum) {
     return this;
   }
 
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
index e30830cda6..6891a996a0 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
@@ -39,21 +39,20 @@ import java.sql.*;
  */
 @Category({LocalStandaloneTest.class, ClusterTest.class})
 public class IoTDBCompleteIT {
-  private int prevVirtualStorageGroupNum;
+  private int prevDataRegionNum;
 
   @Before
   public void setUp() throws InterruptedException {
     // test different partition
-    prevVirtualStorageGroupNum =
-        IoTDBDescriptor.getInstance().getConfig().getVirtualStorageGroupNum();
-    ConfigFactory.getConfig().setVirtualStorageGroupNum(16);
+    prevDataRegionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
+    ConfigFactory.getConfig().setDataRegionNum(16);
     EnvFactory.getEnv().initBeforeClass();
   }
 
   @After
   public void tearDown() throws Exception {
     EnvFactory.getEnv().cleanAfterClass();
-    ConfigFactory.getConfig().setVirtualStorageGroupNum(prevVirtualStorageGroupNum);
+    ConfigFactory.getConfig().setDataRegionNum(prevDataRegionNum);
   }
 
   @Test
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileIT.java
index f415e2503f..b636f2f697 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileIT.java
@@ -140,8 +140,8 @@ public class IoTDBLoadExternalTsfileIT {
 
   @Before
   public void setUp() throws Exception {
-    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getVirtualStorageGroupNum();
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(1);
+    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(1);
     prevCompactionThread =
         IoTDBDescriptor.getInstance().getConfig().getConcurrentCompactionThread();
     EnvironmentUtils.envSetUp();
@@ -153,7 +153,7 @@ public class IoTDBLoadExternalTsfileIT {
   public void tearDown() throws Exception {
     EnvironmentUtils.cleanEnv();
     IoTDBDescriptor.getInstance().getConfig().setConcurrentCompactionThread(prevCompactionThread);
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(prevVirtualPartitionNum);
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(prevVirtualPartitionNum);
   }
 
   @Test
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNewTsFileCompactionIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNewTsFileCompactionIT.java
index 59734ed299..9afcd388ba 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNewTsFileCompactionIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNewTsFileCompactionIT.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.integration;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.compaction.CompactionTaskManager;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -1062,9 +1062,8 @@ public class IoTDBNewTsFileCompactionIT {
 
   /** wait until merge is finished */
   private boolean waitForMergeFinish() throws StorageEngineException, InterruptedException {
-    VirtualStorageGroupProcessor virtualStorageGroupProcessor =
-        StorageEngine.getInstance().getProcessor(storageGroupPath);
-    TsFileManager resourceManager = virtualStorageGroupProcessor.getTsFileResourceManager();
+    DataRegion dataRegion = StorageEngine.getInstance().getProcessor(storageGroupPath);
+    TsFileManager resourceManager = dataRegion.getTsFileResourceManager();
 
     long startTime = System.nanoTime();
     TimeUnit.MILLISECONDS.sleep(500);
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java
index 5b0715e41c..feea79ab9e 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java
@@ -138,8 +138,8 @@ public class IoTDBLoadExternalAlignedTsFileIT {
 
   @Before
   public void setUp() throws Exception {
-    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getVirtualStorageGroupNum();
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(1);
+    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(1);
     prevCompactionThread =
         IoTDBDescriptor.getInstance().getConfig().getConcurrentCompactionThread();
     EnvironmentUtils.envSetUp();
@@ -151,7 +151,7 @@ public class IoTDBLoadExternalAlignedTsFileIT {
   public void tearDown() throws Exception {
     EnvironmentUtils.cleanEnv();
     IoTDBDescriptor.getInstance().getConfig().setConcurrentCompactionThread(prevCompactionThread);
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(prevVirtualPartitionNum);
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(prevVirtualPartitionNum);
   }
 
   @Test
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java b/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java
index bdfbe7a4b5..b4d5c33301 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/env/StandaloneEnvConfig.java
@@ -45,8 +45,8 @@ public class StandaloneEnvConfig implements BaseConfig {
     return this;
   }
 
-  public BaseConfig setVirtualStorageGroupNum(int virtualStorageGroupNum) {
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(virtualStorageGroupNum);
+  public BaseConfig setDataRegionNum(int dataRegionNum) {
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(dataRegionNum);
     return this;
   }
 
diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index ee675383ed..b4bc8232f5 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -347,11 +347,11 @@ timestamp_precision=ms
 # Datatype: boolean
 # enable_partial_insert=true
 
-# number of virtual storage groups per user-defined storage group
-# a virtual storage group is the unit of parallelism in memory as all ingestions in one virtual storage group are serialized
-# recommended value is [virtual storage group number] = [CPU core number] / [user-defined storage group number]
+# number of data regions per user-defined storage group
+# a data region is the unit of parallelism in memory as all ingestions in one data region are serialized
+# recommended value is [data region number] = [CPU core number] / [user-defined storage group number]
 # Datatype: int
-# virtual_storage_group_num = 1
+# data_region_num = 1
 
 # the interval to log recover progress of each vsg when starting iotdb
 # Datatype: int
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index ab3e3a0235..071a0a1420 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -789,8 +789,8 @@ public class IoTDBConfig {
   /** the size of ioTaskQueue */
   private int ioTaskQueueSizeForFlushing = 10;
 
-  /** the number of virtual storage groups per user-defined storage group */
-  private int virtualStorageGroupNum = 1;
+  /** the number of data regions per user-defined storage group */
+  private int dataRegionNum = 1;
 
   /** the interval to log recover progress of each vsg when starting iotdb */
   private long recoveryLogIntervalInMs = 5_000L;
@@ -2338,12 +2338,12 @@ public class IoTDBConfig {
     this.defaultIndexWindowRange = defaultIndexWindowRange;
   }
 
-  public int getVirtualStorageGroupNum() {
-    return virtualStorageGroupNum;
+  public int getDataRegionNum() {
+    return dataRegionNum;
   }
 
-  public void setVirtualStorageGroupNum(int virtualStorageGroupNum) {
-    this.virtualStorageGroupNum = virtualStorageGroupNum;
+  public void setDataRegionNum(int dataRegionNum) {
+    this.dataRegionNum = dataRegionNum;
   }
 
   public long getRecoveryLogIntervalInMs() {
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
index b098fad4b1..8f65fb3e3d 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
@@ -88,8 +88,10 @@ public class IoTDBConfigCheck {
   private static String maxDegreeOfIndexNode =
       String.valueOf(TSFileDescriptor.getInstance().getConfig().getMaxDegreeOfIndexNode());
 
+  private static final String DATA_REGION_NUM = "data_region_num";
+  // for upgrading from old file
   private static final String VIRTUAL_STORAGE_GROUP_NUM = "virtual_storage_group_num";
-  private static String virtualStorageGroupNum = String.valueOf(config.getVirtualStorageGroupNum());
+  private static String dataRegionNum = String.valueOf(config.getDataRegionNum());
 
   private static final String ENABLE_ID_TABLE = "enable_id_table";
   private static String enableIDTable = String.valueOf(config.isEnableIDTable());
@@ -155,7 +157,7 @@ public class IoTDBConfigCheck {
     systemProperties.put(TAG_ATTRIBUTE_SIZE_STRING, tagAttributeTotalSize);
     systemProperties.put(TAG_ATTRIBUTE_FLUSH_INTERVAL, tagAttributeFlushInterval);
     systemProperties.put(MAX_DEGREE_OF_INDEX_STRING, maxDegreeOfIndexNode);
-    systemProperties.put(VIRTUAL_STORAGE_GROUP_NUM, virtualStorageGroupNum);
+    systemProperties.put(DATA_REGION_NUM, dataRegionNum);
     systemProperties.put(TIME_ENCODER_KEY, timeEncoderValue);
     systemProperties.put(ENABLE_ID_TABLE, enableIDTable);
     systemProperties.put(ENABLE_ID_TABLE_LOG_FILE, enableIdTableLogFile);
@@ -252,7 +254,7 @@ public class IoTDBConfigCheck {
     }
   }
 
-  /** upgrade 0.12 properties to 0.13 properties */
+  /** upgrade 0.12 or 0.13 properties to 0.14 properties */
   private void upgradePropertiesFile() throws IOException {
     // create an empty tmpPropertiesFile
     if (tmpPropertiesFile.createNewFile()) {
@@ -270,6 +272,9 @@ public class IoTDBConfigCheck {
             }
           });
       properties.setProperty(IOTDB_VERSION_STRING, IoTDBConstant.VERSION);
+      // rename virtual_storage_group_num to data_region_num
+      properties.setProperty(DATA_REGION_NUM, properties.getProperty(VIRTUAL_STORAGE_GROUP_NUM));
+      properties.remove(VIRTUAL_STORAGE_GROUP_NUM);
       properties.store(tmpFOS, SYSTEM_PROPERTIES_STRING);
 
       // upgrade finished, delete old system.properties file
@@ -346,8 +351,8 @@ public class IoTDBConfigCheck {
       throwException(MAX_DEGREE_OF_INDEX_STRING, maxDegreeOfIndexNode);
     }
 
-    if (!(properties.getProperty(VIRTUAL_STORAGE_GROUP_NUM).equals(virtualStorageGroupNum))) {
-      throwException(VIRTUAL_STORAGE_GROUP_NUM, virtualStorageGroupNum);
+    if (!(properties.getProperty(DATA_REGION_NUM).equals(dataRegionNum))) {
+      throwException(DATA_REGION_NUM, dataRegionNum);
     }
 
     if (!(properties.getProperty(TIME_ENCODER_KEY).equals(timeEncoderValue))) {
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index f2afbc3641..6b9e0e746b 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -685,10 +685,9 @@ public class IoTDBDescriptor {
               properties.getProperty(
                   "slow_query_threshold", String.valueOf(conf.getSlowQueryThreshold()))));
 
-      conf.setVirtualStorageGroupNum(
+      conf.setDataRegionNum(
           Integer.parseInt(
-              properties.getProperty(
-                  "virtual_storage_group_num", String.valueOf(conf.getVirtualStorageGroupNum()))));
+              properties.getProperty("data_region_num", String.valueOf(conf.getDataRegionNum()))));
 
       conf.setRecoveryLogIntervalInMs(
           Long.parseLong(
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/ConsensusImpl.java b/server/src/main/java/org/apache/iotdb/db/consensus/ConsensusImpl.java
index 68476e75ec..972221609f 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/ConsensusImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/ConsensusImpl.java
@@ -28,7 +28,7 @@ import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.consensus.statemachine.DataRegionStateMachine;
 import org.apache.iotdb.db.consensus.statemachine.SchemaRegionStateMachine;
-import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
 
 import java.io.File;
@@ -60,7 +60,7 @@ public class ConsensusImpl {
                           SchemaEngine.getInstance().getSchemaRegion((SchemaRegionId) gid));
                     case DataRegion:
                       return new DataRegionStateMachine(
-                          StorageEngine.getInstance().getDataRegion((DataRegionId) gid));
+                          StorageEngineV2.getInstance().getDataRegion((DataRegionId) gid));
                   }
                   throw new IllegalArgumentException(
                       String.format("Unexpected consensusGroup %s", gid));
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
index 06312cd13f..5f6e168f6c 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.db.consensus.statemachine;
 
 import org.apache.iotdb.consensus.common.DataSet;
-import org.apache.iotdb.db.mpp.common.DataRegion;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.mpp.sql.planner.plan.FragmentInstance;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TSStatus;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index b3f2c5fb7d..5fe04e3f57 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -20,7 +20,6 @@ package org.apache.iotdb.db.engine;
 
 import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
 import org.apache.iotdb.commons.concurrent.ThreadName;
-import org.apache.iotdb.commons.consensus.DataRegionId;
 import org.apache.iotdb.commons.exception.ShutdownException;
 import org.apache.iotdb.commons.partition.TimePartitionSlot;
 import org.apache.iotdb.commons.service.IService;
@@ -34,15 +33,15 @@ import org.apache.iotdb.db.engine.flush.CloseFileListener;
 import org.apache.iotdb.db.engine.flush.FlushListener;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy.DirectFlushPolicy;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
-import org.apache.iotdb.db.engine.storagegroup.virtualSg.StorageGroupManager;
+import org.apache.iotdb.db.engine.storagegroup.dataregion.StorageGroupManager;
 import org.apache.iotdb.db.exception.BatchProcessException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.LoadFileException;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.WriteProcessRejectException;
@@ -55,7 +54,6 @@ import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.DataRegion;
 import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertRowsOfOneDevicePlan;
@@ -140,8 +138,6 @@ public class StorageEngine implements IService {
   private List<CloseFileListener> customCloseFileListeners = new ArrayList<>();
   private List<FlushListener> customFlushListeners = new ArrayList<>();
 
-  private final Map<DataRegionId, DataRegion> regionMap = new ConcurrentHashMap<>();
-
   private StorageEngine() {}
 
   public static StorageEngine getInstance() {
@@ -242,8 +238,8 @@ public class StorageEngine implements IService {
     List<IStorageGroupMNode> sgNodes = IoTDB.schemaProcessor.getAllStorageGroupNodes();
     // init wal recover manager
     WALRecoverManager.getInstance()
-        .setAllVsgScannedLatch(
-            new CountDownLatch(sgNodes.size() * config.getVirtualStorageGroupNum()));
+        .setAllDataRegionScannedLatch(
+            new CountDownLatch(sgNodes.size() * config.getDataRegionNum()));
     // recover all logic storage groups
     List<Future<Void>> futures = new LinkedList<>();
     for (IStorageGroupMNode storageGroup : sgNodes) {
@@ -455,14 +451,13 @@ public class StorageEngine implements IService {
    * @param path storage group path
    * @return storage group processor
    */
-  public VirtualStorageGroupProcessor getProcessorDirectly(PartialPath path)
-      throws StorageEngineException {
+  public DataRegion getProcessorDirectly(PartialPath path) throws StorageEngineException {
     PartialPath storageGroupPath;
     try {
       IStorageGroupMNode storageGroupMNode = IoTDB.schemaProcessor.getStorageGroupNodeByPath(path);
       storageGroupPath = storageGroupMNode.getPartialPath();
       return getStorageGroupProcessorByPath(storageGroupPath, storageGroupMNode);
-    } catch (StorageGroupProcessorException | MetadataException e) {
+    } catch (DataRegionException | MetadataException e) {
       throw new StorageEngineException(e);
     }
   }
@@ -473,21 +468,22 @@ public class StorageEngine implements IService {
    * @param path device path
    * @return storage group processor
    */
-  public VirtualStorageGroupProcessor getProcessor(PartialPath path) throws StorageEngineException {
+  public DataRegion getProcessor(PartialPath path) throws StorageEngineException {
     try {
       IStorageGroupMNode storageGroupMNode = IoTDB.schemaProcessor.getStorageGroupNodeByPath(path);
       return getStorageGroupProcessorByPath(path, storageGroupMNode);
-    } catch (StorageGroupProcessorException | MetadataException e) {
+    } catch (DataRegionException | MetadataException e) {
       throw new StorageEngineException(e);
     }
   }
 
-  public VirtualStorageGroupProcessor getProcessorByVSGId(PartialPath path, int vsgId)
+  public DataRegion getProcessorByDataRegionId(PartialPath path, int dataRegionId)
       throws StorageEngineException {
     try {
       IStorageGroupMNode storageGroupMNode = IoTDB.schemaProcessor.getStorageGroupNodeByPath(path);
-      return getStorageGroupManager(storageGroupMNode).getProcessor(storageGroupMNode, vsgId);
-    } catch (StorageGroupProcessorException | MetadataException e) {
+      return getStorageGroupManager(storageGroupMNode)
+          .getProcessor(storageGroupMNode, dataRegionId);
+    } catch (DataRegionException | MetadataException e) {
       throw new StorageEngineException(e);
     }
   }
@@ -503,12 +499,11 @@ public class StorageEngine implements IService {
       for (PartialPath path : pathList) {
         IStorageGroupMNode storageGroupMNode =
             IoTDB.schemaProcessor.getStorageGroupNodeByPath(path);
-        VirtualStorageGroupProcessor virtualStorageGroupProcessor =
-            getStorageGroupProcessorByPath(path, storageGroupMNode);
-        lockHolderList.add(virtualStorageGroupProcessor.getInsertWriteLockHolder());
+        DataRegion dataRegion = getStorageGroupProcessorByPath(path, storageGroupMNode);
+        lockHolderList.add(dataRegion.getInsertWriteLockHolder());
       }
       return lockHolderList;
-    } catch (StorageGroupProcessorException | MetadataException e) {
+    } catch (DataRegionException | MetadataException e) {
       throw new StorageEngineException(e);
     }
   }
@@ -521,9 +516,9 @@ public class StorageEngine implements IService {
    *     modification in mtree
    * @return found or new storage group processor
    */
-  private VirtualStorageGroupProcessor getStorageGroupProcessorByPath(
+  private DataRegion getStorageGroupProcessorByPath(
       PartialPath devicePath, IStorageGroupMNode storageGroupMNode)
-      throws StorageGroupProcessorException, StorageEngineException {
+      throws DataRegionException, StorageEngineException {
     return getStorageGroupManager(storageGroupMNode).getProcessor(devicePath, storageGroupMNode);
   }
 
@@ -556,18 +551,18 @@ public class StorageEngine implements IService {
    * @param virtualStorageGroupId virtual storage group id e.g. 1
    * @param logicalStorageGroupName logical storage group name e.g. root.sg1
    */
-  public VirtualStorageGroupProcessor buildNewStorageGroupProcessor(
+  public DataRegion buildNewStorageGroupProcessor(
       PartialPath logicalStorageGroupName,
       IStorageGroupMNode storageGroupMNode,
       String virtualStorageGroupId)
-      throws StorageGroupProcessorException {
-    VirtualStorageGroupProcessor processor;
+      throws DataRegionException {
+    DataRegion processor;
     logger.info(
         "construct a processor instance, the storage group is {}, Thread is {}",
         logicalStorageGroupName,
         Thread.currentThread().getId());
     processor =
-        new VirtualStorageGroupProcessor(
+        new DataRegion(
             systemDir + File.separator + logicalStorageGroupName,
             virtualStorageGroupId,
             fileFlushPolicy,
@@ -600,9 +595,8 @@ public class StorageEngine implements IService {
       }
     }
 
-    VirtualStorageGroupProcessor virtualStorageGroupProcessor =
-        getProcessor(insertRowPlan.getDevicePath());
-    getSeriesSchemas(insertRowPlan, virtualStorageGroupProcessor);
+    DataRegion dataRegion = getProcessor(insertRowPlan.getDevicePath());
+    getSeriesSchemas(insertRowPlan, dataRegion);
     try {
       insertRowPlan.transferType();
     } catch (QueryProcessException e) {
@@ -610,7 +604,7 @@ public class StorageEngine implements IService {
     }
 
     try {
-      virtualStorageGroupProcessor.insert(insertRowPlan);
+      dataRegion.insert(insertRowPlan);
     } catch (WriteProcessException e) {
       throw new StorageEngineException(e);
     }
@@ -626,18 +620,17 @@ public class StorageEngine implements IService {
       }
     }
 
-    VirtualStorageGroupProcessor virtualStorageGroupProcessor =
-        getProcessor(insertRowsOfOneDevicePlan.getDevicePath());
+    DataRegion dataRegion = getProcessor(insertRowsOfOneDevicePlan.getDevicePath());
 
     for (InsertRowPlan plan : insertRowsOfOneDevicePlan.getRowPlans()) {
       plan.setMeasurementMNodes(new IMeasurementMNode[plan.getMeasurements().length]);
       // check whether types are match
-      getSeriesSchemas(plan, virtualStorageGroupProcessor);
+      getSeriesSchemas(plan, dataRegion);
     }
 
     // TODO monitor: update statistics
     try {
-      virtualStorageGroupProcessor.insert(insertRowsOfOneDevicePlan);
+      dataRegion.insert(insertRowsOfOneDevicePlan);
     } catch (WriteProcessException e) {
       throw new StorageEngineException(e);
     }
@@ -655,9 +648,9 @@ public class StorageEngine implements IService {
         throw new BatchProcessException(results);
       }
     }
-    VirtualStorageGroupProcessor virtualStorageGroupProcessor;
+    DataRegion dataRegion;
     try {
-      virtualStorageGroupProcessor = getProcessor(insertTabletPlan.getDevicePath());
+      dataRegion = getProcessor(insertTabletPlan.getDevicePath());
     } catch (StorageEngineException e) {
       throw new StorageEngineException(
           String.format(
@@ -666,8 +659,8 @@ public class StorageEngine implements IService {
           e);
     }
 
-    getSeriesSchemas(insertTabletPlan, virtualStorageGroupProcessor);
-    virtualStorageGroupProcessor.insertTablet(insertTabletPlan);
+    getSeriesSchemas(insertTabletPlan, dataRegion);
+    dataRegion.insertTablet(insertTabletPlan);
   }
 
   /** flush command Sync asyncCloseOneProcessor all file node processors. */
@@ -798,16 +791,17 @@ public class StorageEngine implements IService {
       List<TsFileResource> unseqResourcesToBeSettled,
       List<String> tsFilePaths)
       throws StorageEngineException {
-    StorageGroupManager vsg = processorMap.get(sgPath);
-    if (vsg == null) {
+    StorageGroupManager storageGroupManager = processorMap.get(sgPath);
+    if (storageGroupManager == null) {
       throw new StorageEngineException(
           "The Storage Group " + sgPath.toString() + " is not existed.");
     }
-    if (!vsg.getIsSettling().compareAndSet(false, true)) {
+    if (!storageGroupManager.getIsSettling().compareAndSet(false, true)) {
       throw new StorageEngineException(
           "Storage Group " + sgPath.getFullPath() + " is already being settled now.");
     }
-    vsg.getResourcesToBeSettled(seqResourcesToBeSettled, unseqResourcesToBeSettled, tsFilePaths);
+    storageGroupManager.getResourcesToBeSettled(
+        seqResourcesToBeSettled, unseqResourcesToBeSettled, tsFilePaths);
   }
 
   public void setSettling(PartialPath sgPath, boolean isSettling) {
@@ -1040,37 +1034,36 @@ public class StorageEngine implements IService {
   }
 
   /** get all merge lock of the storage group processor related to the query */
-  public Pair<
-          List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-      mergeLock(List<PartialPath> pathList) throws StorageEngineException {
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> map = new HashMap<>();
+  public Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> mergeLock(
+      List<PartialPath> pathList) throws StorageEngineException {
+    Map<DataRegion, List<PartialPath>> map = new HashMap<>();
     for (PartialPath path : pathList) {
       map.computeIfAbsent(getProcessor(path.getDevicePath()), key -> new ArrayList<>()).add(path);
     }
-    List<VirtualStorageGroupProcessor> list =
+    List<DataRegion> list =
         map.keySet().stream()
-            .sorted(Comparator.comparing(VirtualStorageGroupProcessor::getVirtualStorageGroupId))
+            .sorted(Comparator.comparing(DataRegion::getDataRegionId))
             .collect(Collectors.toList());
-    list.forEach(VirtualStorageGroupProcessor::readLock);
+    list.forEach(DataRegion::readLock);
 
     return new Pair<>(list, map);
   }
 
   /** unlock all merge lock of the storage group processor related to the query */
-  public void mergeUnLock(List<VirtualStorageGroupProcessor> list) {
-    list.forEach(VirtualStorageGroupProcessor::readUnlock);
+  public void mergeUnLock(List<DataRegion> list) {
+    list.forEach(DataRegion::readUnlock);
   }
 
   /** @return virtual storage group name, like root.sg1/0 */
   public String getStorageGroupPath(PartialPath path) throws StorageEngineException {
     PartialPath deviceId = path.getDevicePath();
-    VirtualStorageGroupProcessor storageGroupProcessor = getProcessor(deviceId);
+    DataRegion storageGroupProcessor = getProcessor(deviceId);
     return storageGroupProcessor.getLogicalStorageGroupName()
         + File.separator
-        + storageGroupProcessor.getVirtualStorageGroupId();
+        + storageGroupProcessor.getDataRegionId();
   }
 
-  protected void getSeriesSchemas(InsertPlan insertPlan, VirtualStorageGroupProcessor processor)
+  protected void getSeriesSchemas(InsertPlan insertPlan, DataRegion processor)
       throws StorageEngineException, MetadataException {
     try {
       if (config.isEnableIDTable()) {
@@ -1085,17 +1078,6 @@ public class StorageEngine implements IService {
     }
   }
 
-  // When registering a new region, the coordinator needs to register the corresponding region with
-  // the local engine before adding the corresponding consensusGroup to the consensus layer
-  // TODO implement it
-  public DataRegion createDataRegion(DataRegionId regionId, String sg, long ttl) {
-    return null;
-  }
-
-  public DataRegion getDataRegion(DataRegionId regionId) {
-    return regionMap.get(regionId);
-  }
-
   static class InstanceHolder {
 
     private static final StorageEngine INSTANCE = new StorageEngine();
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
index d03496e152..217db1a8f4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
@@ -34,11 +34,11 @@ import org.apache.iotdb.db.engine.flush.CloseFileListener;
 import org.apache.iotdb.db.engine.flush.FlushListener;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy.DirectFlushPolicy;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.BatchProcessException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.WriteProcessRejectException;
@@ -95,7 +95,7 @@ public class StorageEngineV2 implements IService {
       FilePathUtils.regularizePath(config.getSystemDir()) + "storage_groups";
 
   /** DataRegionId -> DataRegion */
-  private final ConcurrentHashMap<ConsensusGroupId, VirtualStorageGroupProcessor> dataRegionMap =
+  private final ConcurrentHashMap<ConsensusGroupId, DataRegion> dataRegionMap =
       new ConcurrentHashMap<>();
 
   private AtomicBoolean isAllSgReady = new AtomicBoolean(false);
@@ -224,7 +224,7 @@ public class StorageEngineV2 implements IService {
     recoverEndTrigger.start();
   }
 
-  private void getLocalDataRegion() throws MetadataException, StorageGroupProcessorException {
+  private void getLocalDataRegion() throws MetadataException, DataRegionException {
     File system = SystemFileFactory.INSTANCE.getFile(systemDir);
     File[] sgDirs = system.listFiles();
     for (File sgDir : sgDirs) {
@@ -239,15 +239,14 @@ public class StorageEngineV2 implements IService {
           continue;
         }
         ConsensusGroupId dataRegionId = new DataRegionId(Integer.parseInt(dataRegionDir.getName()));
-        VirtualStorageGroupProcessor dataRegion =
-            buildNewStorageGroupProcessor(sg, dataRegionDir.getName(), ttl);
+        DataRegion dataRegion = buildNewStorageGroupProcessor(sg, dataRegionDir.getName(), ttl);
         dataRegionMap.putIfAbsent(dataRegionId, dataRegion);
       }
     }
   }
 
   private void asyncRecover(ExecutorService pool, List<Future<Void>> futures) {
-    for (VirtualStorageGroupProcessor processor : dataRegionMap.values()) {
+    for (DataRegion processor : dataRegionMap.values()) {
       Callable<Void> recoverVsgTask =
           () -> {
             processor.setReady(true);
@@ -288,7 +287,7 @@ public class StorageEngineV2 implements IService {
 
   private void checkTTL() {
     try {
-      for (VirtualStorageGroupProcessor dataRegion : dataRegionMap.values()) {
+      for (DataRegion dataRegion : dataRegionMap.values()) {
         if (dataRegion != null) {
           dataRegion.checkFilesTTL();
         }
@@ -329,7 +328,7 @@ public class StorageEngineV2 implements IService {
 
   private void timedFlushSeqMemTable() {
     try {
-      for (VirtualStorageGroupProcessor dataRegion : dataRegionMap.values()) {
+      for (DataRegion dataRegion : dataRegionMap.values()) {
         if (dataRegion != null) {
           dataRegion.timedFlushSeqMemTable();
         }
@@ -341,7 +340,7 @@ public class StorageEngineV2 implements IService {
 
   private void timedFlushUnseqMemTable() {
     try {
-      for (VirtualStorageGroupProcessor dataRegion : dataRegionMap.values()) {
+      for (DataRegion dataRegion : dataRegionMap.values()) {
         if (dataRegion != null) {
           dataRegion.timedFlushUnseqMemTable();
         }
@@ -353,10 +352,10 @@ public class StorageEngineV2 implements IService {
 
   @Override
   public void stop() {
-    for (VirtualStorageGroupProcessor vsg : dataRegionMap.values()) {
-      if (vsg != null) {
+    for (DataRegion dataRegion : dataRegionMap.values()) {
+      if (dataRegion != null) {
         ThreadUtils.stopThreadPool(
-            vsg.getTimedCompactionScheduleTask(), ThreadName.COMPACTION_SCHEDULE);
+            dataRegion.getTimedCompactionScheduleTask(), ThreadName.COMPACTION_SCHEDULE);
       }
     }
     syncCloseAllProcessor();
@@ -372,10 +371,9 @@ public class StorageEngineV2 implements IService {
   @Override
   public void shutdown(long milliseconds) throws ShutdownException {
     try {
-      for (VirtualStorageGroupProcessor virtualStorageGroupProcessor : dataRegionMap.values()) {
+      for (DataRegion dataRegion : dataRegionMap.values()) {
         ThreadUtils.stopThreadPool(
-            virtualStorageGroupProcessor.getTimedCompactionScheduleTask(),
-            ThreadName.COMPACTION_SCHEDULE);
+            dataRegion.getTimedCompactionScheduleTask(), ThreadName.COMPACTION_SCHEDULE);
       }
       forceCloseAllProcessor();
     } catch (TsFileProcessorException e) {
@@ -424,16 +422,16 @@ public class StorageEngineV2 implements IService {
    * @param virtualStorageGroupId virtual storage group id e.g. 1
    * @param logicalStorageGroupName logical storage group name e.g. root.sg1
    */
-  public VirtualStorageGroupProcessor buildNewStorageGroupProcessor(
+  public DataRegion buildNewStorageGroupProcessor(
       String logicalStorageGroupName, String virtualStorageGroupId, long ttl)
-      throws StorageGroupProcessorException {
-    VirtualStorageGroupProcessor processor;
+      throws DataRegionException {
+    DataRegion processor;
     logger.info(
         "construct a processor instance, the storage group is {}, Thread is {}",
         logicalStorageGroupName,
         Thread.currentThread().getId());
     processor =
-        new VirtualStorageGroupProcessor(
+        new DataRegion(
             systemDir + File.separator + logicalStorageGroupName,
             virtualStorageGroupId,
             fileFlushPolicy,
@@ -466,7 +464,7 @@ public class StorageEngineV2 implements IService {
       }
     }
 
-    VirtualStorageGroupProcessor dataRegion = dataRegionMap.get(dataRegionId);
+    DataRegion dataRegion = dataRegionMap.get(dataRegionId);
 
     try {
       dataRegion.insert(insertRowNode);
@@ -488,32 +486,32 @@ public class StorageEngineV2 implements IService {
         throw new BatchProcessException(results);
       }
     }
-    VirtualStorageGroupProcessor dataRegion = dataRegionMap.get(dataRegionId);
+    DataRegion dataRegion = dataRegionMap.get(dataRegionId);
     dataRegion.insertTablet(insertTabletNode);
   }
 
   /** flush command Sync asyncCloseOneProcessor all file node processors. */
   public void syncCloseAllProcessor() {
     logger.info("Start closing all storage group processor");
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor : dataRegionMap.values()) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+    for (DataRegion dataRegion : dataRegionMap.values()) {
+      if (dataRegion != null) {
+        dataRegion.syncCloseAllWorkingTsFileProcessors();
       }
     }
   }
 
   public void forceCloseAllProcessor() throws TsFileProcessorException {
     logger.info("Start force closing all storage group processor");
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor : dataRegionMap.values()) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.forceCloseAllWorkingTsFileProcessors();
+    for (DataRegion dataRegion : dataRegionMap.values()) {
+      if (dataRegion != null) {
+        dataRegion.forceCloseAllWorkingTsFileProcessors();
       }
     }
   }
 
   public void setTTL(List<ConsensusGroupId> dataRegionIdList, long dataTTL) {
     for (ConsensusGroupId dataRegionId : dataRegionIdList) {
-      VirtualStorageGroupProcessor dataRegion = dataRegionMap.get(dataRegionId);
+      DataRegion dataRegion = dataRegionMap.get(dataRegionId);
       if (dataRegion != null) {
         dataRegion.setDataTTL(dataTTL);
       }
@@ -532,23 +530,21 @@ public class StorageEngineV2 implements IService {
    */
   public Map<String, List<Pair<Long, Boolean>>> getWorkingStorageGroupPartitions() {
     Map<String, List<Pair<Long, Boolean>>> res = new ConcurrentHashMap<>();
-    for (Entry<ConsensusGroupId, VirtualStorageGroupProcessor> entry : dataRegionMap.entrySet()) {
-      VirtualStorageGroupProcessor virtualStorageGroupProcessor = entry.getValue();
-      if (virtualStorageGroupProcessor != null) {
+    for (Entry<ConsensusGroupId, DataRegion> entry : dataRegionMap.entrySet()) {
+      DataRegion dataRegion = entry.getValue();
+      if (dataRegion != null) {
         List<Pair<Long, Boolean>> partitionIdList = new ArrayList<>();
-        for (TsFileProcessor tsFileProcessor :
-            virtualStorageGroupProcessor.getWorkSequenceTsFileProcessors()) {
+        for (TsFileProcessor tsFileProcessor : dataRegion.getWorkSequenceTsFileProcessors()) {
           Pair<Long, Boolean> tmpPair = new Pair<>(tsFileProcessor.getTimeRangeId(), true);
           partitionIdList.add(tmpPair);
         }
 
-        for (TsFileProcessor tsFileProcessor :
-            virtualStorageGroupProcessor.getWorkUnsequenceTsFileProcessors()) {
+        for (TsFileProcessor tsFileProcessor : dataRegion.getWorkUnsequenceTsFileProcessors()) {
           Pair<Long, Boolean> tmpPair = new Pair<>(tsFileProcessor.getTimeRangeId(), false);
           partitionIdList.add(tmpPair);
         }
 
-        res.put(virtualStorageGroupProcessor.getStorageGroupPath(), partitionIdList);
+        res.put(dataRegion.getStorageGroupPath(), partitionIdList);
       }
     }
 
@@ -577,19 +573,14 @@ public class StorageEngineV2 implements IService {
 
   // When registering a new region, the coordinator needs to register the corresponding region with
   // the local engine before adding the corresponding consensusGroup to the consensus layer
-  public VirtualStorageGroupProcessor createDataRegion(DataRegionId regionId, String sg, long ttl)
-      throws StorageEngineException {
-    try {
-      VirtualStorageGroupProcessor dataRegion =
-          buildNewStorageGroupProcessor(sg, regionId.toString(), ttl);
-      dataRegionMap.put(regionId, dataRegion);
-    } catch (StorageGroupProcessorException e) {
-      throw new StorageEngineException(e);
-    }
-    return null;
+  public DataRegion createDataRegion(DataRegionId regionId, String sg, long ttl)
+      throws DataRegionException {
+    DataRegion dataRegion = buildNewStorageGroupProcessor(sg, regionId.toString(), ttl);
+    dataRegionMap.put(regionId, dataRegion);
+    return dataRegion;
   }
 
-  public VirtualStorageGroupProcessor getDataRegion(DataRegionId regionId) {
+  public DataRegion getDataRegion(DataRegionId regionId) {
     return dataRegionMap.get(regionId);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionScheduler.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionScheduler.java
index 62dc5f424e..d9b641f472 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionScheduler.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionScheduler.java
@@ -48,21 +48,21 @@ public class CompactionScheduler {
     }
     tryToSubmitCrossSpaceCompactionTask(
         tsFileManager.getStorageGroupName(),
-        tsFileManager.getVirtualStorageGroup(),
+        tsFileManager.getDataRegion(),
         tsFileManager.getStorageGroupDir(),
         timePartition,
         tsFileManager,
         new CrossSpaceCompactionTaskFactory());
     tryToSubmitInnerSpaceCompactionTask(
         tsFileManager.getStorageGroupName(),
-        tsFileManager.getVirtualStorageGroup(),
+        tsFileManager.getDataRegion(),
         timePartition,
         tsFileManager,
         true,
         new InnerSpaceCompactionTaskFactory());
     tryToSubmitInnerSpaceCompactionTask(
         tsFileManager.getStorageGroupName(),
-        tsFileManager.getVirtualStorageGroup(),
+        tsFileManager.getDataRegion(),
         timePartition,
         tsFileManager,
         false,
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifier.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifier.java
index 503eafc570..0087ef5ee4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifier.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifier.java
@@ -31,7 +31,7 @@ import java.io.File;
  */
 public class TsFileIdentifier {
   private final String logicalStorageGroupName;
-  private final String virtualStorageGroupId;
+  private final String dataRegionId;
   private final String timePartitionId;
   private final boolean sequence;
   private final String filename;
@@ -39,30 +39,30 @@ public class TsFileIdentifier {
   // Notice: Do not change the offset of info
   public static final int FILE_NAME_OFFSET_IN_PATH = 1;
   public static final int TIME_PARTITION_OFFSET_IN_PATH = 2;
-  public static final int VIRTUAL_SG_OFFSET_IN_PATH = 3;
+  public static final int DATA_REGION_OFFSET_IN_PATH = 3;
   public static final int LOGICAL_SG_OFFSET_IN_PATH = 4;
   public static final int SEQUENCE_OFFSET_IN_PATH = 5;
 
   public static final int SEQUENCE_OFFSET_IN_LOG = 0;
   public static final int LOGICAL_SG_OFFSET_IN_LOG = 1;
-  public static final int VIRTUAL_SG_OFFSET_IN_LOG = 2;
+  public static final int DATA_REGION_OFFSET_IN_LOG = 2;
   public static final int TIME_PARTITION_OFFSET_IN_LOG = 3;
   public static final int FILE_NAME_OFFSET_IN_LOG = 4;
 
   private static final int LOGICAL_SG_OFFSET_IN_LOG_FROM_OLD = 0;
-  private static final int VIRTUAL_SG_OFFSET_IN_LOG_FROM_OLD = 1;
+  private static final int DATA_REGION_OFFSET_IN_LOG_FROM_OLD = 1;
   private static final int TIME_PARTITION_OFFSET_IN_LOG_FROM_OLD = 2;
   private static final int FILE_NAME_OFFSET_IN_LOG_FROM_OLD = 3;
   private static final int SEQUENCE_OFFSET_IN_LOG_FROM_OLD = 4;
 
   private TsFileIdentifier(
       String logicalStorageGroupName,
-      String virtualStorageGroupId,
+      String dataRegionId,
       String timePartitionId,
       boolean sequence,
       String filename) {
     this.logicalStorageGroupName = logicalStorageGroupName;
-    this.virtualStorageGroupId = virtualStorageGroupId;
+    this.dataRegionId = dataRegionId;
     this.timePartitionId = timePartitionId;
     this.sequence = sequence;
     this.filename = filename;
@@ -92,7 +92,7 @@ public class TsFileIdentifier {
 
     return new TsFileIdentifier(
         splittedPath[length - LOGICAL_SG_OFFSET_IN_PATH],
-        splittedPath[length - VIRTUAL_SG_OFFSET_IN_PATH],
+        splittedPath[length - DATA_REGION_OFFSET_IN_PATH],
         splittedPath[length - TIME_PARTITION_OFFSET_IN_PATH],
         splittedPath[length - SEQUENCE_OFFSET_IN_PATH].equals(IoTDBConstant.SEQUENCE_FLODER_NAME),
         splittedPath[length - FILE_NAME_OFFSET_IN_PATH]);
@@ -112,7 +112,7 @@ public class TsFileIdentifier {
     }
     return new TsFileIdentifier(
         splittedFileInfo[LOGICAL_SG_OFFSET_IN_LOG],
-        splittedFileInfo[VIRTUAL_SG_OFFSET_IN_LOG],
+        splittedFileInfo[DATA_REGION_OFFSET_IN_LOG],
         splittedFileInfo[TIME_PARTITION_OFFSET_IN_LOG],
         splittedFileInfo[SEQUENCE_OFFSET_IN_LOG].equals("sequence"),
         splittedFileInfo[FILE_NAME_OFFSET_IN_LOG]);
@@ -135,7 +135,7 @@ public class TsFileIdentifier {
     }
     return new TsFileIdentifier(
         splittedFileInfo[LOGICAL_SG_OFFSET_IN_LOG_FROM_OLD],
-        splittedFileInfo[VIRTUAL_SG_OFFSET_IN_LOG_FROM_OLD],
+        splittedFileInfo[DATA_REGION_OFFSET_IN_LOG_FROM_OLD],
         splittedFileInfo[TIME_PARTITION_OFFSET_IN_LOG_FROM_OLD],
         splittedFileInfo[SEQUENCE_OFFSET_IN_LOG_FROM_OLD].equals("true")
             || splittedFileInfo[SEQUENCE_OFFSET_IN_LOG_FROM_OLD].equals("sequence"),
@@ -150,7 +150,7 @@ public class TsFileIdentifier {
         INFO_SEPARATOR,
         logicalStorageGroupName,
         INFO_SEPARATOR,
-        virtualStorageGroupId,
+        dataRegionId,
         INFO_SEPARATOR,
         timePartitionId,
         INFO_SEPARATOR,
@@ -165,7 +165,7 @@ public class TsFileIdentifier {
     TsFileIdentifier otherInfo = (TsFileIdentifier) other;
     return otherInfo.sequence == this.sequence
         && otherInfo.logicalStorageGroupName.equals(this.logicalStorageGroupName)
-        && otherInfo.virtualStorageGroupId.equals(this.virtualStorageGroupId)
+        && otherInfo.dataRegionId.equals(this.dataRegionId)
         && otherInfo.timePartitionId.equals(this.timePartitionId)
         && otherInfo.filename.equals(this.filename);
   }
@@ -181,7 +181,7 @@ public class TsFileIdentifier {
             + File.separator
             + logicalStorageGroupName
             + File.separator
-            + virtualStorageGroupId
+            + dataRegionId
             + File.separator
             + timePartitionId
             + File.separator
@@ -204,7 +204,7 @@ public class TsFileIdentifier {
         + File.separator
         + logicalStorageGroupName
         + File.separator
-        + virtualStorageGroupId
+        + dataRegionId
         + File.separator
         + timePartitionId
         + File.separator
@@ -215,8 +215,8 @@ public class TsFileIdentifier {
     return logicalStorageGroupName;
   }
 
-  public String getVirtualStorageGroupId() {
-    return virtualStorageGroupId;
+  public String getDataRegionId() {
+    return dataRegionId;
   }
 
   public String getTimePartitionId() {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/AbstractCrossSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/AbstractCrossSpaceCompactionSelector.java
index 99e2c936e3..26c557af5b 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/AbstractCrossSpaceCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/AbstractCrossSpaceCompactionSelector.java
@@ -26,7 +26,7 @@ import java.util.List;
 
 public abstract class AbstractCrossSpaceCompactionSelector extends AbstractCompactionSelector {
   protected String logicalStorageGroupName;
-  protected String virtualGroupId;
+  protected String dataRegionId;
   protected String storageGroupDir;
   protected long timePartition;
   protected TsFileManager tsFileManager;
@@ -36,13 +36,13 @@ public abstract class AbstractCrossSpaceCompactionSelector extends AbstractCompa
 
   public AbstractCrossSpaceCompactionSelector(
       String logicalStorageGroupName,
-      String virtualGroupId,
+      String dataRegionId,
       String storageGroupDir,
       long timePartition,
       TsFileManager tsFileManager,
       CrossSpaceCompactionTaskFactory taskFactory) {
     this.logicalStorageGroupName = logicalStorageGroupName;
-    this.virtualGroupId = virtualGroupId;
+    this.dataRegionId = dataRegionId;
     this.storageGroupDir = storageGroupDir;
     this.timePartition = timePartition;
     this.sequenceFileList = tsFileManager.getSequenceListByTimePartition(timePartition);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java
index 05423ab532..86bc05f738 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java
@@ -118,7 +118,7 @@ public class RewriteCrossSpaceCompactionSelector extends AbstractCrossSpaceCompa
         AbstractCompactionTask compactionTask =
             taskFactory.createTask(
                 logicalStorageGroupName,
-                virtualGroupId,
+                dataRegionId,
                 timePartition,
                 tsFileManager,
                 mergeFiles[0],
@@ -126,7 +126,7 @@ public class RewriteCrossSpaceCompactionSelector extends AbstractCrossSpaceCompa
         CompactionTaskManager.getInstance().addTaskToWaitingQueue(compactionTask);
         LOGGER.info(
             "{} [Compaction] submit a task with {} sequence file and {} unseq files",
-            logicalStorageGroupName + "-" + virtualGroupId,
+            logicalStorageGroupName + "-" + dataRegionId,
             mergeResource.getSeqFiles().size(),
             mergeResource.getUnseqFiles().size());
       }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionSelector.java
index 405e9c901d..cb7ec1029a 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionSelector.java
@@ -26,7 +26,7 @@ import java.util.List;
 
 public abstract class AbstractInnerSpaceCompactionSelector extends AbstractCompactionSelector {
   protected String logicalStorageGroupName;
-  protected String virtualStorageGroupName;
+  protected String dataRegionName;
   protected long timePartition;
   protected List<TsFileResource> tsFileResources;
   protected boolean sequence;
@@ -35,13 +35,13 @@ public abstract class AbstractInnerSpaceCompactionSelector extends AbstractCompa
 
   public AbstractInnerSpaceCompactionSelector(
       String logicalStorageGroupName,
-      String virtualStorageGroupName,
+      String dataRegionName,
       long timePartition,
       TsFileManager tsFileManager,
       boolean sequence,
       InnerSpaceCompactionTaskFactory taskFactory) {
     this.logicalStorageGroupName = logicalStorageGroupName;
-    this.virtualStorageGroupName = virtualStorageGroupName;
+    this.dataRegionName = dataRegionName;
     this.timePartition = timePartition;
     this.tsFileManager = tsFileManager;
     this.sequence = sequence;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionSelector.java
index 8783aec004..9ef486a973 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionSelector.java
@@ -172,7 +172,7 @@ public class SizeTieredCompactionSelector extends AbstractInnerSpaceCompactionSe
     AbstractCompactionTask compactionTask =
         taskFactory.createTask(
             logicalStorageGroupName,
-            virtualStorageGroupName,
+            dataRegionName,
             timePartition,
             tsFileManager,
             selectedFileList,
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/task/CompactionRecoverManager.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/task/CompactionRecoverManager.java
index 9d14c0482e..fe46eb0c71 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/task/CompactionRecoverManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/task/CompactionRecoverManager.java
@@ -44,13 +44,13 @@ public class CompactionRecoverManager {
       LoggerFactory.getLogger(IoTDBConstant.COMPACTION_LOGGER_NAME);
   private final TsFileManager tsFileManager;
   private final String logicalStorageGroupName;
-  private final String virtualStorageGroupId;
+  private final String dataRegionId;
 
   public CompactionRecoverManager(
-      TsFileManager tsFileManager, String logicalStorageGroupName, String virtualStorageGroupId) {
+      TsFileManager tsFileManager, String logicalStorageGroupName, String dataRegionId) {
     this.tsFileManager = tsFileManager;
     this.logicalStorageGroupName = logicalStorageGroupName;
-    this.virtualStorageGroupId = virtualStorageGroupId;
+    this.dataRegionId = dataRegionId;
   }
 
   public void recoverInnerSpaceCompaction(boolean isSequence) {
@@ -74,12 +74,7 @@ public class CompactionRecoverManager {
     }
     for (String dir : dirs) {
       File storageGroupDir =
-          new File(
-              dir
-                  + File.separator
-                  + logicalStorageGroupName
-                  + File.separator
-                  + virtualStorageGroupId);
+          new File(dir + File.separator + logicalStorageGroupName + File.separator + dataRegionId);
       if (!storageGroupDir.exists()) {
         return;
       }
@@ -97,11 +92,7 @@ public class CompactionRecoverManager {
         for (File compactionLog : compactionLogs) {
           logger.info("Calling compaction recover task.");
           new CompactionRecoverTask(
-                  logicalStorageGroupName,
-                  virtualStorageGroupId,
-                  tsFileManager,
-                  compactionLog,
-                  isInnerSpace)
+                  logicalStorageGroupName, dataRegionId, tsFileManager, compactionLog, isInnerSpace)
               .doCompaction();
         }
       }
@@ -120,11 +111,7 @@ public class CompactionRecoverManager {
     if (logFileFromOld.exists()) {
       logger.info("Calling compaction task to recover from previous version.");
       new CompactionRecoverTask(
-              logicalStorageGroupName,
-              virtualStorageGroupId,
-              tsFileManager,
-              logFileFromOld,
-              isInnerSpace)
+              logicalStorageGroupName, dataRegionId, tsFileManager, logFileFromOld, isInnerSpace)
           .doCompaction();
     }
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/TsFileFlushPolicy.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/TsFileFlushPolicy.java
index d71df87fd8..76ee02a1ad 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/TsFileFlushPolicy.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/TsFileFlushPolicy.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.engine.flush;
 
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 
 /**
  * TsFileFlushPolicy is applied when a TsFileProcessor is full after insertion. For standalone
@@ -29,20 +29,14 @@ import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
  */
 public interface TsFileFlushPolicy {
 
-  void apply(
-      VirtualStorageGroupProcessor virtualStorageGroupProcessor,
-      TsFileProcessor processor,
-      boolean isSeq);
+  void apply(DataRegion dataRegion, TsFileProcessor processor, boolean isSeq);
 
   class DirectFlushPolicy implements TsFileFlushPolicy {
 
     @Override
-    public void apply(
-        VirtualStorageGroupProcessor virtualStorageGroupProcessor,
-        TsFileProcessor tsFileProcessor,
-        boolean isSeq) {
+    public void apply(DataRegion dataRegion, TsFileProcessor tsFileProcessor, boolean isSeq) {
       if (tsFileProcessor.shouldClose()) {
-        virtualStorageGroupProcessor.asyncCloseOneTsFileProcessor(isSeq, tsFileProcessor);
+        dataRegion.asyncCloseOneTsFileProcessor(isSeq, tsFileProcessor);
       } else {
         tsFileProcessor.asyncFlush();
       }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
similarity index 96%
rename from server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
rename to server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
index 3d07a6cdfc..d249f41e05 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
@@ -46,9 +46,9 @@ import org.apache.iotdb.db.engine.upgrade.UpgradeLog;
 import org.apache.iotdb.db.engine.version.SimpleFileVersionController;
 import org.apache.iotdb.db.engine.version.VersionController;
 import org.apache.iotdb.db.exception.BatchProcessException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.DiskSpaceInsufficientException;
 import org.apache.iotdb.db.exception.LoadFileException;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TriggerExecutionException;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
 import org.apache.iotdb.db.exception.WriteProcessException;
@@ -129,7 +129,7 @@ import static org.apache.iotdb.db.engine.storagegroup.TsFileResource.TEMP_SUFFIX
 import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 /**
- * For sequence data, a StorageGroupProcessor has some TsFileProcessors, in which there is only one
+ * For sequence data, a DataRegion has some TsFileProcessors, in which there is only one
  * TsFileProcessor in the working status. <br>
  *
  * <p>There are two situations to set the working TsFileProcessor to closing status:<br>
@@ -148,7 +148,7 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFF
  * <p>When a TsFileProcessor is closed, the closeUnsealedTsFileProcessorCallBack() method will be
  * called as a callback.
  */
-public class VirtualStorageGroupProcessor {
+public class DataRegion {
 
   private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
   private static final Logger DEBUG_LOGGER = LoggerFactory.getLogger("QUERY_DEBUG");
@@ -159,7 +159,7 @@ public class VirtualStorageGroupProcessor {
    */
   private static final int MERGE_MOD_START_VERSION_NUM = 1;
 
-  private static final Logger logger = LoggerFactory.getLogger(VirtualStorageGroupProcessor.class);
+  private static final Logger logger = LoggerFactory.getLogger(DataRegion.class);
 
   /** indicating the file to be loaded overlap with some files. */
   private static final int POS_OVERLAP = -3;
@@ -199,8 +199,8 @@ public class VirtualStorageGroupProcessor {
 
   private AtomicBoolean isSettling = new AtomicBoolean();
 
-  /** virtual storage group id */
-  private String virtualStorageGroupId;
+  /** data region id */
+  private String dataRegionId;
   /** logical storage group name */
   private String logicalStorageGroupName;
   /** storage group system directory */
@@ -260,24 +260,23 @@ public class VirtualStorageGroupProcessor {
    * constrcut a storage group processor
    *
    * @param systemDir system dir path
-   * @param virtualStorageGroupId virtual storage group id e.g. 1
+   * @param dataRegionId data region id e.g. 1
    * @param fileFlushPolicy file flush policy
    * @param logicalStorageGroupName logical storage group name e.g. root.sg1
    */
-  public VirtualStorageGroupProcessor(
+  public DataRegion(
       String systemDir,
-      String virtualStorageGroupId,
+      String dataRegionId,
       TsFileFlushPolicy fileFlushPolicy,
       String logicalStorageGroupName)
-      throws StorageGroupProcessorException {
-    this.virtualStorageGroupId = virtualStorageGroupId;
+      throws DataRegionException {
+    this.dataRegionId = dataRegionId;
     this.logicalStorageGroupName = logicalStorageGroupName;
     this.fileFlushPolicy = fileFlushPolicy;
 
-    storageGroupSysDir = SystemFileFactory.INSTANCE.getFile(systemDir, virtualStorageGroupId);
+    storageGroupSysDir = SystemFileFactory.INSTANCE.getFile(systemDir, dataRegionId);
     this.tsFileManager =
-        new TsFileManager(
-            logicalStorageGroupName, virtualStorageGroupId, storageGroupSysDir.getPath());
+        new TsFileManager(logicalStorageGroupName, dataRegionId, storageGroupSysDir.getPath());
     if (storageGroupSysDir.mkdirs()) {
       logger.info(
           "Storage Group system Directory {} doesn't exist, create it",
@@ -343,7 +342,7 @@ public class VirtualStorageGroupProcessor {
   }
 
   /** this class is used to store recovering context */
-  private class VSGRecoveryContext {
+  private class DataRegionRecoveryContext {
     /** number of files to be recovered */
     private final long numOfFilesToRecover;
     /** when the change of recoveredFilesNum exceeds this, log check will be triggered */
@@ -355,7 +354,7 @@ public class VirtualStorageGroupProcessor {
     /** last recovery log files num */
     private long lastLogCheckFilesNum;
 
-    public VSGRecoveryContext(long numOfFilesToRecover) {
+    public DataRegionRecoveryContext(long numOfFilesToRecover) {
       this.numOfFilesToRecover = numOfFilesToRecover;
       this.recoveredFilesNum = 0;
       this.filesNumLogCheckTrigger = this.numOfFilesToRecover / 100;
@@ -371,10 +370,8 @@ public class VirtualStorageGroupProcessor {
         // log only when log interval exceeds recovery log interval
         if (lastLogTime + config.getRecoveryLogIntervalInMs() < System.currentTimeMillis()) {
           logger.info(
-              "The virtual storage group {}[{}] has recovered {}%, please wait a moment.",
-              logicalStorageGroupName,
-              virtualStorageGroupId,
-              recoveredFilesNum * 1.0 / numOfFilesToRecover);
+              "The data region {}[{}] has recovered {}%, please wait a moment.",
+              logicalStorageGroupName, dataRegionId, recoveredFilesNum * 1.0 / numOfFilesToRecover);
           lastLogTime = System.currentTimeMillis();
         }
       }
@@ -382,11 +379,11 @@ public class VirtualStorageGroupProcessor {
   }
 
   /** recover from file */
-  private void recover() throws StorageGroupProcessorException {
+  private void recover() throws DataRegionException {
     try {
       recoverCompaction();
     } catch (Exception e) {
-      throw new StorageGroupProcessorException(e);
+      throw new DataRegionException(e);
     }
 
     try {
@@ -408,8 +405,8 @@ public class VirtualStorageGroupProcessor {
 
       // split by partition so that we can find the last file of each partition and decide to
       // close it or not
-      VSGRecoveryContext VSGRecoveryContext =
-          new VSGRecoveryContext(tmpSeqTsFiles.size() + tmpUnseqTsFiles.size());
+      DataRegionRecoveryContext DataRegionRecoveryContext =
+          new DataRegionRecoveryContext(tmpSeqTsFiles.size() + tmpUnseqTsFiles.size());
       Map<Long, List<TsFileResource>> partitionTmpSeqTsFiles =
           splitResourcesByPartition(tmpSeqTsFiles);
       Map<Long, List<TsFileResource>> partitionTmpUnseqTsFiles =
@@ -425,7 +422,7 @@ public class VirtualStorageGroupProcessor {
           } else {
             value.remove(value.size() - 1);
             WALRecoverListener recoverListener =
-                recoverUnsealedTsFile(tsFileResource, VSGRecoveryContext, true);
+                recoverUnsealedTsFile(tsFileResource, DataRegionRecoveryContext, true);
             recoverListeners.add(recoverListener);
           }
         }
@@ -439,21 +436,21 @@ public class VirtualStorageGroupProcessor {
           } else {
             value.remove(value.size() - 1);
             WALRecoverListener recoverListener =
-                recoverUnsealedTsFile(tsFileResource, VSGRecoveryContext, false);
+                recoverUnsealedTsFile(tsFileResource, DataRegionRecoveryContext, false);
             recoverListeners.add(recoverListener);
           }
         }
       }
-      WALRecoverManager.getInstance().getAllVsgScannedLatch().countDown();
+      WALRecoverManager.getInstance().getAllDataRegionScannedLatch().countDown();
       // recover sealed TsFiles
       for (List<TsFileResource> value : partitionTmpSeqTsFiles.values()) {
         for (TsFileResource tsFileResource : value) {
-          recoverSealedTsFiles(tsFileResource, VSGRecoveryContext, true);
+          recoverSealedTsFiles(tsFileResource, DataRegionRecoveryContext, true);
         }
       }
       for (List<TsFileResource> value : partitionTmpUnseqTsFiles.values()) {
         for (TsFileResource tsFileResource : value) {
-          recoverSealedTsFiles(tsFileResource, VSGRecoveryContext, false);
+          recoverSealedTsFiles(tsFileResource, DataRegionRecoveryContext, false);
         }
       }
       // wait until all unsealed TsFiles have been recovered
@@ -465,7 +462,7 @@ public class VirtualStorageGroupProcessor {
               recoverListener.getCause());
         }
         // update VSGRecoveryContext
-        VSGRecoveryContext.incrementRecoveredFilesNum();
+        DataRegionRecoveryContext.incrementRecoveredFilesNum();
       }
       for (TsFileResource resource : tsFileManager.getTsFileList(true)) {
         long partitionNum = resource.getTimePartition();
@@ -485,7 +482,7 @@ public class VirtualStorageGroupProcessor {
       }
       updateLatestFlushedTime();
     } catch (IOException e) {
-      throw new StorageGroupProcessorException(e);
+      throw new DataRegionException(e);
     }
 
     List<TsFileResource> seqTsFileResources = tsFileManager.getTsFileList(true);
@@ -505,9 +502,7 @@ public class VirtualStorageGroupProcessor {
     initCompaction();
 
     logger.info(
-        "The virtual storage group {}[{}] is recovered successfully",
-        logicalStorageGroupName,
-        virtualStorageGroupId);
+        "The data region {}[{}] is recovered successfully", logicalStorageGroupName, dataRegionId);
   }
 
   private void initCompaction() {
@@ -517,7 +512,7 @@ public class VirtualStorageGroupProcessor {
                 + "-"
                 + logicalStorageGroupName
                 + "-"
-                + virtualStorageGroupId);
+                + dataRegionId);
     timedCompactionScheduleTask.scheduleWithFixedDelay(
         this::executeCompaction,
         COMPACTION_TASK_SUBMIT_DELAY,
@@ -527,7 +522,7 @@ public class VirtualStorageGroupProcessor {
 
   private void recoverCompaction() throws Exception {
     CompactionRecoverManager compactionRecoverManager =
-        new CompactionRecoverManager(tsFileManager, logicalStorageGroupName, virtualStorageGroupId);
+        new CompactionRecoverManager(tsFileManager, logicalStorageGroupName, dataRegionId);
     compactionRecoverManager.recoverInnerSpaceCompaction(true);
     compactionRecoverManager.recoverInnerSpaceCompaction(false);
     compactionRecoverManager.recoverCrossSpaceCompaction();
@@ -585,13 +580,12 @@ public class VirtualStorageGroupProcessor {
 
   @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
   private Pair<List<TsFileResource>, List<TsFileResource>> getAllFiles(List<String> folders)
-      throws IOException, StorageGroupProcessorException {
+      throws IOException, DataRegionException {
     List<File> tsFiles = new ArrayList<>();
     List<File> upgradeFiles = new ArrayList<>();
     for (String baseDir : folders) {
       File fileFolder =
-          fsFactory.getFile(
-              baseDir + File.separator + logicalStorageGroupName, virtualStorageGroupId);
+          fsFactory.getFile(baseDir + File.separator + logicalStorageGroupName, dataRegionId);
       if (!fileFolder.exists()) {
         continue;
       }
@@ -662,17 +656,17 @@ public class VirtualStorageGroupProcessor {
   }
 
   /** check if the tsfile's time is smaller than system current time */
-  private void checkTsFileTime(File tsFile) throws StorageGroupProcessorException {
+  private void checkTsFileTime(File tsFile) throws DataRegionException {
     String[] items = tsFile.getName().replace(TSFILE_SUFFIX, "").split(FILE_NAME_SEPARATOR);
     long fileTime = Long.parseLong(items[0]);
     long currentTime = System.currentTimeMillis();
     if (fileTime > currentTime) {
-      throw new StorageGroupProcessorException(
+      throw new DataRegionException(
           String.format(
-              "virtual storage group %s[%s] is down, because the time of tsfile %s is larger than system current time, "
+              "data region %s[%s] is down, because the time of tsfile %s is larger than system current time, "
                   + "file time is %d while system current time is %d, please check it.",
               logicalStorageGroupName,
-              virtualStorageGroupId,
+              dataRegionId,
               tsFile.getAbsolutePath(),
               fileTime,
               currentTime));
@@ -681,7 +675,7 @@ public class VirtualStorageGroupProcessor {
 
   /** submit unsealed TsFile to WALRecoverManager */
   private WALRecoverListener recoverUnsealedTsFile(
-      TsFileResource unsealedTsFile, VSGRecoveryContext context, boolean isSeq) {
+      TsFileResource unsealedTsFile, DataRegionRecoveryContext context, boolean isSeq) {
     UnsealedTsFileRecoverPerformer recoverPerformer =
         new UnsealedTsFileRecoverPerformer(
             unsealedTsFile, isSeq, idTable, this::callbackAfterUnsealedTsFileRecovered);
@@ -707,7 +701,7 @@ public class VirtualStorageGroupProcessor {
       boolean isSeq = recoverPerformer.isSequence();
       TsFileProcessor tsFileProcessor =
           new TsFileProcessor(
-              virtualStorageGroupId,
+              dataRegionId,
               storageGroupInfo,
               tsFileResource,
               this::closeUnsealedTsFileProcessorCallBack,
@@ -744,7 +738,7 @@ public class VirtualStorageGroupProcessor {
 
   /** recover sealed TsFile */
   private void recoverSealedTsFiles(
-      TsFileResource sealedTsFile, VSGRecoveryContext context, boolean isSeq) {
+      TsFileResource sealedTsFile, DataRegionRecoveryContext context, boolean isSeq) {
     try (SealedTsFileRecoverPerformer recoverPerformer =
         new SealedTsFileRecoverPerformer(sealedTsFile)) {
       recoverPerformer.recover();
@@ -762,7 +756,7 @@ public class VirtualStorageGroupProcessor {
       sealedTsFile.close();
       tsFileManager.add(sealedTsFile, isSeq);
       tsFileResourceManager.registerSealedTsFileResource(sealedTsFile);
-    } catch (StorageGroupProcessorException | IOException e) {
+    } catch (DataRegionException | IOException e) {
       logger.error("Fail to recover sealed TsFile {}, skip it.", sealedTsFile.getTsFilePath(), e);
     } finally {
       // update recovery context
@@ -1403,7 +1397,7 @@ public class VirtualStorageGroupProcessor {
         TsFileNameGenerator.generateNewTsFilePathWithMkdir(
             sequence,
             logicalStorageGroupName,
-            virtualStorageGroupId,
+            dataRegionId,
             timePartitionId,
             System.currentTimeMillis(),
             version,
@@ -1419,7 +1413,7 @@ public class VirtualStorageGroupProcessor {
     if (sequence) {
       tsFileProcessor =
           new TsFileProcessor(
-              logicalStorageGroupName + File.separator + virtualStorageGroupId,
+              logicalStorageGroupName + File.separator + dataRegionId,
               fsFactory.getFileWithParent(filePath),
               storageGroupInfo,
               this::closeUnsealedTsFileProcessorCallBack,
@@ -1428,7 +1422,7 @@ public class VirtualStorageGroupProcessor {
     } else {
       tsFileProcessor =
           new TsFileProcessor(
-              logicalStorageGroupName + File.separator + virtualStorageGroupId,
+              logicalStorageGroupName + File.separator + dataRegionId,
               fsFactory.getFileWithParent(filePath),
               storageGroupInfo,
               this::closeUnsealedTsFileProcessorCallBack,
@@ -1481,7 +1475,7 @@ public class VirtualStorageGroupProcessor {
           if (System.currentTimeMillis() - startTime > 60_000) {
             logger.warn(
                 "{} has spent {}s to wait for closing one tsfile.",
-                logicalStorageGroupName + "-" + this.virtualStorageGroupId,
+                logicalStorageGroupName + "-" + this.dataRegionId,
                 (System.currentTimeMillis() - startTime) / 1000);
           }
         }
@@ -1490,7 +1484,7 @@ public class VirtualStorageGroupProcessor {
         logger.error(
             "syncCloseOneTsFileProcessor error occurs while waiting for closing the storage "
                 + "group {}",
-            logicalStorageGroupName + "-" + virtualStorageGroupId,
+            logicalStorageGroupName + "-" + dataRegionId,
             e);
       }
     }
@@ -1525,8 +1519,7 @@ public class VirtualStorageGroupProcessor {
         timePartitionIdVersionControllerMap.remove(tsFileProcessor.getTimeRangeId());
       }
       logger.info(
-          "close a sequence tsfile processor {}",
-          logicalStorageGroupName + "-" + virtualStorageGroupId);
+          "close a sequence tsfile processor {}", logicalStorageGroupName + "-" + dataRegionId);
     } else {
       closingUnSequenceTsFileProcessor.add(tsFileProcessor);
       tsFileProcessor.asyncClose();
@@ -1548,12 +1541,11 @@ public class VirtualStorageGroupProcessor {
   public void deleteFolder(String systemDir) {
     logger.info(
         "{} will close all files for deleting data folder {}",
-        logicalStorageGroupName + "-" + virtualStorageGroupId,
+        logicalStorageGroupName + "-" + dataRegionId,
         systemDir);
     writeLock("deleteFolder");
     try {
-      File storageGroupFolder =
-          SystemFileFactory.INSTANCE.getFile(systemDir, virtualStorageGroupId);
+      File storageGroupFolder = SystemFileFactory.INSTANCE.getFile(systemDir, dataRegionId);
       if (storageGroupFolder.exists()) {
         org.apache.iotdb.db.utils.FileUtils.deleteDirectory(storageGroupFolder);
       }
@@ -1584,7 +1576,7 @@ public class VirtualStorageGroupProcessor {
   public void syncDeleteDataFiles() {
     logger.info(
         "{} will close all files for deleting data files",
-        logicalStorageGroupName + "-" + virtualStorageGroupId);
+        logicalStorageGroupName + "-" + dataRegionId);
     writeLock("syncDeleteDataFiles");
     try {
 
@@ -1610,8 +1602,7 @@ public class VirtualStorageGroupProcessor {
   private void deleteAllSGFolders(List<String> folder) {
     for (String tsfilePath : folder) {
       File storageGroupFolder =
-          fsFactory.getFile(
-              tsfilePath, logicalStorageGroupName + File.separator + virtualStorageGroupId);
+          fsFactory.getFile(tsfilePath, logicalStorageGroupName + File.separator + dataRegionId);
       if (storageGroupFolder.exists()) {
         org.apache.iotdb.db.utils.FileUtils.deleteDirectory(storageGroupFolder);
       }
@@ -1622,14 +1613,13 @@ public class VirtualStorageGroupProcessor {
   public synchronized void checkFilesTTL() {
     if (dataTTL == Long.MAX_VALUE) {
       logger.debug(
-          "{}: TTL not set, ignore the check",
-          logicalStorageGroupName + "-" + virtualStorageGroupId);
+          "{}: TTL not set, ignore the check", logicalStorageGroupName + "-" + dataRegionId);
       return;
     }
     long ttlLowerBound = System.currentTimeMillis() - dataTTL;
     logger.debug(
         "{}: TTL removing files before {}",
-        logicalStorageGroupName + "-" + virtualStorageGroupId,
+        logicalStorageGroupName + "-" + dataRegionId,
         new Date(ttlLowerBound));
 
     // copy to avoid concurrent modification of deletion
@@ -1683,7 +1673,7 @@ public class VirtualStorageGroupProcessor {
               "Exceed sequence memtable flush interval, so flush working memtable of time partition {} in storage group {}[{}]",
               tsFileProcessor.getTimeRangeId(),
               logicalStorageGroupName,
-              virtualStorageGroupId);
+              dataRegionId);
           fileFlushPolicy.apply(this, tsFileProcessor, tsFileProcessor.isSequence());
         }
       }
@@ -1706,7 +1696,7 @@ public class VirtualStorageGroupProcessor {
               "Exceed unsequence memtable flush interval, so flush working memtable of time partition {} in storage group {}[{}]",
               tsFileProcessor.getTimeRangeId(),
               logicalStorageGroupName,
-              virtualStorageGroupId);
+              dataRegionId);
           fileFlushPolicy.apply(this, tsFileProcessor, tsFileProcessor.isSequence());
         }
       }
@@ -1727,7 +1717,7 @@ public class VirtualStorageGroupProcessor {
           if (System.currentTimeMillis() - startTime > 60_000) {
             logger.warn(
                 "{} has spent {}s to wait for closing all TsFiles.",
-                logicalStorageGroupName + "-" + this.virtualStorageGroupId,
+                logicalStorageGroupName + "-" + this.dataRegionId,
                 (System.currentTimeMillis() - startTime) / 1000);
           }
         }
@@ -1735,7 +1725,7 @@ public class VirtualStorageGroupProcessor {
         logger.error(
             "CloseFileNodeCondition error occurs while waiting for closing the storage "
                 + "group {}",
-            logicalStorageGroupName + "-" + virtualStorageGroupId,
+            logicalStorageGroupName + "-" + dataRegionId,
             e);
         Thread.currentThread().interrupt();
       }
@@ -1748,7 +1738,7 @@ public class VirtualStorageGroupProcessor {
     try {
       logger.info(
           "async force close all files in storage group: {}",
-          logicalStorageGroupName + "-" + virtualStorageGroupId);
+          logicalStorageGroupName + "-" + dataRegionId);
       // to avoid concurrent modification problem, we need a new array list
       for (TsFileProcessor tsFileProcessor :
           new ArrayList<>(workSequenceTsFileProcessors.values())) {
@@ -1770,7 +1760,7 @@ public class VirtualStorageGroupProcessor {
     try {
       logger.info(
           "force close all processors in storage group: {}",
-          logicalStorageGroupName + "-" + virtualStorageGroupId);
+          logicalStorageGroupName + "-" + dataRegionId);
       // to avoid concurrent modification problem, we need a new array list
       for (TsFileProcessor tsFileProcessor :
           new ArrayList<>(workSequenceTsFileProcessors.values())) {
@@ -2246,7 +2236,7 @@ public class VirtualStorageGroupProcessor {
     }
     logger.info(
         "signal closing storage group condition in {}",
-        logicalStorageGroupName + "-" + virtualStorageGroupId);
+        logicalStorageGroupName + "-" + dataRegionId);
   }
 
   private void executeCompaction() {
@@ -2795,7 +2785,7 @@ public class VirtualStorageGroupProcessor {
                 DirectoryManager.getInstance().getNextFolderForUnSequenceFile(),
                 logicalStorageGroupName
                     + File.separatorChar
-                    + virtualStorageGroupId
+                    + dataRegionId
                     + File.separatorChar
                     + filePartitionId
                     + File.separator
@@ -2817,7 +2807,7 @@ public class VirtualStorageGroupProcessor {
                 DirectoryManager.getInstance().getNextFolderForSequenceFile(),
                 logicalStorageGroupName
                     + File.separatorChar
-                    + virtualStorageGroupId
+                    + dataRegionId
                     + File.separatorChar
                     + filePartitionId
                     + File.separator
@@ -3049,13 +3039,13 @@ public class VirtualStorageGroupProcessor {
     return tsFileManager.getTsFileList(false);
   }
 
-  public String getVirtualStorageGroupId() {
-    return virtualStorageGroupId;
+  public String getDataRegionId() {
+    return dataRegionId;
   }
 
-  /** @return virtual storage group path, like root.sg1/0 */
+  /** @return data region path, like root.sg1/0 */
   public String getStorageGroupPath() {
-    return logicalStorageGroupName + File.separator + virtualStorageGroupId;
+    return logicalStorageGroupName + File.separator + dataRegionId;
   }
 
   public StorageGroupInfo getStorageGroupInfo() {
@@ -3152,7 +3142,7 @@ public class VirtualStorageGroupProcessor {
     tsFileManager.setAllowCompaction(false);
     List<AbstractCompactionTask> runningTasks =
         CompactionTaskManager.getInstance()
-            .abortCompaction(logicalStorageGroupName + "-" + virtualStorageGroupId);
+            .abortCompaction(logicalStorageGroupName + "-" + dataRegionId);
     while (CompactionTaskManager.getInstance().isAnyTaskInListStillRunning(runningTasks)) {
       try {
         TimeUnit.MILLISECONDS.sleep(10);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupInfo.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupInfo.java
index 77cbfe9680..8577c427e7 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupInfo.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupInfo.java
@@ -28,7 +28,7 @@ import java.util.concurrent.atomic.AtomicLong;
 /** The storageGroupInfo records the total memory cost of the Storage Group. */
 public class StorageGroupInfo {
 
-  private VirtualStorageGroupProcessor virtualStorageGroupProcessor;
+  private DataRegion dataRegion;
 
   /**
    * The total Storage group memory cost, including unsealed TsFileResource, ChunkMetadata, WAL,
@@ -45,13 +45,13 @@ public class StorageGroupInfo {
   /** A set of all unclosed TsFileProcessors in this SG */
   private List<TsFileProcessor> reportedTsps = new CopyOnWriteArrayList<>();
 
-  public StorageGroupInfo(VirtualStorageGroupProcessor virtualStorageGroupProcessor) {
-    this.virtualStorageGroupProcessor = virtualStorageGroupProcessor;
+  public StorageGroupInfo(DataRegion dataRegion) {
+    this.dataRegion = dataRegion;
     memoryCost = new AtomicLong();
   }
 
-  public VirtualStorageGroupProcessor getVirtualStorageGroupProcessor() {
-    return virtualStorageGroupProcessor;
+  public DataRegion getDataRegion() {
+    return dataRegion;
   }
 
   /** When create a new TsFileProcessor, call this method */
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileManager.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileManager.java
index 8f03876d28..b816f28c42 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileManager.java
@@ -44,7 +44,7 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFF
 public class TsFileManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(TsFileManager.class);
   private String storageGroupName;
-  private String virtualStorageGroup;
+  private String dataRegion;
   private String storageGroupDir;
 
   /** Serialize queries, delete resource files, compaction cleanup files */
@@ -60,11 +60,10 @@ public class TsFileManager {
 
   private boolean allowCompaction = true;
 
-  public TsFileManager(
-      String storageGroupName, String virtualStorageGroup, String storageGroupDir) {
+  public TsFileManager(String storageGroupName, String dataRegion, String storageGroupDir) {
     this.storageGroupName = storageGroupName;
     this.storageGroupDir = storageGroupDir;
-    this.virtualStorageGroup = virtualStorageGroup;
+    this.dataRegion = dataRegion;
   }
 
   public List<TsFileResource> getTsFileList(boolean sequence) {
@@ -355,12 +354,12 @@ public class TsFileManager {
     this.allowCompaction = allowCompaction;
   }
 
-  public String getVirtualStorageGroup() {
-    return virtualStorageGroup;
+  public String getDataRegion() {
+    return dataRegion;
   }
 
-  public void setVirtualStorageGroup(String virtualStorageGroup) {
-    this.virtualStorageGroup = virtualStorageGroup;
+  public void setDataRegion(String dataRegion) {
+    this.dataRegion = dataRegion;
   }
 
   public List<TsFileResource> getSequenceRecoverTsFileResources() {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 1f1363edda..e6716ced65 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -34,7 +34,7 @@ import org.apache.iotdb.db.engine.memtable.IMemTable;
 import org.apache.iotdb.db.engine.modification.Deletion;
 import org.apache.iotdb.db.engine.modification.Modification;
 import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.UpdateEndTimeCallBack;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.UpdateEndTimeCallBack;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.WriteProcessRejectException;
@@ -1579,7 +1579,7 @@ public class TsFileProcessor {
   }
 
   public void submitAFlushTask() {
-    this.storageGroupInfo.getVirtualStorageGroupProcessor().submitAFlushTaskWhenShouldFlush(this);
+    this.storageGroupInfo.getDataRegion().submitAFlushTaskWhenShouldFlush(this);
   }
 
   public boolean alreadyMarkedClosing() {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorInfo.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorInfo.java
index b4c24fcab5..ae9b885fe5 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorInfo.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorInfo.java
@@ -49,8 +49,7 @@ public class TsFileProcessorInfo {
               Metric.MEM.toString(),
               MetricLevel.IMPORTANT,
               Tag.NAME.toString(),
-              "chunkMetaData_"
-                  + storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName())
+              "chunkMetaData_" + storageGroupInfo.getDataRegion().getLogicalStorageGroupName())
           .incr(cost);
     }
   }
@@ -66,8 +65,7 @@ public class TsFileProcessorInfo {
               Metric.MEM.toString(),
               MetricLevel.IMPORTANT,
               Tag.NAME.toString(),
-              "chunkMetaData_"
-                  + storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName())
+              "chunkMetaData_" + storageGroupInfo.getDataRegion().getLogicalStorageGroupName())
           .decr(cost);
     }
   }
@@ -82,8 +80,7 @@ public class TsFileProcessorInfo {
               Metric.MEM.toString(),
               MetricLevel.IMPORTANT,
               Tag.NAME.toString(),
-              "chunkMetaData_"
-                  + storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName())
+              "chunkMetaData_" + storageGroupInfo.getDataRegion().getLogicalStorageGroupName())
           .decr(memCost);
     }
     memCost = 0L;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index 6c9e83c8b5..610e6c47e4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -23,9 +23,9 @@ import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
 import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.SettleTsFileCallBack;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.UpgradeTsFileResourceCallBack;
 import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator.TsFileName;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.SettleTsFileCallBack;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.UpgradeTsFileResourceCallBack;
 import org.apache.iotdb.db.engine.storagegroup.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.engine.storagegroup.timeindex.FileTimeIndex;
 import org.apache.iotdb.db.engine.storagegroup.timeindex.ITimeIndex;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitioner.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitioner.java
similarity index 89%
rename from server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitioner.java
rename to server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitioner.java
index 14537e8ef7..34573c4c67 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitioner.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitioner.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.engine.storagegroup.virtualSg;
+package org.apache.iotdb.db.engine.storagegroup.dataregion;
 
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -25,7 +25,7 @@ public class HashVirtualPartitioner implements VirtualPartitioner {
 
   /** total number of virtual storage groups */
   public static int STORAGE_GROUP_NUM =
-      IoTDBDescriptor.getInstance().getConfig().getVirtualStorageGroupNum();
+      IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
 
   private HashVirtualPartitioner() {}
 
@@ -34,7 +34,7 @@ public class HashVirtualPartitioner implements VirtualPartitioner {
   }
 
   @Override
-  public int deviceToVirtualStorageGroupId(PartialPath deviceId) {
+  public int deviceToDataRegionId(PartialPath deviceId) {
     return toStorageGroupId(deviceId);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/StorageGroupManager.java
similarity index 65%
rename from server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java
rename to server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/StorageGroupManager.java
index 0f7e70520a..c6b455b365 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/StorageGroupManager.java
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.engine.storagegroup.virtualSg;
+package org.apache.iotdb.db.engine.storagegroup.dataregion;
 
 import org.apache.iotdb.commons.concurrent.ThreadName;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.StorageGroupNotReadyException;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -59,16 +59,16 @@ public class StorageGroupManager {
   VirtualPartitioner partitioner = HashVirtualPartitioner.getInstance();
 
   /** all virtual storage group processor */
-  VirtualStorageGroupProcessor[] virtualStorageGroupProcessor;
+  DataRegion[] dataRegion;
 
   /**
    * recover status of each virtual storage group processor, null if this logical storage group is
    * new created
    */
-  private AtomicBoolean[] isVsgReady;
+  private AtomicBoolean[] isDataRegionReady;
 
   /** number of ready virtual storage group processors */
-  private AtomicInteger readyVsgNum;
+  private AtomicInteger readyDataRegionNum;
 
   private AtomicBoolean isSettling = new AtomicBoolean();
 
@@ -80,61 +80,55 @@ public class StorageGroupManager {
   }
 
   public StorageGroupManager(boolean needRecovering) {
-    virtualStorageGroupProcessor =
-        new VirtualStorageGroupProcessor[partitioner.getPartitionCount()];
-    isVsgReady = new AtomicBoolean[partitioner.getPartitionCount()];
+    dataRegion = new DataRegion[partitioner.getPartitionCount()];
+    isDataRegionReady = new AtomicBoolean[partitioner.getPartitionCount()];
     boolean recoverReady = !needRecovering;
     for (int i = 0; i < partitioner.getPartitionCount(); i++) {
-      isVsgReady[i] = new AtomicBoolean(recoverReady);
+      isDataRegionReady[i] = new AtomicBoolean(recoverReady);
     }
   }
 
   /** push forceCloseAllWorkingTsFileProcessors down to all sg */
   public void forceCloseAllWorkingTsFileProcessors() throws TsFileProcessorException {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.forceCloseAllWorkingTsFileProcessors();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.forceCloseAllWorkingTsFileProcessors();
       }
     }
   }
 
   /** push syncCloseAllWorkingTsFileProcessors down to all sg */
   public void syncCloseAllWorkingTsFileProcessors() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.syncCloseAllWorkingTsFileProcessors();
       }
     }
   }
 
   /** push check ttl down to all sg */
   public void checkTTL() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.checkFilesTTL();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.checkFilesTTL();
       }
     }
   }
 
   /** push check sequence memtable flush interval down to all sg */
   public void timedFlushSeqMemTable() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.timedFlushSeqMemTable();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.timedFlushSeqMemTable();
       }
     }
   }
 
   /** push check unsequence memtable flush interval down to all sg */
   public void timedFlushUnseqMemTable() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.timedFlushUnseqMemTable();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.timedFlushUnseqMemTable();
       }
     }
   }
@@ -145,31 +139,30 @@ public class StorageGroupManager {
    * @param partialPath device path
    * @return virtual storage group processor
    */
-  public VirtualStorageGroupProcessor getProcessor(
-      PartialPath partialPath, IStorageGroupMNode storageGroupMNode)
-      throws StorageGroupProcessorException, StorageEngineException {
-    int vsgId = partitioner.deviceToVirtualStorageGroupId(partialPath);
-    return getProcessor(storageGroupMNode, vsgId);
+  public DataRegion getProcessor(PartialPath partialPath, IStorageGroupMNode storageGroupMNode)
+      throws DataRegionException, StorageEngineException {
+    int dataRegionId = partitioner.deviceToDataRegionId(partialPath);
+    return getProcessor(storageGroupMNode, dataRegionId);
   }
 
   @SuppressWarnings("java:S2445")
   // actually storageGroupMNode is a unique object on the mtree, synchronize it is reasonable
-  public VirtualStorageGroupProcessor getProcessor(IStorageGroupMNode storageGroupMNode, int vsgId)
-      throws StorageGroupProcessorException, StorageEngineException {
-    VirtualStorageGroupProcessor processor = virtualStorageGroupProcessor[vsgId];
+  public DataRegion getProcessor(IStorageGroupMNode storageGroupMNode, int dataRegionId)
+      throws DataRegionException, StorageEngineException {
+    DataRegion processor = dataRegion[dataRegionId];
     if (processor == null) {
       // if finish recover
-      if (isVsgReady[vsgId].get()) {
+      if (isDataRegionReady[dataRegionId].get()) {
         synchronized (storageGroupMNode) {
-          processor = virtualStorageGroupProcessor[vsgId];
+          processor = dataRegion[dataRegionId];
           if (processor == null) {
             processor =
                 StorageEngine.getInstance()
                     .buildNewStorageGroupProcessor(
                         storageGroupMNode.getPartialPath(),
                         storageGroupMNode,
-                        String.valueOf(vsgId));
-            virtualStorageGroupProcessor[vsgId] = processor;
+                        String.valueOf(dataRegionId));
+            dataRegion[dataRegionId] = processor;
           }
         }
       } else {
@@ -191,13 +184,13 @@ public class StorageGroupManager {
    */
   public void asyncRecover(
       IStorageGroupMNode storageGroupMNode, ExecutorService pool, List<Future<Void>> futures) {
-    readyVsgNum = new AtomicInteger(0);
+    readyDataRegionNum = new AtomicInteger(0);
     for (int i = 0; i < partitioner.getPartitionCount(); i++) {
       int cur = i;
       Callable<Void> recoverVsgTask =
           () -> {
-            isVsgReady[cur].set(false);
-            VirtualStorageGroupProcessor processor = null;
+            isDataRegionReady[cur].set(false);
+            DataRegion processor = null;
             try {
               processor =
                   StorageEngine.getInstance()
@@ -205,7 +198,7 @@ public class StorageGroupManager {
                           storageGroupMNode.getPartialPath(),
                           storageGroupMNode,
                           String.valueOf(cur));
-            } catch (StorageGroupProcessorException e) {
+            } catch (DataRegionException e) {
               logger.error(
                   "Failed to recover virtual storage group {}[{}]",
                   storageGroupMNode.getFullPath(),
@@ -213,12 +206,12 @@ public class StorageGroupManager {
                   e);
             }
 
-            virtualStorageGroupProcessor[cur] = processor;
-            isVsgReady[cur].set(true);
+            dataRegion[cur] = processor;
+            isDataRegionReady[cur].set(true);
             logger.info(
                 "Storage Group {} has been recovered {}/{}",
                 storageGroupMNode.getFullPath(),
-                readyVsgNum.incrementAndGet(),
+                readyDataRegionNum.incrementAndGet(),
                 partitioner.getPartitionCount());
             return null;
           };
@@ -240,7 +233,7 @@ public class StorageGroupManager {
 
   /** push closeStorageGroupProcessor operation down to all virtual storage group processors */
   public void closeStorageGroupProcessor(boolean isSeq, boolean isSync) {
-    for (VirtualStorageGroupProcessor processor : virtualStorageGroupProcessor) {
+    for (DataRegion processor : dataRegion) {
       if (processor == null) {
         continue;
       }
@@ -249,7 +242,7 @@ public class StorageGroupManager {
         logger.info(
             "{} closing sg processor is called for closing {}, seq = {}",
             isSync ? "sync" : "async",
-            processor.getVirtualStorageGroupId() + "-" + processor.getLogicalStorageGroupName(),
+            processor.getDataRegionId() + "-" + processor.getLogicalStorageGroupName(),
             isSeq);
       }
 
@@ -284,11 +277,11 @@ public class StorageGroupManager {
 
   /** push closeStorageGroupProcessor operation down to all virtual storage group processors */
   public void closeStorageGroupProcessor(long partitionId, boolean isSeq, boolean isSync) {
-    for (VirtualStorageGroupProcessor processor : virtualStorageGroupProcessor) {
+    for (DataRegion processor : dataRegion) {
       if (processor != null) {
         logger.info(
             "async closing sg processor is called for closing {}, seq = {}, partitionId = {}",
-            processor.getVirtualStorageGroupId() + "-" + processor.getLogicalStorageGroupName(),
+            processor.getDataRegionId() + "-" + processor.getLogicalStorageGroupName(),
             isSeq,
             partitionId);
         processor.writeLock("VirtualCloseStorageGroupProcessor-242");
@@ -323,11 +316,9 @@ public class StorageGroupManager {
       long planIndex,
       TimePartitionFilter timePartitionFilter)
       throws IOException {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.delete(
-            path, startTime, endTime, planIndex, timePartitionFilter);
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.delete(path, startTime, endTime, planIndex, timePartitionFilter);
       }
     }
   }
@@ -335,10 +326,9 @@ public class StorageGroupManager {
   /** push countUpgradeFiles operation down to all virtual storage group processors */
   public int countUpgradeFiles() {
     int totalUpgradeFileNum = 0;
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        totalUpgradeFileNum += virtualStorageGroupProcessor.countUpgradeFiles();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        totalUpgradeFileNum += dataRegion.countUpgradeFiles();
       }
     }
 
@@ -347,10 +337,9 @@ public class StorageGroupManager {
 
   /** push upgradeAll operation down to all virtual storage group processors */
   public void upgradeAll() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.upgrade();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.upgrade();
       }
     }
   }
@@ -359,10 +348,9 @@ public class StorageGroupManager {
       List<TsFileResource> seqResourcesToBeSettled,
       List<TsFileResource> unseqResourcesToBeSettled,
       List<String> tsFilePaths) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.addSettleFilesToList(
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.addSettleFilesToList(
             seqResourcesToBeSettled, unseqResourcesToBeSettled, tsFilePaths);
       }
     }
@@ -370,37 +358,34 @@ public class StorageGroupManager {
 
   /** push mergeAll operation down to all virtual storage group processors */
   public void mergeAll() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.compact();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.compact();
       }
     }
   }
 
   /** push syncDeleteDataFiles operation down to all virtual storage group processors */
   public void syncDeleteDataFiles() {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.syncDeleteDataFiles();
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.syncDeleteDataFiles();
       }
     }
   }
 
   /** push setTTL operation down to all virtual storage group processors */
   public void setTTL(long dataTTL) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.setDataTTL(dataTTL);
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.setDataTTL(dataTTL);
       }
     }
   }
 
   /** push deleteStorageGroup operation down to all virtual storage group processors */
   public void deleteStorageGroupSystemFolder(String path) {
-    for (VirtualStorageGroupProcessor processor : virtualStorageGroupProcessor) {
+    for (DataRegion processor : dataRegion) {
       if (processor != null) {
         processor.deleteFolder(path);
       }
@@ -410,11 +395,10 @@ public class StorageGroupManager {
   /** push getAllClosedStorageGroupTsFile operation down to all virtual storage group processors */
   public void getAllClosedStorageGroupTsFile(
       PartialPath storageGroupName, Map<PartialPath, Map<Long, List<TsFileResource>>> ret) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        List<TsFileResource> allResources = virtualStorageGroupProcessor.getSequenceFileList();
-        allResources.addAll(virtualStorageGroupProcessor.getUnSequenceFileList());
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        List<TsFileResource> allResources = dataRegion.getSequenceFileList();
+        allResources.addAll(dataRegion.getUnSequenceFileList());
         for (TsFileResource tsfile : allResources) {
           if (!tsfile.isClosed()) {
             continue;
@@ -430,20 +414,18 @@ public class StorageGroupManager {
 
   /** push setPartitionVersionToMax operation down to all virtual storage group processors */
   public void setPartitionVersionToMax(long partitionId, long newMaxVersion) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.setPartitionFileVersionToMax(partitionId, newMaxVersion);
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.setPartitionFileVersionToMax(partitionId, newMaxVersion);
       }
     }
   }
 
   /** push removePartitions operation down to all virtual storage group processors */
   public void removePartitions(TimePartitionFilter filter) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
-        virtualStorageGroupProcessor.removePartitions(filter);
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
+        dataRegion.removePartitions(filter);
       }
     }
   }
@@ -453,18 +435,15 @@ public class StorageGroupManager {
    */
   public void getWorkingStorageGroupPartitions(
       String storageGroupName, Map<String, List<Pair<Long, Boolean>>> res) {
-    for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
-        this.virtualStorageGroupProcessor) {
-      if (virtualStorageGroupProcessor != null) {
+    for (DataRegion dataRegion : this.dataRegion) {
+      if (dataRegion != null) {
         List<Pair<Long, Boolean>> partitionIdList = new ArrayList<>();
-        for (TsFileProcessor tsFileProcessor :
-            virtualStorageGroupProcessor.getWorkSequenceTsFileProcessors()) {
+        for (TsFileProcessor tsFileProcessor : dataRegion.getWorkSequenceTsFileProcessors()) {
           Pair<Long, Boolean> tmpPair = new Pair<>(tsFileProcessor.getTimeRangeId(), true);
           partitionIdList.add(tmpPair);
         }
 
-        for (TsFileProcessor tsFileProcessor :
-            virtualStorageGroupProcessor.getWorkUnsequenceTsFileProcessors()) {
+        for (TsFileProcessor tsFileProcessor : dataRegion.getWorkUnsequenceTsFileProcessors()) {
           Pair<Long, Boolean> tmpPair = new Pair<>(tsFileProcessor.getTimeRangeId(), false);
           partitionIdList.add(tmpPair);
         }
@@ -476,11 +455,11 @@ public class StorageGroupManager {
 
   /** only for test */
   public void reset() {
-    Arrays.fill(virtualStorageGroupProcessor, null);
+    Arrays.fill(dataRegion, null);
   }
 
   public void stopSchedulerPool() {
-    for (VirtualStorageGroupProcessor vsg : this.virtualStorageGroupProcessor) {
+    for (DataRegion vsg : this.dataRegion) {
       if (vsg != null) {
         ThreadUtils.stopThreadPool(
             vsg.getTimedCompactionScheduleTask(), ThreadName.COMPACTION_SCHEDULE);
@@ -493,13 +472,13 @@ public class StorageGroupManager {
   }
 
   public void setAllowCompaction(boolean allowCompaction) {
-    for (VirtualStorageGroupProcessor processor : virtualStorageGroupProcessor) {
+    for (DataRegion processor : dataRegion) {
       processor.setAllowCompaction(allowCompaction);
     }
   }
 
   public void abortCompaction() {
-    for (VirtualStorageGroupProcessor processor : virtualStorageGroupProcessor) {
+    for (DataRegion processor : dataRegion) {
       processor.abortCompaction();
     }
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/VirtualPartitioner.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/VirtualPartitioner.java
similarity index 80%
rename from server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/VirtualPartitioner.java
rename to server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/VirtualPartitioner.java
index ea6ab05d20..721cfaf4cc 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/VirtualPartitioner.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/dataregion/VirtualPartitioner.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.engine.storagegroup.virtualSg;
+package org.apache.iotdb.db.engine.storagegroup.dataregion;
 
 import org.apache.iotdb.db.metadata.path.PartialPath;
 
@@ -26,14 +26,14 @@ public interface VirtualPartitioner {
    * use device id to determine storage group id
    *
    * @param deviceId device id
-   * @return virtual storage group id
+   * @return data region id
    */
-  int deviceToVirtualStorageGroupId(PartialPath deviceId);
+  int deviceToDataRegionId(PartialPath deviceId);
 
   /**
-   * get total number of virtual storage group
+   * get total number of data region
    *
-   * @return total number of virtual storage group
+   * @return total number of data region
    */
   int getPartitionCount();
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/exception/StorageGroupProcessorException.java b/server/src/main/java/org/apache/iotdb/db/exception/DataRegionException.java
similarity index 74%
rename from server/src/main/java/org/apache/iotdb/db/exception/StorageGroupProcessorException.java
rename to server/src/main/java/org/apache/iotdb/db/exception/DataRegionException.java
index c3e6616fca..329a9cb249 100644
--- a/server/src/main/java/org/apache/iotdb/db/exception/StorageGroupProcessorException.java
+++ b/server/src/main/java/org/apache/iotdb/db/exception/DataRegionException.java
@@ -21,15 +21,15 @@ package org.apache.iotdb.db.exception;
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-public class StorageGroupProcessorException extends IoTDBException {
+public class DataRegionException extends IoTDBException {
 
   private static final long serialVersionUID = 7373978140952977661L;
 
-  public StorageGroupProcessorException(Exception exception) {
-    super(exception, TSStatusCode.STORAGE_GROUP_PROCESSOR_ERROR.getStatusCode());
+  public DataRegionException(Exception exception) {
+    super(exception, TSStatusCode.DATA_REGION_ERROR.getStatusCode());
   }
 
-  public StorageGroupProcessorException(String message) {
-    super(message, TSStatusCode.STORAGE_GROUP_PROCESSOR_ERROR.getStatusCode());
+  public DataRegionException(String message) {
+    super(message, TSStatusCode.DATA_REGION_ERROR.getStatusCode());
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/tag/TagManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/tag/TagManager.java
index b883644a0f..97f1749731 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/tag/TagManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/tag/TagManager.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.metadata.tag;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -138,11 +138,9 @@ public class TagManager {
     // if ordered by heat, we sort all the timeseries by the descending order of the last insert
     // timestamp
     if (plan.isOrderByHeat()) {
-      List<VirtualStorageGroupProcessor> list;
+      List<DataRegion> list;
       try {
-        Pair<
-                List<VirtualStorageGroupProcessor>,
-                Map<VirtualStorageGroupProcessor, List<PartialPath>>>
+        Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>>
             lockListAndProcessorToSeriesMapPair =
                 StorageEngine.getInstance()
                     .mergeLock(
@@ -150,7 +148,7 @@ public class TagManager {
                             .map(IMeasurementMNode::getMeasurementPath)
                             .collect(toList()));
         list = lockListAndProcessorToSeriesMapPair.left;
-        Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+        Map<DataRegion, List<PartialPath>> processorToSeriesMap =
             lockListAndProcessorToSeriesMapPair.right;
 
         try {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriver.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriver.java
index 5a1168fac3..f44d1e9887 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriver.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriver.java
@@ -19,8 +19,8 @@
 package org.apache.iotdb.db.mpp.execution;
 
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.idtable.IDTable;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -197,7 +197,7 @@ public class DataDriver implements Driver {
    * QueryDataSource needed for this query
    */
   public QueryDataSource initQueryDataSourceCache() throws QueryProcessException {
-    VirtualStorageGroupProcessor dataRegion = driverContext.getDataRegion();
+    DataRegion dataRegion = driverContext.getDataRegion();
     dataRegion.readLock();
     try {
       List<PartialPath> pathList =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriverContext.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriverContext.java
index 52113e5586..43a9c0ab1c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriverContext.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/DataDriverContext.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.mpp.execution;
 
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.mpp.operator.source.SourceOperator;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
@@ -28,14 +28,14 @@ import java.util.List;
 public class DataDriverContext extends DriverContext {
   private final List<PartialPath> paths;
   private final Filter timeFilter;
-  private final VirtualStorageGroupProcessor dataRegion;
+  private final DataRegion dataRegion;
   private final List<SourceOperator> sourceOperators;
 
   public DataDriverContext(
       FragmentInstanceContext fragmentInstanceContext,
       List<PartialPath> paths,
       Filter timeFilter,
-      VirtualStorageGroupProcessor dataRegion,
+      DataRegion dataRegion,
       List<SourceOperator> sourceOperators) {
     super(fragmentInstanceContext);
     this.paths = paths;
@@ -52,7 +52,7 @@ public class DataDriverContext extends DriverContext {
     return timeFilter;
   }
 
-  public VirtualStorageGroupProcessor getDataRegion() {
+  public DataRegion getDataRegion() {
     return dataRegion;
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/FragmentInstanceManager.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/FragmentInstanceManager.java
index 6ba68e55a7..ca17860d4b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/FragmentInstanceManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/FragmentInstanceManager.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.mpp.execution;
 
 import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.metadata.schemaregion.SchemaRegion;
 import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
 import org.apache.iotdb.db.mpp.schedule.FragmentInstanceScheduler;
@@ -78,7 +78,7 @@ public class FragmentInstanceManager {
   }
 
   public FragmentInstanceInfo execDataQueryFragmentInstance(
-      FragmentInstance instance, VirtualStorageGroupProcessor dataRegion) {
+      FragmentInstance instance, DataRegion dataRegion) {
     FragmentInstanceId instanceId = instance.getId();
 
     FragmentInstanceExecution execution =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LocalExecutionPlanner.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LocalExecutionPlanner.java
index cf40915784..361964a53f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LocalExecutionPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LocalExecutionPlanner.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.mpp.sql.planner;
 
 import org.apache.iotdb.commons.cluster.Endpoint;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.metadata.schemaregion.SchemaRegion;
 import org.apache.iotdb.db.mpp.buffer.DataBlockManager;
@@ -84,7 +84,7 @@ public class LocalExecutionPlanner {
       PlanNode plan,
       FragmentInstanceContext instanceContext,
       Filter timeFilter,
-      VirtualStorageGroupProcessor dataRegion) {
+      DataRegion dataRegion) {
     LocalExecutionPlanContext context = new LocalExecutionPlanContext(instanceContext);
 
     Operator root = plan.accept(new Visitor(), context);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
index c0476c794e..f47b86c295 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.qp.executor;
 
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 52156b8dd8..25144c4335 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -34,9 +34,9 @@ import org.apache.iotdb.db.engine.cache.ChunkCache;
 import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.engine.cq.ContinuousQueryService;
 import org.apache.iotdb.db.engine.flush.pool.FlushTaskPoolManager;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
 import org.apache.iotdb.db.engine.trigger.service.TriggerRegistrationService;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.ContinuousQueryException;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
index d2c1a3eb7f..d69724c424 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.qp.physical.crud;
 
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.logical.Operator;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
index a6e82372e9..fab4108e54 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.qp.physical.sys;
 
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor.TimePartitionFilter;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion.TimePartitionFilter;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.logical.Operator;
diff --git a/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java b/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
index a5ecb90dbc..8a19f55b2f 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
@@ -20,7 +20,7 @@ package org.apache.iotdb.db.query.control;
 
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.idtable.IDTable;
@@ -122,13 +122,12 @@ public class QueryResourceManager {
    *     under the virtual storage group
    */
   public void initQueryDataSourceCache(
-      Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap,
+      Map<DataRegion, List<PartialPath>> processorToSeriesMap,
       QueryContext context,
       Filter timeFilter)
       throws QueryProcessException {
-    for (Map.Entry<VirtualStorageGroupProcessor, List<PartialPath>> entry :
-        processorToSeriesMap.entrySet()) {
-      VirtualStorageGroupProcessor processor = entry.getKey();
+    for (Map.Entry<DataRegion, List<PartialPath>> entry : processorToSeriesMap.entrySet()) {
+      DataRegion processor = entry.getKey();
       List<PartialPath> pathList =
           entry.getValue().stream().map(IDTable::translateQueryPath).collect(Collectors.toList());
 
@@ -172,8 +171,7 @@ public class QueryResourceManager {
       cachedQueryDataSource = cachedQueryDataSourcesMap.get(queryId).get(storageGroupPath);
     } else {
       // QueryDataSource is never cached in cluster mode
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(selectedPath.getDevicePath());
+      DataRegion processor = StorageEngine.getInstance().getProcessor(selectedPath.getDevicePath());
       PartialPath translatedPath = IDTable.translateQueryPath(selectedPath);
       cachedQueryDataSource =
           processor.query(
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
index 8b0409ea21..6034f22540 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.query.dataset.groupby;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
@@ -120,11 +120,10 @@ public class GroupByWithValueFilterDataSet extends GroupByTimeEngineDataSet {
     groupedPathList.addAll(pathToAggrIndexesMap.keySet());
     groupedPathList.addAll(alignedPathToAggrIndexesMap.keySet());
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(groupedPathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(groupedPathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
index eccb268c6e..1292e2c90f 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.db.query.dataset.groupby;
 
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
@@ -114,11 +114,10 @@ public class GroupByWithoutValueFilterDataSet extends GroupByTimeEngineDataSet {
     groupedPathList.addAll(pathToAggrIndexesMap.keySet());
     groupedPathList.addAll(alignedPathToAggrIndexesMap.keySet());
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(groupedPathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(groupedPathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
index 0ce0b25740..3840ae4325 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
@@ -126,11 +126,10 @@ public class AggregationExecutor {
     groupedPathList.addAll(alignedPathToAggrIndexesMap.keySet());
 
     // TODO-Cluster: group the paths by storage group to reduce communications
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(groupedPathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(groupedPathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
@@ -635,11 +634,10 @@ public class AggregationExecutor {
     groupedPathList.addAll(pathToAggrIndexesMap.keySet());
     groupedPathList.addAll(alignedPathToAggrIndexesMap.keySet());
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(groupedPathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(groupedPathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/FillQueryExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/FillQueryExecutor.java
index e2c3e60038..fc332294da 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/FillQueryExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/FillQueryExecutor.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.query.executor;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -91,10 +91,10 @@ public class FillQueryExecutor {
 
     Filter timeFilter = initFillExecutorsAndContructTimeFilter(context);
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair = StorageEngine.getInstance().mergeLock(selectedSeries);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(selectedSeries);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
index c5dd1e25dd..d3501141ce 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.query.executor;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -260,10 +260,10 @@ public class LastQueryExecutor {
       Map<String, Set<String>> deviceMeasurementsMap)
       throws StorageEngineException, QueryProcessException, IOException {
     // Acquire query resources for the rest series paths
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair = StorageEngine.getInstance().mergeLock(seriesPaths);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(seriesPaths);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
index 984234f6be..12994f159c 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
@@ -20,7 +20,7 @@ package org.apache.iotdb.db.query.executor;
 
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
@@ -106,11 +106,10 @@ public class RawDataQueryExecutor {
     }
 
     List<ManagedSeriesReader> readersOfSelectedSeries = new ArrayList<>();
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(queryPlan.getDeduplicatedPaths());
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(queryPlan.getDeduplicatedPaths());
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
@@ -249,11 +248,10 @@ public class RawDataQueryExecutor {
       cached.subList(pathList.size(), previousSize).clear();
     }
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance().mergeLock(notCachedPathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(notCachedPathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
index 8a52b5b7d5..42ff873f97 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
@@ -20,7 +20,7 @@ package org.apache.iotdb.db.query.timegenerator;
 
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.MeasurementPath;
@@ -85,10 +85,10 @@ public class ServerTimeGenerator extends TimeGenerator {
     List<PartialPath> pathList = new ArrayList<>();
     timeFilter = getPathListAndConstructTimeFilterFromExpression(expression, pathList);
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair = StorageEngine.getInstance().mergeLock(pathList);
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance().mergeLock(pathList);
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/rescon/SystemInfo.java b/server/src/main/java/org/apache/iotdb/db/rescon/SystemInfo.java
index 559fbd0cc6..09e432bec2 100644
--- a/server/src/main/java/org/apache/iotdb/db/rescon/SystemInfo.java
+++ b/server/src/main/java/org/apache/iotdb/db/rescon/SystemInfo.java
@@ -91,7 +91,7 @@ public class SystemInfo {
     } else {
       logger.info(
           "Change system to reject status. Triggered by: logical SG ({}), mem cost delta ({}), totalSgMemCost ({}).",
-          storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName(),
+          storageGroupInfo.getDataRegion().getLogicalStorageGroupName(),
           delta,
           totalStorageGroupMemCost);
       rejected = true;
@@ -131,13 +131,13 @@ public class SystemInfo {
         && totalStorageGroupMemCost < REJECT_THERSHOLD) {
       logger.debug(
           "SG ({}) released memory (delta: {}) but still exceeding flush proportion (totalSgMemCost: {}), call flush.",
-          storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName(),
+          storageGroupInfo.getDataRegion().getLogicalStorageGroupName(),
           delta,
           totalStorageGroupMemCost);
       if (rejected) {
         logger.info(
             "SG ({}) released memory (delta: {}), set system to normal status (totalSgMemCost: {}).",
-            storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName(),
+            storageGroupInfo.getDataRegion().getLogicalStorageGroupName(),
             delta,
             totalStorageGroupMemCost);
       }
@@ -146,7 +146,7 @@ public class SystemInfo {
     } else if (totalStorageGroupMemCost >= REJECT_THERSHOLD) {
       logger.warn(
           "SG ({}) released memory (delta: {}), but system is still in reject status (totalSgMemCost: {}).",
-          storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName(),
+          storageGroupInfo.getDataRegion().getLogicalStorageGroupName(),
           delta,
           totalStorageGroupMemCost);
       logCurrentTotalSGMemory();
@@ -154,7 +154,7 @@ public class SystemInfo {
     } else {
       logger.debug(
           "SG ({}) released memory (delta: {}), system is in normal status (totalSgMemCost: {}).",
-          storageGroupInfo.getVirtualStorageGroupProcessor().getLogicalStorageGroupName(),
+          storageGroupInfo.getDataRegion().getLogicalStorageGroupName(),
           delta,
           totalStorageGroupMemCost);
       logCurrentTotalSGMemory();
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/ISyncFileManager.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/ISyncFileManager.java
index ff558c5ac4..a615bb336a 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/ISyncFileManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/ISyncFileManager.java
@@ -57,7 +57,7 @@ public interface ISyncFileManager {
 
   /*
    * the following 4 maps share same map structure
-   * logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+   * logicalSg -> <dataregion, <timeRangeId, tsfiles>>
    */
   Map<String, Map<Long, Map<Long, Set<File>>>> getCurrentSealedLocalFilesMap();
 
@@ -67,6 +67,6 @@ public interface ISyncFileManager {
 
   Map<String, Map<Long, Map<Long, Set<File>>>> getToBeSyncedFilesMap();
 
-  // logicalSg -> <virtualSg, Set<timeRangeId>>
+  // logicalSg -> <dataregion, Set<timeRangeId>>
   Map<String, Map<Long, Set<Long>>> getAllSGs();
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
index 6aa4c90396..54066198d8 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
@@ -47,14 +47,14 @@ public class SyncFileManager implements ISyncFileManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(SyncFileManager.class);
 
   /**
-   * All storage groups on the disk where the current sync task is executed logicalSg -> <virtualSg,
-   * timeRangeId>
+   * All storage groups on the disk where the current sync task is executed logicalSg ->
+   * <dataregion, timeRangeId>
    */
   private Map<String, Map<Long, Set<Long>>> allSGs;
 
   /**
    * Key is storage group, value is all sealed tsfiles in the storage group. Inner key is time range
-   * id, inner value is the set of current sealed tsfiles. logicalSg -> <virtualSg, <timeRangeId,
+   * id, inner value is the set of current sealed tsfiles. logicalSg -> <dataregion, <timeRangeId,
    * tsfiles>>
    */
   private Map<String, Map<Long, Map<Long, Set<File>>>> currentSealedLocalFilesMap;
@@ -62,21 +62,21 @@ public class SyncFileManager implements ISyncFileManager {
   /**
    * Key is storage group, value is all last local tsfiles in the storage group, which doesn't
    * contains those tsfiles which are not synced successfully. Inner key is time range id, inner
-   * value is the set of last local tsfiles. logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+   * value is the set of last local tsfiles. logicalSg -> <dataregion, <timeRangeId, tsfiles>>
    */
   private Map<String, Map<Long, Map<Long, Set<File>>>> lastLocalFilesMap;
 
   /**
    * Key is storage group, value is all deleted tsfiles which need to be synced to receiver end in
    * the storage group. Inner key is time range id, inner value is the valid set of sealed tsfiles.
-   * logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+   * logicalSg -> <dataregion, <timeRangeId, tsfiles>>
    */
   private Map<String, Map<Long, Map<Long, Set<File>>>> deletedFilesMap;
 
   /**
    * Key is storage group, value is all new tsfiles which need to be synced to receiver end in the
    * storage group. Inner key is time range id, inner value is the valid set of new tsfiles.
-   * logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+   * logicalSg -> <dataregion, <timeRangeId, tsfiles>>
    */
   private Map<String, Map<Long, Map<Long, Set<File>>>> toBeSyncedFilesMap;
 
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
index c15572592a..b9e3222cb3 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
@@ -106,16 +106,16 @@ public class SyncClient implements ISyncClient {
 
   private SyncService.Client serviceClient;
 
-  // logicalSg -> <virtualSg, timeRangeId>
+  // logicalSg -> <dataregion, timeRangeId>
   private Map<String, Map<Long, Set<Long>>> allSG;
 
-  // logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+  // logicalSg -> <dataregion, <timeRangeId, tsfiles>>
   private Map<String, Map<Long, Map<Long, Set<File>>>> toBeSyncedFilesMap;
 
-  // logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+  // logicalSg -> <dataregion, <timeRangeId, tsfiles>>
   private Map<String, Map<Long, Map<Long, Set<File>>>> deletedFilesMap;
 
-  // logicalSg -> <virtualSg, <timeRangeId, tsfiles>>
+  // logicalSg -> <dataregion, <timeRangeId, tsfiles>>
   private Map<String, Map<Long, Map<Long, Set<File>>>> lastLocalFilesMap;
 
   /** If true, sync is in execution. */
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java b/server/src/main/java/org/apache/iotdb/db/tools/dataregion/DeviceMappingViewer.java
similarity index 90%
rename from server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java
rename to server/src/main/java/org/apache/iotdb/db/tools/dataregion/DeviceMappingViewer.java
index 31f632ab7c..740ad3a7d6 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/dataregion/DeviceMappingViewer.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.tools.virtualsg;
+package org.apache.iotdb.db.tools.dataregion;
 
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.engine.storagegroup.virtualSg.HashVirtualPartitioner;
+import org.apache.iotdb.db.engine.storagegroup.dataregion.HashVirtualPartitioner;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -54,8 +54,7 @@ public class DeviceMappingViewer {
           "--------------------- mapping from device to virtual storage group ID ---------------------");
       System.out.println("Format is: device name -> virtual storage group ID");
       for (PartialPath partialPath : partialPathSet) {
-        System.out.println(
-            partialPath + " -> " + partitioner.deviceToVirtualStorageGroupId(partialPath));
+        System.out.println(partialPath + " -> " + partitioner.deviceToDataRegionId(partialPath));
       }
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/node/WALNode.java b/server/src/main/java/org/apache/iotdb/db/wal/node/WALNode.java
index 33dcaa3bb4..9eb3bf4ed7 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/node/WALNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/node/WALNode.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
 import org.apache.iotdb.db.engine.flush.FlushStatus;
 import org.apache.iotdb.db.engine.memtable.IMemTable;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -260,13 +260,13 @@ public class WALNode implements IWALNode {
       // get memTable's virtual storage group processor
       File oldestTsFile =
           FSFactoryProducer.getFSFactory().getFile(oldestMemTableInfo.getTsFilePath());
-      VirtualStorageGroupProcessor vsgProcessor;
+      DataRegion dataRegion;
       try {
-        vsgProcessor =
+        dataRegion =
             StorageEngine.getInstance()
-                .getProcessorByVSGId(
+                .getProcessorByDataRegionId(
                     new PartialPath(TsFileUtils.getStorageGroup(oldestTsFile)),
-                    TsFileUtils.getVirtualStorageGroupId(oldestTsFile));
+                    TsFileUtils.getDataRegionId(oldestTsFile));
       } catch (IllegalPathException | StorageEngineException e) {
         logger.error("Fail to get virtual storage group processor for {}", oldestTsFile, e);
         return;
@@ -276,18 +276,17 @@ public class WALNode implements IWALNode {
       int snapshotCount = memTableSnapshotCount.getOrDefault(oldestMemTable.getMemTableId(), 0);
       if (snapshotCount >= MAX_WAL_MEM_TABLE_SNAPSHOT_NUM
           || oldestMemTable.getTVListsRamCost() > MEM_TABLE_SNAPSHOT_THRESHOLD_IN_BYTE) {
-        flushMemTable(vsgProcessor, oldestTsFile, oldestMemTable);
+        flushMemTable(dataRegion, oldestTsFile, oldestMemTable);
       } else {
-        snapshotMemTable(vsgProcessor, oldestTsFile, oldestMemTableInfo);
+        snapshotMemTable(dataRegion, oldestTsFile, oldestMemTableInfo);
       }
     }
 
-    private void flushMemTable(
-        VirtualStorageGroupProcessor vsgProcessor, File tsFile, IMemTable memTable) {
+    private void flushMemTable(DataRegion dataRegion, File tsFile, IMemTable memTable) {
       boolean shouldWait = true;
       if (memTable.getFlushStatus() == FlushStatus.WORKING) {
         shouldWait =
-            vsgProcessor.submitAFlushTask(
+            dataRegion.submitAFlushTask(
                 TsFileUtils.getTimePartition(tsFile), TsFileUtils.isSequence(tsFile));
         logger.info(
             "WAL node-{} flushes memTable-{} to TsFile {}, memTable size is {}.",
@@ -316,8 +315,7 @@ public class WALNode implements IWALNode {
       }
     }
 
-    private void snapshotMemTable(
-        VirtualStorageGroupProcessor vsgProcessor, File tsFile, MemTableInfo memTableInfo) {
+    private void snapshotMemTable(DataRegion dataRegion, File tsFile, MemTableInfo memTableInfo) {
       IMemTable memTable = memTableInfo.getMemTable();
       if (memTable.getFlushStatus() != FlushStatus.WORKING) {
         return;
@@ -339,8 +337,8 @@ public class WALNode implements IWALNode {
       memTableInfo.setFirstFileVersionId(buffer.getCurrentWALFileVersion());
       logger.info("Version id is {}", memTableInfo.getFirstFileVersionId());
 
-      // get vsg write lock to make sure no more writes to the memTable
-      vsgProcessor.writeLock(
+      // get dataRegion write lock to make sure no more writes to the memTable
+      dataRegion.writeLock(
           "CheckpointManager$DeleteOutdatedFileTask.snapshotOrFlushOldestMemTable");
       try {
         // log snapshot in a new .wal file
@@ -358,7 +356,7 @@ public class WALNode implements IWALNode {
             memTable.getMemTableId(),
             memTable.getTVListsRamCost());
       } finally {
-        vsgProcessor.writeUnlock();
+        dataRegion.writeUnlock();
       }
     }
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/WALRecoverManager.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/WALRecoverManager.java
index d0c5edb7ae..c22a702a1c 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/WALRecoverManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/WALRecoverManager.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.wal.WALManager;
 import org.apache.iotdb.db.wal.exception.WALRecoverException;
 import org.apache.iotdb.db.wal.node.WALNode;
@@ -49,7 +49,7 @@ public class WALRecoverManager {
   private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
 
   /** start recovery after all virtual storage groups have submitted unsealed zero-level TsFiles */
-  private volatile CountDownLatch allVsgScannedLatch;
+  private volatile CountDownLatch allDataRegionScannedLatch;
   /** threads to recover wal nodes */
   private ExecutorService recoverThreadPool;
   /** stores all UnsealedTsFileRecoverPerformer submitted by virtual storage group processors */
@@ -77,7 +77,7 @@ public class WALRecoverManager {
       // wait until all virtual storage groups have submitted their unsealed TsFiles,
       // which means walRecoverManger.addRecoverPerformer method won't be call anymore
       try {
-        allVsgScannedLatch.await();
+        allDataRegionScannedLatch.await();
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
         throw new WALRecoverException("Fail to recover wal.", e);
@@ -106,7 +106,7 @@ public class WALRecoverManager {
           // skip redo logs because it doesn't belong to any wal node
           recoverPerformer.endRecovery();
           recoverPerformer.getRecoverListener().succeed();
-        } catch (StorageGroupProcessorException | IOException e) {
+        } catch (DataRegionException | IOException e) {
           logger.error(
               "Fail to recover unsealed TsFile {}, skip it.",
               recoverPerformer.getTsFileAbsolutePath(),
@@ -143,12 +143,12 @@ public class WALRecoverManager {
     return absolutePath2RecoverPerformer.remove(absolutePath);
   }
 
-  public CountDownLatch getAllVsgScannedLatch() {
-    return allVsgScannedLatch;
+  public CountDownLatch getAllDataRegionScannedLatch() {
+    return allDataRegionScannedLatch;
   }
 
-  public void setAllVsgScannedLatch(CountDownLatch allVsgScannedLatch) {
-    this.allVsgScannedLatch = allVsgScannedLatch;
+  public void setAllDataRegionScannedLatch(CountDownLatch allDataRegionScannedLatch) {
+    this.allDataRegionScannedLatch = allDataRegionScannedLatch;
   }
 
   @TestOnly
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/AbstractTsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/AbstractTsFileRecoverPerformer.java
index abd411ab0a..f2c3934ccf 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/AbstractTsFileRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/AbstractTsFileRecoverPerformer.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.wal.recover.file;
 
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.utils.FileLoaderUtils;
 import org.apache.iotdb.tsfile.exception.NotCompatibleTsFileException;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
@@ -53,7 +53,7 @@ public abstract class AbstractTsFileRecoverPerformer implements Closeable {
    * necessary) and truncate the file to remaining corrected data. <br>
    * Notice: this method may open a {@link RestorableTsFileIOWriter}, remember to close it.
    */
-  protected void recoverWithWriter() throws StorageGroupProcessorException, IOException {
+  protected void recoverWithWriter() throws DataRegionException, IOException {
     File tsFile = tsFileResource.getTsFile();
     if (!tsFile.exists()) {
       logger.error("TsFile {} is missing, will skip its recovery.", tsFile);
@@ -73,9 +73,9 @@ public abstract class AbstractTsFileRecoverPerformer implements Closeable {
       boolean result = tsFile.delete();
       logger.warn(
           "TsFile {} is incompatible. Try to delete it and delete result is {}", tsFile, result);
-      throw new StorageGroupProcessorException(e);
+      throw new DataRegionException(e);
     } catch (IOException e) {
-      throw new StorageGroupProcessorException(e);
+      throw new DataRegionException(e);
     }
 
     // reconstruct .resource file when TsFile is complete
@@ -83,7 +83,7 @@ public abstract class AbstractTsFileRecoverPerformer implements Closeable {
       try {
         reconstructResourceFile();
       } catch (IOException e) {
-        throw new StorageGroupProcessorException(
+        throw new DataRegionException(
             "Failed recover the resource file: " + tsFile + RESOURCE_SUFFIX + e);
       }
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/SealedTsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/SealedTsFileRecoverPerformer.java
index bc9d3ac0ca..ddf966bb7c 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/SealedTsFileRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/SealedTsFileRecoverPerformer.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.wal.recover.file;
 
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 
 import java.io.IOException;
 
@@ -35,7 +35,7 @@ public class SealedTsFileRecoverPerformer extends AbstractTsFileRecoverPerformer
    * Recover sealed TsFile, including load .resource file (reconstruct when necessary) and truncate
    * the file to remaining corrected data
    */
-  public void recover() throws StorageGroupProcessorException, IOException {
+  public void recover() throws DataRegionException, IOException {
     super.recoverWithWriter();
 
     if (hasCrashed()) {
@@ -43,7 +43,7 @@ public class SealedTsFileRecoverPerformer extends AbstractTsFileRecoverPerformer
       try {
         reconstructResourceFile();
       } catch (IOException e) {
-        throw new StorageGroupProcessorException(
+        throw new DataRegionException(
             "Failed recover the resource file: "
                 + tsFileResource.getTsFilePath()
                 + RESOURCE_SUFFIX
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java
index 5ad03bd9ec..bb953b1742 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.db.engine.modification.Deletion;
 import org.apache.iotdb.db.engine.modification.Modification;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.metadata.idtable.IDTable;
 import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID;
 import org.apache.iotdb.db.qp.physical.crud.DeletePlan;
@@ -83,7 +83,7 @@ public class UnsealedTsFileRecoverPerformer extends AbstractTsFileRecoverPerform
    * Make preparation for recovery, including load .resource file (reconstruct when necessary) and
    * truncate the file to remaining corrected data.
    */
-  public void startRecovery() throws StorageGroupProcessorException, IOException {
+  public void startRecovery() throws DataRegionException, IOException {
     super.recoverWithWriter();
 
     if (hasCrashed()) {
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifierUT.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifierUT.java
index 5824bf5790..0a18c1d21b 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifierUT.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TsFileIdentifierUT.java
@@ -51,7 +51,7 @@ public class TsFileIdentifierUT {
     Assert.assertEquals(firstInfo.getFilename(), "1-1-0-0.tsfile");
     Assert.assertEquals(firstInfo.getLogicalStorageGroupName(), "root.test.sg");
     Assert.assertEquals(firstInfo.getTimePartitionId(), "0");
-    Assert.assertEquals(firstInfo.getVirtualStorageGroupId(), "0");
+    Assert.assertEquals(firstInfo.getDataRegionId(), "0");
     Assert.assertTrue(firstInfo.isSequence());
 
     String secondPath =
@@ -69,7 +69,7 @@ public class TsFileIdentifierUT {
     Assert.assertEquals(secondInfo.getFilename(), "999-3-24-12.tsfile");
     Assert.assertEquals(secondInfo.getLogicalStorageGroupName(), "root.test.sg");
     Assert.assertEquals(secondInfo.getTimePartitionId(), "426");
-    Assert.assertEquals(secondInfo.getVirtualStorageGroupId(), "0");
+    Assert.assertEquals(secondInfo.getDataRegionId(), "0");
     Assert.assertFalse(secondInfo.isSequence());
 
     String illegalPath =
@@ -95,7 +95,7 @@ public class TsFileIdentifierUT {
     TsFileIdentifier firstInfo = TsFileIdentifier.getFileIdentifierFromInfoString(firstInfoString);
     Assert.assertEquals(firstInfo.getFilename(), "1-1-0-0.tsfile");
     Assert.assertEquals(firstInfo.getTimePartitionId(), "0");
-    Assert.assertEquals(firstInfo.getVirtualStorageGroupId(), "0");
+    Assert.assertEquals(firstInfo.getDataRegionId(), "0");
     Assert.assertEquals(firstInfo.getLogicalStorageGroupName(), "root.test.sg");
     Assert.assertTrue(firstInfo.isSequence());
 
@@ -106,7 +106,7 @@ public class TsFileIdentifierUT {
         TsFileIdentifier.getFileIdentifierFromInfoString(secondInfoString);
     Assert.assertEquals(secondInfo.getFilename(), "666-888-222-131.tsfile");
     Assert.assertEquals(secondInfo.getTimePartitionId(), "425");
-    Assert.assertEquals(secondInfo.getVirtualStorageGroupId(), "0");
+    Assert.assertEquals(secondInfo.getDataRegionId(), "0");
     Assert.assertEquals(secondInfo.getLogicalStorageGroupName(), "root.test.sg");
     Assert.assertFalse(secondInfo.isSequence());
 
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCrossSpaceCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCrossSpaceCompactionTest.java
index 3e8dfa8bb3..cc66af6cd1 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCrossSpaceCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCrossSpaceCompactionTest.java
@@ -23,10 +23,10 @@ import org.apache.iotdb.db.engine.compaction.AbstractCompactionTest;
 import org.apache.iotdb.db.engine.compaction.cross.rewrite.task.RewriteCrossSpaceCompactionTask;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -577,8 +577,8 @@ public class RewriteCrossSpaceCompactionTest extends AbstractCompactionTest {
    */
   @Test
   public void testOneDeletionDuringCompaction() throws Exception {
-    VirtualStorageGroupProcessor vsgp =
-        new VirtualStorageGroupProcessor(
+    DataRegion vsgp =
+        new DataRegion(
             STORAGE_GROUP_DIR.getPath(),
             "0",
             new TsFileFlushPolicy.DirectFlushPolicy(),
@@ -687,8 +687,8 @@ public class RewriteCrossSpaceCompactionTest extends AbstractCompactionTest {
    */
   @Test
   public void testSeveralDeletionsDuringCompaction() throws Exception {
-    VirtualStorageGroupProcessor vsgp =
-        new VirtualStorageGroupProcessor(
+    DataRegion vsgp =
+        new DataRegion(
             STORAGE_GROUP_DIR.getPath(),
             "0",
             new TsFileFlushPolicy.DirectFlushPolicy(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
index d1744ceea0..e25d8b1b82 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
@@ -28,11 +28,11 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.compaction.utils.log.CompactionLogger;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
@@ -186,12 +186,12 @@ public class SizeTieredCompactionRecoverTest {
       File timePartitionDir = new File(SEQ_FILE_DIR);
       File f = new File(timePartitionDir.getParent() + File.separator + "test.tmp");
       f.createNewFile();
-      new VirtualStorageGroupProcessor(
+      new DataRegion(
           TestConstant.BASE_OUTPUT_PATH + File.separator + "data" + File.separator + "sequence",
           "0",
           new TsFileFlushPolicy.DirectFlushPolicy(),
           COMPACTION_TEST_SG);
-    } catch (StorageGroupProcessorException | IOException e) {
+    } catch (DataRegionException | IOException e) {
       Assert.fail(e.getMessage());
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
index 5c273ba60f..f367c63780 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
@@ -25,8 +25,8 @@ import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.modification.io.LocalTextModificationAccessor;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
 import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -170,12 +170,11 @@ public class DeletionFileNodeTest {
                 processorName + TsFileConstant.PATH_SEPARATOR + measurements[measurementIdx]),
             null);
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance()
-                .mergeLock(Collections.singletonList((PartialPath) expression.getSeriesPath()));
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance()
+            .mergeLock(Collections.singletonList((PartialPath) expression.getSeriesPath()));
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
@@ -318,12 +317,11 @@ public class DeletionFileNodeTest {
                 processorName + TsFileConstant.PATH_SEPARATOR + measurements[5]),
             null);
 
-    Pair<List<VirtualStorageGroupProcessor>, Map<VirtualStorageGroupProcessor, List<PartialPath>>>
-        lockListAndProcessorToSeriesMapPair =
-            StorageEngine.getInstance()
-                .mergeLock(Collections.singletonList((PartialPath) expression.getSeriesPath()));
-    List<VirtualStorageGroupProcessor> lockList = lockListAndProcessorToSeriesMapPair.left;
-    Map<VirtualStorageGroupProcessor, List<PartialPath>> processorToSeriesMap =
+    Pair<List<DataRegion>, Map<DataRegion, List<PartialPath>>> lockListAndProcessorToSeriesMapPair =
+        StorageEngine.getInstance()
+            .mergeLock(Collections.singletonList((PartialPath) expression.getSeriesPath()));
+    List<DataRegion> lockList = lockListAndProcessorToSeriesMapPair.left;
+    Map<DataRegion, List<PartialPath>> processorToSeriesMap =
         lockListAndProcessorToSeriesMapPair.right;
 
     try {
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
index c2ca513b5d..8ac22d8cc5 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
@@ -32,7 +32,7 @@ import org.apache.iotdb.db.engine.flush.FlushManager;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
 import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.TriggerExecutionException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
@@ -78,7 +78,7 @@ public class StorageGroupProcessorTest {
   private String systemDir = TestConstant.OUTPUT_DATA_DIR.concat("info");
   private String deviceId = "root.vehicle.d0";
   private String measurementId = "s0";
-  private VirtualStorageGroupProcessor processor;
+  private DataRegion processor;
   private QueryContext context = EnvironmentUtils.TEST_QUERY_CONTEXT;
 
   @Before
@@ -860,9 +860,9 @@ public class StorageGroupProcessorTest {
     config.setUnseqMemtableFlushInterval(preFLushInterval);
   }
 
-  class DummySGP extends VirtualStorageGroupProcessor {
+  class DummySGP extends DataRegion {
 
-    DummySGP(String systemInfoDir, String storageGroupName) throws StorageGroupProcessorException {
+    DummySGP(String systemInfoDir, String storageGroupName) throws DataRegionException {
       super(systemInfoDir, "0", new TsFileFlushPolicy.DirectFlushPolicy(), storageGroupName);
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
index 29f6b787e9..55cd348d86 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
@@ -25,8 +25,8 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.directories.DirectoryManager;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy.DirectFlushPolicy;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TriggerExecutionException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
@@ -81,13 +81,13 @@ public class TTLTest {
   private String sg1 = "root.TTL_SG1";
   private String sg2 = "root.TTL_SG2";
   private long ttl = 12345;
-  private VirtualStorageGroupProcessor virtualStorageGroupProcessor;
+  private DataRegion dataRegion;
   private String s1 = "s1";
   private String g1s1 = sg1 + IoTDBConstant.PATH_SEPARATOR + s1;
   private long prevPartitionInterval;
 
   @Before
-  public void setUp() throws MetadataException, StorageGroupProcessorException {
+  public void setUp() throws MetadataException, DataRegionException {
     prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
     IoTDBDescriptor.getInstance().getConfig().setPartitionInterval(86400);
     EnvironmentUtils.envSetUp();
@@ -96,16 +96,16 @@ public class TTLTest {
 
   @After
   public void tearDown() throws IOException, StorageEngineException {
-    virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+    dataRegion.syncCloseAllWorkingTsFileProcessors();
     EnvironmentUtils.cleanEnv();
     IoTDBDescriptor.getInstance().getConfig().setPartitionInterval(prevPartitionInterval);
   }
 
-  private void createSchemas() throws MetadataException, StorageGroupProcessorException {
+  private void createSchemas() throws MetadataException, DataRegionException {
     IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sg1));
     IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sg2));
-    virtualStorageGroupProcessor =
-        new VirtualStorageGroupProcessor(
+    dataRegion =
+        new DataRegion(
             IoTDBDescriptor.getInstance().getConfig().getSystemDir(),
             sg1,
             new DirectFlushPolicy(),
@@ -159,20 +159,20 @@ public class TTLTest {
     plan.transferType();
 
     // ok without ttl
-    virtualStorageGroupProcessor.insert(plan);
+    dataRegion.insert(plan);
 
-    virtualStorageGroupProcessor.setDataTTL(1000);
+    dataRegion.setDataTTL(1000);
     // with ttl
     plan.setTime(System.currentTimeMillis() - 1001);
     boolean caught = false;
     try {
-      virtualStorageGroupProcessor.insert(plan);
+      dataRegion.insert(plan);
     } catch (OutOfTTLException e) {
       caught = true;
     }
     assertTrue(caught);
     plan.setTime(System.currentTimeMillis() - 900);
-    virtualStorageGroupProcessor.insert(plan);
+    dataRegion.insert(plan);
   }
 
   private void prepareData()
@@ -195,17 +195,17 @@ public class TTLTest {
     // sequence data
     for (int i = 1000; i < 2000; i++) {
       plan.setTime(initTime - 2000 + i);
-      virtualStorageGroupProcessor.insert(plan);
+      dataRegion.insert(plan);
       if ((i + 1) % 300 == 0) {
-        virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+        dataRegion.syncCloseAllWorkingTsFileProcessors();
       }
     }
     // unsequence data
     for (int i = 0; i < 1000; i++) {
       plan.setTime(initTime - 2000 + i);
-      virtualStorageGroupProcessor.insert(plan);
+      dataRegion.insert(plan);
       if ((i + 1) % 300 == 0) {
-        virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+        dataRegion.syncCloseAllWorkingTsFileProcessors();
       }
     }
   }
@@ -218,7 +218,7 @@ public class TTLTest {
 
     // files before ttl
     QueryDataSource dataSource =
-        virtualStorageGroupProcessor.query(
+        dataRegion.query(
             Collections.singletonList(
                 SchemaTestUtils.getMeasurementPath(sg1 + TsFileConstant.PATH_SEPARATOR + s1)),
             sg1,
@@ -230,11 +230,11 @@ public class TTLTest {
     assertEquals(4, seqResource.size());
     assertEquals(4, unseqResource.size());
 
-    virtualStorageGroupProcessor.setDataTTL(500);
+    dataRegion.setDataTTL(500);
 
     // files after ttl
     dataSource =
-        virtualStorageGroupProcessor.query(
+        dataRegion.query(
             Collections.singletonList(
                 SchemaTestUtils.getMeasurementPath(sg1 + TsFileConstant.PATH_SEPARATOR + s1)),
             sg1,
@@ -272,9 +272,9 @@ public class TTLTest {
     // we cannot offer the exact number since when exactly ttl will be checked is unknown
     assertTrue(cnt <= 1000);
 
-    virtualStorageGroupProcessor.setDataTTL(0);
+    dataRegion.setDataTTL(0);
     dataSource =
-        virtualStorageGroupProcessor.query(
+        dataRegion.query(
             Collections.singletonList(
                 SchemaTestUtils.getMeasurementPath(sg1 + TsFileConstant.PATH_SEPARATOR + s1)),
             sg1,
@@ -293,7 +293,7 @@ public class TTLTest {
           IllegalPathException {
     prepareData();
 
-    virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+    dataRegion.syncCloseAllWorkingTsFileProcessors();
 
     // files before ttl
     File seqDir = new File(DirectoryManager.getInstance().getNextFolderForSequenceFile(), sg1);
@@ -337,8 +337,8 @@ public class TTLTest {
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
-    virtualStorageGroupProcessor.setDataTTL(500);
-    virtualStorageGroupProcessor.checkFilesTTL();
+    dataRegion.setDataTTL(500);
+    dataRegion.checkFilesTTL();
 
     // files after ttl
     seqFiles = new ArrayList<>();
@@ -433,15 +433,15 @@ public class TTLTest {
       throws WriteProcessException, QueryProcessException, IllegalPathException,
           TriggerExecutionException {
     prepareData();
-    virtualStorageGroupProcessor.syncCloseAllWorkingTsFileProcessors();
+    dataRegion.syncCloseAllWorkingTsFileProcessors();
 
-    assertEquals(4, virtualStorageGroupProcessor.getSequenceFileList().size());
-    assertEquals(4, virtualStorageGroupProcessor.getUnSequenceFileList().size());
+    assertEquals(4, dataRegion.getSequenceFileList().size());
+    assertEquals(4, dataRegion.getUnSequenceFileList().size());
 
-    virtualStorageGroupProcessor.setDataTTL(0);
-    virtualStorageGroupProcessor.checkFilesTTL();
+    dataRegion.setDataTTL(0);
+    dataRegion.checkFilesTTL();
 
-    assertEquals(0, virtualStorageGroupProcessor.getSequenceFileList().size());
-    assertEquals(0, virtualStorageGroupProcessor.getUnSequenceFileList().size());
+    assertEquals(0, dataRegion.getSequenceFileList().size());
+    assertEquals(0, dataRegion.getUnSequenceFileList().size());
   }
 }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitionerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitionerTest.java
similarity index 90%
rename from server/src/test/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitionerTest.java
rename to server/src/test/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitionerTest.java
index 6338c88025..8203c1075b 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/HashVirtualPartitionerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/dataregion/HashVirtualPartitionerTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.engine.storagegroup.virtualSg;
+package org.apache.iotdb.db.engine.storagegroup.dataregion;
 
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
@@ -54,8 +54,8 @@ public class HashVirtualPartitionerTest {
     PartialPath d1 = new PartialPath("root.sg1.d1");
     PartialPath d2 = new PartialPath("root.sg1.d2");
 
-    int sg1 = hashVirtualPartitioner.deviceToVirtualStorageGroupId(d1);
-    int sg2 = hashVirtualPartitioner.deviceToVirtualStorageGroupId(d2);
+    int sg1 = hashVirtualPartitioner.deviceToDataRegionId(d1);
+    int sg2 = hashVirtualPartitioner.deviceToDataRegionId(d2);
 
     assertEquals(sg1, Math.abs(d1.hashCode() % hashVirtualPartitioner.getPartitionCount()));
     assertEquals(sg2, Math.abs(d2.hashCode() % hashVirtualPartitioner.getPartitionCount()));
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java
index 55cfb213aa..764b6aeee2 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.metadata.idtable;
 
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -95,7 +95,7 @@ public class IDTableFlushTimeTest {
 
     insertData(20);
 
-    VirtualStorageGroupProcessor storageGroupProcessor =
+    DataRegion storageGroupProcessor =
         StorageEngine.getInstance().getProcessor(new PartialPath("root.isp.d1"));
     assertEquals(2, storageGroupProcessor.getSequenceFileList().size());
     assertEquals(0, storageGroupProcessor.getUnSequenceFileList().size());
@@ -110,7 +110,7 @@ public class IDTableFlushTimeTest {
 
     insertData(20);
 
-    VirtualStorageGroupProcessor storageGroupProcessor =
+    DataRegion storageGroupProcessor =
         StorageEngine.getInstance().getProcessor(new PartialPath("root.isp.d1"));
     assertEquals(1, storageGroupProcessor.getSequenceFileList().size());
     assertEquals(1, storageGroupProcessor.getUnSequenceFileList().size());
@@ -139,7 +139,7 @@ public class IDTableFlushTimeTest {
     // unsequence
     insertData(90);
 
-    VirtualStorageGroupProcessor storageGroupProcessor =
+    DataRegion storageGroupProcessor =
         StorageEngine.getInstance().getProcessor(new PartialPath("root.isp.d1"));
     assertEquals(4, storageGroupProcessor.getSequenceFileList().size());
     assertEquals(2, storageGroupProcessor.getUnSequenceFileList().size());
@@ -156,7 +156,7 @@ public class IDTableFlushTimeTest {
     insertData(20);
     insertData(120);
 
-    VirtualStorageGroupProcessor storageGroupProcessor =
+    DataRegion storageGroupProcessor =
         StorageEngine.getInstance().getProcessor(new PartialPath("root.isp.d1"));
 
     assertEquals(
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/execution/DataDriverTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/execution/DataDriverTest.java
index 9a5c16c7a6..237bfb4dd2 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/DataDriverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/DataDriverTest.java
@@ -19,8 +19,8 @@
 package org.apache.iotdb.db.mpp.execution;
 
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -138,7 +138,7 @@ public class DataDriverTest {
           new LimitOperator(
               fragmentInstanceContext.getOperatorContexts().get(3), 250, timeJoinOperator);
 
-      VirtualStorageGroupProcessor dataRegion = Mockito.mock(VirtualStorageGroupProcessor.class);
+      DataRegion dataRegion = Mockito.mock(DataRegion.class);
 
       List<PartialPath> pathList = ImmutableList.of(measurementPath1, measurementPath2);
       String deviceId = DATA_DRIVER_TEST_SG + ".device0";
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java b/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
index e8786f4e25..0da22c8461 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
@@ -22,8 +22,8 @@ import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.directories.DirectoryManager;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -65,8 +65,8 @@ public class FileLoaderTest {
 
   @Before
   public void setUp() throws Exception {
-    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getVirtualStorageGroupNum();
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(1);
+    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(1);
     IoTDBDescriptor.getInstance().getConfig().setSyncEnable(true);
     EnvironmentUtils.envSetUp();
     dataDir =
@@ -87,7 +87,7 @@ public class FileLoaderTest {
   public void tearDown() throws IOException, StorageEngineException {
     EnvironmentUtils.cleanEnv();
     IoTDBDescriptor.getInstance().getConfig().setSyncEnable(false);
-    IoTDBDescriptor.getInstance().getConfig().setVirtualStorageGroupNum(prevVirtualPartitionNum);
+    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(prevVirtualPartitionNum);
   }
 
   @Test
@@ -164,8 +164,7 @@ public class FileLoaderTest {
     }
 
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       assertTrue(processor.getSequenceFileList().isEmpty());
       assertTrue(processor.getUnSequenceFileList().isEmpty());
     }
@@ -197,8 +196,7 @@ public class FileLoaderTest {
     assertFalse(new File(getReceiverFolderFile(), SyncConstant.RECEIVER_DATA_FOLDER_NAME).exists());
     Map<String, Set<String>> sequenceLoadedFileMap = new HashMap<>();
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       sequenceLoadedFileMap.putIfAbsent(SG_NAME + i, new HashSet<>());
       assertEquals(10, processor.getSequenceFileList().size());
       for (TsFileResource tsFileResource : processor.getSequenceFileList()) {
@@ -283,8 +281,7 @@ public class FileLoaderTest {
     }
 
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       assertTrue(processor.getSequenceFileList().isEmpty());
       assertTrue(processor.getUnSequenceFileList().isEmpty());
     }
@@ -316,8 +313,7 @@ public class FileLoaderTest {
     assertFalse(new File(getReceiverFolderFile(), SyncConstant.RECEIVER_DATA_FOLDER_NAME).exists());
     Map<String, Set<String>> loadedFileMap = new HashMap<>();
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       loadedFileMap.putIfAbsent(SG_NAME + i, new HashSet<>());
       assertEquals(25, processor.getSequenceFileList().size());
       for (TsFileResource tsFileResource : processor.getSequenceFileList()) {
@@ -374,8 +370,7 @@ public class FileLoaderTest {
 
     loadedFileMap.clear();
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       loadedFileMap.putIfAbsent(SG_NAME + i, new HashSet<>());
       for (TsFileResource tsFileResource : processor.getSequenceFileList()) {
         loadedFileMap.get(SG_NAME + i).add(tsFileResource.getTsFile().getAbsolutePath());
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java b/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
index d6cf387cb8..4388baf5eb 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
@@ -22,8 +22,8 @@ import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.directories.DirectoryManager;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.DiskSpaceInsufficientException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
@@ -154,8 +154,7 @@ public class SyncReceiverLogAnalyzerTest {
     }
 
     for (int i = 0; i < 3; i++) {
-      VirtualStorageGroupProcessor processor =
-          StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
+      DataRegion processor = StorageEngine.getInstance().getProcessor(new PartialPath(SG_NAME + i));
       assertTrue(processor.getSequenceFileList().isEmpty());
       assertTrue(processor.getUnSequenceFileList().isEmpty());
     }
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java b/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
index 670c0799fd..7ae83ed367 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
@@ -277,7 +277,7 @@ public class WALRecoverManagerTest {
     // prepare tsFiles
     List<WALRecoverListener> recoverListeners = prepareCrashedTsFile();
     // recover
-    recoverManager.setAllVsgScannedLatch(new CountDownLatch(0));
+    recoverManager.setAllDataRegionScannedLatch(new CountDownLatch(0));
     recoverManager.recover();
     // check recover listeners
     for (WALRecoverListener recoverListener : recoverListeners) {
diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
index e429cfea1e..d58d17da43 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
@@ -41,7 +41,7 @@ public enum TSStatusCode {
   SYSTEM_CHECK_ERROR(308),
   SYNC_DEVICE_OWNER_CONFLICT_ERROR(309),
   SYNC_CONNECTION_EXCEPTION(310),
-  STORAGE_GROUP_PROCESSOR_ERROR(311),
+  DATA_REGION_ERROR(311),
   STORAGE_GROUP_ERROR(312),
   STORAGE_ENGINE_ERROR(313),
   TSFILE_PROCESSOR_ERROR(314),
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java
index a062e8b1ab..5e815c59f7 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java
@@ -72,7 +72,7 @@ public class FilePathUtils {
     return pathSegments[pathSegments.length - 4];
   }
 
-  public static String getVirtualStorageGroupId(String tsFileAbsolutePath) {
+  public static String getDataRegionId(String tsFileAbsolutePath) {
     String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
     return pathSegments[pathSegments.length - 3];
   }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java
index eaae377ef3..03ba354c82 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java
@@ -41,9 +41,9 @@ public class TsFileUtils {
     return Long.parseLong(timePartitionFolder.getName());
   }
 
-  public static int getVirtualStorageGroupId(File tsFile) {
-    File vsgFolder = tsFile.getParentFile().getParentFile();
-    return Integer.parseInt(vsgFolder.getName());
+  public static int getDataRegionId(File tsFile) {
+    File dataRegionFolder = tsFile.getParentFile().getParentFile();
+    return Integer.parseInt(dataRegionFolder.getName());
   }
 
   public static String getStorageGroup(File tsFile) {
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java
index eb0fd69bdf..c32baca727 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java
@@ -30,7 +30,7 @@ import java.io.IOException;
 public class FilePathUtilsTest {
 
   private static final String storageGroupName = "root.group_9";
-  private static final String virtualSgName = "1";
+  private static final String dataRegionId = "1";
   private static final long partitionId = 0;
   private static final String tsFileName = "1611199237113-4-0.tsfile";
   private static final String fullPath =
@@ -38,7 +38,7 @@ public class FilePathUtilsTest {
           + File.separator
           + storageGroupName
           + File.separator
-          + virtualSgName
+          + dataRegionId
           + File.separator
           + partitionId
           + File.separator
@@ -74,9 +74,9 @@ public class FilePathUtilsTest {
   }
 
   @Test
-  public void getVirtualStorageGroupNameTest() {
-    String tmpVirtualSgName = FilePathUtils.getVirtualStorageGroupId(tsFile.getAbsolutePath());
-    Assert.assertEquals(virtualSgName, tmpVirtualSgName);
+  public void getDataRegionNameTest() {
+    String tmpVirtualSgName = FilePathUtils.getDataRegionId(tsFile.getAbsolutePath());
+    Assert.assertEquals(dataRegionId, tmpVirtualSgName);
   }
 
   @Test
@@ -89,7 +89,7 @@ public class FilePathUtilsTest {
   public void getTsFilePrefixPathTest() {
     String tsFilePrefixPath = FilePathUtils.getTsFilePrefixPath(tsFile.getAbsolutePath());
     String exceptPrefixPath =
-        storageGroupName + File.separator + virtualSgName + File.separator + partitionId;
+        storageGroupName + File.separator + dataRegionId + File.separator + partitionId;
     Assert.assertEquals(exceptPrefixPath, tsFilePrefixPath);
   }