论文部分内容阅读
在许多应用环境中,数据是以连续、可变、无界的序列形式出现,这些大量的数据有序的聚集在一起即组成了数据流。由于数据流具有实时性、连续性、瞬时性等特点,传统的数据库系统理论和技术已不能很好地对数据流进行有效的查询处理。数据流本身的特点及面向流的应用需求对数据流管理系统提出了很多挑战,人们正在研究适合于数据流的各类处理技术。
分布式数据流管理系统发展自集中式数据流管理系统之上,它的优势在于能够集合多个查询节点的查询处理能力,通过节点之间的任务调度,使其整体的查询能力远远突破单个节点查询瓶颈的限制。
本文研究了分布式数据流管理系统的负载平衡问题,发现数据流系统的瓶颈常常并非在于每个节点的有限的查询能力,而是节点之间过高的数据转移代价。它增加了系统整体的负载,降低了系统的查询速度。基于此,在网络带宽有限的情况下,本文分别研究了针对节点超载和欠载状况的负载转移策略,提出了兼顾系统整体负载和查询延时的负载平衡算法,使得在实施负载平衡后系统的整体负载和查询延时达到了较好的效果。
对于分布式数据流系统的高可用性保证,本文提出了一种以操作符作为备份和恢复粒度的高可用性算法。该算法通过对边界操作符发送的元组进行备份,对节点内操作符实施分布式的备份策略,实现了1-Safety的高可用性保证,即在系统内某时刻单个节点的错误不会影响整个系统运行,同时保证在错误发生时能够对系统实现精确的恢复。
由于分布式数据流系统中的连接操作往往成为系统运行和负载平衡的瓶颈,本文提出了对于连接操作的分割算法。该算法在保证尽量降低分割后的系统负载的前提下,将一个较“大”的连接操作分割为若干较“小”的子操作,降低了连接操作符的粒度。操作分割完毕后,系统将通过负载平衡策略,对分割后的较小的子操作所对应的操作符进行重新调度,从而使系统达到新的平衡。这种分割算法能够使分割后形成的子操作符更加灵活的被系统调度到不同的查询节点上,从而使系统整体的运行更加稳定。
同时本文设计并实现了一个分布式数据流管理系统,该系统采用管理节点.查询节点的两级模型。管理节点负责在系统运行期间进行负载平衡和高可用性的调度工作,查询节点负责运行管理节点“下发”的查询计划。整个系统模块的设计遵循了低耦合和平台无关性的基本原则,实现了易于维护和富有弹性的系统框架。该系统中使用了面相对象的设计方法,综合使用了多种设计模式,例如虚拟类工厂、Iterator等。这些技术的使用,降低了系统模块间的耦合的程度,便于系统的维护,也为后继的开发提供了较好的基础。