Page 256 - 《软件学报》2021年第11期
P. 256

3582                                Journal of Software  软件学报 Vol.32, No.11, November 2021

                    (1)  第 1 层缓存,用于缓存公共查询结果.本文中数据流存储的最小单元一个时间窗口对应的数据量,数据
                        流属于流水型数据,存储后就不再更新.所以对于包含相同查询条件的查询请求,查询结果是固定的.
                        故可将其结果缓存,减少不必要的重复查询开销.
                    (2)  第 2 层缓存,用于缓存热点数据.数据流存在热点性,热点数据会被频繁访问.本文将一次查询加载到
                        的流元组缓存到查询节点,后续查询涉及相关元组即可从内存加载.缓存过程中,会将其所在下层索
                        引叶节点对应的全部元组一并缓存,以保持适中的缓存粒度.第 2 层缓存由对应的下层索引维护,在具
                        有数据热点的场景下,能有效减少跨节点数据加载产生的 IO 开销.
                    (3)  第 3 层缓存,用于缓存较新数据流.数据流的时效性强,新数据属于分析、处理过程中的热点.本文针对
                        较新的数据流,在完成下层索引构建后,直接将其缓存在构建节点,相应的查询请求从构建节点的内
                        存中加载数据,减少磁盘 IO,提高数据加载性能.
                    受内存空间限制,每层缓存均采用 LRU 淘汰算法.3 层缓存方案结合了流数据和索引结构的特点,层次分明,
                 能有效提高查询效率.

                                                          查询

                      数据流                 W i       查询节点          第1层缓存
                           构建节点     1  2  ...  ...  k      查询结果
                                                            缓存
                                    较新流
                                   元组缓存             查询节点          第2层缓存
                                       第3层缓存                              叶节点      WB-Index索引结构
                                                                           缓存
                      流元组存储    存储节点        存储节点       存储节点       索引存储

                                              Fig.4  Three-tier stream tuple caches
                                                   图 4  3 层流元组缓存
                 3    分布式索引构建

                    图 5 描述了分布式索引的构建流程,图中 W 1 ,W 2 ,…,W i 表示起始时间为 t i 、时长为 T W 的时间窗口.如图中的
                 a,b,c 所示,一个窗口对应的索引构建过程包括下层索引构建、下层索引发布以及上层索引更新,其总耗时为
                 t build .基于时间窗口的数据流处理模式需要保证窗口 W i 结束前,完成窗口 W i−1 的处理任务,即一个窗口任务的处
                 理耗时要小于窗口时长;反之,则表明数据流的流速大于处理速率,处理任务将会积压.因此,为了保证分布式索
                 引平稳构建,需保证 t build <T W .







                                              Fig.5   Process of building WB-Index
                                                  图 5   WB-Index 构建流程
                 3.1   下层索引构建
                    文献[56−58]针对数据流提出了一种多次微批量排序单次批量装载的 B+树构建方法,本文在此基础上将批
                 量排序并行化,并在排序过程中预先装载 B+树,进一步提高构建性能.下层索引构建过程如图 6 所示,包括排序
                 (S 1 )、B+树框架搭建(S 2 )、B+树预装载(S 3 )、B+树赋码值(S 4 )这 4 个步骤.其中,B+树框架搭建(S 2 )和赋值(S 4 )与文
                 献[56]相同,故本部分不再赘述,以下仅描述优化后的排序(S 1 )和预装载(S 3 )部分.
   251   252   253   254   255   256   257   258   259   260   261