You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ea...@apache.org on 2020/01/08 13:52:43 UTC

[incubator-iotdb] 03/03: fix bugs

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

east pushed a commit to branch nvmlogging
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 158f790415d2e57df179c30232092eb8c4f3061c
Author: mdf369 <95...@qq.com>
AuthorDate: Wed Jan 8 21:52:18 2020 +0800

    fix bugs
---
 .../apache/iotdb/db/nvm/metadata/DataTypeMemo.java | 22 ++++++++----
 .../iotdb/db/nvm/metadata/NVMSpaceMetadata.java    | 11 ++++--
 .../apache/iotdb/db/nvm/metadata/OffsetMemo.java   | 20 ++++++++---
 .../apache/iotdb/db/nvm/metadata/SpaceCount.java   | 19 +++++++---
 .../iotdb/db/nvm/metadata/SpaceStatusBitMap.java   | 22 ++++++++----
 .../iotdb/db/nvm/metadata/TimeValueMapper.java     | 20 ++++++++---
 .../db/nvm/metadata/TimeseriesTimeIndexMapper.java | 31 ++++++++++-------
 .../nvm/recover/NVMMemtableRecoverPerformer.java   |  3 +-
 .../apache/iotdb/db/nvm/space/NVMDataSpace.java    | 26 +++++++++-----
 .../org/apache/iotdb/db/nvm/space/NVMSpace.java    | 40 ++++++++++++++++++++--
 .../apache/iotdb/db/nvm/space/NVMSpaceManager.java |  5 ++-
 .../db/nvm/space/NVMSpaceMetadataManager.java      | 24 ++++---------
 .../apache/iotdb/db/nvm/space/NVMStringBuffer.java | 12 +++----
 .../db/utils/datastructure/NVMBooleanTVList.java   |  6 ++--
 .../db/utils/datastructure/NVMDoubleTVList.java    |  6 ++--
 .../db/utils/datastructure/NVMFloatTVList.java     |  6 ++--
 .../iotdb/db/utils/datastructure/NVMIntTVList.java |  6 ++--
 .../db/utils/datastructure/NVMLongTVList.java      |  6 ++--
 .../iotdb/db/utils/datastructure/NVMTVList.java    | 10 +++---
 19 files changed, 195 insertions(+), 100 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/DataTypeMemo.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/DataTypeMemo.java
index 5fd7761..357b63b 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/DataTypeMemo.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/DataTypeMemo.java
@@ -1,19 +1,29 @@
 package org.apache.iotdb.db.nvm.metadata;
 
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import java.io.IOException;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 public class DataTypeMemo extends NVMSpaceMetadata {
 
-  public DataTypeMemo(NVMSpace space) {
-    super(space);
+  public DataTypeMemo() throws IOException {
   }
-  
+
   public void set(int index, TSDataType dataType) {
-    space.getByteBuffer().putShort(index, dataType.serialize());
+    space.putShort(index, dataType.serialize());
   }
 
   public TSDataType get(int index) {
-    return TSDataType.deserialize(space.getByteBuffer().getShort(index));
+    return TSDataType.deserialize(space.getShort(index));
+  }
+
+  @Override
+  int getUnitSize() {
+    return Short.BYTES;
+  }
+
+  @Override
+  int getUnitNum() {
+    return NVMSpaceManager.NVMSPACE_NUM_MAX;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/NVMSpaceMetadata.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/NVMSpaceMetadata.java
index d5ef0be..9541bdc 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/NVMSpaceMetadata.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/NVMSpaceMetadata.java
@@ -1,12 +1,19 @@
 package org.apache.iotdb.db.nvm.metadata;
 
+import java.io.IOException;
 import org.apache.iotdb.db.nvm.space.NVMSpace;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 
 public abstract class NVMSpaceMetadata {
 
   protected NVMSpace space;
 
-  public NVMSpaceMetadata(NVMSpace space) {
-    this.space = space;
+  public NVMSpaceMetadata() throws IOException {
+    long size = getUnitSize() * getUnitNum();
+    space = NVMSpaceManager.getInstance().allocateSpace(size);
   }
+
+  abstract int getUnitSize();
+
+  abstract int getUnitNum();
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/OffsetMemo.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/OffsetMemo.java
index ecb2554..114e6e4 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/OffsetMemo.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/OffsetMemo.java
@@ -1,18 +1,28 @@
 package org.apache.iotdb.db.nvm.metadata;
 
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import java.io.IOException;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 
 public class OffsetMemo extends NVMSpaceMetadata {
 
-  public OffsetMemo(NVMSpace space) {
-    super(space);
+  public OffsetMemo() throws IOException {
   }
 
   public void set(int index, long offset) {
-    space.getByteBuffer().putLong(index, offset);
+    space.putLong(index, offset);
   }
 
   public long get(int index) {
-    return space.getByteBuffer().getLong(index);
+    return space.getLong(index);
+  }
+
+  @Override
+  int getUnitSize() {
+    return Long.BYTES;
+  }
+
+  @Override
+  int getUnitNum() {
+    return NVMSpaceManager.NVMSPACE_NUM_MAX;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceCount.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceCount.java
index b3c7474..951a3e6 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceCount.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceCount.java
@@ -1,18 +1,27 @@
 package org.apache.iotdb.db.nvm.metadata;
 
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import java.io.IOException;
 
 public class SpaceCount extends NVMSpaceMetadata {
 
-  public SpaceCount(NVMSpace space) {
-    super(space);
+  public SpaceCount() throws IOException {
   }
 
   public void put(int v) {
-    space.getByteBuffer().putInt(0, v);
+    space.putInt(0, v);
   }
 
   public int get() {
-    return space.getByteBuffer().getInt(0);
+    return space.getInt(0);
+  }
+
+  @Override
+  int getUnitSize() {
+    return Integer.BYTES;
+  }
+
+  @Override
+  int getUnitNum() {
+    return 1;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceStatusBitMap.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceStatusBitMap.java
index 783df57..aae6ac0 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceStatusBitMap.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/SpaceStatusBitMap.java
@@ -1,27 +1,27 @@
 package org.apache.iotdb.db.nvm.metadata;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 
 public class SpaceStatusBitMap extends NVMSpaceMetadata {
 
-  public SpaceStatusBitMap(NVMSpace space) {
-    super(space);
+  public SpaceStatusBitMap() throws IOException {
   }
 
   public void setUse(int index, boolean isTime) {
-    space.getByteBuffer().put(index, isTime ? (byte) 1 : (byte) 2);
+    space.put(index, isTime ? (byte) 1 : (byte) 2);
   }
 
   public void setFree(int index) {
-    space.getByteBuffer().put(index, (byte) 0);
+    space.put(index, (byte) 0);
   }
 
   public List<Integer> getValidTimeSpaceIndexList(int count) {
     List<Integer> validTimeSpaceIndexList = new ArrayList<>();
     for (int i = 0; i < space.getSize(); i++) {
-      byte flag = space.getByteBuffer().get(i);
+      byte flag = space.get(i);
       if (flag == 1) {
         validTimeSpaceIndexList.add(i);
         if (validTimeSpaceIndexList.size() == count) {
@@ -31,4 +31,14 @@ public class SpaceStatusBitMap extends NVMSpaceMetadata {
     }
     return validTimeSpaceIndexList;
   }
+
+  @Override
+  int getUnitSize() {
+    return Byte.BYTES;
+  }
+
+  @Override
+  int getUnitNum() {
+    return NVMSpaceManager.NVMSPACE_NUM_MAX;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeValueMapper.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeValueMapper.java
index 9736b27..03dc93b 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeValueMapper.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeValueMapper.java
@@ -1,18 +1,28 @@
 package org.apache.iotdb.db.nvm.metadata;
 
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import java.io.IOException;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 
 public class TimeValueMapper extends NVMSpaceMetadata {
 
-  public TimeValueMapper(NVMSpace space) {
-    super(space);
+  public TimeValueMapper() throws IOException {
   }
 
   public void map(int timeSpaceIndex, int valueSpaceIndex) {
-    space.getByteBuffer().putInt(timeSpaceIndex, valueSpaceIndex);
+    space.putInt(timeSpaceIndex, valueSpaceIndex);
   }
 
   public int get(int timeSpaceIndex) {
-    return space.getByteBuffer().getInt(timeSpaceIndex);
+    return space.getInt(timeSpaceIndex);
+  }
+
+  @Override
+  int getUnitSize() {
+    return Integer.BYTES;
+  }
+
+  @Override
+  int getUnitNum() {
+    return NVMSpaceManager.NVMSPACE_NUM_MAX;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeseriesTimeIndexMapper.java b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeseriesTimeIndexMapper.java
index 15ba4b7..2a6d7d9 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeseriesTimeIndexMapper.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/metadata/TimeseriesTimeIndexMapper.java
@@ -1,8 +1,7 @@
 package org.apache.iotdb.db.nvm.metadata;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
-import org.apache.iotdb.db.nvm.space.NVMSpace;
+import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
 import org.apache.iotdb.db.nvm.space.NVMStringBuffer;
 
 public class TimeseriesTimeIndexMapper extends NVMSpaceMetadata {
@@ -14,9 +13,7 @@ public class TimeseriesTimeIndexMapper extends NVMSpaceMetadata {
   private NVMStringBuffer deviceIdBuffer;
   private NVMStringBuffer measurementIdBuffer;
 
-  public TimeseriesTimeIndexMapper(NVMSpace space) throws IOException {
-    super(space);
-
+  public TimeseriesTimeIndexMapper() throws IOException {
     initTimeseriesSpaces();
   }
 
@@ -37,19 +34,27 @@ public class TimeseriesTimeIndexMapper extends NVMSpaceMetadata {
 
   private void mapTimeIndexToTimeSeries(int timeSpaceIndex, int sgIndex, int deviceIndex, int measurementIndex) {
     int index = timeSpaceIndex * 3;
-    ByteBuffer byteBuffer = space.getByteBuffer();
-    byteBuffer.putInt(index, sgIndex);
-    byteBuffer.putInt(index + 1, deviceIndex);
-    byteBuffer.putInt(index + 2, measurementIndex);
+    space.putInt(index, sgIndex);
+    space.putInt(index + 1, deviceIndex);
+    space.putInt(index + 2, measurementIndex);
   }
 
   public String[] getTimeseries(int timeSpaceIndex) {
-    ByteBuffer byteBuffer = space.getByteBuffer();
     int index = timeSpaceIndex * 3;
     String[] timeseries = new String[3];
-    timeseries[0] = sgIdBuffer.get(byteBuffer.getInt(index));
-    timeseries[1] = deviceIdBuffer.get(byteBuffer.getInt(index + 1));
-    timeseries[2] = measurementIdBuffer.get(byteBuffer.getInt(index + 2));
+    timeseries[0] = sgIdBuffer.get(space.getInt(index));
+    timeseries[1] = deviceIdBuffer.get(space.getInt(index + 1));
+    timeseries[2] = measurementIdBuffer.get(space.getInt(index + 2));
     return timeseries;
   }
+
+  @Override
+  int getUnitSize() {
+    return Integer.BYTES * 3;
+  }
+
+  @Override
+  int getUnitNum() {
+    return NVMSpaceManager.NVMSPACE_NUM_MAX;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/recover/NVMMemtableRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/nvm/recover/NVMMemtableRecoverPerformer.java
index f439314..73c51b4 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/recover/NVMMemtableRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/recover/NVMMemtableRecoverPerformer.java
@@ -6,7 +6,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import org.apache.iotdb.db.engine.memtable.AbstractMemTable;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StartupException;
 import org.apache.iotdb.db.nvm.memtable.NVMPrimitiveMemTable;
@@ -91,7 +90,7 @@ public class NVMMemtableRecoverPerformer {
           }
 
           for (int j = 0; j < unitNum; j++) {
-            long time = (long) timeSpace.get(j);
+            long time = (long) timeSpace.getData(j);
             minTime = Math.min(minTime, time);
             maxTime = Math.max(maxTime, time);
           }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
index b9e3d76..b600e87 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
@@ -46,12 +46,12 @@ public class NVMDataSpace extends NVMSpace {
     return count;
   }
 
-  public Object get(int index) {
+  public Object getData(int index) {
     index *= unitSize;
     Object object = null;
     switch (dataType) {
       case BOOLEAN:
-        object = byteBuffer.get(index);
+        object = byteToBoolean(byteBuffer.get(index));
         break;
       case INT32:
         object = byteBuffer.getInt(index);
@@ -72,11 +72,15 @@ public class NVMDataSpace extends NVMSpace {
     return object;
   }
 
-  public void set(int index, Object object) {
+  private boolean byteToBoolean(byte v) {
+    return v == 1;
+  }
+
+  public void setData(int index, Object object) {
     index *= unitSize;
     switch (dataType) {
       case BOOLEAN:
-        byteBuffer.put(index, (byte) object);
+        byteBuffer.put(index, booleanToByte((boolean) object));
         break;
       case INT32:
         byteBuffer.putInt(index, (int) object);
@@ -96,6 +100,10 @@ public class NVMDataSpace extends NVMSpace {
     }
   }
 
+  private byte booleanToByte(boolean v) {
+    return v ? (byte) 1 : (byte) 0;
+  }
+
   public int getIndex() {
     return index;
   }
@@ -110,31 +118,31 @@ public class NVMDataSpace extends NVMSpace {
       case BOOLEAN:
         boolean[] boolArray = new boolean[arraySize];
         for (int i = 0; i < arraySize; i++) {
-          boolArray[i] = ((byte) get(i) == 1);
+          boolArray[i] = (boolean) getData(i);
         }
         return boolArray;
       case INT32:
         int[] intArray = new int[arraySize];
         for (int i = 0; i < arraySize; i++) {
-          intArray[i] = (int) get(i);
+          intArray[i] = (int) getData(i);
         }
         return intArray;
       case INT64:
         long[] longArray = new long[arraySize];
         for (int i = 0; i < arraySize; i++) {
-          longArray[i] = (long) get(i);
+          longArray[i] = (long) getData(i);
         }
         return longArray;
       case FLOAT:
         float[] floatArray = new float[arraySize];
         for (int i = 0; i < arraySize; i++) {
-          floatArray[i] = (float) get(i);
+          floatArray[i] = (float) getData(i);
         }
         return floatArray;
       case DOUBLE:
         double[] doubleArray = new double[arraySize];
         for (int i = 0; i < arraySize; i++) {
-          doubleArray[i] = (double) get(i);
+          doubleArray[i] = (double) getData(i);
         }
         return doubleArray;
       case TEXT:
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpace.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpace.java
index 30c41c2..1f4c224 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpace.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpace.java
@@ -22,7 +22,43 @@ public class NVMSpace {
     return size;
   }
 
-  public ByteBuffer getByteBuffer() {
-    return byteBuffer;
+  public void put(int index, byte v) {
+    byteBuffer.put(index, v);
+  }
+
+  public byte get(int index) {
+    return byteBuffer.get(index);
+  }
+
+  public void putShort(int index, short v) {
+    byteBuffer.putShort(index * Short.BYTES, v);
+  }
+
+  public short getShort(int index) {
+    return byteBuffer.getShort(index * Short.BYTES);
+  }
+
+  public void putInt(int index, int v) {
+    byteBuffer.putInt(index * Integer.BYTES, v);
+  }
+
+  public int getInt(int index) {
+    return byteBuffer.getInt(index * Integer.BYTES);
+  }
+
+  public void putLong(int index, long v) {
+    byteBuffer.putLong(index * Long.BYTES, v);
+  }
+
+  public long getLong(int index) {
+    return byteBuffer.getLong(index * Long.BYTES);
+  }
+
+  public void put(byte[] v) {
+    byteBuffer.put(v);
+  }
+
+  public void get(byte[] src) {
+    byteBuffer.get(src);
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceManager.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceManager.java
index c17729b..119881d 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceManager.java
@@ -5,6 +5,7 @@ import static org.apache.iotdb.db.nvm.rescon.NVMPrimitiveArrayPool.ARRAY_SIZE;
 import java.io.File;
 import java.io.IOException;
 import java.io.RandomAccessFile;
+import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileChannel.MapMode;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -58,6 +59,7 @@ public class NVMSpaceManager {
   }
 
   public synchronized NVMSpace allocateSpace(long size) throws IOException {
+    logger.debug("Try to allocate NVMSpace from {} to {}", curOffset, curOffset + size);
     NVMSpace nvmSpace = new NVMSpace(curOffset, size, nvmFileChannel.map(MAP_MODE, curOffset, size));
     curOffset += size;
     return nvmSpace;
@@ -67,7 +69,7 @@ public class NVMSpaceManager {
     checkIsFull();
 
     try {
-      logger.trace("Try to allocate {} nvm space at {}.", size, curOffset);
+      logger.debug("Try to allocate NVMDataSpace from {} to {}", curOffset, curOffset + size);
       int index = curDataSpaceIndex.getAndIncrement();
       NVMDataSpace nvmSpace = new NVMDataSpace(
           curOffset, size, nvmFileChannel.map(MAP_MODE, curOffset, size), index, dataType);
@@ -99,6 +101,7 @@ public class NVMSpaceManager {
   }
 
   private synchronized NVMDataSpace recoverData(long offset, long size, int index, TSDataType dataType) throws IOException {
+    logger.debug("Try to recover NVMSpace from {} to {}", offset, offset + size);
     NVMDataSpace nvmSpace = new NVMDataSpace(offset, size, nvmFileChannel.map(MAP_MODE, offset, size), index, dataType);
     return nvmSpace;
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceMetadataManager.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceMetadataManager.java
index 871af82..d6d9d02 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceMetadataManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMSpaceMetadataManager.java
@@ -14,13 +14,6 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 public class NVMSpaceMetadataManager {
 
-  private static final long SPACE_COUNT_FIELD_BYTE_SIZE = Integer.BYTES;
-  private static final long BITMAP_FIELD_BYTE_SIZE = Byte.BYTES * NVMSPACE_NUM_MAX;
-  private static final long OFFSET_FIELD_BYTE_SIZE = Long.BYTES * NVMSPACE_NUM_MAX;
-  private static final long DATATYPE_FIELD_BYTE_SIZE = Short.BYTES * NVMSPACE_NUM_MAX;
-  private static final long TVMAP_FIELD_BYTE_SIZE = NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32) * NVMSPACE_NUM_MAX;
-  private static final long TSTIMEMAP_FIELD_BYTE_SIZE = NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32) * 3 * NVMSPACE_NUM_MAX;
-
   private final static NVMSpaceMetadataManager INSTANCE = new NVMSpaceMetadataManager();
 
   private SpaceCount spaceCount;
@@ -30,20 +23,15 @@ public class NVMSpaceMetadataManager {
   private TimeValueMapper timeValueMapper;
   private TimeseriesTimeIndexMapper timeseriesTimeIndexMapper;
 
-  private NVMSpaceManager spaceManager;
-
   private NVMSpaceMetadataManager() {}
 
   public void init() throws IOException {
-    spaceManager = NVMSpaceManager.getInstance();
-
-    spaceCount = new SpaceCount(spaceManager.allocateSpace(SPACE_COUNT_FIELD_BYTE_SIZE));
-    spaceStatusBitMap = new SpaceStatusBitMap(spaceManager.allocateSpace(BITMAP_FIELD_BYTE_SIZE));
-    offsetMemo = new OffsetMemo(spaceManager.allocateSpace(OFFSET_FIELD_BYTE_SIZE));
-    dataTypeMemo = new DataTypeMemo(spaceManager.allocateSpace(DATATYPE_FIELD_BYTE_SIZE));
-    timeValueMapper = new TimeValueMapper(spaceManager.allocateSpace(TVMAP_FIELD_BYTE_SIZE));
-    timeseriesTimeIndexMapper = new TimeseriesTimeIndexMapper(spaceManager.allocateSpace(
-        TSTIMEMAP_FIELD_BYTE_SIZE));
+    spaceCount = new SpaceCount();
+    spaceStatusBitMap = new SpaceStatusBitMap();
+    offsetMemo = new OffsetMemo();
+    dataTypeMemo = new DataTypeMemo();
+    timeValueMapper = new TimeValueMapper();
+    timeseriesTimeIndexMapper = new TimeseriesTimeIndexMapper();
   }
 
   public static NVMSpaceMetadataManager getInstance() {
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMStringBuffer.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMStringBuffer.java
index 8400679..8ab06b2 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMStringBuffer.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMStringBuffer.java
@@ -26,12 +26,12 @@ public class NVMStringBuffer {
   }
 
   private void recover() {
-    int stringListLen = count.getByteBuffer().getInt(0);
+    int stringListLen = count.getInt(0);
     existStringList = new ArrayList<>(stringListLen);
     for (int i = 0; i < stringListLen; i++) {
-      int stringLen = lens.getByteBuffer().getInt(i);
+      int stringLen = lens.getInt(i);
       byte[] bytes = new byte[stringLen];
-      values.getByteBuffer().get(bytes);
+      values.get(bytes);
       existStringList.add(new String(bytes));
     }
   }
@@ -47,9 +47,9 @@ public class NVMStringBuffer {
   }
 
   private void serialize(String s) {
-    count.getByteBuffer().putInt(0, existStringList.size());
-    lens.getByteBuffer().putInt(existStringList.size() - 1, s.length());
-    values.getByteBuffer().put(s.getBytes());
+    count.putInt(0, existStringList.size());
+    lens.putInt(existStringList.size() - 1, s.length());
+    values.put(s.getBytes());
   }
 
   public String get(int index) {
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
index 508f08c..2a4ca8e 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
@@ -24,8 +24,8 @@ public class NVMBooleanTVList extends NVMTVList {
     int arrayIndex = size / ARRAY_SIZE;
     int elementIndex = size % ARRAY_SIZE;
     minTime = minTime <= timestamp ? minTime : timestamp;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value ? (byte) 1 : (byte) 0);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
     size++;
     if (sorted && size > 1 && timestamp < getTime(size - 2)) {
       sorted = false;
@@ -39,7 +39,7 @@ public class NVMBooleanTVList extends NVMTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return ((byte) values.get(arrayIndex).get(elementIndex)) == 1;
+    return (boolean) values.get(arrayIndex).getData(elementIndex);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
index 62cc640..ac61d8e 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
@@ -24,8 +24,8 @@ public class NVMDoubleTVList extends NVMTVList {
     int arrayIndex = size / ARRAY_SIZE;
     int elementIndex = size % ARRAY_SIZE;
     minTime = minTime <= timestamp ? minTime : timestamp;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
     size++;
     if (sorted && size > 1 && timestamp < getTime(size - 2)) {
       sorted = false;
@@ -39,7 +39,7 @@ public class NVMDoubleTVList extends NVMTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return (double) values.get(arrayIndex).get(elementIndex);
+    return (double) values.get(arrayIndex).getData(elementIndex);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
index 202785f..c200cfd 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
@@ -24,8 +24,8 @@ public class NVMFloatTVList extends NVMTVList {
     int arrayIndex = size / ARRAY_SIZE;
     int elementIndex = size % ARRAY_SIZE;
     minTime = minTime <= timestamp ? minTime : timestamp;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
     size++;
     if (sorted && size > 1 && timestamp < getTime(size - 2)) {
       sorted = false;
@@ -39,7 +39,7 @@ public class NVMFloatTVList extends NVMTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return (float) values.get(arrayIndex).get(elementIndex);
+    return (float) values.get(arrayIndex).getData(elementIndex);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
index a194206..bbcf381 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
@@ -24,8 +24,8 @@ public class NVMIntTVList extends NVMTVList {
     int arrayIndex = size / ARRAY_SIZE;
     int elementIndex = size % ARRAY_SIZE;
     minTime = minTime <= timestamp ? minTime : timestamp;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
     size++;
     if (sorted && size > 1 && timestamp < getTime(size - 2)) {
       sorted = false;
@@ -39,7 +39,7 @@ public class NVMIntTVList extends NVMTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return (int) values.get(arrayIndex).get(elementIndex);
+    return (int) values.get(arrayIndex).getData(elementIndex);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
index 484b309..4cffd35 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
@@ -24,8 +24,8 @@ public class NVMLongTVList extends NVMTVList {
     int arrayIndex = size / ARRAY_SIZE;
     int elementIndex = size % ARRAY_SIZE;
     minTime = minTime <= timestamp ? minTime : timestamp;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
     size++;
     if (sorted && size > 1 && timestamp < getTime(size - 2)) {
       sorted = false;
@@ -39,7 +39,7 @@ public class NVMLongTVList extends NVMTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return (long) values.get(arrayIndex).get(elementIndex);
+    return (long) values.get(arrayIndex).getData(elementIndex);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
index d84a87a..0eda8b8 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
@@ -36,7 +36,7 @@ public abstract class NVMTVList extends AbstractTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    return (long) timestamps.get(arrayIndex).get(elementIndex);
+    return (long) timestamps.get(arrayIndex).getData(elementIndex);
   }
 
   protected void set(int index, long timestamp, Object value) {
@@ -45,8 +45,8 @@ public abstract class NVMTVList extends AbstractTVList {
     }
     int arrayIndex = index / ARRAY_SIZE;
     int elementIndex = index % ARRAY_SIZE;
-    timestamps.get(arrayIndex).set(elementIndex, timestamp);
-    values.get(arrayIndex).set(elementIndex, value);
+    timestamps.get(arrayIndex).setData(elementIndex, timestamp);
+    values.get(arrayIndex).setData(elementIndex, value);
   }
 
   protected Object cloneValue(NVMDataSpace valueSpace) {
@@ -195,11 +195,11 @@ public abstract class NVMTVList extends AbstractTVList {
     for (int i = 0; i < spaceList.size() - 1; i++) {
       NVMDataSpace space = spaceList.get(i);
       for (int j = 0; j < space.getUnitNum(); j++) {
-        minTime = Math.min(minTime, (Long) space.get(j));
+        minTime = Math.min(minTime, (Long) space.getData(j));
       }
     }
     for (int i = 0; i < lastSpaceUnitSize; i++) {
-      minTime = Math.min(minTime, (Long) lastSpace.get(i));
+      minTime = Math.min(minTime, (Long) lastSpace.getData(i));
     }
 
     // sorted