CN100393072C - 一种表项的存储方法、装置及查询方法 - Google Patents
一种表项的存储方法、装置及查询方法 Download PDFInfo
- Publication number
- CN100393072C CN100393072C CNB2006100077969A CN200610007796A CN100393072C CN 100393072 C CN100393072 C CN 100393072C CN B2006100077969 A CNB2006100077969 A CN B2006100077969A CN 200610007796 A CN200610007796 A CN 200610007796A CN 100393072 C CN100393072 C CN 100393072C
- Authority
- CN
- China
- Prior art keywords
- list item
- node
- key message
- message structure
- soon
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种表项的存储方法:提取表项中的成员变量构建该条表项的关键信息结构;将所述关键信息结构存储于其所属控制实体下的控制链表中;将包含所述关键信息结构的表项存储于至少一个快查表中。本发明还公开了一种表项的存储装置,包括构建单元,用于提取表项中的成员变量构建该条表项的关键信息结构;第一存储单元,用于将所述关键信息结构存储于其所属控制实体下的控制链表中;第二存储单元,用于将包含所述关键信息结构的表项存储于至少一个快查表中。
Description
技术领域
本发明涉及数据管理领域,尤其涉及一种表项的存储方法及装置。
背景技术
在交换机、路由器等转发设备中,为了支持软件转发以及作为下发硬件表项的基础,需要管理一定的转发地址以及策略等信息内容。信息内容的管理主要包括两个方面:信息存储和信息查找。目前较为通用的信息管理方式是将信息作为表项进行存储,即将需要管理的信息以一定形式存储于数据表中,进而通过查表获取转发所需的表项。
从功能角度出发,表项存储需要支持转发过程中对这些表项的快速命中;从易用性角度出发,需要支持用户通过各种方式显示表项信息,即方便按特定控制对象进行遍历。比如,支持用户查看指定接口上的某种表项信息,或者支持用户查看指定VLAN上的某种表项信息等,此时指定接口或VLAN即可看作某种控制实体。
为了实现快速命中,要求表项以能支持快速查找的形式进行存储,比如哈希(Hash)表、分级索引表以及二叉树表等,这些统称为快查表。以Hash表为例,Hash表是一组散列,物理存储的顺序通常不是按照某个特定控制实体集中排列的,例如一个VLAN内学习到的表项可能处于Hash表中不同的冲突链中。因此这种存储方式不利于遍历显示某控制实体下的各条表项信息。如,按VLAN(或者按接口)显示表项时,就需要遍历每一个冲突链中的每一个表项,才能输出属于指定VLAN(或者指定接口)的所有表项。为了便于某种方式的遍历,可以将这些表组织为链表形式。
因此,目前为了既要满足快速命中,又要便于按某种方式遍历的表项存储方法,通常采用Hash表与链表配合使用。请结合参阅图1,其为现有的表项组织结构示意图。在各控制实体(接口或VLAN)下分别建立Hash表。比如在VLAN1下建立一个Hash表,用于存储属于VLAN1的全部数据信息;然后在VLAN2下也建立一个Hash表,用于存储属于VLAN2的全部数据信息;其他各VLAN或接口表项也同样处理。
可以看出,上述表项的存储方法,可以同时满足快速命中和便于遍历的需要。但是当一个VLAN或接口下只存在少量表项时,也需要创建一个深度确定的快查表,快查表表头同样占用了一定内存。如果接口或者VLAN数目较多时,这种内存的消耗就变得不可接受。因此现有的表项存储方法,虽然满足快速命中和遍历显示的需要,但占用了大量内存。
发明内容
本发明的目的在于提供一种表项的存储方法、装置及查询方法,以解决现有为了同时满足快速命中和遍历显示需要,占用了大量内存的技术问题。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:一种表项的存储方法:提取表项中的成员变量构建该条表项的关键信息结构;将所述关键信息结构存储于其所属控制实体下的控制链表中;将包含所述关键信息结构的表项存储于至少一个快查表中。
优选的,为控制链表中每个关键信息结构节点添加时间戳;为快查表中每个表项节点添加时间戳。
优选的,新增快查表的表项节点时,在控制链表中新增对应的关键信息结构节点;刷新快查表的表项节点时,在控制链表中新增对应的关键信息结构节点,不刷新原关键信息结构节点;删除快查表的表项节点时,不删除控制链表中对应的关键信息结构节点。
优选的,遍历控制链表中的关键信息结构节点,与快查表中对应的表项节点进行核对,当快查表中不存在关键信息结构节点对应的表项节点,或关键信息结构节点的时间戳与对应的表项节点的时间戳不同时,删除所述关键信息结构节点。
需要遍历控制实体下的各条表项时,查找以所述控制实体为表头的控制链表,通过所述控制链表中的各关键信息结构,查找存储于快查表中对应的表项节点,获取所述控制实体下的各条表项信息。
优选的,将表项中关键信息结构以外的成员变量分为第一相关信息结构和第二相关信息结构;第一相关信息结构和关键信息结构作为表项节点存储于第一快查表;第二相关信息结构和关键信息结构存作为表项节点储于第二快查表。
一种表项的存储装置,包括构建单元,用于提取表项中的成员变量构建该条表项的关键信息结构;第一存储单元,用于将所述关键信息结构存储于其所属控制实体下的控制链表中;第二存储单元,用于将包含所述关键信息结构的表项存储于至少一个快查表中。
优选的还包括时间记录单元,用于为控制链表中每个关键信息结构节点添加时间戳,以及为快查表中每个表项节点添加时间戳。
优选的,第一存储单元在快查表中新增表项节点时,第二存储单元在控制链表中也同时增加对应的关键信息结构节点;第一存储单元刷新快查表的表项节点时,第二存储单元在控制链表中新增对应的关键信息结构节点,而不刷新原关键信息结构节点;第一存储单元在快查表中删除表项节点时,第二存储单元不删除控制链表中对应的关键信息结构节点。
优选的还包括核对单元,用于遍历控制链表中的关键信息结构节点,与快查表中对应的表项节点核对时间戳;删除单元,用于根据核对单元的结果,当快查表中不存在关键信息结构节点对应的表项节点,或关键信息结构节点的时间戳与对应的表项节点的时间戳不同时,删除所述关键信息结构节点。
一种对按照上述表项存储方法存储的表项进行查询的表项查询方法:需要快速命中某条表项时,通过已知的关键信息结构中的定位成员变量,查找存储于快查表中对应的表项节点,获取所需的表项信息;需要遍历控制实体下的各条表项时,查找以所述控制实体为表头的控制链表,通过所述控制链表中的各关键信息结构,查找存储于快查表中对应的表项节点,获取所述控制实体下的各条表项信息。
优选的,当所述快查表为哈希表时,所述定位成员变量为哈希函数输入参量;当所述快查表为分级索引表时,所述定位成员变量为索引项。
以上技术方案可以看出,在本发明中,由于将表项的成员变量构建为关键信息结构,一方面将所述表项的关键信息结构存储于其所属控制实体下的控制链表中,另一方面又将包含关键信息结构的表项存储于至少一个快查表中,使得快查表和控制链表之间通过相同的关键信息结构联系在一起。进而在需要快速命中时直接访问快查表,在需要按照某控制实体进行遍历时,通过控制链表中的各关键信息结构直接定位到快查表中的相关表项节点,进而获取所需表项的全部信息。可见,本发明公开的表项存储方法及装置,完全满足快速命中和遍历显示需要,但无需像现有技术在每个控制实体下都建立一个快查表,进而减少了占用的内存空间。
附图说明
图1为现有的表项组织结构示意图;
图2为本发明公开的表项存储方法实施例流程图;
图3为图2所示表项存储方法对应的表项组织结构第一实施例示意图;
图4为图2所示表项存储方法对应的表项组织结构第二实施例示意图;
图5为图2所示表项存储方法对应的表项组织结构第三实施例示意图;
图6为本发明公开的表项存储装置实施例结构示意图。
具体实施方式
本发明的核心思想是:提取表项的成员变量作为该条表项的关键信息结构,只将关键信息结构存储于控制链表中,包含关键信息结构以及相关信息结构的表项全部内容存储于另外的快查表中。
请参阅图2,其为本发明公开的表项存储方法实施例流程图。
步骤110:提取表项中的成员变量构建该条表项的关键信息结构,该条表项中的其他成员变量构建为相关信息结构。
在交换机、路由器等转发设备中学习到的一条表项中会包含很多信息,比如IP地址、所属接口、MAC地址、老化时间以及所属VLAN等等,通常将它们称为该条表项的成员变量。假设提取IP地址和所属接口信息构建该条表项的关键信息结构,此时可以称关键信息结构包含两个成员变量;其余的MAC地址、老化时间以及所属VLAN等构建为相关信息结构。当然,也可以提取全部成员变量构建关键信息结构,相当于该条表项没有相关信息结构。
可以认为关键信息结构中全部信息相同即为同一条表项,关键信息结构不相同即为不同表项。例如转发设备在时刻A学习到一条表项的关键信息结构为a(包含IP地址和所属接口信息),相关信息结构为b(包含与关键信息结构相关的其他信息)。在时刻B学习到一条表项的关键信息结构为a,相关信息结构为c(c与b的区别可能是所有信息都不同,也可能是部分信息不同)。这种情况下,就可以将时刻B学习到的表项看作时刻A学习到的表项的一次刷新,而不作为一个新表项看待。
当然实际应用中,也可以将关键信息结构中的部分成员变量作为区分表项的标准。比如认为只要关键信息结构中的IP地址相同,即使所属接口信息不同,也属于同一条表项内容。
步骤120:将所述表项的关键信息结构存储于其所属控制实体下的控制链表中。请结合参看图3,其为图2所示表项存储方法对应的表项组织结构第一实施例示意图;以及图4,其为图2所示表项存储方法对应的表项组织结构第二实施例示意图。
一个控制链表就是以一个控制实体为表头,以属于该控制实体的各表项关键信息结构为存储节点的链式存储表。如图3或图4所示,第一控制实体下存储有两个关键信息结构(废弃节点不算),第二控制实体下也存储有两个关键信息结构。所述控制实体可以是一个VLAN,也可以是一个接口,或者是一个其他的特征信息。每个控制实体可能会对应着一条或多条表项信息,但是在控制链表的每个存储节点上存储的不是一条表项全部信息,而是存储一条表项的关键信息结构。
可以根据实际需要设置控制链表,比如可以为每个VLAN以及每个接口都分别设置一条控制链表,也可以只对某些重要的VLAN和接口设置控制链表。此外,对不同属性的控制实体都建立控制链表时,可能会出现一条表项关键信息结构存储于多个控制链表中,比如一条表项既属于以VLAN1为链表头的控制链表中,又属于以以太网接口1为链表头的控制链表中。所述控制链表可以是单向链表也可以是双向链表。
优选的,为每个存储在控制链表中的关键信息结构节点添加时间戳。如果关键信息结构节点是第一次创建,则在时间戳内记录当时的创建时间,如果所述关键信息结构节点被刷新,则要在时间戳内记录本次刷新的时间。对于时间戳的设置用途在后续步骤会进行介绍。
步骤130:将包含关键信息结构的表项存储于至少一个快查表中。
由于快查表的种类繁多,不能一一遍历,因此本发明仅以最常用的Hash(散列)存储表和分级索引表为例详细说明,其他快查表在本发明方案中的使用原理相同。
图3所示的实施例中,快查表采用的是Hash表。
首先,在关键信息结构中选取作为Hash函数输入参量的成员变量。被选为Hash函数输入参量的成员变量也称为定位成员变量,因为是根据所述成员变量决定该条表项存储位置的。假设构建的关键信息结构包含两个成员变量:IP地址和所属接口,则既可以选择IP地址作为Hash函数的输入参量,也可以选择IP地址和所属接口都作为Hash函数的输入参量,这与选用的具体Hash函数有关。但是需要注意,如果“所属接口”这个成员变量不作为区分不同表项的标准之一,那么其最好也不参与Hash函数计算,否则可能会出现IP相同、接口不同的同一条表项定义到不同的冲突链上。
其次,将输入参量带入选用的Hash函数中,计算出Hash关键字,Hash关键字相同的表项存储在同一条Hash冲突链中,即将学习到的各条表项信息创建一个Hash表进行存储管理。本领域技术人员都知道根据哈希算法,不同的输入参量可能对应于同一个Hash关键字,比如IP地址和接口都参与Hash计算,即使IP地址和接口都不同,根据Hash函数计算出的关键字也可能相同。将各关键字存储于创建的Hash表中的冲突链头结构中,一个关键字下挂有一条冲突链。Hash关键字相同的各条表项以节点方式存储在同一条Hash冲突链中。在一条冲突链中各表项节点有多种存储方式,比如顺序存储(又叫数组存储)或者链式存储等。在Hash表中存储的表项节点不仅包括关键信息结构,还包括相关信息结构,换而言之,包含一条表项需要维护的全部信息。
与右侧控制链表相对应,优选的,为Hash表中的各表项节点也添加时间戳。如果表项节点是第一次创建,则记录当时的创建时间,如果所述表项节点被刷新,则要在时间戳内记录本次刷新的时间。对于所述Hash快查表的时间戳设置用途,在后续步骤中会进行介绍。
图4所示的表项组织结构实施例中,快查表采用的是分级索引表。
首先,在关键信息结构中选取作为索引项的成员变量,与Hash存储表中的输入参量同理,作为索引项的成员变量也成为定位成员变量。仍然假设构建的关键信息结构包含两个成员信息:IP地址和所属接口,对于分级索引而言,通常选取IP地址作为索引项进行分级索引存储。为叙述方便,假设采用20-6-6的方式进行3级索引:第1级索引取IP地址的前20位,索引表的存储空间为220*指针类型长度;如果没有冲突,则1级索引表表头的相对位置保存表项节点的指针,且标识为正值,否则保存第2级索引表表头的指针,为了区分指针的含义,标识为负。以此类推,实现2级和3级索引表,2级和3级索引表的空间都为26*指针类型长度。
其次,根据学习到的表项信息的索引项,将表项存储于对应的索引表头之下,即将学习到的各条表项信息创建一个分级索引表进行存储。可以看出在分级索引表中,每条表项以节点形式存储于某级索引之下,在分级索引表中存储的表项节点不仅包括关键信息结构,还包括相关信息结构,换而言之,可以包含一条表项需要维护的全部信息。
与右侧控制链表相对应,优选的,为分级索引表中的各表项节点也添加一个记录刷新时间的时间戳。如果表项节点是第一次创建,则记录当时的创建时间,如果所述表项节点被刷新,则要在时间戳内记录本次刷新的时间。对于所述分级索引快查表的时间戳设置用途,在后续步骤中会进行介绍。
此外,通过本步骤进一步确定了在步骤110中什么样的成员变量应该作为关键信息结构的成员。关键信息结构至少一方面包含能够作为不同表项区分标准的信息;另一方面包含能够起到表项存储定位作用的信息,比如Hash表中的Hash函数输入参量或者分级索引表中的索引项。
由于在后续操作过程中,无论对于Hash表还是分级索引表,或者其他快查表在操作上基本原理一样,因此不再分别说明,只统称为快查表。
步骤140:当新增、刷新、删除快查表的表项节点时,采用不同方式对控制链表进行处理。
新增快查表的表项节点时,在控制链表中新增对应的关键信息结构节点。例如学习到一条具有不同关键信息结构的新表项,首先会在快查表中的相应位置添加这条新表项,并在时间戳内记录创建时间;同时也会在控制链表中添加这条新表项的关键信息结构,并在时间戳内记录与快查表相同的创建时间。
刷新快查表的表项节点时,在控制链表中新增对应的关键结构节点,不刷新原关键信息结构节点。例如学习到一条与现存表项具有相同关键信息结构的表项,但是相关信息结构不同,那么即可将其看作是原表项的刷新信息。于是刷新快查表中的该条表项节点,并在时间戳内记录本次的刷新时间;同时在控制链表中增加该条表项的一个关键信息结构节点,并在这个关键信息结构节点的时间戳内记录与快查表相同的刷新时间;对于控制链表中的原关键信息结构节点不做任何处理,不刷新其时间戳,即在原关键信息结构节点中保持原来的刷新时间。可以看出,对于快查表中的某条刷新表项,在控制链表中可能存在多个对应的关键信息结构节点,虽然这几个关键信息结构节点的关键信息结构内容相同,但时间戳内的时间是不同的,只有一个关键信息结构节点的时间戳与快查表中的该条表项节点的时间戳相同,其他时间不同的关键信息结构节点成为废弃节点。例如图3所示:在左侧的Hash表中有一条刷新时间为B的表项节点,在右侧控制链表中包含两个具有相同关键信息结构的关键信息结构节点,不同的是一个时间戳为B1,另一个时间戳为B,于是这个刷新时间为B1的关键信息结构节点就是废弃节点。
删除快查表的表项节点时,并不删除控制链表中对应的关键信息结构节点。例如快查表中存储的某个表项节点到了老化时间,就会在快查表中删除该表项节点;但是控制链表中不会删除这条表项的关键信息结构节点,即保留此条表项在控制表中的关键信息结构节点。需要注意,虽然控制表中还有这条表项的关键信息结构节点,但在快查表中已经不存在包含此关键信息结构的表项节点了,因此将这样的关键信息结构节点也称为废弃节点。
对于各控制链表中的废弃节点,可以采用后台看齐的方式进行批量清除。即定期或在系统运行的其他时间里,遍历一定数量或全部的控制链表关键信息结构节点,将每个节点逐一与快查表中对应的表项节点核对时间戳。若对于控制链表中的一个关键信息结构节点,如果在快查表中不存在包含相同关键信息结构的表项节点,或者时间戳不一致,都视为废弃节点,从控制链表中删除。
上述操作方式,主要是为了不影响表项发生变化时的实时响应速度,因为快查表的命中操作效率很高,效率问题主要是控制链表导致的。因此,对于表项刷新和删除等操作,可以只在快查表中进行,而对于控制链表的更新和删除则使用后台看齐的方式。
当然,如果不采用这种设置各节点时间戳进行后台看齐的方法也是可以的,只是表项发生变化时的实时响应速度会慢一些。即控制链表和快查表在任何情况下都保持数据一致性:快查表中新增表项节点时,控制链表中也新增相应的关键信息结构节点;快查表中刷新表项节点时,控制链表中的对应关键信息结构节点也刷新;快查表中删除表项节点时,控制链表的对应关键信息结构节点也删除。
以上步骤110至140介绍的是本发明公开的一种表项存储方法,其通过关键信息结构将便于快速命中的快查表和便于遍历显示的链表联系在一起,这种存储方法为进一步的表项查询提供了便利,使得内存得到了合理利用。下面结合后续的查询流程进一步揭示本发明方案。
步骤150:需要快速命中某条表项时,通过已知的关键信息结构中的定位成员变量,定位到存储于快查表中的对应表项节点,获取所需的表项信息。
所述关键信息结构中的定位成员,从存储角度而言,就是能够起到表项存储定位作用的信息;从查询角度而言,就是能够起到查询定位作用的信息,即通过该信息成员能够找到存储在快查表中的对应表项节点。采用的快查表种类不同,对应的定位成员不同。例如,在Hash存储表中,本领域技术人员知道是根据已知的Hash函数输入参量实现表项查找时的定位。基本过程是通过已知的Hash函数输入参量,计算出一个Hash关键字,然后通过这个关键字定位到一条Hash冲突链,进而在此条冲突链上找到需要的表项节点内容,因此,Hash函数输入参量就是定位成员变量;在分级索引中,本领域技术人员知道是根据索引项实现表项查找时的定位,具体过程不再详述,因此索引项就是定位成员变量。
步骤160:需要显示某控制实体下的各条表项时,查找以所述控制实体为表头的控制链表,通过所述控制链表中的关键信息结构,定位到存储于快查表中对应的表项节点,获取所述控制实体下的各条表项信息。例如,假设需要遍历显示第一控制实体(比如VLAN1)下的全部表项信息,首先,找到以第一控制实体为控制链表头组织的控制链表,从图3或图4中可以看出该控制链表下挂接有两个关键信息结构节点;然后,在快查表中找到包含所述两个关键信息结构的表项节点,进而可以获得这两条表项的全部信息。当然,如果遍历显示时所需的信息直接在关键信息结构中就可以获得,则无需再去访问快查表中的对应表项节点,只有当所需信息还涉及到相关信息结构时,才需要访问快查表。
通过步骤150和步骤160所述的查询流程可以看出,当需要快速命中某条表项时,可以访问快查表;需要遍历显示时,可以先访问对应的控制表,然后再有针对性的访问快查表,而不需要遍历快查表的全部内容。因此,相对于现有技术为既满足快速命中又满足遍历显示的要求,而在每个控制实体下都建立一个深度确定的快查表而言,节省了内存空间。
此外优选的,可以将包含关键信息结构的表项存储于多个快查表中,这是因为有时表项中的相关信息结构内容可能有多种固定用途,比如有些相关信息固定用于支持软件转发,而有些相关信息固定作为下发硬件的基础。在这种情况下,就可以如图5所示,将一条表项的相关信息结构部分按用途分为相关信息结构1和相关信息结构2两部分,并分别存储于第一快查表和第二快查表中,这两个快查表各表项节点的关键信息结构相同,只是相关信息结构不同而已。其中,相关信息结构1用于支持软件转发,而相关信息结构2用于作为下发硬件的基础。当需要进行软件转发并访问快查表时,可只访问快查表1而不去访问快查表2;当需要下发硬件并访问快查表时,可只访问快查表2而不去访问快查表1;当需要获得全部信息时,两个快查表都进行访问。
由此可见,这种将同一表项相关、但层次不同或者用途不同的信息保存在不同的快查表中,而这些表又通过关键信息结构联系到一起,能够实现互相查找的表项存储方法,使管理更为清晰,并方便裁减。
本发明还公开了一种表项的存储装置,本装置可以设置于交换机、路由器等支持转发的设备中。请参阅图6所示,其为本发明公开的表项存储装置实施例结构示意图。所述表项的存储装置包括构建单元61、第一存储单元62、第二存储单元63、时间记录单元64、核对单元66和删除单元67。
当交换/路由设备学习到一条表项后,通过构建单元61提取该条表项部分(或全部)成员变量构建关键信息结构单元;然后将所述关键信息结构通过第一存储单元62,存储于该条表项所属的控制实体下的控制链表中;并通过第二存储单元63将包含所述关键信息结构的表项全部内容,存储于至少一个快查表中。
存储于至少一个快查表指的是,可以将表项中关键信息结构之外的成员变量,按照用途划分为多个相关信息结构,每个相关信息结构都和该条表项的关键信息结构组合存储于一个快查表中。于是,一条表项就可以存储于多个快查表中,进而便于管理和裁减。
优选的,时间记录单元64为控制链表中每个关键信息结构节点添加时间戳,以及为快查表中每个表项节点添加时间戳。如果存储节点(关键信息结构节点或表项节点)是第一次创建,则记录当时的创建时间,如果所述存储节点被刷新,则要在时间戳内记录本次刷新的时间。当然,也可以设置两个时间记录单元,分别管理快查表中的表项节点和控制链表中的关键信息结构节点。
当交换设备学习到一条新表项时,第一存储单元62在快查表中新增所述表项节点,同时第二存储单元63在控制链表中也同时新增对应的关键信息结构节点;当需要刷新一条原有表项时,第一存储单元62刷新快查表的表项节点,第二存储单元63在控制链表中新增对应的关键信息结构节点,而不刷新原关键信息结构节点;当需要删除一条原有表项时,第一存储单元62在快查表中删除所述表项节点,但第二存储单元63不删除控制链表中对应的关键信息结构节点。
进一步,定期或在系统运行的其他时间里,通过核对单元66遍历一定数量或全部的控制链表关键信息结构节点,将每个节点逐一与快查表中对应的表项节点核对时间戳。若对于控制链表中的一个关键信息结构节点,如果在快查表中不存在包含相同关键信息结构的表项节点,或者时间戳不一致的表项,都视为废弃节点,通过删除单元67将其从控制链表中删除。
以上对本发明所提供的表项存储方法、装置及查询方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种表项的存储方法,其特征在于:
提取表项中的成员变量构建该条表项的关键信息结构;
将所述关键信息结构存储于其所属控制实体下的控制链表中;
将包含所述关键信息结构的表项存储于至少一个快查表中。
2.如权利要求1所述的表项的存储方法,其特征在于还包括:
为控制链表中每个关键信息结构节点添加时间戳;
为快查表中每个表项节点添加时间戳。
3.如权利要求2所述的表项的存储方法,其特征在于还包括:
新增快查表的表项节点时,在控制链表中新增对应的关键信息结构节点;
刷新快查表的表项节点时,在控制链表中新增对应的关键信息结构节点,不刷新原关键信息结构节点;
删除快查表的表项节点时,不删除控制链表中对应的关键信息结构节点。
4.如权利要求3所述的表项的存储方法,其特征在于还包括:遍历控制链表中的关键信息结构节点,与快查表中对应的表项节点进行核对,当快查表中不存在关键信息结构节点对应的表项节点,或关键信息结构节点的时间戳与对应的表项节点的时间戳不同时,删除所述关键信息结构节点。
5.如权利要求1所述的表项的存储方法,其特征在于还包括:
需要遍历控制实体下的各条表项时,查找以所述控制实体为表头的控制链表,通过所述控制链表中的各关键信息结构,查找存储于快查表中对应的表项节点,获取所述控制实体下的各条表项信息。
6.如权利要求1所述的表项的存储方法,其特征在于:
将表项中关键信息结构以外的成员变量分为第一相关信息结构和第二相关信息结构;
第一相关信息结构和关键信息结构作为表项节点存储于第一快查表;
第二相关信息结构和关键信息结构作为表项节点存储于第二快查表。
7.一种表项的存储装置,其特征在于包括:
构建单元,用于提取表项中的成员变量构建该条表项的关键信息结构;
第一存储单元,用于将所述关键信息结构存储于其所属控制实体下的控制链表中;
第二存储单元,用于将包含所述关键信息结构的表项存储于至少一个快查表中。
8.如权利要求7所述的表项的存储装置,其特征在于还包括:
时间记录单元,用于为控制链表中每个关键信息结构节点添加时间戳,以及为快查表中每个表项节点添加时间戳。
9.如权利要求8所述的表项的存储装置,其特征在于:
第一存储单元在快查表中新增表项节点时,第二存储单元在控制链表中也同时增加对应的关键信息结构节点;第一存储单元刷新快查表的表项节点时,第二存储单元在控制链表中新增对应的关键信息结构节点,而不刷新原关键信息结构节点;第一存储单元在快查表中删除表项节点时,第二存储单元不删除控制链表中对应的关键信息结构节点。
10.如权利要求9所述的表项的存储装置,其特征在于还包括:
核对单元,用于遍历控制链表中的关键信息结构节点,与快查表中对应的表项节点核对时间戳;
删除单元,用于根据核对单元的结果,当快查表中不存在关键信息结构节点对应的表项节点,或关键信息结构节点的时间戳与对应的表项节点的时间戳不同时,删除所述关键信息结构节点。
11.一种对按照权利要求1所述的表项存储方法存储的表项进行查询的表项查询方法,其特征在于:
需要快速命中某条表项时,通过已知的关键信息结构中的定位成员变量,查找存储于快查表中对应的表项节点,获取所需的表项信息;
需要遍历控制实体下的各条表项时,查找以所述控制实体为表头的控制链表,通过所述控制链表中的各关键信息结构,查找存储于快查表中对应的表项节点,获取所述控制实体下的各条表项信息。
12.如权利要求11所述的表项查询方法,其特征在于:当所述快查表为哈希表时,所述定位成员变量为哈希函数输入参量;当所述快查表为分级索引表时,所述定位成员变量为索引项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100077969A CN100393072C (zh) | 2006-02-20 | 2006-02-20 | 一种表项的存储方法、装置及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100077969A CN100393072C (zh) | 2006-02-20 | 2006-02-20 | 一种表项的存储方法、装置及查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1812376A CN1812376A (zh) | 2006-08-02 |
CN100393072C true CN100393072C (zh) | 2008-06-04 |
Family
ID=36845069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100077969A Active CN100393072C (zh) | 2006-02-20 | 2006-02-20 | 一种表项的存储方法、装置及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100393072C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500191B (zh) * | 2013-09-17 | 2017-04-26 | 华为技术有限公司 | 一种流表配置、查询、表项删除方法及装置 |
CN103886023B (zh) * | 2014-02-24 | 2017-06-23 | 国家电网公司 | Excel数据表的存储、提取方法及系统 |
CN105591793B (zh) * | 2015-07-07 | 2019-01-18 | 新华三技术有限公司 | 一种快转表项老化方法和装置 |
CN109032533B (zh) * | 2018-08-29 | 2021-02-26 | 新华三技术有限公司 | 一种数据存储方法、装置和设备 |
CN114301865B (zh) * | 2021-12-29 | 2023-07-21 | 迈普通信技术股份有限公司 | 表项管理方法、装置、网络设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6034958A (en) * | 1997-07-11 | 2000-03-07 | Telefonaktiebolaget Lm Ericsson | VP/VC lookup function |
CN1409519A (zh) * | 2001-09-18 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种信元头转换表的动态存储管理方法 |
CN1412975A (zh) * | 2001-10-15 | 2003-04-23 | 智邦科技股份有限公司 | 路由器的ip地址的建立和寻找方法及其装置 |
CN1538663A (zh) * | 2003-04-16 | 2004-10-20 | 华为技术有限公司 | 一种采用哈希链表查找路由表项的方法 |
-
2006
- 2006-02-20 CN CNB2006100077969A patent/CN100393072C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6034958A (en) * | 1997-07-11 | 2000-03-07 | Telefonaktiebolaget Lm Ericsson | VP/VC lookup function |
CN1409519A (zh) * | 2001-09-18 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种信元头转换表的动态存储管理方法 |
CN1412975A (zh) * | 2001-10-15 | 2003-04-23 | 智邦科技股份有限公司 | 路由器的ip地址的建立和寻找方法及其装置 |
CN1538663A (zh) * | 2003-04-16 | 2004-10-20 | 华为技术有限公司 | 一种采用哈希链表查找路由表项的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1812376A (zh) | 2006-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111966284B (zh) | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 | |
CN102609446B (zh) | 一种分布式Bloom过滤系统及其使用方法 | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN100393072C (zh) | 一种表项的存储方法、装置及查询方法 | |
CN100566281C (zh) | 虚拟私用网路由查找的方法和装置 | |
CN101159619B (zh) | Arp表项的快速添加方法、装置及交换设备 | |
CN100541453C (zh) | 大容量缓存实现方法及存储系统 | |
CN103918230B (zh) | 对网络设备背景中的转发数据库进行同步 | |
CN104462549A (zh) | 一种数据处理方法和装置 | |
CN103559032B (zh) | 嵌入式系统对象管理的装置及方法 | |
CN102405623B (zh) | 路由表项的存储方法和装置 | |
CN103810244A (zh) | 一种基于数据分布的分布式数据存储系统的扩容方法 | |
CN104111924A (zh) | 一种数据库系统 | |
CN110417883B (zh) | 一种应用于区块链的点对点网络结构的设计方法 | |
CN104268159B (zh) | 一种基于动态镜像的实时数据仓库数据预存取方法 | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN105959419A (zh) | 基于一致性树的分布式存储结构的构建方法及系统 | |
CN102147798A (zh) | 处理哈希查找冲突问题的方法和装置 | |
CN102486753B (zh) | 构建及允许访问高速缓存的方法、设备及存储系统 | |
CN103116627A (zh) | 一种高并发soa技术访问数据库的方法和系统 | |
CN101534477A (zh) | 一种表项管理方法和装置 | |
WO2016124105A1 (zh) | 一种媒体接入控制地址学习方法、设备和系统 | |
CN105573674A (zh) | 一种面向海量小文件的分布式存储方法 | |
CN100479436C (zh) | 静态多接口范围匹配表的管理维护方法 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |