【软件学报,2008】Skyline查询处理

合集下载

交互式多用户Skyline查询处理算法

交互式多用户Skyline查询处理算法

交互式多用户Skyline查询处理算法邵路伊;秦小麟;王潇逸;郭成盖;邓丹萍【期刊名称】《计算机科学与探索》【年(卷),期】2018(012)008【摘要】传统的Skyline查询是在单用户场景下设计的,随着数据库技术的发展以及应用新需求的出现,实际应用中考虑到多用户共同参与Skyline查询.在分析现有Skyline查询算法解决该问题不足的基础上,提出了一种基于权重的交互式多用户Skyline查询(weight-based interactive multi-user Skyline query,MUSW)算法.该算法定义了一种满意度度量方法,由用户权重决定Skyline结果集中每个数据点的满意度大小.MUSW算法旨在选取满意度大的数据点,首先确定多个子空间Skyline候选集;然后通过用户交互对用户权重进行动态调整,系统根据用户的反馈判断是否终止查询,从而使返回结果更符合用户的真实需求.在模拟和真实数据上验证MUSW算法的可行性,且具有良好的交互性能.【总页数】12页(P1202-1213)【作者】邵路伊;秦小麟;王潇逸;郭成盖;邓丹萍【作者单位】南京航空航天大学计算机科学与技术学院,南京 210016;南京航空航天大学计算机科学与技术学院,南京 210016;南京航空航天大学计算机科学与技术学院,南京 210016;南京航空航天大学计算机科学与技术学院,南京 210016;南京航空航天大学计算机科学与技术学院,南京 210016【正文语种】中文【中图分类】TP311【相关文献】1.基于MapReduce的Skyline查询处理算法 [J], 崔文相;肖迎元;郝刚;王洪亚;邓华锋2.高效多子空间Skyline查询处理算法 [J], 王潇逸;秦小麟;王宁;史文浩3.基于属性优先关系的多用户Skyline查询处理算法 [J], 邵路伊;王沁雪;郭帅4.无线传感器网络中一种近似Skyline查询处理算法 [J], 潘立强;李建中;骆吉洲5.一种弹性可扩展的并行n-of-N Skyline查询处理算法 [J], 魏炜;王意洁;王媛;马行空因版权原因,仅展示原文概要,查看原文内容请购买。

多因素时间序列Skyline的快速查询算法

多因素时间序列Skyline的快速查询算法
mu t f c o n e c m ep i t c mp t se p c a t F S i a h mi i u tmei tr a e a g rt m o u e h F n t ed sg ae me l — a t r a h t o n , o u e x e t n T n e c n m m i n e v lTh l o i i i i M h c mp t st eM TS i h e i n t d t i
第 3 7卷 第 9期
V_ _7 O 3 1






2 1 年 5月 01
M a 0l v 2 1
N O. 9
Co p t rEn n e i g m u e gie rn
软件 技术 与数 据库 ・
文章 编号: 0 _ 48 o1 9_ 8 - 10 I 2( 1) —0 4 0 3 2 o 0— 3
均 为 内存 算 法 。 数据 库 领 域 对 S yie 询 的研 究 主要 在 数 据 kl 查 n
快速查询算法 ,并计算其算法复杂 度。通过一个简单案例验
证 MF S快速查询方法 的正确性,并对实验结果进行分析 , T 检查 MF S快速查询算法针对不同的多 因素时间序列组 的查 T
J N Xi l ”
(c o l f o t r , h n s a o il r l g , h n s a4 0 0 , ia S h o o f S wae C a g h c kCol e C a g h 10 4 Chn ) S a Wo e
[ s at hs a e rp ss l a tr i dS yi ( T )k l efs q eyagwtm wi T h loi m e n trsh Ab t c]T ip pr o oe MutF co me k l eMF S syi at ur l(i t MF S T eag rh gta ds e e r p a i T n n h h t s o t

Skyline软件介绍

Skyline软件介绍

Skyline软件介绍Skyline软件介绍一、软件性能总览Skyline 软件是利用航空影像、卫星数据、数字高程模型和其它的2D或3D信息源,包括GIS 数据集层等创建的一个交互式环境。

它能够允许用户快速的融合数据、更新数据库,并且有效地支持大型数据库和实时信息流通讯技术,此系统还能够快速和实时地展现给用户3D地理空间影像。

Skyline是独立于硬件之外、多平台、多功能一套软件系统。

Skyline软件系列产品为网络和非网络环境提供了一个三维交互世界的窗口。

以下的工作流程能够指导你在本地或网络环境下进行基本数据生成,数据传输,数据可视化和数据分析等。

产品能够分离开或根据用户需求进行用户化的特殊定制。

初始化界面和在线帮助工具能够帮助你设定适合自己的三维世界窗口来解决你特殊的商业案例。

从生成飞行文件的地表数据集或从你的GIS投资在二维/三维的knowledgebase简单的传送地表数据。

Skyline软件能够使你在一个新的视角又基于你已有的IT和GIS构架来观看你的商业案例。

二、Skyline软件系列产品(一)、TerraExplorer SuiteTerraExplorer ProTerraExplorer DeveloperTerraExplorer Run Time ProTerraExplorer Viewer(二)、TerraGate SuiteTerraGateInternet LicenseTerraPhoto3D Server(三)、TerraBuilder SuiteTerraBuilderTerraBuilder Enterprise EditionTerraBuilder DirectConnect三、产品性能介绍(一)、TerraBuilder——允许用户快速创建编辑和获得Skyline三维地表数据集。

l TerraBuilder 可以使用户为他们的地理参考的应用创建一个现实影像的、地理的、精确的地球三维模型。

skyline服务查询

skyline服务查询

Skyline服务查询实验实验内容:应用BNL算法和SFS算法对QWS数据集进行skyline服务查询算法介绍及实现:➢BNL算法该算法首先在内存中开辟有一块窗口,用于存放从文件中读入的疑似是SP的数据。

还有临时文件T,当内存中的窗口满时,原本需要插入到窗口中的点将被保存在临时文件中。

算法的流程如下:从存放需要查询的数据的文件F中,读取一个数据点p,与窗口中的所有点比较(如果窗口为空,则直接插入),根据比较结果不同执行下面三种操作。

●窗口中存在一点q,q点支配p点,则p点不可能是SP成员,将p点丢弃。

●p点支配窗口中的一个或多个点,则被p点支配的所有点不可能是SP成员,将它们删去。

●p点与窗口内所有的点都不相互支配,若窗口的容量仍够存放p点则插入p点,否则将p点插入临时文件T中。

当所有点都读取完并执行完上述操作时,窗口中在临时文件中加入第一个点之前就已经加入的点作为SP输出。

将临时文件T作为数据来源,即作为存放需要查询的数据的文件F,新建一个空白的临时文件T',从1开始循环执行该过程。

知道所有的点或者被丢弃,或者被作为SP输出。

具体实现(python):def BNL(len1,len2,data_array):reslist = []for i in range(len1):if len(reslist) == 0:reslist.append(i)else:deletelist=[]remain = Truefor k in reslist:kqicnt = 0iqkcnt = 0for t in range(len2):if data_array[i][t] >= data_array[k][t]:iqkcnt = iqkcnt + 1if data_array[i][t] <= data_array[k][t]:kqicnt = kqicnt + 1if kqicnt == 9:remain = Falsebreakif iqkcnt == 9:deletelist.append(k)if len(deletelist) > 0:reslist = [reslist[p] for p in range(0, len(reslist), 1 ) if p not in deletelist]if remain:reslist.append(i)return reslist➢SFS算法在BNL的基础上先对数据进行预处理(排序),使得加入的点一定是SP,减少删除的开销具体实现(python):def SFS(data,len1,len2):reslist = []reslist.append(0)for i in range(1,len1):remain = Truefor k in reslist:kqicnt = 0for t in range(len2):if data[i][t] <= data[k][t]:kqicnt = kqicnt + 1if kqicnt == 9:remain = Falsebreakif remain:reslist.append(i)return reslistQoS服务数据randdataset产生的Qos服务数据集放在了QoSdata文件中,通过传入该数据集检验上面的算法实验结果分析:BNL运行结果(数据较多,截图不全):SFS运行结果(数据较多,截图不全):运行速率分析BNL算法:SFS算法:。

skyline查询基数估计方法

skyline查询基数估计方法

skyline查询基数估计方法一、引言基数估计方法是一种用于估计大规模数据集中唯一值数量的技术。

而Skyline查询是一种常用的查询类型,用于找出数据集中的最优数据点。

将这两个概念结合起来,可以实现对大规模数据集中Skyline查询结果的基数进行估计,从而提高查询效率。

本文将介绍两种常用的基数估计方法在Skyline查询中的应用。

二、基数估计方法概述基数估计方法是通过对数据集中的一部分数据进行抽样或统计,来估计整个数据集中唯一值的数量。

常用的基数估计方法包括HyperLogLog和MinCount等。

这些方法通过合理的数据结构和算法,能够在保证一定估计精度的前提下,大幅减少对原始数据的存储和计算开销。

三、Skyline查询概述Skyline查询是一种常用的多目标查询类型,用于找出数据集中的最优数据点。

在Skyline查询中,用户需要定义一组目标属性,系统会根据这些属性在数据集中找出满足条件的最优数据点。

而在大规模数据集中进行Skyline查询时,由于计算复杂度的增加,查询效率成为一个重要的问题。

四、基数估计方法在Skyline查询中的应用1. 基于HyperLogLog的基数估计方法HyperLogLog是一种常用的基数估计方法,它通过哈希函数和位图等数据结构,能够在极小的存储空间内估计大规模数据集中的基数。

在Skyline查询中,可以利用HyperLogLog对查询结果进行基数估计,从而减少对原始数据的访问和计算开销。

例如,在计算Skyline查询结果时,可以先对候选数据点进行基数估计,然后只选择基数较大的数据点进行后续计算,以提高查询效率。

2. 基于MinCount的基数估计方法MinCount是另一种常用的基数估计方法,它通过随机采样和最小值统计等技术,能够在保证一定估计精度的前提下,估计大规模数据集中的基数。

在Skyline查询中,可以利用MinCount对查询结果进行基数估计,从而减少计算开销。

【软件学报】_数据相关_期刊发文热词逐年推荐_20140727

【软件学报】_数据相关_期刊发文热词逐年推荐_20140727

科研热词 数据挖掘 半监督聚类 集成索引结构 闭包中心 重定向服务 邻接矩阵 近邻传播 跨层优化 跨媒体 资源搜索 语义查询扩展 词语-概念相关度 计数算子 聚类分析 聚类 网络发展模式 网络动态模式 网络体系结构 网构软件 结构一致性 程序设计方法 移动对等网络 移动ipv6 社会网络分析 相似度矩阵 概念 极大团 本体 服务动态演化 时序数据预处理 数据分发 投影矩阵 成对约束 成对点约束 属性构造 属性关系一致原则 容错方法 家乡代理 媒体对象 失效检测 处理器特性 噪音消除 告警关联 可信关联规则 内存数据库 先验知识 信息迁移 信息可视化 交叉参照图模型 tpc-h负载 osgi
科研热词 skyline 高维数据流 高维数据 需方参与 随机投影 降维约简技术 键值存储 量化分析 连续查询 软件过程 路径敏感分析 行为元素 虚拟人 蒙特卡罗模拟 自治计算 联盟关系 网络推断 缺陷检测 统一计算设备架构 结果可视化 移动web 电子政务 熵最大化准则 滑动窗口 混合索引 流行病传播网络 流行病传播模型 泛化 死路径清除 正态分布 概率数据流 查询处理 服务描述信息 服务发现 最小包含超球体 时空数据挖掘 数据质量 数据清洗 数据流分析 数据流 数据泄漏防护 收敛性 支持向量机分类器 支持向量机 支持向量数据描述 推荐信任模型 排名策略 完整性约束 多agent系统 多agent 地理标记 图形处理器
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

基于众包的不完整数据Skyline查询处理研究

基于众包的不完整数据Skyline查询处理研究

基于众包的不完整数据Skyline查询处理研究在过去十年间,针对不完整数据的查询处理研究受到广泛关注。

现有方法往往致力于数据预处理,利用机器学习技术对缺失值进行填补。

此类方法的查询质量受限于机器算力。

在某些情况下,群体智慧可以很好地解决机器难以解决的问题。

对此,我们希望借助众包来优化查询质量。

本文研究针对不完整数据的Skyline查询处理问题,提出一个基于众包的Skyline查询框架,称之为BayesCrowd。

该框架包含不完整数据建模阶段和众包阶段。

在建模阶段,我们借助贝叶斯网络刻画数据相关性,利用c-table模型表示不完整数据对象,并提出高效建模算法。

在众包阶段,我们通过众包计算对象间支配关系,从而得到Skyline查询结果。

考虑到众包预算和众包延迟,BayesCrowd需要选择性地发布众包任务。

因此,本文设计效用函数来衡量众包任务的效益,并提出了三种任务选择策略来满足不同用户需求。

最后,我们在真实数据集以及合成数据集上进行大量的实验,从查询耗时、查询成本以及查询延迟的角度验证BayesCrowd的优越性。

一种渐进的分布式Skyline查询算法的开题报告

一种渐进的分布式Skyline查询算法的开题报告

一种渐进的分布式Skyline查询算法的开题报告摘要:Skyline查询是一种重要的多维数据查询,被广泛应用于数据挖掘、决策分析和虚拟现实等领域。

随着数据规模不断增大,传统的Skyline查询算法已经无法满足分布式场景下的性能需求。

因此,本文提出了一种基于分布式计算框架的Skyline查询算法,通过将数据划分为多个分区,并将计算任务分配给多个计算节点处理,实现了Skyline查询任务的并行化处理。

本算法通过数据流式处理和贪心策略优化,能够提高查询的性能和扩展性。

我们还通过实验验证了算法的效率和准确性。

关键词:Skyline查询,分布式计算,数据流式处理,贪心策略,性能优化1. 研究背景和意义Skyline查询是指在多维数据集中挑选出最优的一些数据对象,通常用于决策分析、数据挖掘和虚拟现实等领域。

Skyline查询算法是计算Skyline结果的方法,已经得到广泛的应用和研究。

传统的Skyline查询算法主要是基于单机和集中式计算的,在处理大规模数据时性能较低、耗时较长。

为了解决传统Skyline算法的性能问题,在近年来越来越多的研究者开始关注Skyline查询算法在分布式场景下的实现。

主要的挑战在于如何高效地在多个计算节点之间合并结果,并且保证结果的准确性和完整性。

因此,开发分布式Skyline查询算法已成为当前研究中的一个重要问题。

如何同时提高查询的效率和准确性,是该领域的一个热门问题。

2. 研究内容和方法本文旨在研究一种基于分布式计算框架的Skyline查询算法。

该算法主要通过以下几个步骤实现:(1)将数据划分为多个分区,并将计算任务分配给多个计算节点处理,实现任务的并行化处理。

(2)利用数据流式处理的思想,在每个计算节点上按需计算数据流中的Skyline点,并将结果传递给合适的计算节点进行合并。

(3)设计一种基于贪心策略的合并算法,以不同阈值下的决策因素(如优先级)作为合并的判断依据,从而保证结果的准确性和完整性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software, Vol.19, No.6, June 2008, pp.1386−1400 DOI: 10.3724/SP.J.1001.2008.01386 Tel/Fax: +86-10-62562563© 2008 by Journal of Software. All rights reserved.Skyline查询处理∗魏小娟1, 杨婧1, 李翠平1,2+, 陈红1,21(中国人民大学信息学院,北京 100872)2(数据工程与知识工程国家教育部重点实验室,北京 100872)Skyline Query ProcessingWEI Xiao-Juan1, YANG Jing1, LI Cui-Ping1,2+, CHEN Hong1,21(School of Information, Renmin University of China, Beijing 100872, China)2(Key Laboratory of Data Engineering and Knowledge Engineering of the Ministry of Education, Beijing 100872, China)+ Corresponding author: E-mail: cuiping_li@Wei XJ, Yang J, Li CP, Chen H. Skyline query processing. Journal of Software, 2008,19(6):1386−1400./1000-9825/19/1386.htmAbstract: This paper gives a survey on current Skyline queries techniques. It first introduces the background inwhich Skyline queries appear. Then it presents in-memory algorithms in Skyline query problem. Facing to thesituation of large data sets, it further presents the techniques about Skyline query processing by two cases, with orwithout indices respectively. Evaluations of Skyline query methods are discussed after that. This paper alsointroduces the novel query model-SKYCUBE which is applied to process multi-Skyline queries in varioussubspaces and related research based on it. Additionally, it introduces the efficient algorithm to solve Skylinequeries in various applicant environment and the extension of the Skyline query processing. Finally, this paperproposes several directions for further research on the topic of Skyline query processing.Key words: Skyline query; Skyline point; dominance; multi-objective optimization; SKYCUBE摘要: 对目前的Skyline查询方法进行分类和综述.首先介绍Skyline查询处理问题产生的背景,然后介绍Skyline查询处理的内存算法,并从带索引和不带索引两个方面对现有的外存Skyline查询处理方法进行分类介绍,在每组算法后,都对该组算法进行了性能评价,然后介绍不同子空间上的多Skyline查询处理模型——SKYCUBE的概念和相关研究.另外,还介绍了不同应用环境下解决Skyline查询处理的策略以及Skyline查询处理问题的扩展,最后归结出Skyline查询处理后续研究的几个方向.关键词: Skyline查询;SP;控制关系;多目标优化;SKYCUBE中图法分类号: TP311文献标识码: ASkyline查询[1]也称为Pareto(帕类托,在不损害他方利益的条件下,自身已达最优),在多目标的选取决策中∗ Supported by the National Natural Science Foundation of China under Grant Nos.60673138, 60603046 (国家自然科学基金); theProgram for New Century Excellent Talents in University of China (新世纪优秀人才支持计划); the Program for Excellent Talents inBeijing of China under Grant No.35607025, (北京市优秀人才培养资助项目)Received 2007-07-17; Accepted 2007-09-04魏小娟等:Skyline查询处理1387非常有用.它和Convex Hulls、Top-K查询、Nearest Neighbor查询等都有关系.具体地讲,Skyline查询处理是指从给定的一个D-维空间对象集合S中选择一个子集,该子集中的任意一个点都不能被S中的任意一个其他点所控制.所谓控制关系是指给定一个D-维空间中的多个对象(集合S),如果对象p至少在某一维上优于另一个对象q,而在其他维上都不比对象q差(p优于或等于q),则说p能够控制q.Skyline查询是一个典型的多目标优化的问题[2].对它的研究最早可以追溯到1975年.Kung在文献[3]中针对二维或三维数据提出了一种查询复杂度为O(n log2n)的算法,针对大于三维的数据,提出了查询复杂度为O(n(log2n)d−2)的算法.后来,Bentley在假定各维数据分布独立的情况下,提出了人们期望的线性查询算法[4].所有这些研究都假定数据集比较小,可以放入内存,所提出的算法也都是内存算法.数据库领域的研究人员对Skyline查询的研究始于2001年,最早由Borzsonyi等人提出[1].主要关注在数据量很大、无法放入内存的情况下,如何处理Skyline查询.最近几年,对Skyline查询的研究大体上可以分为4类:1) 单Skyline查询处理算法.该类算法假定所有的Skyline对象都处在某一个特定的D-维空间中,返回的结果集合只有1个.根据查询过程中是否借助索引,单Skyline查询处理算法又分为两类:不带索引算法和带索引算法.前者假定没有任何索引存在,通过扫描整个数据集(至少1次)来返回Skyline查询的结果;后者通过引入适当的索引结构,如R-树,来提高查询处理的效率.2) 多Skyline查询处理算法.针对现实生活中不同的用户可能有不同的兴趣和偏好,需要在不同的子空间中处理Skyline查询的需求,数据仓库和OLAP领域的研究者对在不同子空间上进行Skyline查询的研究产生了浓厚的兴趣,提出了SKYCUBE[5]的概念.SKYCUBE借用传统的Data Cube的多维层次结构,提出了有效的同时计算多个Skyline查询的思想.该类算法主要包含针对SKYCUBE的计算、维护和压缩等.3) 不同应用环境下的Skyline查询处理.主要包括Web信息系统中的Skyline查询处理、P2P网络环境下的Skyline查询处理、数据流环境下的Skyline查询处理、移动的公路网络环境下的Skyline查询处理等.4) Skyline查询处理问题的扩展.例如,文献[6]中首次扩展了空间数据库中不同数据点之间的控制关系的概念,将其用于经济学框架下的商业分析,提出了控制关系分析的概念;文献[7]针对高维空间下出现在Skyline查询结果中的点非常多,从而导致该结果在很多时候对用户失去意义的问题,提出了k-Dominant的概念,等等.可以看出,Skyline的查询处理问题已经引起了国内外研究者的高度重视,近几年,在SIGMOD,VLDB,KDD, PODS,ICDE,ICDM等相关的高水平国际会议上发表了许多高质量的论文,展示出大量的研究成果.在TKDE, TODS等期刊中也发表了大量成果.然而目前,国内和国际上还没有将Skyline查询处理的发展情况、核心技术和研究成果进行整体上的介绍.鉴于Skyline查询处理在多规则决策应用方面的重要价值和在实时在线服务方面的良好应用前景,为了捕捉Skyline查询处理的发展动态,对Skyline查询处理研究有一个总体上的把握,促进国内迅速跟上国际研究的步伐,综述这方面的工作十分有意义.本文在分析国内外相关研究工作的基础上对Skyline查询处理技术进行了综述.本文第1节介绍Skyline 查询处理问题产生的背景、动机和应用场景,并对问题的定义进行具体描述.第2节详述单Skyline的查询处理算法,包括内存处理算法和外存处理算法、带索引和不带索引的处理算法等.第3节具体介绍多Skyline的查询处理算法,包括SKYCUBE的计算、维护和压缩等.第4节介绍不同应用环境下Skyline的查询处理算法.第5节介绍Skyline查询处理问题的扩展.最后总结全文,并展望未来的研究工作.1 Skyline查询处理问题1.1 问题描述Skyline查询问题也称为Pareto最优或极大向量问题.它是指从给定的一个N-维空间的对象集合S中选择一个子集,该子集中的点都不能被S中的任意一个其他点所控制,满足这个条件的点称为SP(skyline point).这里的控制关系是指给定一个N-维空间中的多个对象(对象集S),若存在这样两个对象P=(p1,p2,…,p N)和Q=(q1, q2,…,q N),对象P在所有维上的属性值都不比对象Q差,且至少在一维上的属性值优于对象Q,则称P控制Q.先来看一个经典的例子——饭店的选择入住问题[1].假设某个旅客到Nassau旅游,他/她想找一家价格便宜1388 Journal of Software 软件学报 V ol.19, No.6, June 2008 且距海滨近的饭店入住.图1中的每个小圆点都代表一家饭店,X 轴表示饭店的价格,Y 轴表示饭店到海滨的距离.可以看出,该旅客只需要考虑位于折线上的那些点(饭店)就可以了.不在折线上的点(饭店)根本用不着考虑,因为总是可以在折线上找到一点(饭店),或者价格上更便宜,或者距海滨更近.这时,我们说,折线上的点控制了所有其他不在折线上的点,而折线上的点之间不存在控制关系.所有位于折线上的点构成Skyline 查询的结果集.Fig.1 Skyline of hotels in Nassau (Bahamas)图1 有关Nassau 饭店的Skyline 查询问题Borzsonyi 等人[1]提出用如下的一个SQL 查询来表达一个Skyline 查询:Select *, From Hotels , Skyline of Price min, Distance min其中,min 表示价格和距离两个属性值都取min 值的操作.这里的min 也可以换成其他条件,如max,joins, group-by 等等.1.2 Skyline 查询和Top-K 查询Skyline 查询与Top-K 查询不同,但它们之间又具有一定的相似性.实际上,它们都用于解决传统的多目标优化问题,只是采用的手段不同.解决传统的多目标优化问题通常有3种不同的方法[8].1) 转化成单目标优化的问题(Top-K 查询).主要思想是通过一个单调的加权函数将对象集合S 中每个对象的多个属性进行聚集,得到一个单一值,通常被称为Score 值,然后将所有的对象按照其Score 值进行排序,再选出前K 个最大或最小的对象,即为所要的查询结果.2) Pareto 方法(Skyline 查询).不是将问题转化为单目标优化的问题,而是直接采用多目标优化算法解决原始的多目标问题.多目标优化算法最终返回的结果集是一系列平行的、互不受控制的解(位于Skyline 上的多个SP).这里的“控制”是指一个数据点在每一维上都不比另一点“差”,而且必须至少在一维上比另一点要“好”.其中,“差”和“好”并无统一的定义,根据用户的查询和选择条件的语义而定.3) 词典序方法.即为不同的属性安排不同的优先级,然后按照优先级的高低来选择各个属性进行优化.按照优先级从高到低的顺序依次比较对象相应属性值的大小,若其属性值相同,则继续比较各个对象在下一个优先级上的属性值大小,直到比较出明确的优劣为止.2 单Skyline 查询处理算法2.1 内存处理算法文献[3,4]针对数据量小、可以放入内存时的求最大向量集问题的Skyline 查询提出了解决算法.根据向量间的控制关系的概念[4]:若P 的每个分量都大于等于Q 对应的分量,则称向量P 控制向量Q .这样,若一个向量不被组中的任何其他向量所控制,这个向量就是这个组中的最大向量.针对最大向量问题,Kung 在文献[3]中针对2维或三维数据提出了查询复杂度为O (n log 2n )的算法,针对大于三维的数据,提出了一种查询复杂度为O (n (log 2n )d −2)的算法.后来,Bentley 在假定数据在各维上的属性值独立且无重复的情况下,提出了人们期望的线性时间的查询算法[4].0.50.0D i s t a n c e t o t h e b e a c h (k m ) Price ($)魏小娟等:Skyline查询处理13892.2 外存处理算法这些算法关注的都是在数据量大、无法放入内存的情况下对Skyline查询问题的处理.从带索引和不带索引两个方面对现有的单Skyline查询处理算法进行分类.2.2.1 不带索引的算法:BNL/SFS/D&C/Bitmap/LESSBNL(block-nested-loops)算法[1]:该算法是对待测元组建立临时表T,T由一个个的临时表T i组成,要读取的第1组输入放在临时表T0中.然后在主存中维持一个窗口队列,以收集相互间不存在控制关系的Skyline元组,窗口队列初始化为空.算法开始时,第1个读取的元组自然地被放进窗口队列中.然后,每当从当前临时表队列T i 中读入一个元组p时,就用该元组和窗口队列中已有的所有元组依次进行比较,可能出现以下的3种情况:1) 窗口中存在元组控制元组p:p被删除,以后的迭代中也不再考虑p.2) 窗口中存在元组被元组p控制:从窗口队列中删除被p控制的元组,以后的迭代中也不再考虑这些元组,p插入窗口队列中.3) 元组p和窗口中所有元组都不存在控制关系:若窗口中有足够空间,则将p插入窗口队列中;若空间不够,则将p写入下一个临时队列T i+1中.每当算法扫描到T i队列的末尾时,就有一些Skyline元组被确定了.若T i+1队列为空,则算法终止,此时,所有窗口队列中的元组都是SP;否则,在第1个写入T i+1队列的元组产生前就已写入窗口队列中的元组是SP,其他窗口队列中的元组再进行下一轮的处理,重复这个比较的过程,新的当前处理队列是T i+1队列.每次迭代结束,都输出窗口队列中已和临时表中的所有元组比较过的元组.这些元组既不受控于其他元组,也不会控制还在考虑中的任何元组.其他的元组若在下一次迭代过程中没有被删除,则被输出.易知,一个元组越早被插入到窗口队列中,在下一次迭代中就越可能早地被输出.为了跟踪一个窗口队列中可能被输出的元组,算法为每个窗口队列中的元组和写入临时文件中的元组都设置了一个时间戳.这个时间戳实际上就是一个记录元组顺序的计数器,因此,若从临时文件中读入的元组的时间戳是t,则可输出窗口队列中所有时间戳小于t的元组.算法利用时间戳保证了不会出现两个元组重复比较的现象和算法能够有效地及时终止的条件.该算法的改进思想是将窗口队列变成一个能自动组织队列,替换窗口中的元组,替换策略是保证窗口队列中的元组尽可能控制更多的元组.SFS(sort-filter-skyline)算法[9]:该算法是在BNL算法的基础上对数据集进行了预排序.BNL算法的I/O开销依赖于迭代的次数和每次迭代要处理的数据集的大小.因为内存中窗口大小有限,不一定能装下所有的SP,所以对要处理的元组先排序,过滤掉一些受控元组,因此,便有了SFS算法.SFS算法的思想是,对临时表中的元组按照SP的选取规则先做一个拓扑排序,然后用BNL算法处理这些元组.故一旦有一个临时表T i中的元组被加入窗口中,它就一定是SP了.因为T i有序,所以它后面的元组不可能控制它,这样就不需要做替换的检查,减少了开销.D&C(divide-and-conquer)算法[1]:该算法将数据集划分为几部分,使得每部分都可以放入内存,然后使用内存算法分别计算每一部分的SP,最后通过合并每部分的SP去除其中受控的数据点来得到最终的SP集.该算法的具体流程是:1) 计算输入的点在某维d p上的中值(这里的中值可以指精确中值,也可以指模糊中值)m p,并按这个中值把输入的点集划分为两部分P1,P2.其中,P1集合包含所有在d p上的属性值优于m p的元组,P2集合包含其他剩余的元组.2) 分别计算P1的SP集合S1和P2中的SP集合S2.计算时,P1和P2不断地迭代划分,直到每个部分只包含一个或没有元组为止.3) 通过合并全部的集合S1和S2,得到最终的SP集合.具体地说,就是删去S2中被S1中的元组控制的元组.该算法最具挑战性的一步是第3步.如图2所示,该步的思想是用另一个维度d g(d g≠d p)上的中值进一步划分S1和S2集合.结果我们得到了4个部分:S1,1,S1,2,S2,1,S2,2.S1,i在d p上优于S2,i,S i,1在d g上优于S i,2(i=1,2).现在,我们只需合并S1,1和S2,1,S1,1和S2,2,S1,2和S2,2.这一步的先进性在于我们无须合并S1,2和S2,1,因为这两个集合中的元组是一定不会存在控制关系的.递归地调用归并函数来实现对S1,1和S2,1以及其他每两部分之间的合并,也1390 Journal of Software 软件学报 V ol.19, No.6, June 2008 就是说,S 1,1和S 2,1又被划分了.归并函数的迭代终止条件是所有的维都被考虑过了,或者有一个划分为空或只包含1个元组.Fig.2 Basic merge图2 基本合并算法的改进:(1) 划分的界限不一定必须是中值;(2) 将2-路划分改进为m -路划分;(3) 第3步的最初划分中的归并函数可以用一个Bushy-路归并.Bitmap 算法[10]:该算法是采用位图结构来判断一个点是否是SP,算法满足渐进性,无须遍历整个数据集,找到一个SP 便可以及时返回,因为按位操作计算速度很快,故可以很快地判断出一个点是否是SP.下面是对这一算法的描述及一些定义的说明:(1) 待测数据集为D ,包含的都是d 维空间的点;(2) 在第i 维上有k i 个不同的属性值(1≤i ≤d );(3) p ij 代表第i 维上的第j 个不同的属性值,不失一般性,不妨设p i 1>p i 2>…>i ik p ,所有维上属性值的范围都映射到[0…1];(4) 本算法考虑取大操作为优(MAX).算法基于的规则:一个点x =(x 1,x 2,…,x d )用一个m 位的向量表示,其中,x i 用k i 位表示,则m 为所有k i 的总和,即为点x 在所有维上不同属性值的个数之和,每位依次为p i 1,p i 2,…,如果x i 是i 维上的第p iq 个不同属性值,则x i 的k i 个位上的值分别为:第1位到第q −1位设置为0,第q 位到第k i 位设置为1.这样就把每个数据点转换为了相应的点阵结构.设BS ij 代表位片在第i 维上的第j 个不同的属性值.根据以下规则来判断一个点x =(x 1,x 2,…,x d )是否是SP: 让1212&&...&d q q dq A BS BS BS =,则当且仅当第n 个点在所有维上的属性值都优于(或等于)其他点x 在相应维上的属性值时,A 的第n 位置为1;让1211211&&...&d q q dq B BS BS BS −−−=,则当且仅当第n 个点在某些维上的属性值优于其他点x 在相应维上的属性值时,B 的第n 位置为1;让C =A &B , 则易得出:当且仅当第n 个点在每一维上的属性值都优于(或等于)其他点x 在相应维上的属性值,且在某些维上的属性值优于其他点x 在相应维上的属性值时(满足SP 的定义),C 的第n 位置为1.这样,无须遍历整个数据集,算法就能判断出一个点是否是SP,从而提前返回查询结果.LESS(linear elimination sort for skyline)算法[11]:该算法结合了SFS,BNL 和FLET 算法的某些方面,是SFS 算法的改进算法.它与SFS 算法最大的两个不同之处在于:1) 在第0步时,LESS 算法加入了一个消除过滤窗口(简记为EF 窗口)来对待测数据集先做一个外部排序,进而提前删除了一些不可能是SP 的待测数据;d pm m魏小娟等:Skyline查询处理13912) LESS算法结合了1)中的外部排序和SFS算法中第1步的过滤SP.值得一提的是,在LESS算法中,若EF窗口有剩余空间,就将输入记录的副本放进去;否则,若EF窗口已满并且有比输入记录熵值还小的记录,就把这个记录写入窗口,替换原窗口中的记录.除此之外,保持EF窗口不变.这样做,可以保证更有效地严格筛选.对于不带索引的多种算法的性能评价小结:BNL算法具有广泛的适用性,适用于任何维的数据,不满足渐进性,会出现误诊现象(把非SP在中间计算中误诊为SP的现象).SFS算法需要预处理过程(排序),可有效剪枝,加速计算,输出无阻塞,流水线式输出;D&C算法适用于数据集小的情况,数据集大时,划分过程I/O开销大,不满足渐进性,会出现误诊现象;Bitmap算法,需要预处理过程(创建bitmap),满足渐进性,响应时间短,不适于动态数据库和不同的查询条件;LESS算法,平均时间复杂度为O(kn),最好的时间复杂度为O(kn),最坏的时间复杂度为O(kn2).2.2.2 带索引的算法:Using B-trees/Using an R-tree/Index/NN/BBS/BBS+/SDC/SDC+Using B-trees算法[1]:该算法的基本思想是,对于二维空间上的Skyline查询问题,用B-tree对所有元组建立一个有序的索引,然后扫描整个索引,得到按序排列的元组.这样,仅仅需要比较一个元组和它的前驱元组中最近的是SP的前驱元组,即可判断出该元组是否是SP,从而先过滤出一些SP.基于这些元组在各个维上的索引排序,同时按序扫描两个维上的元组而不用扫描全部索引,就可以得到第1个SP.然后作出以下判断:1) 按索引序在这两个维上的属性值都在已找出的SP之后的元组一定受控于这个SP,因此一定不是SP;2) 其他的元组可能是SP,也可能不是SP.不过,该算法适用范围很有限,仅在数据集小、第1个匹配的SP很快能找到的情况下效率才会高.若在一个执行了join或group-by操作的结果集上进行Skyline查询,该算法就不适用了.Using an R-tree算法[1]:该算法的基本思想是,对于任意空间上的Skyline查询问题,用R-tree对所有元组建立一个有序的索引,然后深度优先遍历R-tree,每当遇到一个新的元组时就进行剪枝.可以采用最近邻居搜索的策略来分支定界提高算法效率.文献[1]还提出了在将来的工作中,可以探究不同的启发式规则来对R-tree先进行选枝,再做进一步的深度优先遍历.该算法仅适用于R-tree记录了Skyline查询语句中的所有维度上的属性信息的情况.当然,R-tree还可包含其他属性信息.像Using B-trees算法一样,仅当数据集小时,该算法具有优越性,一旦存在谓词判定,或针对高维空间下的Skyline查询问题,该算法性能则会变得很差.若在一个执行了join或group-by操作的结果集上进行Skyline查询,则该算法也不再适用.Index算法(a B+-tree-based algorithm)[10]:该索引方案采取的是将高维数据转换为一维数据处理的方式,然后对转换后的数据建立一个B+树索引.设待处理集为(x1,x2,…,x d),x max代表数据点在d-维空间中的最大属性值,这个属性值所在的维度记为d max,相应地,转换后的数据y=x max+d max.该算法的基本思想是,将各个维上的属性值按降序排列,基于各个维上的排序,同时按序扫描各维上的元组很容易得到第1个匹配的SP.第1个SP一定在某个维度上拥有最大的属性值,所以,在找第1个SP时,只要找那些在某维上的属性值为最大的点即可.而在各维上都排在已找出的SP之后的点,一定受控于那个SP,因此可以直接删除这样的点,节省I/O开销.NN(nearest neighbor)算法[12]:该算法的基本思想是利用搜索到的最近邻居来递归地划分数据空间.先对待测数据集建立一个R-tree索引,再找到距离当前枢轴点P最近的邻居节点I,然后根据点I进行空间划分,设现在进行的是d-维空间上的查询,点I的坐标是(n1,n2,…,n d),则空间被划分为[0,n1],[0,∞],[0,∞],…和[0,∞],[0,n2],…,[0,∞]和…和[0,∞],[0,∞],…,[0,n d],在找到一个SP后,这些划分空间放入到一个To-do list中,当To-do list非空时,就用NN算法从To-do list中拿出一个划分空间继续迭代划分.直到一个划分空间为空时,它就不再被划分,每个新找到的SP都会递归地调用d次NN算法.这里存在一个问题,当搜索空间维数大于二维时,会出现重复划分某些空间的问题.文献[12]提出了几种消除重复划分的方法:Laisser-faire,Propagate,Merge,Fine- grained partitioning.这里就不再一一介绍.1392 Journal of Software软件学报 V ol.19, No.6, June 2008BBS(branch-and-bound skyline)算法[13]:该算法也是基于最近邻居搜索策略.算法用R-Tree对待搜索数据集建立索引,每个上层的节点e i对应下层的一个最小边界矩形(MBR),叶子节点则对应一个数据点,规定每个点的最小距离(mindist)等于它在各维上属性值的坐标之和,一个MBR的mindist等于这个矩形的左下角的点在各维上属性值的坐标之和.算法从R-Tree的根节点入手,将其中所有的数据点根据它们的mindist序插入到一个堆中.然后从有着最小的mindist的点入手,对它进行扩展.即从堆中拿出这个点,把它的孩子节点插入到堆中(堆中仍然按mindist有序),以后仍然是选出堆中拥有最小的mindist的节点进行扩展.迭代就这样进行下去.当堆中被拿出的节点是叶子节点时,它就是找到的SP.在扩展节点时,要注意堆中相邻的两个节点是最近邻居关系,但即使是这样,前一个节点的mindist比后一个节点的mindist要小,也不能说明后一个节点被前一个节点控制而对后一个节点剪枝不再扩展,因为若后一个节点是一个非叶子节点,它的孩子节点中就有可能含有SP,只有被已找出的SP控制的孩子节点才能被剪枝不再继续扩展.算法终止的条件是堆为空.BBS+算法[14]:该算法是对BBS算法上的直接改进算法,改进算法与原算法的差别在于:1) BBS+算法中的R-Tree索引是建立在部分有序的属性值的转换值域∗之上的索引,因此,BBS算法中控制关系的比较在BBS+算法中变成了m-控制关系的比较;2) 因为BBS+算法计算的中间查询结果集可能会出现误诊现象,所以,BBS+算法中的UpdateSkylines()函数需要检测和去除误诊结果(即要比较每一个新找到的SP和已找出的中间SP集).SDC(stratification by dominance classification)算法[14]:文献[14]针对属性域部分有序的Skyline查询问题提出了一个基于控制关系分类的分层算法.该算法也是采用基于属性值的转换值域上的一个分层策略.为避免对不必要的控制关系的检查,通过探索域变换的特点,该算法把运行的中间结果集分成了两层:一层一定是Skyline 查询结果的点集;另一层是可能被误诊为Skyline查询结果的点集.具体做法是,对每一个由控制变换f i得到的部分有序的属性A i,由它的部分有序DAG G i=(D i,E i)得到一棵生成树ST i,这样,每一个D i中的点都有它的入度值和出度值.对于每个D i中的点v,若它在G i中的直接入径也在ST i中,则称它是完全被覆盖的;否则,称v部分被覆盖.类似地,每个D i中的点v,若它在G i中的直接出径也在ST i中,则称它是完全覆盖的;否则,称v为部分覆盖.在算法中找到的新的SP,若满足这里的完全覆盖关系,则属于第1层结果集,直接可以作为最终SP结果返回;若满足部分覆盖关系,则属于第2层结果集,还需要进一步比较以去除可能存在的误诊SP.然后,算法根据分类的控制关系,通过3个模块——①缩小控制比较,②优化控制比较,③有效计算,把计算的Skyline中间结果集分为4个子集,避免不必要的中间结果的比较和检查,以得到最终的SP集.SDC+算法[14]:这种算法比SDC算法表现出的先进性在于:在SDC算法中,Skyline的中间结果集被分为两层——一层是完全覆盖关系的中间SP集,另一层是部分覆盖关系的中间SP集,从而保证了前一个集合中出现的Skyline中间查询结果一定是最终的SP,而后一个则是可能被误诊的SP.这样虽然避免了BBS+算法中对每一个新找到的SP都需和已找到的SP集进行比较的开销,但是若找到的SP是第2层的中间SP,则仍需大量的比较和检测.而实验证明,前一层的中间结果点集只占很少的一部分,因此,SDC+算法提出的改进方案是将数据划分为更多层的策略.这种算法中,数据被划分为了两个以上的层,第i层的点都一定不能控制第i−1层的点.这样,找到第i−1层中的SP集后,无须检查第i层中的点的情况,这些查询结果就可以被返回了.算法的先进性表现在保证了只需层内比较,层间不会出现SP的误诊情况.对于待索引的多种算法的性能评价小结:Using B-trees算法适用于二维空间,但不具有普遍的适用性,需要一个预处理过程(为查询建立索引);Using an R-tree算法适用于高于二维的空间,但同样也不具有普遍的适用性,需要预处理过程(为查询建立索引);Index 算法需预处理过程(建索引),响应时间快,满足渐进性,但不适于不同查询条件和不同维的子空间查询;NN算法∗用一个域转换函数来完成属性值转换工作:将部分有序的属性进行转换.为了避免维数诅咒现象(即Skyline查询结果的数量随着维数的增加呈指数增长),文献并没有采用常用的从部分域到全域的变化方法,即将部分有序的属性值转换为布尔值来表示其之间的控制关系,而是构造一个同构变换f:对域D i上每个部分有序的属性值A i,构造一个一对一的域变化f i,它把每个v∈D i变换成一个间隔f i(v)∈N×N,其中,N代表自然数.这个域变化函数f i是这样定义的:对于任意两个不同的v,v′∈D i,若f i(v)包含f i(v′),则v控制v′.。

相关文档
最新文档