一种树结构资源存储、查询的方法和装置制造方法及图纸

技术编号:13390518 阅读:84 留言:0更新日期:2016-07-22 14:03
本发明专利技术公开了一种树结构资源存储、查询的方法和装置。所述的树结构资源查询方法包括:获取预先存储的树结构资源的事件列表和位置哈希表,其中,所述事件列表中存储有通过前序遍历算法遍历树结构资源时依次遍历出的各个资源及其各子资源的事件数据,所述位置哈希表中记录有各个资源在所述事件列表中的起始位置和事件数量;所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和;在所述位置哈希表中查询待查询资源在所述事件列表中的起始位置和事件数量;根据查询出的起始位置和事件数量,在所述事件列表中截取出该待查询资源及其各子资源的事件数据。本发明专利技术的技术方案能够有效地提高数据量巨大时的树结构资源事件的查询速度。

【技术实现步骤摘要】
一种树结构资源存储、查询的方法和装置
本专利技术涉及树数据缓存查询
,特别涉及一种树结构资源存储、查询的方法和装置。
技术介绍
在监控系统中可监控故障产生的实体,如主机、CPU、表空间等称为资源。通常业务系统由数据库、主机等资源构成,主机本身也有子资源,如内存,cpu等。这些资源在监控过程中通常会产生大量的告警事件,即资源产生故障的信息。例如主机本身会有如“连接断开”,“cpu使用率过高”等事件,而其各子资源也会有自己的告警事件,如主机的子资源内存的“内存页数过高”事件。在IT监控系统中,所监控的资源通常存在树结构关系,如图1所示,图1左列为树结构关系的资源构成资源树的示例,图1右列为资源产生的历史告警事件的示例。用户在查询事件时,通常希望能够查询出所选资源及其各子资源的所有的告警事件。但由于监控资源数量庞大,则其资源对应的历史告警事件数量因为时间的累计更庞大。那么对于资源多、事件多的情况下,对历史事件进行条件查询时,对于百万、千万以上的事件信息,通过传统的数据库方式进行结构化查询语言(StructuredQueryLanguage,SQL)查询,性能极其缓慢,用户体验很差。现有的提高查询性能方案是:用户对于资源事件的查询通常都是关注1~2个月内的数据,将2个月内的告警事件以列表数据提前加载到内存中,在查询时,通过遍历这些缓存列表,提高事件查询的速度。现有的这种方案是通过缓存方式,查询性能虽然高于数据库SQL查询方式,但是针对树节点资源查询时需要遍历整个事件列表,在树节点深度较长时,需要大量的递归遍历子资源事件的情况,在数据量巨大时,性能表现也不尽人意。
技术实现思路
本专利技术提供了一种树结构资源存储、查询的方法和装置,能够有效地提高数据量巨大时的事件查询速度。为达到上述目的,本专利技术的技术方案是这样实现的:一方面,本专利技术提供了一种树结构资源存储的方法,包括:通过前序遍历算法遍历树结构资源;将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中;并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量;其中所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和。其中,在通过前序遍历算法遍历树结构资源之前,所述方法还包括:建立一个空的事件列表,用于按照前序遍历的顺序依次存储各个资源及其各子资源的事件数据;建立一个空的位置哈希表,该位置哈希表的键名为各个资源的ID,键值为两位的整型数组,用于分别记录各个资源在所述事件列表中的起始位置和事件数量;将树结构资源的事件数据加载到缓存中。其中,所述将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中;并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量包括:前序遍历树结构资源时,将依次遍历出的当前资源的事件数据和其各子资源的事件数据添加到所述事件列表的尾部;在所述位置哈希表中记录该当前资源的起始位置和事件数量;如果遍历的当前资源存在子资源,则在遍历完其各子资源时,使用当前资源的事件数量加上其各子资源的事件数量来更新所述位置哈希表中该当前资源的事件数量。相应于上述的树结构资源存储的方法,本专利技术提供了一种树结构资源存储的装置,包括:前序遍历模块,用于通过前序遍历算法遍历树结构资源;存储单元,用于将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中,并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量;其中所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和。可选地,所述装置还包括:建表模块,用于建立一个空的事件列表,以按照前序遍历的顺序依次存储各个资源及其各子资源的事件数据;以及建立一个空的位置哈希表,该位置哈希表的键名为各个资源的ID,键值为两位的整型数组,用于分别记录各个资源在所述事件列表中的起始位置和事件数量;加载模块,用于在通过前序遍历算法遍历树结构资源之前,将树结构资源的事件数据加载到缓存中。其中,所述存储单元包括:数据添加模块,用于前序遍历树结构资源时,将依次遍历出的当前资源的事件数据和其各子资源的事件数据添加到所述事件列表的尾部;位置记录模块,用于在所述位置哈希表中记录该当前资源的起始位置和事件数量;数量更新模块,用于如果遍历的当前资源存在子资源,则在遍历完其各子资源时,使用当前资源的事件数量加上其各子资源的事件数量来更新所述位置哈希表中该当前资源的事件数量。本专利技术提供的树结构资源存储的方法和装置的有益效果:本专利技术通过前序遍历算法遍历树结构资源,将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中,并在一个位置哈希表中记录各个资源在该事件列表中的起始位置和事件数量,保证了各个资源自身的事件数据与其各子资源的事件数据的连续存储,并可依据各个资源自身的事件数量和其各子资源的事件数量之和方便地统计出各个资源的事件数量;从而在需要查询资源时,能够非常简便地在位置哈希表中查询出待查询资源在事件列表中的起始位置和事件数量,然后在所述事件列表中直接截取出该待查询资源及其各子资源的事件数据。另一方面,本专利技术提供了一种树结构资源查询的方法,包括:获取预先存储的树结构资源的事件列表和位置哈希表,其中,所述事件列表中存储有通过前序遍历算法遍历树结构资源时依次遍历出的各个资源及其各子资源的事件数据,所述位置哈希表中记录有各个资源在所述事件列表中的起始位置和事件数量;所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和;在所述位置哈希表中查询待查询资源在所述事件列表中的起始位置和事件数量;根据查询出的起始位置和事件数量,在所述事件列表中截取出该待查询资源及其各子资源的事件数据。上述方法还包括预先存储树结构资源的事件列表和位置哈希表,所述预先存储树结构资源的事件列表和位置哈希表包括:建立一个空的事件列表,用于按照前序遍历的顺序依次存储各个资源及其各子资源的事件数据;建立一个空的位置哈希表,该位置哈希表的键名为各个资源的ID,键值为两位的整型数组,用于分别记录各个资源在所述事件列表中的起始位置和事件数量;将树结构资源的事件数据加载到缓存中;通过前序遍历算法遍历树结构资源;将依次遍历出的当前资源的事件数据和其各子资源的事件数据添加到所述事件列表的尾部;在所述位置哈希表中记录该当前资源的起始位置和事件数量;如果遍历的当前资源存在子资源,则在遍历完其各子资源时,使用当前资源的事件数量加上其各子资源的事件数量来更新所述位置哈希表中该当前资源的事件数量。相应于上述的树结构资源查询的方法,本专利技术提供了一种树结构资源查询的装置,包括:初始化单元,预先获取树结构资源的事件列表和位置哈希表,其中,所述事件列表中存储有通过前序遍历算法遍历树结构资源时依次遍历出的各个资源及其各子资源的事件数据,所述位置哈希表中记录有各个资源在所述事件列表中的起始位置和事件数量;所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和;查询单元,用于在所述位置哈希表中查询待查询资源在所述事件列表中的起始位置和事件数量;截取单元,用于根据查询出的起始位置和事件数量,在所述事件列表中截取出该待查询资源及其各子资源的事件数据。其本文档来自技高网
...

【技术保护点】
一种树结构资源存储的方法,其特征在于,包括:通过前序遍历算法遍历树结构资源;将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中;并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量;其中所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和。

【技术特征摘要】
1.一种树结构资源存储的方法,其特征在于,包括:通过前序遍历算法遍历树结构资源;将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中;并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量;其中所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和;其中,所述将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中;并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量包括:前序遍历树结构资源时,将依次遍历出的当前资源的事件数据和其各子资源的事件数据添加到所述事件列表的尾部;在所述位置哈希表中记录该当前资源的起始位置和事件数量;如果遍历的当前资源存在子资源,则在遍历完其各子资源时,使用当前资源的事件数量加上其各子资源的事件数量来更新所述位置哈希表中该当前资源的事件数量。2.根据权利要求1所述的方法,其特征在于,在通过前序遍历算法遍历树结构资源之前,所述方法还包括:建立一个空的事件列表,用于按照前序遍历的顺序依次存储各个资源及其各子资源的事件数据;建立一个空的位置哈希表,该位置哈希表的键名为各个资源的ID,键值为两位的整型数组,用于分别记录各个资源在所述事件列表中的起始位置和事件数量;将树结构资源的事件数据加载到缓存中。3.一种树结构资源存储的装置,其特征在于,包括:前序遍历模块,用于通过前序遍历算法遍历树结构资源;存储单元,用于将遍历出的各个资源及其各子资源的事件数据按照前序遍历的顺序依次存储在一个事件列表中,并在一个位置哈希表中记录各个资源在所述事件列表中的起始位置和事件数量;其中所述事件数量为各个资源自身的事件数量与其各子资源的事件数量之和;所述存储单元包括:数据添加模块,用于前序遍历树结构资源时,将依次遍历出的当前资源的事件数据和其各子资源的事件数据添加到所述事件列表的尾部;位置记录模块,用于在所述位置哈希表中记录该当前资源的起始位置和事件数量;数量更新模块,用于如果遍历的当前资源存在子资源,则在遍历完其各子资源时,使用当前资源的事件数量加上其各子资源的事件数量来更新所述位置哈希表中该当前资源的事件数量。4.根据权利要求3所述的装置,其特征在于,所述装置还包括:建表模块,用于建立一个空的事件列表,以按照前序遍历的顺序依次存储各个资源及其各子资源的事件数据;以及建立一个空的位置哈希表,该位置哈希表的键名为各个资源的ID,键值为两位的整型数组,用于分别记录各个资源在所述事件列表中的起始位置和事件数量;加载模块,用于在通过前序遍历算法遍历树结构资源之前,将树结构资源的事件数据加载到缓存中。5.一种树结构资源查询的方法,其特征在于,包括:获取预先存储的树结构资源的事件列表和位置哈希表,其中,所述事件列表中存储有通过前序遍历算法遍...

【专利技术属性】
技术研发人员:冯孝光王庆磊张国波
申请(专利权)人:北京神州泰岳软件股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1