一种面向多维数据管理的云计算平台查询处理方法
技术领域
本发明属于数据库领域,特别涉及一种云计算平台查询处理方法设计,具体涉及一种面向多维数据管理的云计算平台查询处理方法设计。
背景技术
伴随着计算机和互联网技术的迅速发展,云计算作为一种新的计算平台获得了越来越多的关注。云计算是对分布式处理、并行处理和网格计算的改进处理。一个云计算平台由大量存储数据对象和执行计算任务的机器节点组成。图1给出了一个传统的云计算平台的基本结构。图1中机器节点分为主节点和从属节点两类。主节点通常存储整个平台的元数据信息,从属节点主要负责管理数据对象和处理查询。在一个云计算平台中,用户首先将查询发送到主节点,然后主节点检索并将查询发送到与查询相关的从属节点,进而这些与查询相关的从属节点以并行方式执行查询任务,最后将结果返回给用户。
现存的云计算平台主要存在两方面的问题。一是大多数云计算平台都是基于分布式文件系统结构管理以关键字和值的形式存储的数据信息,所以仅能支持关键字查询并不能有效地处理复杂查询。二是大多数云计算平台缺少有效的索引结构用于管理数据对象。为了简化执行过程,目前采用顺序扫描整个数据集的方式来处理查询。虽然在给定足够多的处理节点的情况下,顺序扫描策略也能够达到较好的性能,但这样简单的策略一般都是为单一组织应用于某种特殊的专用平台设计的。例如,Google公司所采用的Map-Reduce方法计算网页的网页级别。在这样的云计算平台中,节点都是为一个组织服务的。而在像亚马逊公司的弹性计算云(EC2)这样的开放式云计算平台中,不同的用户在相同的云计算平台中配置自身的软件产品,共享处理节点,这就使得数据管理变得更加困难。因此,设计一种面向多维数据管理的云计算平台,并且在该平台上处理复杂查询对提高云计算平台性能来说是非常必要的。
发明内容
为了解决现有云计算平台的不足,本发明提供一种面向多维数据管理的云计算平台查询处理方法,能够有效地管理多维数据对象和处理复杂查询。
本发明采用的技术方案是:设计并实现了一种有效的基于四叉树的面向多维数据管理的云计算平台查询处理方法(Quad-TS)。首先,在预处理阶段,提出改进的基于密度的聚类算法(IDBC)将所有从属节点划分成多个簇,使得在相同簇中的从属节点存储相似的信息。这个聚类算法有效地利用了多维数据对象的密度特征,达到了很好的聚类效果。其次,每个簇中的从属节点被组织到一个基于内容寻址覆盖网络(CAN)中。通过有效地将基于CAN的路由协议和基于四叉树的索引结构结合,提出了一种能够处理复杂查询的两层多维索引结构。第一层是主节点层,用于存储整个平台的全局索引,第二层是从属节点层,用于存储数据对象和处理查询。每个从属节点簇中都构建存储自身多维数据对象的本地四叉树索引,然后将此结构分布到一个CAN覆盖网络中。
本发明的步骤如下:
步骤1构建一个云计算平台,该平台由主节点和若干从属节点组成,主节点用于发送查询,从属节点用于存储多维数据对象、接收查询并将查询结果返回给用户。
平台中的节点分为两类:主节点和从属节点。主节点负责存储全局索引和不断发送查询请求,从属节点用于存储多维数据对象和处理查询请求,当从属节点完成一个查询请求后,从主节点接收一个新的查询请求,主节点和从属节点间由互联网连接。
步骤2采用IDBC算法将所有从属节点划分成多个簇,使得在相同簇中的从属节点含有相似的数据对象,以便有效地处理查询。
传统的分布式聚类算法要求被聚类的数据对象要分布在不同的站点上。在云计算平台中,数据对象由大量从属节点存储,所以分布式聚类算法适用于云计算平台。基于密度的分布式聚类算法(DBDC)是典型的基于密度的聚类算法,尤其适用于处理多维数据对象。在每个从属节点上,DBDC采用基于密度聚类算法(DBSCAN)获得核心对象集合。本发明提出的IDBC算法是对DBDC算法的改进。
DBDC算法有以下不足之处:
(1)由于缺少全局聚类结果导致本地噪音点被忽略。
(2)特殊核心点的选择依赖于DBSCAN算法。
(3)特殊核心点可能落在聚类簇的边缘。
为了解决DBDC算法存在的上述问题,本发明提出了改进的基于密度的聚类算法(IDBC)。下面首先给出一些相关概念。如果一个数据对象的邻域包含最小数目的数据对象,那么该数据对象就是一个核心聚类点(CC-point)。定义1和2与DBDC算法相似,定义3给出了数据对象p到数据对象m的直接密度长度,定义4描述了选择CC-points的原则。DBDC算法运用特殊核心点描述聚类特征,故其会存在忽略噪音点和特殊核心点位于聚类边缘的问题。我们的IDBC算法通过最大密度可达长度选择CC-points,使得维护代价远小于DBDC算法,并且能够有效地提高聚类的准确性和有效性。
定义1设C是对数据集D使用DBSCAN算法进行聚类生成的聚簇,则用core来表示属于C的核心点,称满足下列条件的核心点集为聚簇C的完全特殊核心点集score:
(1)特殊核心点集包含于核心点集。
(2)任意两个核心点,其中一个不在另外一个的邻域内。
(3)任意一个核心点,完全特殊核心点集中必定有一个能代表它的特殊核心点。
定义2给定数据对象集合O,称满足下列条件的数据对象p从数据对象m出发是直接密度可达的:
(1)p在m的邻域内;
(2)p是一个核心点;
定义3如果存在一个对象链o1,o2,...,on,o1为数据对象m,on为数据对象p,对于数据对象oi∈O(1≤i≤n),若数据对象oi+1是从oi关于r和最小数目数据对象直接密度可达的,则数据对象p是从数据对象m在数据对象集合O内密度可达;n称为p到m的密度可达长度。
定义4将邻域r内所有密度可达的数据对象按照密度可达长度降序排列,邻域r的核心聚类点为具有最大密度可达长度的数据对象。
下面给出IDBC算法的具体步骤。
步骤2-1局部聚类
在局部聚类阶段,每个从属节点Si对其数据集合Di进行分类,形成多个局部聚类。每个局部聚类Ci运用DBSCAN算法选择由定义4给出的能够反映数据分布特征的核心聚类点(CC-points)。局部聚类阶段后,每个局部聚类Ci将自身的CC-points集合发送到主节点进行全局聚类。
步骤2-2全局聚类
在全局聚类阶段,主节点在接收到所有局部聚类的CC-points后,使得每个局部聚类都由一些CC-points表示,主节点运用K-means算法产生全局聚类模型,并将聚类结果发送给从属节点集合形成多个从属节点簇。
步骤2-3聚类结果更新
在聚类结果更新阶段,将步骤2-2中的全局聚类结果发送给各个局部聚类,进行聚类结果的更新,以便从属节点将所有数据点都划分到全局聚类中。
步骤3为每个从属节点簇构建基于四叉树的多维索引,并将其组织在一个CAN覆盖网络中,以便能够有效地接收并处理查询。
步骤3-1构建主节点层索引
索引技术在多维数据管理和复杂查询处理中都起到重要作用,因此设计一种有效的索引结构是提高查询处理性能的基础。在Quad-TS中,本发明设计一种有效的多维索引结构用于管理多维数据对象和提高查询处理性能。索引结构由两层构成,一是主节点层,二是从属节点层。主节点层索引负责存储全局聚类结果的全局索引,并向从属节点簇发出查询请求。每个从属节点簇存储其自身的局部聚类索引,完成存储数据对象和处理查询的任务。我们采用改进的MX-CIF四叉树结构索引从属节点簇中的数据对象,并将此四叉树结构分布到一个CAN覆盖网络中。
步骤3-2构建从属节点层索引
步骤3-2-1构建基于四叉树的多维索引
查询处理从四叉树的根节点开始,通过判断数据对象和查询的交叉区域将查询沿着四叉树的某些分支继续进行查询。在从属节点簇中,如果所有的查询处理都从四叉树的根节点开始会导致根节点失效。因此,提出最小划分层次dmin和最大划分层次dmax的概念。dmin表示数据对象仅能存储在l≥dmin层次,即在0<l<dmin层次并不存储数据对象。
四叉树的每个分块由其几何中心唯一标识,称为控制点。以下过程表示确定与某个数据对象相交的控制点集合。
(1)如果控制点m所在四叉树的层次为dmin,则
(2)将m加入到控制点集合中
(3)否则
(4)依次判断控制点m的四个子节点
(5)如果某个子节点范围与数据对象范围相交,则
(6)返回(1),继续循环划分
步骤3-2-2将四叉树索引结构分布到一个CAN覆盖网络中
在一个从属节点簇中,从属节点被组织到一个CAN覆盖网络中。一个四叉树空间与一个从属节点相连接,从属节点负责与该区域相交的所有查询请求,并存储与该区域相关的所有数据对象。在运用上述四叉树结构索引多维数据后,从属节点能够按照CAN路由协议处理查询,问题转化成如何将空间数据对象匹配到一个CAN覆盖网络中。四叉树每个分块都由其控制点唯一表示,这些控制点运用CAN方法进行匹配,进而使得一个四叉树块与一个从属节点匹配,控制点可由全局已知的划分过程确定。多个数据对象能够存储到一个控制点中,同时多个数据对象也可以存储在相同的控制点上。
步骤4进行查询处理。
步骤4-1点查询处理
点查询定义为Q(point),这里point=(v1,...,vd),表示一个d维数据点。当用户发起一个点查询时,查询首先被发送到主节点。主节点存储了所有从属节点簇的信息,所以主节点首先确定哪些从属节点簇含有查询结果,然后将查询发送到相应的从属节点簇中。当从属节点簇接收到点查询请求时,运用步骤3-2-1中所述的确定控制点集合的方法确定点查询的关键字集合,然后运用CAN的路由方式确定最终点查询的结果,并将结果返回给用户。
步骤4-2范围查询处理
范围查询定义为Q(range),这里range=([l1,u1],...,[ld,ud])表示一个多维超立方体结构,每个超立方体结构的几何中心为其控制点,以二维空间为例,R(n)=(x1,y1,x2,y2)表示控制点是n=((x1+x2)/2,(y1+y2)/2)的一个四叉树区域。用户发起的范围查询首先被发送到主节点,主节点确定与此范围查询相交的从属节点簇,然后在这些从属节点簇中,运用步骤3-2-1的方法确定控制点集合,对于控制点集合中的所有控制点,以并行的方式通过四叉树索引结构处理复杂查询,并最终将结果返回给用户。
附图说明
图1传统云计算平台基本结构,
图2本发明云计算平台基本结构示意图,
图3本发明云计算平台工作流程图,
图4本发明提出的改进的基于密度聚类算法(IDBC)执行过程示意图,
图5本发明基于四叉树的索引结构划分示意图,
图6本发明将多维索引结构匹配到CAN覆盖网络示意图,
图7(a)本发明实施例的一致性分布数据集下点查询时间代价曲线图,
图7(b)本发明实施例的倾斜分布数据集下点查询时间代价曲线图,
图8(a)本发明实施例的一致性分布数据集下点查询平均消息数量曲线图,
图8(b)本发明实施例的倾斜分布数据集下点查询平均消息数量曲线图,
图9(a)本发明实施例的一致性分布数据集下范围查询时间代价曲线图,
图9(b)本发明实施例的倾斜分布数据集下范围查询时间代价曲线图,
图10(a)本发明实施例的一致性分布数据集下范围查询平均消息数量曲线图,
图10(b)本发明实施例的倾斜分布数据集下范围查询平均消息数量曲线图,
图11本发明实施例的维度变化效果表述图,
图12本发明实施例的平均查询消息数量随dmin变化情况表述图。
具体实施方式
结合附图对本发明做进一步描述:
为了测试本发明云计算平台查询处理方法性能,作为本发明的一个实例,我们构造了一个小型云计算平台。这个平台由10台计算机互相连接构成,每台机器的硬件配置均为2.00GHZ双核CPU,4.00GB内存和250G硬盘;软件配置为ubuntu 8.04虚拟机,安装JAVA1.6或更高版本。在这个云计算平台中搭建Hadoop集群环境,其中2台机器作为主节点,其余8台机器运用虚拟机技术提供128个虚拟从属节点,其中每台机器模拟16个从属节点,每次有32个虚拟从属节点加入到该云计算平台中。通过基于密度的聚类算法,虚拟从属节点划分成多个从属节点簇,主节点控制所有从属节点的行为并不断发起查询,当完成现有查询后从属节点簇从主节点接收新的查询处理任务。
为了测试此小型云计算平台性能,本发明采用一致性分布和倾斜分布两种数据集。在一致性分布数据集中,每个从属节点产生5,000-10,000个具有2到5个属性的多维数据对象。这些多维数据对象遵循一致性分布,所以每个从属节点具有近似数量的数据对象。倾斜分布数据集由分布参数α为0.8的zipf-like分布产生。每个从属节点产生1,000-2,000个多维数据对象,所有从属节点所存储的数据对象构成了全局倾斜分布数据集。
下面集合附图给出本发明的一个实例:
(1)构建一个云计算平台,该平台由主节点和若干从属节点组成,主节点用于发送查询,从属节点用于存储多维数据对象、接收查询并将查询结果返回给用户。
如图2所示,云计算平台中共有10台机器,其中2台作为主节点用于存储整个平台的全局索引和接收用户查询请求,另外8台机器作为从属节点用于存储数据对象和处理查询请求。这8台从属节点运用本发明提出的IDBC算法聚类后形成3个从属节点簇,使得每个从属节点簇中的从属节点存储相似信息的数据对象。
(2)采用IDBC算法将所有从属节点划分成多个簇,使得在相同簇中的从属节点含有相似的数据对象,以便处理查询。
图4所示为本发明提出的IDBC算法的执行过程。图4中将图2所示的云计算平台中的8台从属节点运用本发明提出的IDBC算法进行聚类,形成3个从属节点簇,使得每个从属节点簇中的从属节点存储相似信息的数据对象。
(3)为每个从属节点簇构建基于四叉树的多维索引,并将其组织在一个CAN覆盖网络中,以便能够有效地接收并处理查询。
图5给出了以二维空间为例的四叉树结构。四叉树结构初始表示的是整个数据范围,其中包括所有数据对象。这个最大范围的正方形是四叉树的根,该正方形被分成全等的四个小正方形,这四个全等的小正方形就是根节点的四个孩子,同样的划分过程一直继续直到满足定义5的终止条件时该划分过程结束。
定义5对于一个数据对象o,划分过程终止是当o遇到一个块b满足o覆盖了b的至少2个孩子块或o达到划分过程的最大划分层次。
根据定义5,整个正方形空间划分成多个小的正方形空间,在图5中由虚线矩形表示。例如,数据对象“b”覆盖了块“01”的三个子块,所以这个数据对象不用继续划分。数据对象“a”仅仅覆盖块“00”的一个子块,所以对这个块继续划分直到数据对象“a”覆盖至少两个子块为止。
如图5所示,每个四叉树块有一个二进制编码。在第一次划分过程中,右下角的块获得编码“00”,右上角的块获得编码“01”,左上角的块获得编码“10”,左下角的块获得编码“11”。每次划分块的编码即增加2位,按照上述方式循环进行。图5中由虚线矩形表示的是5个空间数据对象。例如,数据对象b覆盖了块“01”的三个孩子节点,所以数据对象b不需要继续进行划分,而数据对象a仅仅覆盖了块“00”的一个孩子节点,所以数据对象a要继续进行划分,直到a覆盖块“00”的至少两个孩子节点为止。
图6表示图5中四叉树结构通过CAN协议匹配到一个CAN覆盖网络中的结果。在图6中,数据对象插入到云计算平台中是通过将其匹配到四叉树块并将其控制节点哈希到一个CAN覆盖网络中实现,例如,控制节点“0011”被匹配到从属节点S3。
(4)进行查询处理
为了能够更好的测试本发明的性能,我们在该小型云计算平台中将本发明云计算平台查询处理方法与另外两种现有的方法顺序表scan table和带有节点范围的有效的多维索引结构EMINC进行比较。其中,scan table运用Map-Reduce方法扫描从属节点的数据对象,而EMINC则是为主节点构建了R-tree索引,为每个从属节点构建了KD-tree索引,R-tree的每个叶子包含一个从属节点范围和一个或多个指向从属节点的指针。本发明主要从四个方面对上述三种方法进行了测试,下面分别进行说明:
●点查询性能
图7表示点查询的时间代价,当从属节点数量增加时,点查询的时间代价几乎呈线性增长,Quad-TS的性能优于scan table和EMINC。图7(a)中Quad-TS略优于EMINC,而图7(b)中远优于EMINC,原因是Quad-TS采用了一种有效的基于密度的聚类算法将所有从属节点聚类成多个从属节点簇,而EMINC选择平台中所有从属节点作为查询候选集合,例如在从属节点数量为32的倾斜分布数据集下,Quad-TS的时间代价仅为EMINC的32%。在一致性分布数据集中,聚类结果对数据对象影响不大,故Quad-TS性能仅略优于EMINC。Scan table在每个从属节点用Map-Reduce函数处理查询,故其时间代价高于Quad-TS和EMINC。图8表示点查询的平均消息数量,从中我们得到了与图7类似的结论。
●范围查询性能
图9表示两种数据集的范围查询时间代价变化情况,随着从属节点数量增加,范围查询的时间代价也增加,Quad-TS的性能要优于scan table和EMINC。在EMINC的相关节点定位阶段尽管为每个从属节点构建一个范围,但是由于其并未存储每个从属节点的数据对象分布信息,故其选择平台中所有从属节点作为候选节点。Quad-TS中,在将从属节点划分成多个簇之后,每个簇中采用一种基于四叉树的多维索引结构将多维范围查询转换成控制点表示,所以其性能优于EMINC,例如当从属节点数量为32的一致性分布数据集中,其时间代价仅为EMINC的24%。图10表示点查询的平均消息数量,从中我们得到了与图9类似的结论。
●数据对象维度变化影响
Quad-TS是管理多维数据对象的云计算平台,图11表示在一致性分布数据集中,数据对象维度变化对平台性能的影响,从图中可以看出,随着维度增加平均消息数量减少,原因是维度增加,范围查询覆盖的索引项更多。
●改变dmin影响
本发明中我们改变最小划分层次dmin来测试Quad-TS的性能。从图12中看出,随着dmin增加,平均消息数量增加。造成这种现象的原因是由于每个查询初始dmin层次的消息数量增加和分布式四叉树的过滤能力下降,使得其更倾向于成为一个规则的网格结构。