THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Jira | ||||||
---|---|---|---|---|---|---|
|
(1a) store PageHeader with PageData (current design)
(2b) combine PageHeader with ChunkHeader
...
For raw data query:
(1) time > t:
- (a) 跳读前几个 PageHeader,跳过不符合时间过滤条件的 PageData,然后开始读后面的 PageData
- (b) 连续读前几个 PageHeader,跳到符合时间过滤条件的第一个 PageData,然后开始连续读后面的 PageData
(2) time < t:
- (a) 读前几个符合时间过滤条件的 PageHeader 和 PageData,直到不符合条件的 PageHeader 为止
- (b) 连续读前几个 PageHeader,直到不符合条件的 PageHeader 为止,跳过后面的 PageHeader,然后开始连续读一部分的 PageData
For aggregation query:
(1) time > t:
- (a) 跳读前几个 PageHeader,跳过不符合时间过滤条件的 PageData,然后开始跳读后面的 PageHeader,获得聚合结果
- (b) 连续读前几个 PageHeader,然后开始连续读后面的 PageHeader,获得聚合结果
(2) time < t:
- (a) 跳读前几个符合时间过滤条件的 PageHeader,获得聚合结果,直到不符合条件的 PageHeader 为止
- (b) 连续读前几个 PageHeader,获得聚合结果,直到不符合条件的 PageHeader 为止
Conclusion:
从理论分析,(b) 方案无论在原始数据查询还是在聚合查询中均会有较好的表现。
使用 (a) 方案仅仅是因为将对应 PageHeader 和 PageData 放在一起存储,易于理解。