告警数据的分页处理方法转让专利

申请号 : CN200810009876.7

文献号 : CN101237347B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 欧雪刚于洪宾

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种告警数据的分页处理方法,包括以下步骤:步骤一,按照每个告警数据中的排序字段中的值对每个告警数据进行排序,以形成具有双向链表结构的告警数据组;以及步骤二,按照指定的页大小,将形成的具有双向链表结构的告警数据组分为多页。本发明通过使用排序的双向链表及数组结构对告警实现分页管理,从而实现了对告警数据的高效插入、定位和删除,并能够很好地支持快速地获取特定页的告警数据。

权利要求 :

1.一种告警数据的分页处理方法,其特征在于,包括以下步骤:

步骤一,按照每个告警数据中的排序字段中的值对所述每个告警数据进行排序,以形成具有双向链表结构的告警数据组,其中,所述每个告警数据包括排序字段和关键字段,所述排序字段作为告警数据的排序依据,所述关键字段用于唯一标识一条告警数据;以及步骤二,按照指定的页大小,将形成的具有所述双向链表结构的所述告警数据组分为多页。

2.根据权利要求1所述的方法,其特征在于,所述步骤二还包括:

定义一个数组,使所述数组的每个节点分别指向所述多页中的每一页中的首个告警数据。

3.根据权利要求2所述的方法,其特征在于,所述告警数据按照其排序字段中的值从小到大排序,还包括对告警数据进行页定位,包括以下步骤:判断待页定位的所述告警数据的排序字段中的值与所述数组的每个节点所指向的页的首个告警数据的排序字段中的值是否相等,如果相等,则所述数组的节点所指向的页为待页定位的所述告警数据的定位页,如果不相等,则根据预定方法来找到所述数组中两个相邻节点以使待页定位的所述告警数据的排序字段中的值介于所述两个相邻节点所指向的告警数据的排序字段中的值之间,并将所述两个相邻节点的前一节点所指向的页中的最后一个告警数据的排序字段中的值与待页定位的所述告警数据的排序字段中的值进行比较,如果待页定位的所述告警数据的排序字段中的值小于所述前一节点所指向的页中的最后一个告警数据的排序字段中的值,则将所述前一节点所指向的页确定为待页定位的所述告警数据的定位页,否则,将所述两个相邻节点中的后一节点所指向的页确定为待页定位的所述告警数据的定位页。

4.根据权利要求3所述的方法,其特征在于,还包括对告警数据进行定位,包括以下步骤:

对待定位所述告警数据执行所述页定位;以及

从所述定位页的页首开始向后遍历,在当前告警数据的排序字段中的值不大于待定位的所述告警数据的排序字段中的值的情况下,判断所述当前告警数据的关键字段中的值与待定位的所述告警数据的关键字段中的值是否相等,如果相等,则将待定位的所述告警数据定位到所述当前告警数据,如果在遍历完所有排序字段中的值不大于待定位的所述告警数据的排序字段中的值的告警数据之后,所述当前告警数据的关键字段中的值与待定位的所述告警数据的关键字段中的值不相等,则从所述定位页的页首开始向前遍历,在当前告警数据的排序字段中的值不小于待定位的所述告警数据的排序字段中的值的情况下,判断当前告警数据的关键字段中的值与待定位的所述告警数据的关键字段中的值是否相等,如果当前告警数据的关键字段中的值与待定位的所述告警数据的关键字段中的值相等,则将待定位的所述告警数据定位到所述当前告警数据,如果在遍历完所有排序字段中的值不小于待定位的所述告警数据的排序字段中的值的告警数据之后,当前告警数据的关键字段中的值与待定位的所述告警数据的关键字段中的值不相等,则对待定位的所述告警数据定位失败。

5.根据权利要求3所述的方法,其特征在于,还包括向所述告警数据组插入告警数据,包括以下步骤:对待插入的所述告警数据执行所述页定位,并返回定位页的页号;

从所述定位页的页首至页尾进行遍历,判断所述告警数据组中是否存在其排序字段中的值大于或等于待插入的所述告警数据的排序字段中的值的第一个告警数据,如果存在,则将待插入的所述告警数据插入到所述第一个告警数据之前,否则,将待插入的所述告警数据插入到所述定位页的末尾;以及更新所述数组中其下标号大于所述定位页的页号的节点,根据所述指定的页大小来改变更新后的所述节点所指向的位置。

6.根据权利要求5所述的方法,其特征在于,还包括以下步骤:

在插入所述告警数据后使得所述告警数据组的总页数增加时,在所述数组的末尾增加一个节点,并使其指向所述告警数据组中的最后一个告警数据。

7.根据权利要求4所述的方法,其特征在于,还包括删除所述告警数据组中的告警数据,包括以下步骤:对待删除的所述告警数据进行定位,如果待删除的所述告警数据定位成功,则删除定位到的所述告警数据,否则,对待删除的所述告警数据的删除失败。

8.根据权利要求7所述的方法,其特征在于,还包括以下步骤:

在删除了待删除的所述告警数据时,更新所述数组中的其下标号大于被删除的所述告警数据所在页的页号的节点,根据所述指定的页大小来改变更新后的所述节点所指向的位置。

9.根据权利要求8所述的方法,其特征在于,还包括以下步骤:

在删除了待删除的所述告警数据后使得所述告警数据组的总页数减少的情况下,将所述数组的末节点删除。

10.根据权利要求3至9中任一项所述的方法,其特征在于,所述预定方法包括折半查找法。

说明书 :

告警数据的分页处理方法

技术领域

[0001] 本发明涉及通信网络管理技术领域,更具体地,涉及一种告警数据的分页处理方法。
[0002] 背景技术
[0003] 告警是由于通信设备或通信业务出现故障而产生的,它要求网络管理人员及时知晓,以便对故障进行必要的处理。由于网络层网管管理设备众多,应用中经常会达到5000端以上的管理规模,管理的告警数目更会达到几万条甚至十几万条,在这种情况下,这些数据的存储、操作以及呈现对网管在处理效率方面提出了很高的要求。
[0004] 发明内容
[0005] 本发明要解决的问题是在大数据量下如何高效地定位到指定告警数据,如何高效地删除已有的告警数据,以及如何高效地把新增告警数据插入了指定位置,并为运维人员快速地提供所需位置页的告警数据。
[0006] 为此,本发明提出了一种告警数据的分页处理方法,包括:步骤一,按照每个告警数据中的排序字段中的值对每个告警数据进行排序,以形成具有双向链表结构的告警数据组;以及步骤二,按照指定的页大小,将形成的具有双向链表结构的告警数据组分为多页。 [0007] 其中,每个告警数据包括排序字段和关键字段,排序字段作为告警数据的排序依据,关键字段用于唯一标识一条告警数据。
[0008] 步骤二还包括:定义一个数组,使数组的每个节点分别指向多页中的每一页中的首个告警数据。
[0009] 根据本发明的方法,告警数据按照其排序字段中的值从小到大排序,还包括对告警数据进行页定位,包括以下步骤:判断待页定位的告警数据的排序字段中的值与数组的每个节点所指向的页的首个告警数据的排序字段中的值是否相等,如果相等,则数组的节点所指向的页为待页定位的告警数据的定位页,如果不相等,则根据预定方法来找到数组中两个相邻节点以使待页定位的告警数据的排序字段中的值介于两个相邻节点所指向的告警数据的排序字段中的值之间,并将两个相邻节点的前一节点所指向的页中的最后一个告警数据的排序字段中的值与待页定位的告警数据的排序字段中的值进行比较,如果待页定位的告警数据的排序字段中的值小于前一节点所指向的页中的最后一个告警数据的排序字段中的值,则将前一节点所指向的页确定为待页定位的告警数据的定位页,否则,将两个相邻节点中的后一节点所指向的页确定为待页定位的告警数据的定位页。 [0010] 根据本发明的方法,还包括对告警数据进行定位,包括以下步骤:对待定位告警数据执行页定位;以及从定位页的页首开始向后遍历,在当前告警数据的排序字段中的值不大于待定位的告警数据的排序字段中的值的情况下,判断当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值是否相等,如果相等,则将待定位的告警数据定位到当前告警数据,如果在遍历完所有排序字段中的值不大于待定位的所述告警数据的排序字段中的值的告警数据之后,当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值不相等,则从定位页的页首开始向前遍历,在当前告警数据的排序字段中的值不小于待定位的告警数据的排序字段中的 值的情况下,判断当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值是否相等,如果当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值相等,则将待定位的告警数据定位到当前告警数据,如果在遍历完所有排序字段中的值不小于待定位的所述告警数据的排序字段中的值的告警数据之后,当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值不相等,则对待定位的告警数据定位失败。
[0011] 根据本发明的方法,还包括向告警数据组插入告警数据,包括以下步骤:对待插入的告警数据执行页定位,并返回定位页的页号;从定位页的页首至页尾进行遍历,判断告警数据组中是否存在其排序字段中的值大于或等于待插入的告警数据的排序字段中的值的第一个告警数据,如果存在,则将待插入的告警数据插入到第一个告警数据之前,否则,将待插入的告警数据插入到定位页的末尾;以及更新数组中其下标号大于定位页的页号的节点,根据指定的页大小来改变更新后的节点所指向的位置。在插入告警数据后使得告警数据组的总页数增加时,在数组的末尾增加一个节点,并使其指向告警数据组中的最后一个告警数据。
[0012] 根据本发明的方法,还包括删除告警数据组中的告警数据,包括以下步骤:对待删除的告警数据进行定位,如果待删除的告警数据定位成功,则删除定位到的告警数据,否则,对待删除的告警数据的删除失败。在删除了待删除的告警数据时,更新数组中的其下标号大于被删除的告警数据所在页的页号的节点,根据指定的页大小来改变更新后的节点所指向的位置。在删除了待删除的告警数据后使得告警数据组的总页数减少的情况下,将数组的末节点删除。
[0013] 在该方法中,预定方法包括折半查找法。
[0014] 因此,采用本发明的方法,通过使用排序的双向链表及数组结构对告警实现分页管理,从而实现了对告警数据的高效插入、定位和删除,并能够很好地支持快速地获取特定页的告警数据。
[0015] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0016] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0017] 图1是根据本发明的告警数据的分页处理方法的流程图;
[0018] 图2是根据本发明的一个实施例的存储告警数据的数据结构;
[0019] 图3是根据本发明的一个实施例的存储有告警数据的数据结构; [0020] 图4是根据本发明的一个实施例的插入一条告警后的数据结构; [0021] 图5是根据本发明的一个实施例的删除一条告警后的数据结构; [0022] 图6是根据本发明的另一个实施例的存储有告警数据的数据结构; [0023] 图7是根据本发明的另一个实施例的插入一条告警后的数据结构;以及 [0024] 图8是根据本发明的另一个实施例删除一条告警后的数据结构。 具体实施方式
[0025] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0026] 图1是根据本发明的告警数据的分页处理方法的流程图。
[0027] 如图1所示,该方法包括以下步骤:
[0028] 步骤S102,按照每个告警数据中的排序字段中的值对每个告警数据进行排序,以形成具有双向链表结构的告警数据组;以及
[0029] 步骤S104,按照指定的页大小,将形成的具有双向链表结构的告警数据组分为多页。
[0030] 其中,每个告警数据包括排序字段和关键字段。
[0031] 步骤S104还包括:定义一个数组,使数组的每个节点分别指向多页中的每一页中的首个告警数据。
[0032] 根据本发明的方法,还包括对告警数据进行页定位,包括以下步骤:判断待页定位的告警数据的排序字段中的值与数组的每个节点所指向的页的首个告警数据的排序字段中的值是否相等,如果相等,则数组的节点所指向的页为待页定位的告警数据的定位页,如果不相等,则根据预定方法来找到数组中两个相邻节点以使待页定位的告警数据的排序字段中的值介于两个相邻节点所指向的告警数据的排序字段中的值之间,并将两个相邻节点的前一节点所指向的页中的最后一个告警数据的排序字段中的值与待页定位的告警数据的排序字段中的值进行比较,如果待页定位的告警数据的排序字段中的值小于前一节点所指向的页中的最后一个告警数据的排序字段 中的值,则将前一节点所指向的页确定为待页定位的告警数据的定位页,否则,将两个相邻节点中的后一节点所指向的页确定为待页定位的告警数据的定位页。
[0033] 根据本发明的方法,还包括对告警数据进行定位,包括以下步骤:对待定位告警数据执行页定位;以及从定位页的页首开始向后遍历,在当前告警数据的排序字段中的值不大于待定位的告警数据的排序字段中的值的情况下,判断当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值是否相等,如果相等,则将待定位的告警数据定位到当前告警数据,如果当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值不相等,则从定位页的页首开始向前遍历,在当前告警数据的排序字段中的值不小于待定位的告警数据的排序字段中的值的情况下,判断当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值是否相等,如果当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值相等,则将待定位的告警数据定位到当前告警数据,如果当前告警数据的关键字段中的值与待定位的告警数据的关键字段中的值不相等,对待定位的告警数据定位失败。
[0034] 根据本发明的方法,还包括向告警数据组插入告警数据,包括以下步骤:对待插入的告警数据执行页定位,并返回定位页的页号;从定位页的页首至页尾进行遍历,判断告警数据组中是否存在其排序字段中的值大于或等于待插入的告警数据的排序字段中的值的第一个告警数据,如果存在,则将待插入的告警数据插入到第一个告警数据之前,否则,将待插入的告警数据插入到定位页的末尾;以及更新数组中其下标号大于定位页的页号的节点,根据指定的页大小来改变更新后的节点所指向的告警数据。在插入告警数据后使得告警数据组的总页数增加时,在数组的末尾增加一个节点,并使其指向告警数据组中的最后一个告警数据。
[0035] 根据本发明的方法,还包括删除告警数据组中的告警数据,包括以下步骤:对待删除的告警数据进行定位,如果待删除的告警数据定位成功,则删除定位到的告警数据,否则,对待删除的告警数据的删除失败。在删除了待删除的告警数据时,更新数组中的其下标号大于被删除的告警数据所在页的页号的节点,根据指定的页大小来改变更新后的节点所指向的告警数据。在删除了待删除的告警数据后使得告警数据组的总页数减少的情况下,将数组的末节点删除。
[0036] 在该方法中,预定方法包括折半查找法。
[0037] 接下来描述本发明的第一实施例。
[0038] 图2是根据本发明方法的一个实施例存储告警数据的数据结构。 [0039] 如图2所示,本实施例的数据结构满足如下要求:
[0040] 告警数据有排序字段和关键字段。其中,排序字段是用户指定的特定告警字段信息,作为告警数据的排序依据;关键字段的作用是唯一标识一条告警数据。排序字段和关键字段可以为同一字段;告警数据被组织成一个按照排序字段排序的双向链表;以及使用数组结构对双向链表实现分页管理,双向链表中的告警数据依照用户指定的分页大小划分为若干页,数组中的每一个节点分别指向双向链表中每页的首节点位置。数组长度就是双向链表的页数。
[0041] 在该实施例中,对存储告警的数据结构的操作包括:
[0042] (1)定位页操作
[0043] 取出待定位的告警数据的排序字段的值;以及逐一地将该值与数组所指向的双向链表节点的排序字段的值进行比较,找到与待定位数据的排序字段的值相等的数组中的某个节点(即该节点指向的告警链表数据的排序字段的值与待定位数据的排序字段的值相等)(情况1),或者待定位数据的排序字段的值介于某两个相邻数组节点所指向的告警数据的排序字段的值之间(情况2),因为数组中的每个节点均指向了有序的告警链表数据的各页首位置,因此可以对数组进行折半查找来实现如上的数组节点的定位,从而实现告警数据的高效定位,若情况1出现,则查找到的节点所在页(即相应数组节点的下标)即为定位的页,定位结束,若情况2出现,则取出查找到的两个相邻节点中的第一个节点所指向页的最后一个节点的排序字段的值与待定位数据的排序字段的值进行比较,若待定位数据的排序字段的值较小,则返回第一个节点所指向页,否则返回第二个节点所指向页,定位结束。
[0044] (2)定位告警数据操作
[0045] 得到待定位的告警数据;执行“定位页操作”,得到返回页号;以及从返回页页首开始向后遍历,将待定位告警数据与被遍历的当前节点的告警数据逐一进行比较,检测两者的关键字段是否相等,如果相等表示已经定位到数据,定位数据结束,否则继续查找,直至当前节点的排序字段的值大于待定位告警数据的排序字段的值,否则,从返回页的页首开始向前查找,将待定位告警数据与被遍历的当前节点的告警数据逐一进行比较,检测两者的关键字段的值是否相等,如果相等,表示已经定位到数据,定位数据结束,否则,继续查找,直至当前节点的排序字段的值小于待定位告警数据的排序字段的值,定位失败,流程结束。
[0046] (3)插入告警操作
[0047] 得到待插入的告警数据;执行“定位页操作”,得到返回页号;从返回页页首到页尾遍历此页数据,找到第一个排序字段大于等于待插入告警数据的排序字段的节点,把此告警数据插入到该节点前面;以及更新数组中下标大于当前页号的所有节点,改变它们的指向位置,如果插入前最后一页的节点数等于每页定义的节点数,就需要为数组添加一个节点来指向双向链表的最后一个节点。
[0048] (4)删除告警操作
[0049] 得到待删除的告警数据;执行“定位告警数据操作”;如果定位失败,则操作结束,否则,删除定位到的数据;更新数组中下标大于被删除告警数据所在页号的所有节点,改变它们的指向位置;以及如果最后一页节点数为1,就需要把数据中最后一个节点删除。 [0050] (5)查询特定页数据
[0051] 得到待获取数据的页号;通过数组定位到此页号所对应的双向链表数据;以及返回此页数据。
[0052] 下面结合图3至图8来描述本发明的其他实施例。
[0053] 如图3所示,在图示的数据结构中已经存有数据,双向链表中的每一个节点都包含两个元素,第一个为关键字,第二个为排序字段。把数据用页来组织,每页4个节点。数组结构的每一个节点都指向每页的首节点。其他实施例包括以下步骤: [0054] 步骤S110,在已有数据基础上插入数据,待插入数据的关键字为9-1,排序字段为8:
[0055] 步骤S1102,数组结构的每个节点所指向的页首节点的排序字段值分别为1、6、11,根据折半查找算法求得8处于6和11之间,即待插入数据处于第二页和第三页之间; [0056] 步骤S1104,确定页的原则是,如果它小于前一页的最后一个元素,它就属于前一页,否则属于后一页,因为8小于第二页最后一个元素,所以待插入数据的所在页为第二页;
[0057] 步骤S1106,从页首遍历第二页,当找到第一个大于或等于插入节点的排序字段的值的节点时,把待插入数据插入到此节点的前面,待插入数据应插入到关键字为5-5,排序字段为9的节点前面;以及
[0058] 步骤S1108,改变数组结构中下标大于被插入页所对应页号的所有节点的指向位置,本实例需要改变第三页节点所指向的位置,如图4所示,使其指向关键字为1-3,排序字段为9的节点。
[0059] 步骤S112在如图6所示的数据基础上插入数据,此数据每页节点数定义为4,待插入数据的关键字为2-1,排序字段为12。
[0060] 步骤S1122,数组结构的每个节点所指向的页首节点的排序字段的值分别为1、6,根据折半查找算法求得12在6之后,即待插入数据处于第二页;
[0061] 步骤S1124,从页首遍历第二页,当找到第一个大于或等于插入节点的排序字段的值的节点时,把待插入数据插入到此节点的前面,由于在第二页不能找到这样的节点,因此待插入数据应插入到第二页的尾部;以及
[0062] 步骤S1126,由于最后一页节点数等于定义的节点数,如图7所示,需要为数组结构增加一个节点,使它指向双向链表最后一个节点。
[0063] 步骤S114,在已有数据基础上删除数据,待删除数据的关键字为1-1,排序字段为1。
[0064] 步骤S1142,根据(1),可定位此元素在第一页;
[0065] 步骤S1144,从第一页页首开始遍历,比较待删除数据与当前节点的关键字段元素,如果相等,则删除此节点,本实例应删除关键字为1-1,排序字段为1的节点;以及 [0066] 步骤S1146,改变数组结构中下标大于被删除数据所在页号的所有节点的指向位置,改变后如图5所示。
[0067] 步骤S116,在如图7所示的数据基础上删除数据,待删除数据的关键字为1-3,排序字段为9。
[0068] 步骤S1162,根据(1),可定位此元素在第二页;
[0069] 步骤S1164,从第二页页首开始遍历,比较待删除数据与当前节点的关键字段元素,如果相等,则删除此节点,本实例应删除关键字为1-3,排序字段为9的节点;以及 [0070] 步骤S1166,因为双向链表最后一页节点数为1,需要把数据中的最后一个节点删除,删除后如图8所示。
[0071] 步骤S118,在已有数据基础上查询页数据,待查询数据为第3页。 [0072] 步骤S1182,数组结构中每一个节点指向双向链表的每一页的首节点,第3页即是数据结构中第三个节点指向的那一页;以及
[0073] 步骤S1184,定位到数组结构中第三个节点指向的页,返回此页数据,此页数据仅包含一个节点(如图5所示)即返回关键字为1-4,排序字段为11的节点。 [0074] 综上所述,采用本发明的方法,通过使用排序的双向链表及数组结构对告警实现分页管理,从而实现了对告警数据的高效插入、定位和删除,并能够很好地支持快速地获取特定页的告警数据。
[0075] 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。