论文部分内容阅读
事件流是当前兴起的一类具有流数据特点的海量数据处理应用,在网络监控、金融分析、传感器网络等领域中扮演着重要的角色。和传统的事务处理以及科学实验数据处理、web search等其它海量数据处理应用不同,事件流要求海量的短小记录能及时地添加到系统中,并能够对多个用户提供海量数据的查询。作为一种新的应用,应用负载特征分析对于更好地设计系统、改进系统性能和评价系统设计都有着重要的价值。事件流查询需要处理数百GB甚至TB级的数据,查询性能是影响应用系统成败的关键因素。因此根据负载特征来研究有效的查询处理方法具有理论意义和实用价值。
本文以一个网络安全监控应用为基础,给出了一种从系统运行的trace中提取负载特征的方法。设计并实现了一个可扩展的并行查询引擎来提高单个查询的性能。提出了一种通过有效地利用多种资源来提高系统吞吐率的并发查询调度方法。以上工作在一个事件流系统DBroker中进行了实现和实验。本文主要贡献如下:
1.提出了一种合成事件流数据集的方法。该方法把构成事件流数据的高维稀疏空间转化成时间序列并通过聚类得到数据产生规律,然后按需生成数据集。DBroker中的真实数据集的实验结果表明,该方法合成的数据集保留了真实数据集的特征,并能适应不同规模的系统。
2.提出了一种合成事件流查询负载的方法。针对具有高维特征的查询特征向量,该方法用基于参数值分布的信息熵来衡量查询之间的相似程度,并用基于信息熵距离的聚类得到特征查询,以此生成查询集合。对DBroker系统一年的查询日志分析表明,该方法得到的特征负载能反映不同参数的相关性,相对于其它方法,它能更好地反映原始负载的特征。
3.提出一种面向资源的并发查询调度方法。针对事件流查询在执行的不同阶段使用不同类型资源的特点,该方法利用单个查询的资源需求来估计并发时备查询的执行进度,调度资源互补的查询同时执行,以提高系统吞吐率。模拟实验表明,贪心调度算法能大幅度地提升系统吞吐率。在DBroker中设计实现了一种通过监控资源使用对并发查询进行动态调度的算法。TPCR和DBroker统计查询的实验结果表明它能显著提高系统的吞吐率。
4.设计并实现了一个并行查询处理引擎。在DBroker中设计实现了一个并行查询处理引擎QServer,它根据数据分布对SQL语句进行分解,由多个DBMS实现查询并行化。QServer的性能评价结果表明,它具有较好的扩展性。