THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- private Decoder sdtDecoder;
- private ByteBuffer buffer;
查询将分为两种
- 不需要解压的查询
- 范围查询
Select s1 where time > 3 and time < 10
Group by
…
- 需要解压进行插值计算的查询
- 点查询
Select s1 where time = 3- 需要注意 time = 3 的前后两点,是否跨page
- 调用 SDTDecoder
- S1 time = 3 的数据点经过压缩,并存在了磁盘,直接返回该点
- S1 time = 3 的数据点不存在,找到s1 time = 3 的前后两个数据点并进行插值计算
- 点查询
点查询
- Ie time = x,page1, page2, page3 ..
- 若x < page1.startime || x > page3.endtime
- return null
- 在该ts 第一个和最后一个时间戳之外,不进行插值计算
- 若x >= page2.startime && x <= page2.endtime
- 遍历pageReaders 的时候,记录 maxPrevPair, minNextPair
- 若存在time = 3 的数据点,直接返回
- 若最后遍历完getValue == null,则通过 maxPrevPair, minNextPair 进行插值计算
- 若x >= page2.endtime && x <= page3.starttime
- 遍历pageData 的时候,记录maxPrevPage, minNextPage
- 若生成pageReaders.size == 0,则通过 maxPrevPage, minNextPage 进行unpack page,decoder 返回插值计算的结果
...