原链接:http://blog.csdn.net/kongying168/article/details/6929551
近年来,随着计算机技术、信息处理技术在工业生产、经济信息处理等领域的广泛应用,数据已不仅仅拘泥于文件、数据库等传统的静态形式,一种连续、无界、不定速度的流式数据(即数据流)已经出现在越来越多的应用领域当中,如:
互联网应用:互联网用户数量的增加直接导致网络通信量的急剧上升,互联网站点访问、即时消息通讯、电子邮件和在线视频等各类应用都产生大量的数据。
金融应用:股票和基金等金融交易报价数据瞬息万变且规模庞大,银行信用卡日交易数据量也十分巨大。
传感器网络应用:目前大量工业和军事等应用中已经广泛使用了传感器,主要用于恶劣环境下的监控与目标跟踪等,这些众多分散的传感器向基站不断传送大量的数据,而基站服务器通常需近实时地对这些数据进行相应地分析和处理。
在以上这些应用中,不仅原始据是以流的形式到达,对这些数据流进行各种处理(主要是查询操作)之后得到的结果也同样是以流的形式输出的。
Henzinger等于1998年在Computing on Data Stream中首次将数据流作为一种数据处理模型提出来,他将数据流定义为只能以事先规定好的顺序读取一次的数据序列。20世纪末,数据流问题引起了广大科研学者的关注,成为数据挖掘与数据库领域的一个热点研究方向。
随着数据流应用的产生和发展,有学者对Henzinger提出的数据流定义进行了修改。目前,数据流一般定义为:
数据流是大量连续到达的、潜在无限的数据的有序序列,这些数据或其摘要信息只能按照顺序存取并被读取一次或有限次。
与传统的静态数据相比,数据流具有以下特 :
1.无限快速性。数据流通常是源源不断地快速产生,理论上其长度是无限的,在实际应用中远超过系统所能存储的范围,而传统数据库中的数据主要用于持久存储,其存储量和数据更新次数都相对有限。
2.不确定性。数据流产生的速度和间隔时间等统计特性事先难以确定,其产生顺序不受外界控制,很有可能数据流的产生速度超出系统所能接受并处理的限度,而传统数据库中的数据规模和处理能力等性能指标通常是已知的。
3.时变性。数据流随时间而变化,这将引起数据的统计特征也随时间而改变,如数据的方差、分位数、概率分布等,而传统数据库中的数据通常是静态的,一旦存储则很少随时间发生改变。
4.单遍扫描性。由于数据规模大、增长迅速,对数据流仅限于单遍扫描(One-Scan),即除非特意或显式存储外,每个数据只被处理一次。而传统数据库对数据进行持久存储,便于多遍扫描,并建立相应的索引机制有利于高效的查询。
5.结果近似性。大量的数据流分析处理中并非一定需要精确的查询结果,而满足精度误差要求的近似结果即可。而传统数据库建立在严格的数学基础之上,其查询语义明确、查询结果一般是精确的。
其中,无限快速性和单遍扫描性是两个最为重要的特点,是数据流区别于传统数据库中数据的关键。
现有的数据流管理系统:
数据流管理主要从系统的角度针对不同的应用背景,重点研究数据流的查询语言、查询模型、操作调度、资源管理、负载控制等与管理系统密切相关的问题。由于传统的数据库管理系统难以支持数据流应用中亟需的“连续查询”需求,因此,国内外许多大学和研究机构依托数据库管理系统的设计思路,针对具体行业背景,相继提出了多种数据流模型,并研发了一些具有代表性的数据流管理系统,典型的有:斯坦福大学的STREAM,加州大学伯克利分校的TelegraphCQ,AT&T实验室的Gigascope,布朗大学、布兰蒂斯大学和麻省理工大学的Aurora&Borealis等。由于数据流管理方面的研究通常跟具体的数据流管理系统紧密相关,从而将以这些典型的数据流管理系统为主线来介绍数据流管理的相关研究工作。
STREAM(Stanford Stream Data Manager): 它是斯坦福大学推出的一个通用型数据流原型系统,以关系型数据为基础设计了一种支持数据流的连续查询语
本篇主要介绍流数据的研究内容。
数据流处理准备知识。
1. 数据流模型的研究
数据流模型是对数据流的逻辑抽象,合理的数据流模型,可以改善数据流的处理效率,是设计高效的处理算法的基础。数据流分析模型主要包括:
滑动窗口模型(sliding window model)、界标模型(landmark model)和快照窗口模型(snapshot window model)。
快照窗口:
该窗口事先设定好起始(Ts)和结束时间戳(Te)并保持固定,仅考虑Ts和Te之间的数据流。
界标窗口:
该窗口包括从某一起始时间戳(Ts)到当前时间戳(Tc)之间的所有数据流,其中初始时间戳始终不变。
滑动窗口:
该窗口的起始和结束时间戳都可以变化,新的数据进入滑动窗口,而旧的数据则不断被删除。
在以上这三种窗口中,界标和滑动窗口具有处理新数据的能力,更接近于实际的应用,尤其是滑动窗口应用尤为广泛。
2. 目前数据流的研究主要集中在数据流管理系统和数据流分析两个方面。
数据流管理主要从系统的角度针对不同的应用背景,重点研究数据流的查询语言、查询模型、操作调度、资源管理、负载控制等与管理系统密切相关的问题。与数据流管理的
研究问题相比较,数据流分析偏重于理论研究,更多的关注与分析相关的处理算法。
关于数据流管理系统的研究,在上一篇中我们已经做了简单介绍。
国内外许多大学和研究机构依托数据库管理系统的设计思路,针对具体行业背景,相继提出了多种数据流模型,并研发了一些具有代表性的数据流管理系统。典型的
有:
STREAM(Stanford Stream Data Manager):它是斯坦福大学推出的一个通用型数据流原型系统,以关系型数据为基础设计了一种支持数据流的连续查询语言:CQL(Continuous Query Language)。STREAM系统的设计目标是在资源紧张的情况下能有效地给出连续近似的查询结果。其设计重心为针对连续、时变数据流的管理与近似查询处理,主要的研究内容包括:查询语言、操作调度、资源管理、负载控制等。该系统能适应海量、快速和易变的数据流环境,具有非常好的连续查询能力。
TelegraphCQ:该原型系统由加州大学伯克利分校开发,建立在开源数据库PostgreSQL之上。它采用工作流系统的设计思想,查询处理上基于主动查询处理引擎,并通过元组路由和分组过滤技术实现了多查询操作算子的共享。其重点考虑自适应处理和基于流水线的动态操作调度等。
Aurora&Borealis:Aurora系统是布朗大学、布兰蒂斯大学和麻省理工大学联合开发的一个实时数据流系统,该系统主要针对三类应用:实时监控应用、数据归档型应用和包含对历史与当前数据处理的应用。该系统偏重于实时处理,如:QoS管理,内存感知的操作调度,基于语义的负载控制,以及支持归档的存储管理等。
Gigascope:它是AT&T实验室开发的高性能数据流管理系统,主要用于分布高速网络数据流的监控[14]。该系统采用两层查询结构,能够根据流速和可用资源选择最恰当的处理策略。
数据流分析方面包括:
数据流频繁项集挖掘
数据流聚类
数据流分类
数据流离群点检测
数据流Skyline计算
数据流子序列匹配
数据流索引结构
数据流概要结构生成
数据采样以及压缩
数据流粒度表示
数据流相似性度量
数据流趋势预测
等内容。
目前这方面的研究国内外已有丰富成果。特别是数据流管理、数据流聚集分析和数据流挖掘得到广泛而深入的研究。
3. 数据流挖掘的挑战
针对数据流模型的特点,目前的工作主要有以下挑战:
低时空复杂度。无限快速性是数据流的基本特点,从而无限快速的流数据与有限资源(计算、存储和网络带宽等)之间的矛盾成为数据流研究面临的基本矛盾。数据流规模在理论上是无限的,为保证算法能适应无限快速的数据流处理,要求数据流算法具有非常低的时空复杂度。
增量近实时性。数据流的单遍扫描性要求算法必需具备可增量更新的功能。由于历史数据通常不再保存,原有针对数据库中持久存储的数据而设计的可多遍扫描的算法将不再适用于数据流应用,针对不同的数据流分析处理问题,都将需要设计相应的可增量更新的数据结构和算法;数据流的快速性势必要求算法能近实时的处理每个流数据,通常要求算法具有线性甚至次线性的处理速度[,次线性可通过抽样等技术获得。
自适应近似性。数据流的不确定性和时变性要求算法具有自适应的功能。数据流算法应能及时检测到数据流的动态变化,如负载、流速和数据分布等的变化,并根据变化而自适应的调整算法的相应参数,进而提高算法稳定性和可靠性,例如过载情况下可通过调度优化、负载平衡和降载(Load Shedding)等技术进行处理;数据流应用通常仅需满足精度要求的近似结果,其算法可应用近似算法的设计思想和方法。