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 2019/11/26 05:07:34 UTC

[incubator-iotdb] 01/01: refine chunk writer

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

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

commit ad72d5fe02413604512ae32ced69623aa2090e2f
Author: qiaojialin <64...@qq.com>
AuthorDate: Tue Nov 26 13:07:11 2019 +0800

    refine chunk writer
---
 .../iotdb/tsfile/write/chunk/ChunkWriterImpl.java  | 45 +++++++---------------
 .../apache/iotdb/tsfile/write/page/PageWriter.java |  9 ++---
 2 files changed, 18 insertions(+), 36 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
index 6a7e8e2..2beff8d 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
@@ -38,19 +38,12 @@ import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * @see IChunkWriter IChunkWriter
- */
 public class ChunkWriterImpl implements IChunkWriter {
 
   private static final Logger logger = LoggerFactory.getLogger(ChunkWriterImpl.class);
 
   private MeasurementSchema measurementSchema;
 
-  /**
-   * help to encode data of this series.
-   */
-  //private final ChunkBuffer chunkBuffer;
   private ICompressor compressor;
 
   /**
@@ -63,8 +56,9 @@ public class ChunkWriterImpl implements IChunkWriter {
   private long chunkMinTime = Long.MIN_VALUE;
 
   private int numOfPages;
+
   /**
-   * value writer to encode data.
+   * write data into current page
    */
   private PageWriter pageWriter;
 
@@ -75,23 +69,18 @@ public class ChunkWriterImpl implements IChunkWriter {
 
   private final int maxNumberOfPointsInPage;
 
-  // initial value for this.valueCountInOnePageForNextCheck
-  private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
-
   /**
-   * value count in a page. It will be reset after calling {@code writePageHeaderAndDataIntoBuff()}
+   * value count in current page.
    */
   private int valueCountInOnePageForNextCheck;
 
-  /**
-   * statistic on a stage. It will be reset after calling {@code writeAllPagesOfSeriesToTsFile()}
-   */
-  private Statistics<?> chunkStatistics;
+  // initial value for valueCountInOnePageForNextCheck
+  private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
 
   /**
-   * statistic on a page. It will be reset after calling {@code writePageHeaderAndDataIntoBuff()}
+   * statistic of this chunk.
    */
-  //private Statistics<?> pageStatistics;
+  private Statistics<?> chunkStatistics;
 
   /**
    * @param schema schema of this measurement
@@ -107,7 +96,7 @@ public class ChunkWriterImpl implements IChunkWriter {
     // initial check of memory usage. So that we have enough data to make an initial prediction
     this.valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
 
-    // init statistics for this series and page
+    // init statistics for this chunk and page
     this.chunkStatistics = Statistics.getStatsByType(measurementSchema.getType());
 
     this.pageWriter = new PageWriter(measurementSchema);
@@ -251,8 +240,11 @@ public class ChunkWriterImpl implements IChunkWriter {
   public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
     sealCurrentPage();
     writeAllPagesOfChunkToTsFile(tsfileWriter, chunkStatistics);
-    this.reset();
-    // reset series_statistics
+
+    // reinit this chunk writer
+    pageBuffer.reset();
+    chunkPointCount = 0;
+    chunkMinTime = Long.MIN_VALUE;
     this.chunkStatistics = Statistics.getStatsByType(measurementSchema.getType());
   }
 
@@ -333,7 +325,7 @@ public class ChunkWriterImpl implements IChunkWriter {
    * write the page to specified IOWriter.
    *
    * @param writer     the specified IOWriter
-   * @param statistics the statistic information provided by series writer
+   * @param statistics the chunk statistics
    * @return the data size of this chunk
    * @throws IOException exception in IO
    */
@@ -367,15 +359,6 @@ public class ChunkWriterImpl implements IChunkWriter {
   }
 
   /**
-   * reset exist data in page for next stage.
-   */
-  public void reset() {
-    chunkMinTime = Long.MIN_VALUE;
-    pageBuffer.reset();
-    chunkPointCount = 0;
-  }
-
-  /**
    * estimate max page memory size.
    *
    * @return the max possible allocated size currently
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
index da6a0dc..048baaf 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
@@ -25,7 +25,6 @@ import java.nio.channels.Channels;
 import java.nio.channels.WritableByteChannel;
 import org.apache.iotdb.tsfile.compress.ICompressor;
 import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
 import org.apache.iotdb.tsfile.file.header.PageHeader;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -38,8 +37,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * This function is used to write time-value into a page. It consists of a time encoder, a value encoder and respective
- * OutputStream.
+ * This writer is used to write time-value into a page. It consists of a time encoder,
+ * a value encoder and respective OutputStream.
  */
 public class PageWriter {
 
@@ -49,7 +48,7 @@ public class PageWriter {
   private long pageMaxTime;
   private long pageMinTime = Long.MIN_VALUE;
 
-  ICompressor compressor;
+  private ICompressor compressor;
 
   // time
   private Encoder timeEncoder;
@@ -74,7 +73,7 @@ public class PageWriter {
     this.compressor = ICompressor.getCompressor(measurementSchema.getCompressor());
   }
 
-  public PageWriter(Encoder timeEncoder, Encoder valueEncoder) {
+  private PageWriter(Encoder timeEncoder, Encoder valueEncoder) {
     this.timeOut = new PublicBAOS();
     this.valueOut = new PublicBAOS();
     this.timeEncoder = timeEncoder;