基于空间时序数据流应用的Skyline查询系统的制作方法

文档序号:12465634阅读:309来源:国知局
基于空间时序数据流应用的Skyline查询系统的制作方法与工艺

本发明涉及动态skyline查询在数据流中的应用领域,是一种基于空间时序数据流应用的Skyline的查询系统,该系统涉及到大规模数据分析、空间时序的海量数据处理,全局skyline计算。



背景技术:

随着互联网、物联网的飞速发展以及社交网络、云计算等技术的广泛应用,海量数据技术得到了飞速发展。海量的数据被采集和记录,并用来进行科学、工程和商业等领域的研究及分析等工作。据最新研究表明:全球互联网、移动互联网、GPS网络等数据源每天要产生超过2.5×1018字节的海量数据,并且这些海量数据的来源广泛。互联网上的数据每两年翻一翻,物联网、移动互联网、车联网以及各种的传感器网络无时无刻不在增加海量数据。然而,海量数据的爆炸式增长,使得传统的单机数据分析处理技术已经越来越不适应当前密集型数据分析和处理的需求。为了节约成本,为大规模数据的存储和计算提供分布式处理框架,云计算、大数据、云存储、MapReduce、BigTable等相关技术被提出。

正如思科公司所预测,2016年全球将有79%的数据中心托管着云计算平台。海量数据存储在这些云计算平台中,由于数据量过大,使得这些海量数据处理技术对软硬件要求非常高、系统资源占用非常多,带来了算法效率低下的问题。众多学者们依托云计算平台提出很多新的高效的海量数据处理算法,Skyline算法是其中的一种高效的数据查询和提取方法,可以快速地从海量数据中抽取出关键的信息,大大减少数据量,降低海量数据处理中对软硬件的要求,提高数据处理的效率。Skyline算法作为一种有效的数据提取与处理方法,主要考虑的是如何从庞大的数据集中找出人们最感兴趣或最关心的信息,在海量数据分析处理方面具有广泛的应用,如多目标决策、商店寻址、环境监控、图像检索、个性化推荐、数据挖掘等。Skyline查询可以为用户在决策过程中提供多属性的评判原则,评价函数也可以根据不同的应用采用不同的测量方法(例如欧几里德距离、空间距离等)以提升用户的体验质量;对海量商务交易数据记录,Skyline计算能帮助市场分析人员进行价格及市场策略的定位;在环境监控中,通过分析传感器网络积累起来的海量数据,可以分析评价出潜在的自然灾害与风险。此外,Skyline查询也被应用到图像检索,商店寻址等领域。

Skyline算法变种多,且变种的应用场景更广泛。其变种具有各自的特点和面临的问题,现有的基于MapReduce的Skyline算法多数是静态Skyline算法,并不能通用和解决Skyline变种问题。因此基于MapReduce的Skyline算法有待进一步研究和扩展。这些变种算法除了MapReduce化急需解决之外,还面临着一些自身问题有待解决,如子空间Skyline能很好的解决高维数据带来的计算量大问题,但其返回的结果集过于庞大且大部分结果并不是用户所需要的,这一特点并不适合当今移动互联网终端查询应用潮流;在动态Skyline中被查询对象的属性值随查询对象的变化而变化,计算量大并且对算法的实时性、响应时间和用户体验要求高。目前存在的基于MapReduce的Skyline算法所采用的分区方式或索引方式都没法适应这些要求;在度量空间Skyline中存在着度量空间建模问题及查询复杂度高的问题,影响了查询精度并加大了计算量。由于动态Skyline中所有属性值随着查询点变化而变化,在处理海量数据时会遇到计算量大、实时性要求高的问题。例如手机用户的动态Skyline查询对实时性要求极高,而大数据时代手机终端产生的数据又成为数据增长的主要来源。针对这一趋势,集中环境下的动态Skyline算法无法胜任海量数据处理;目前存在的基于MapReduce的Skyline算法普遍采用的分区方式也不适应这种要求。在文献中提出的利用MapReduce实现的并行反Skyline的动态查询依赖于四叉树(rsky-quadtree)分区,它的缺点在于针对每个查询点q,都需要额外的步骤将每个数据点的坐标p转换成p′,而四叉树也需要跟着重新建立。当面临大数据的情况时,坐标转换及四叉树的重新建立都会带来难以承受的开销。为了解决以上问题,提出了Skyline格和全局Skyline格的定义,并在这些定义基础上提出了一种基于空间时序数据流应用的动态Skyline查询算法。它的主要思想是按照时间窗口为单位将动态变化数据空间分割成带有时间戳的Skyline非均匀格,即建立一个基于时间排序的倒排网格索引结构。当查询点到来时,先判定当前查询时间预测查询结束时间(可以根据系统平均执行时间进行预估或抽样预估,用执行时间窗口下限来表示),再利用轮询的方式计算结束时刻查询点周边四个象限中Skyline格的支配关系,根据支配关系比较得到全局Skyline格,这些全局Skyline格中的数据组成了候选集合并用于下一步的动态Skyline计算。这种方法不但能有效地进行实时剪枝,节省了大量的不必要计算,而且还能根据时间变化进行动态调整,进而加快了动态Skyline的查询,且结果相对更为精确;为了验证本专利所提算法,最后设计了系统原型并将其应用到网络监控异常情况的检测中。

现有的基于MapReduce的Skyline算法在并行环境下,对基于时间的子空间Skyline查询及时序数据动态Skyline查询的支持少。例如,有些基于MapReduce的Skyline算法修改了Hadoop框架,但仍然存在着可扩展性差、普适性差的问题。之前我们研究设计的基于MapReduce的动态Skyline查询方法,只能进行离线批处理非实时的数据,不能很好地用于实时的数据查询。这些方法已经不适用于如今爆炸性增长的数据查询,基于该出发点,我们设计并实现了该发明。



技术实现要素:

根据上述背景技术中存在的缺陷和不足,本发明提供了云计算环境下基于空间时序数据流应用的skyline查询系统,以改进现有的数据流的动态skyline查询方法的缺陷,用以提高准确度和处理效率以及提升用户体验。

一种基于空间时序数据流应用的Skyline查询系统,包括云中心服务系统,所述云中心服务系统包括:划分模块,用于执行基于空间时序划分,按时间窗口将连续的时间序列分割成若干时间片段;倒排网格索引生成模块,对于每一个时间片段,对其生成网格倒排索引;计算模块,将时刻查询点映射到相应的Skyline网格当中,然后使用全局Skyline格计算方法得到全局Skyline格作为侯选集,接着对侯选集里的网络节点数据按时间序列作动态Skyline查询,计算得到有效的全局Skyline结果。

划分模块对空间时序划分的具体步骤是:给定一个对象集合P,每个数据点pk的时间属性值(t)在一个有界的区间[Tmin,Tmax],构造一个均匀的划分{t0,...,tB},ti的定义ti=Tmin+l×i,l=(Tmax-Tmin)/B,i=0,...,B

形成一个时间片段集合{b0,...,bB-1},每个时间片bi=[ti,ti+1),固定长度为l,B为有界区间均匀划分的个数;每个点的时间属性值为t映射到时间片bs(t)∈{b0,...,bB-1},其中s(t)的定义如下:

倒排网格索引生成模块中,对于每一个时间片段而言,其网格倒排索引的生成过程如下:假设一个给定的d维空间对象集合P={p1,...,pn},P中每个数据点pk即pk∈P都有d维属性{pk.x1,...,pk.xd},d维数据空间被划分等宽的网格,每个单元格的宽度为(δ1,...,δd);单元格的宽度要根据每维取值情况而定,使得映射后的数据点能均匀地分布其中,扫描同一时间片内的所有点,点pk映射成网格坐标坐标映射如

计算模块中,全局Skyline格计算方法是:查询点q被映射到相应的网格单元cq当中,整个网格区域就被分成了影响区域和被支配区域,影响区域包含cq周边非空的格以及与网格cq处于同一水平或垂直线上的网格;被支配区域是指被影响区域支配的区域,对于影响区域的查找,采用象限轮询法,通过逐步扩展,计算查询点周边各个象限中非空Skyline格的支配关系,根据支配关系比较得到全局Skyline格和格中的数据点。

Skyline格支配方法如下:给定查询点q,d维空间上Skyline格集合C中任意两个非空Skyline格ci,cj,同时满足下面条件:

①(ci(t)-q(t))(cj(t)-q(t))>0;

②|ci(t)-q(t)|≤|cj(t)-q(t)|;

③|ci(t)-q(t)|<|cj(t)-q(t)|。

则Skyline格ci关于q支配Skyline格cj

所述全局Skyline格为,给定格集合C,C的全局Skyline格是所有不被其他格全局支配的格集合,其定义为:

建立索引时,使用MapReduce处理流程,同时启动多个Map对流数据进行读取,每个Map读取不同的HDFS数据片段,生成<key,value>数据对,此处的key为时空索引,value为hashmap数据结构,里面存储着根据划分得到的相应数据点;每个Map得到的中间数据,是部分数据的子索引,并且根据key完成排序,再调用一个Reduce完成索引的归并生成。

空间时序划分时,设定一个监控时间范围,并由此设定一个阈值,如果查询时刻超出了指定的时间范围,则需要跨多个时间窗,此时对需要跨的时间窗大小进行评估,如果时间窗大小超过时间阈值,则直接查询失败。

有益效果:该空间时序数据流系统会通过相关技术在面对大量信息时,按用户要求进行准确高效的处理,然后上传到云端服务器进行分析,并把最终结论反馈给用户。

附图说明

图1基于时间序列的划分;

图2基于时间序列的倒排索引结构;

图3基于网格的倒排索引创建过程;

图4 MapReduce生成索引示例;

图5全局Skyline格。

具体实施方式

实施例1:

基于空间时序数据流应用的skyline查询方法。发明步骤如下:

S1:基于空间时序划分:

我们将按时间窗口将连续的时间序列分割成若干时间片段。如图1所示,方法如下:给定一个对象集合P,每个数据点pk的时间属性值(t)在一个有界的区间[Tmin,Tmax],构造一个均匀的划分{t0,...,tB},ti的定义:

ti=Tmin+l×i,l=(Tmax-Tmin)/B,i=0,...,B;

以形成一个时间片段集合{b0,...,bB-1},每个时间片bi=[ti,ti+1),固定长度为l。每个点的时间属性值为t映射到时间片bs(t)∈{b0,...,bB-1},其中s(t)的定义如B为有界区间均匀划分的个数。

其中不同粒度的区间固定长度(l)的值要根据实际应用情况而定。为了减少计算量,我们设定一个监控时间范围并设定一个阈值,如果查询超出了指定的时间范围,则需要跨多个时间窗,此时对需要跨的时间窗大小进行评估,如果超过阈值,在查询时则直接查询失败。由于我们引入了时间窗口,所以我们需要进一步明确监控范围,如果时间窗口过小,我们的数据量积累不大的情况,我们将采用批量流缓存的方法,将数据流进行缓存再批量定期发送。如果时间窗口大,且数据量比较大的情况,我们将数据流按窗口进行拆分,拆分的粒度由实际应用场景决定。这样,我们就对监控范围进行上限和下限的限定,如果超出了监控范围,则做查询失败处理。这一处理方法也比较符合实际查询应用需求,比如说因为车行过快,已离开了某一应用区域就没有必要继续进行查询了。我们实验测试结果表明,按抽样分布概率来计算,应用效果相对较好。

S2:其次再对时间片段建立网格倒排索引:

在该步骤中,设计一种基于时间序列的倒排网格索引的数据结构如图2所示。对于每一个时间片段而言,先确定时间,并估算结束时刻(即执行时间窗口的下限),并在此处对其网格倒排索引,索引的生成过程如图3所示。假设一个给定的d维空间对象集合P={p1,...,pn},P中每个数据点pk即pk∈P都有d维属性{pk.x1,...,pk.xd}。d维数据空间被划分等宽的网格,每个单元格的宽度为(δ1,...,δd)。单元格的宽度要根据每维取值情况而定,尽量使得映射后的数据点能均匀地分布其中。扫描同一时间片内的所有点,点pk映射成网格坐标坐标映射如公式:

在步骤S1和步骤S2中,基于时序划分和生成网格索引两个过程利用MapReduce处理流程,同时启动多个Map对流数据进行读取,每个Map读取不同的HDFS数据片段生成<key,value>这样的数据对,此处的key为时空索引,value为hashmap数据结构,里面存储着根据划分得到的相应数据点。每个Map得到的中间数据,也就是代表部分数据的子索引,并且自动根据key完成排序。为了保证数据完整性和一致性,最后调用一个Reduce完成索引的归并生成。基于时序倒排索引的生成是一个预处理过程,预先生成可供后续查询使用并且不占用查询时间,是一种有效的数据管理模式。同时MapReduce对大数据并行处理的能力也能很好的完成此项工作。

利用Spark流系统,同时启动多个Map对时间的流数据进行读取,每个Map读取不同的HDFS数据片段生成<key,value>这样的数据对,此处的key为时空索引,value为hashmap数据结构,里面存储着根据划分得到的相应数据点。每个Map得到如图4所示的时间片个数B设置为n,网格宽度为15的中间数据,也就是代表部分数据的子索引,并且自动根据key完成排序。

相对之前我们的工作,此处有两个优化,一个是采用了执行时间结束的时刻进行结果查询,这样更有代表性。比如说一个正在公路上快速运行的车辆,如果启动查询请求,应该按查询结束的时刻点进行查询结果过滤,这样结果将更为精确与符合实际情况。另一个优化是我们采用了Spark流处理系统,将Map计算的结果以流的形式,进行分布缓存,并不是写处HDFS中,这样可以极大的加速计算速度。

S3:全局Skyline格的计算

当面对海量数据时,为了减少计算量,我们提出了一种粗粒度全局Skyline格的计算方法,将经过轮询计算之后的全局Skyline格中的数据作为候选集。相对于原始数据集,候选数据集中数据量大大减少,从而减少了下一步动态Skyline计算时支配关系的比较,这个过程类似于剪枝。下面给出了Skyline格支配关系的定义和全局Skyline格的定义,

定义(Skyline格支配):给定查询点q,d维空间上Skyline格集合C中任意两个非空Skyline格ci,cj,则Skyline格ci关于q支配Skyline格cj即同时满足下面条件:

①(ci(t)-q(t))(cj(t)-q(t))>0;

②|ci(t)-q(t)|≤|cj(t)-q(t)|;

③|ci(t)-q(t)|<|cj(t)-q(t)|。

定义(全局Skyline格):给定格集合C,C的全局Skyline格(GSC)是所有不被其他格全局支配的格集合

动态Skyline查询的开销和数据集大小有直接关系,尤其是对于海量数据它们之间支配关系的实时判断开销很大,并且每次查询都需要重新计算。全局Skyline格的概念能很好的实现粗粒度的剪枝,在此基础上得到的候选集,是实现下一步动态Skyline查询计算的基础。下面将详细介绍粗粒度剪枝的过程。

如图5所示,查询点q被映射到相应的网格单元cq当中,整个网格区域就被分成了影响区域和被支配区域。影响区域包含cq周边非空的格c1,c2,c3,...,c8,以及与网格cq处于同一水平或垂直线上的网格,如c9格;被支配区域是指被影响区域支配的区域,如在第二象限中的c10格。对于影响区域的查找,我们采用的是2d个象限轮询法(d为数据集维数),通过逐步扩展的方法计算查询点周边各个象限中非空Skyline格的支配关系,根据支配关系比较得到全局Skyline格和格中的数据点,这样无需遍历全部数据便能获得影响区域中的数据点。相对于原始数据的全遍历,数量甚微的Skyline格的遍历大大减少了计算开销。

在该步骤中,将全局Skyline格应用到网络监控的数据中,首先将时刻查询点q被映射到相应的Skyline网格当中,然后利用全局Skyline格计算方法得到全局Skyline格作为侯选集,接着对侯选集里的网络节点数据做按时间序列的动态Skyline查询,最终计算得到有效的全局Skyline结果,即网络监控中接近查询阈值的节点。

由上文中的方法得到的其对应的系统或装置,如下:

一种基于空间时序数据流应用的Skyline查询系统,包括云中心服务系统,所述云中心服务系统包括:划分模块,用于执行基于空间时序划分,按时间窗口将连续的时间序列分割成若干时间片段;倒排网格索引生成模块,对于每一个时间片段,对其生成网格倒排索引;计算模块,将时刻查询点映射到相应的Skyline网格当中,然后使用全局Skyline格计算方法得到全局Skyline格作为侯选集,接着对侯选集里的网络节点数据按时间序列作动态Skyline查询,计算得到有效的全局Skyline结果。

划分模块对空间时序划分的具体步骤是:给定一个对象集合P,每个数据点pk的时间属性值(t)在一个有界的区间[Tmin,Tmax],构造一个均匀的划分{t0,...,tB},ti的定义ti=Tmin+l×i,l=(Tmax-Tmin)/B,i=0,...,B

形成一个时间片段集合{b0,...,bB-1},每个时间片bi=[ti,ti+1),固定长度为l,B为有界区间均匀划分的个数;每个点的时间属性值为t映射到时间片bs(t)∈{b0,...,bB-1},其中s(t)的定义如下:

倒排网格索引生成模块中,对于每一个时间片段而言,其网格倒排索引的生成过程如下:假设一个给定的d维空间对象集合P={p1,...,pn},P中每个数据点pk即pk∈P都有d维属性{pk.x1,...,pk.xd},d维数据空间被划分等宽的网格,每个单元格的宽度为(δ1,...,δd);单元格的宽度要根据每维取值情况而定,使得映射后的数据点能均匀地分布其中,扫描同一时间片内的所有点,点pk映射成网格坐标坐标映射如

计算模块中,全局Skyline格计算方法是:查询点q被映射到相应的网格单元cq当中,整个网格区域就被分成了影响区域和被支配区域,影响区域包含cq周边非空的格以及与网格cq处于同一水平或垂直线上的网格;被支配区域是指被影响区域支配的区域,对于影响区域的查找,采用象限轮询法,通过逐步扩展,计算查询点周边各个象限中非空Skyline格的支配关系,根据支配关系比较得到全局Skyline格和格中的数据点。

Skyline格支配方法如下:给定查询点q,d维空间上Skyline格集合C中任意两个非空Skyline格ci,cj,同时满足下面条件:

①(ci(t)-q(t))(cj(t)-q(t))>0;

②|ci(t)-q(t)|≤|cj(t)-q(t)|;

③|ci(t)-q(t)|<|cj(t)-q(t)|。

则Skyline格ci关于q支配Skyline格cj

所述全局Skyline格为,给定格集合C,C的全局Skyline格是所有不被其他格全局支配的格集合,其定义为:

建立索引时,使用MapReduce处理流程,同时启动多个Map对流数据进行读取,每个Map读取不同的HDFS数据片段,生成<key,value>数据对,此处的key为时空索引,value为hashmap数据结构,里面存储着根据划分得到的相应数据点;每个Map得到的中间数据,是部分数据的子索引,并且根据key完成排序,再调用一个Reduce完成索引的归并生成。

空间时序划分时,设定一个监控时间范围,并由此设定一个阈值,如果查询时刻超出了指定的时间范围,则需要跨多个时间窗,此时对需要跨的时间窗大小进行评估,如果时间窗大小超过时间阈值,则直接查询失败。

实施例2:

本实施例涉及实施例1中所述的基于空间时序数据流应用的Skyline查询方法的具体应用:

基于空间时序数据流应用的skyline查询系统用于移动医疗的呼叫,其中的云中心服务系统提供空间网格剪枝策略及持续网络医疗数据监控来执行动态Skyline与全局Skyline算法,输入各属性的阈值并且按执行时间结束的时刻发送查询结果,来完善医院的属性。即该系统执行步骤如下:

S1.云中心服务系统以分布式动态Skyline与全局Skyline算法提供模块索引数据结构,同时我们利用Spark流系统,启动多个Map对时间的流数据进行读取,每个Map读取不同的HDFS数据片段生成<key,value>这样的数据对,此处的key为时空索引,value为hashmap数据结构,里面存储着根据划分得到的相应数据点,来对大规模医疗机构数据进行筛选。

S2.智能移动客户端在终端设备上首先通过GPS进行定位,确定查询用户所在的空间与个性化需求,。然后运行医疗呼叫程序,通过云端服务器进行通信,发送查询指令,并与云中心服务系统反馈回来的空间过滤结果与持续空间监控数据进行用户参与下的信息交互。

实施例3:

实施例1中的基于空间时序数据流应用的skyline查询方法用于流行病检测,首先我们将按时间窗口将监测流行病的时间序列分割成若干时间片段,然后对每个时间片段的数据进行Skyline静态查询。对出现流行病的时间对象集合P,每个数据点pk的时间属性值(t)在一个有界的区间[Tmin,Tmax],构造一个均匀的划分{t0,...,tB},ti的定义ti=Tmin+l×i,l=(Tmax-Tmin)/B,i=0,...,B。形成一个时间片段集合{b0,...,bB-1},每个时间片bi=[ti,ti+1),固定长度为l。每个点的时间属性值为t映射到时间片bs(t)∈{b0,...,bB-1},其中s(t)的如其中不同粒度的区间(l)的值要根据实际监测的时间而定。同时为了减少计算量,我们设定一个监控流行病的时间范围并设定一个阈值,如果查询超出了指定的时间范围,则需要跨多个时间窗,此时对需要跨的时间窗大小进行评估,如果超过阈值,则直接询失败。我们通过网络监控对网络节点的状态进行实时的动态监控,每个节点不断地向服务器发送执行时间结束的时刻,这样结果将更为精确与符合实际情况。

实施例4:

实施例1中的基于空间时序数据流应用的skyline查询方法用于医疗历史数据分析。当医疗历史数据集给定,静态Skyline结果就已经能确定下来了。如果不断有实时性的医疗数据的加入,且指定一个查询请求,考虑查询数据集中对象间相对于查询请求点的支配关系时,那么这样的Skyline查询结果即是不确定的,即对于动态Skyline查询根据查询参考对象的不同,查询结果也不同,如果考虑到用户的查询可能变化时,查询的医疗历史数据也会发生变化,且存在支配关系时,这样的多因素查询就是Skyline查询,如果积累的历史医疗的数据,尤其是多维数据信息如:病情、病因、患病时间、治疗情况等信息非常大时,用单计算节点无法处理时,就得使用云计算技术来并行处理。DynamicSkylineQuery:一个d维数据空间S={s1,s2,...,sd},P是在数据空间S上的数据集合即P={p1,p2,...,pn},一个查询对象ref根据动态支配关系对向量按时间进行动态支配的计算,计算得到Skyline的结果集。数据对象b动态支配a,当且仅当b在所有属性上都不比a距离ref远,且至少有一维比a近。如果查询点是按时间动态变化的,那么索引与查询操作也需要动态按时间流顺序进行处理。本实施例的优点是:采用了执行时间结束的时刻进行结果查询,这样更为精确与符合实际情况。另一个是我们采用了Spark流处理系统,将Map计算的结果以流的形式,进行分布缓存,这样可以极大的加速计算速度。实现了本发明应用于:移动疾病预警方面的监控,移动医疗的呼叫,以及医疗历史数据检索等方面。针对查询结果的数据增量维护困难,应用在网络监控中的进行全局变量skyline的动态查询,关注异常情况的发现。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1