区间树及查询过程可视化方法与流程

文档序号:14990604发布日期:2018-07-20 22:08阅读:1031来源:国知局

本发明是数据库领域,用于实现在可扩充移动对象数据库secondo中区间树以及查询过程的可视化。

二、

背景技术:

随着应用发展,数据存储对象的数据变得越来越复杂而且庞大,如交通流量监控这些应用。在这些应用中,数据的产生非常的快速,很容易即可产生pb级的数据。面对如此庞大的数据,如何进行很好的存储和查询是我们能不能高效的利用这些数据的至关重要的一部分。而在此过程中,一个可视化的方法对于直观的理解有着非常重要的帮助。

在时空数据库中,区间树用来有效的组织表示为轴平行线段的区间,每个区间包含一个开始和结束端点。当有大量的各不相同的区间,就需要构造一颗区间树,以便进行高效的存储和查询。对于区间树的构造使用的方法是:首先找到所有区间的中间点,然后所有与这个中间点相交的区间放在一个节点,剩下的在中间点左侧和右侧的区间再重复上述步骤;每个节点仅存放与中间点相交的区间,左边的区间就是其左孩子,右边的区间就是其右孩子。这种方法构造出的树形结构当节点非常多时它的高度值就非常大,同时也非常的复杂,为了可以方便的查看区间树,就需要一种可视化的方法将区间树形状显示出来,同时可以做到查询给定的一个点被哪些区间覆盖的top-k个区间,同时将查询经过的结点可视化。

三、

技术实现要素:

【发明目的】

为了图形化显示大规模数据的区间树结构及数据分布,以及图形化显示查询过程来帮助分析查询算法过程及其正确性,本发明实现了在可扩充移动对象数据库secondo中提供包含区间树可视化、覆盖区间top-k查询过程可视化,直观显示区间树及其查询过程的方法。

【技术方案】

本发明所述的区间树及查询过程可视化方法是分别实现的,区间树可视化是将已经建好的区间树在可扩充移动对象数据库secondo中通过gui显示出来;覆盖区间top-k查询可视化是对区间树查询出覆盖点的前k个权值最大的区间,并将查询经过的结点显示出来。主要步骤如下:

(1)区间生成和建树;

本发明考虑给定数据空间情况,为了实验需要,需提前生成数据区间。区间是系统自动生成的,但需给定一些区间参数:1)区间最小值和最大值,这个是为了限定区间值可控,在本发明中,我们规定的是区间最小值是1,最大值是100000;2)区间最大长度和区间权值,最大长度是用来规定每一个区间的最大长度,本发明中规定区间最大长度为1000;3)区间数量,本实验中规定的区间数量是2000000。以上值仅是为了实验需要,可以根据实验情况随时调整。然后根据生成的区间,建立一颗区间树,并保持树的平衡。

(2)区间树可视化;

对于已经生成的区间树,根据其树状结构将其在可扩充移动对象数据库secondo中的gui界面进行显示。对于一颗树,可视化的基本方案就是将其用点和线画出来:遍历区间树,将其每一个结点就映射为gui中的一个点,点的横坐标是所在结点的中间值x,纵坐标是结点的高度h;结点如果有左孩子或者右孩子,就将结点和它的左孩子(右孩子)之间连一条线,线的端点就是跟结点以及孩子结点。以此为方案可视化一棵树。

(3)top-k查询可视化;

对于已经给定的区间,当任意给一个值,查找覆盖了这个值的权值最大的k个区间。我们根据已经建好的区间树进行查找,首先从跟结点开始,将当前结点映射成坐标保存,将跟结点的区间中间值x和给定值value进行比较,如果x小于value,则先将当前结点中的所有区间和value值进行比较,如果覆盖了当前区间值则进行记录,遍历完当前结点的所有区间后转向其左孩子;如果x大于value,则重复上述步骤并转向右孩子;如果x和value值相等,则仅比较当前结点即可。最终返回查找到的前k个区间的编号,并且gui界面可以根据坐标显示出从跟结点开始所查找经过的结点。

【有益效果】

本发明所述的区间树及查询过程可视化方法通过可扩充移动对象数据库secondo的gui界面,将区间树的形状结构可视化的展现出来,效果图如图1所示;同时当我们在对区间覆盖值进行top-k查询时,不仅只是得到想要的区间值,还可以可视化其查询过程,即将其从跟结点开始遍历的结点标志出来,如图6所示。

四、附图说明

图1区间树可视化实验效果图

图2区间构造示意图

图3区间分割示意图

图4区间树构造示意图

图5区间树可视化示意图

图6top-k查询可视化示意图

五、具体实施方式

下面结合附图对本发明进一步说明。

本发明所述的区间树及查询过程可视化方法目的是将已构造好的区间树在secondo的gui界面进行可视化的展示,同时可以做到在进行给定值查找覆盖其区间时可以将其查询过程显示出来,这样就可以更方便使用者直观的了解大规模数据的区间树结构及数据分布,并且可以帮助分析查询算法过程及其正确性。主要步骤如下:

(1)区间生成和建树;

本发明需要构造一系列符合要求的区间,并将构造的区间保存到可扩充数据库系统secondo中,为了实验的方便,我们设定区间的一些基本参数,参数的种类及含义已经在之前进行了详细的介绍。在我们构造区间的过程中,当出现随机构造出的区间的最大值大于区间规定的最大值或者区间最小值小于区间规定的最小值时就要进行取舍。如图2所示,当值超出或者不足时,我们直接以规定的最大最小值作为其端点值。

区间树的构建如图3所示,图3是生成的一系列区间,首先我们找出所有区间的中间值x,第一次时生成的就是跟结点,其中存放的是与x值相交的所有区间;下面在x值左边的区间以及在右边的区间,再分别重复上述步骤,并且左边的区间所生成的结点就作为当前结点的左子树,右边的就作为右子树,以此构造出一颗区间树。

在建树过程中,有可能会遇到区间同时和多个x值相交的情况,在这种情况下,我们是将区间放入上层结点,如图4中的o1区间。

(2)区间树可视化;

对于一颗给定的区间树,如何将其进行可视化是本发明的重点之一。在secondo的gui界面中,我们已经实现了点和线的可视化显示,因此对区间树的可视化的主要思想就是将其结点映射成点和线,然后进行显示,区间树的每一个结点就作为一个点,每一个结点的和孩子之间连一条线。其主要步骤如下:

1.从根结点开始由上至下遍历区间树;

2.对于访问的结点,构造其对应的点的坐标,结点的区间中间值x作为横坐标,结点的高度h作为纵坐标;

3.如果当前结点有左孩子或者右孩子,则将结点和其孩子之间连一条线。

从跟结点开始遍历整棵树,如图5所示,取出当前结点中间值x和高度h,生成点pointp(x,h);如果当前结点有左孩子或者右孩子,则继续分别遍历其左孩子和右孩子,同时当前结点和其孩子之间生成一根线linelp(p,p1)。一直重复上述过程,直至遍历完整棵树。具体算法如下所示:

(3)top-k查询可视化;

对于建立的区间树的另一重要目的就是为了方便的快速查询,本发明同时提供了区间树top-k查询可视化。区间树top-k查询是从跟结点开始的,首先将跟结点的每一个区间与给定值value进行比较,如果区间覆盖了value则记录,然后将跟结点的区间中间值x和给定值value进行比较,如果x小于value,则先将当前结点中的所有区间和value值进行比较,如果覆盖了当前区间值则进行记录,遍历完当前结点的所有区间后转向其左孩子;如果x大于value,则重复上述步骤并转向右孩子;如果x和value值相等,则仅比较当前结点即可。对于这样的一个查询过程,我们将每一次比较的结点记录下来,并按一定规则映射成坐标,同时在其转向的下一个结点间连一条线,这样就可以在gui界面进行可视化,从跟结点开始,可以看出其查询过程,效果如图6所示。具体算法如下:

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