Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • private Decoder sdtDecoder;
  • private ByteBuffer buffer;


查询将分为两种

  1. 不需要解压的查询
    1. 范围查询
      Select s1 where time > 3 and time < 10
      Group by

… 

  1. 需要解压进行插值计算的查询
    1. 点查询
      Select s1 where time = 3
      1. 需要注意 time = 3 的前后两点,是否跨page
      2. 调用 SDTDecoder 
        1. S1 time = 3 的数据点经过压缩,并存在了磁盘,直接返回该点
        2. S1 time = 3 的数据点不存在,找到s1 time = 3 的前后两个数据点并进行插值计算

点查询

  1. Ie time = x,page1, page2, page3 ..
    1. 若x < page1.startime || x > page3.endtime
      1. return null
      2. 在该ts 第一个和最后一个时间戳之外,不进行插值计算
    2. 若x >= page2.startime && x <= page2.endtime
      1. 遍历pageReaders 的时候,记录 maxPrevPair, minNextPair 
      2. 若存在time = 3 的数据点,直接返回
      3. 若最后遍历完getValue == null,则通过 maxPrevPair, minNextPair 进行插值计算
    3. 若x >= page2.endtime && x <= page3.starttime
      1. 遍历pageData 的时候,记录maxPrevPage, minNextPage
      2. 若生成pageReaders.size == 0,则通过 maxPrevPage, minNextPage 进行unpack page,decoder 返回插值计算的结果

...