CN104008205B - 一种内容路由的查询方法及系统 - Google Patents
一种内容路由的查询方法及系统 Download PDFInfo
- Publication number
- CN104008205B CN104008205B CN201410272574.4A CN201410272574A CN104008205B CN 104008205 B CN104008205 B CN 104008205B CN 201410272574 A CN201410272574 A CN 201410272574A CN 104008205 B CN104008205 B CN 104008205B
- Authority
- CN
- China
- Prior art keywords
- node
- name
- name element
- hash
- array
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种内容路由的查询方法及系统,该方法包括:获取待测内容网络名字;将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;查询预先建立的存储阵列,存储阵列中以哈希值的形式存储有路由列表中所有的信息。本申请通过预先将路由列表中的内容网络名字经过哈希处理,以哈希值的形式存储在阵列中,然后对待测的内容网络名字同样进行哈希处理,然后进行哈希值的匹配工作,完成查询过程,相比于传统的查询方式,其路由压缩率更高、搜索效率也更高。
Description
技术领域
本申请涉及通信技术领域,更具体地说,涉及一种内容路由的查询方法及系统。
背景技术
随着互联网技术与应用的飞速发展,以及互联网用户的快速增长,传统IP网络中地址既表示节点位置信息又表示身份信息的方式混淆了位置和标识的功能界限,在支持内容分发业务上的局限性越来越明显。
近年来,将内容与主机在网络层分离的改进方法引起了广泛的关注。以内容为中心的网络成为未来网络的一种重要模式和发展趋势。内容中心网络采用全新的网络架构,使用层次化的数据名字而不是IP地址进行数据传递,让数据本身成为因特网架构中的核心要素。内容网络的名字由一系列的字符串元素及分隔符组成,采用URL形式直接表示传输数据。内容网络直接利用名字转发数据包,作为一种全新的转发和查询机制,其路由查询也面临着很大的挑战:名字的长度可变且没有限制增加了查询的开销;其匹配的是元素字符串而不是IP数字,传统的算法效率低下。
因此,急需一种内容路由的查询机制,来快速、准确的进行内容路由的查询。
发明内容
有鉴于此,本申请提供了一种内容路由的查询方法及系统,用于提供一种内容路由的查询机制,达到快速、准确的进行内容路由的查询的目的。
为了实现上述目的,现提出的方案如下:
一种内容路由的查询方法,包括:
获取待测内容网络名字;
将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
查询预先建立的存储阵列;
其中:所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素。
优选地,所述将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素,包括:
以分隔符为标志,将所述待测内容网络名字分解为若干个由字符串组成的名字元素。
优选地,所述存储阵列的建立过程如下:
将路由列表中所有的内容网络名字进行分解,其中每一个内容网络名字的分解过程为:以分隔符为标志,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层;
将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树,该名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层;
对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
将所述哈希编码树中的每一个节点进行编号;
将编号后的哈希编码树以阵列的形式进行存储。
优选地,所述将编号后的哈希编码树以阵列的形式进行存储,具体为:
按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;
按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处,每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号。
优选地,所述查询预先建立的存储阵列,包括:
S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
S2、获取所述当前节点所对应的名字元素的位置信息;
S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S8;
S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节点的路由指针;
S8、提示查找失败,退出查询过程。
优选地,所述查询预先建立的存储阵列,包括:
S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
S2、获取所述当前节点所对应的名字元素的位置信息;
S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S9;
S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节点的路由指针;
S9、利用待测内容网络名字更新路由列表,退出查询过程。
优选地,所述存储阵列还包括管理阵列,所述管理阵列存储有每一个过渡阵列中空闲存储条目的起始与终止位置。
优选地,所述对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,具体为:
采用递归增量哈希函数H(h,s)对名字元素树中所有的名字元素进行哈希处理,产生一个连续的相关联的哈希值序列:
定义给定名字元素序列S=(x,s1,s2,s3,…si),其中x为预设值,si为第i个名字元素,利用哈希函数H(h,s)进行计算,得到与各个名字元素对应的哈希值:h0=H(0,x)、h1=H(h0,s1)、h2=H(h1,s2)…hi=H(hi-1,si)。
一种内容路由的查询系统,包括:
获取单元,用于获取待测内容网络名字;
第一分解单元,用于将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
第一哈希处理单元,用于分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
查询单元,用于查询预先建立的存储阵列;
其中:所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素。
优选地,还包括:
存储阵列建立单元,用于建立存储阵列,所述存储阵列建立单元包括:
第二分解单元,用于将路由列表中所有的内容网络名字进行分解,其中每一个内容网络名字的分解过程为:以分隔符为标志,,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层;
组合单元,用于将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树,该名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层;
第二哈希处理单元,用于对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
编号单元,用于将所述哈希编码树中的每一个节点进行编号;
存储单元,用于将编号后的哈希编码树以阵列的形式进行存储。
优选地,所述存储单元包括:
基础阵列构建单元,用于按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;
过渡阵列构建单元,用于按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处,每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号。
优选地,还包括:更新单元,用于在路由列表中不存在与待测内容网络名字相同的路由条目时,利用待测内容网络名字对路由列表进行更新。
从上述的技术方案可以看出,本申请公开的内容路由的查询方法,通过对获取的待测内容网络名字进行分解,得到若干由字符串组成的名字元素,然后分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列,然后查询预先建立的存储阵列,存储阵列包括基础阵列和若干个过渡阵列,基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,该位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个过渡阵列按照顺序依次排列,每个过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素。本申请通过预先将路由列表中的内容网络名字经过哈希处理,以哈希值的形式存储在阵列中,然后对待测的内容网络名字同样进行哈希处理,然后进行哈希值的匹配工作,完成查询过程,相比于传统的查询方式,其路由压缩率更高、搜索效率也更高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例公开的一种内容路由的查询方法流程图;
图2为本申请实施例公开的一种存储阵列的建立方法流程图;
图3为本申请实施例公开的一种哈希编码树的结构示意图;
图4为本申请实施例公开的一种将编号后的哈希编码树以阵列形式进行存储的方法流程图;
图5为本申请实施例公开的一种查询预先建立的存储阵列的方法流程图;
图6为本申请实施例公开的另一种查询预先建立的存储阵列的方法流程图;
图7为本申请实施例公开的一种内容路由的查询系统结构示意图;
图8为本申请实施例公开的另一种内容路由的查询系统结构示意图;
图9为本申请实施例公开的一种存储单元结构示意图;
图10为本申请实施例公开的另一种内容路由的查询系统结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
实施例一
参见图1,图1为本申请实施例公开的一种内容路由的查询方法流程图。
如图1所示,该内容路由的查询方法包括:
步骤101:获取待测内容网络名字;
步骤102:将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
具体地,每个内容网络名字都包含有分隔符,我们以分隔符为标志,将待测内容网络名字分解为若干个由字符串组成的名字元素。以内容网络名字为/org/sina/game/wow举例,经过分解后,得到顺序排列的名字元素:org、sina、game、wow。
步骤103:分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
具体地,哈希处理将字节较长的名字元素映射为一个字节较短的哈希值,多个名字元素分别进行哈希处理后,得到多个对应的哈希值,多个哈希值组成一个哈希值序列。
步骤104:查询预先建立的存储阵列。
其中,所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素。
本申请实施例提供的方法,通过预先将路由列表中的内容网络名字经过哈希处理,以哈希值的形式存储在阵列中,然后对待测的内容网络名字同样进行哈希处理,然后进行哈希值的匹配工作,完成查询过程,相比于传统的查询方式,其路由压缩率更高、搜索效率也更高。
实施例二
本实施例将介绍存储阵列的建立过程,如图2所示,该过程包括:
步骤201:将路由列表中所有的内容网络名字进行分解;
其中每一个内容网络名字的分解过程为:以分隔符为标志,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层。
步骤202:将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树;
形成的名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层。
步骤203:对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
步骤204:将所述哈希编码树中的每一个节点进行编号;
步骤205:将编号后的哈希编码树以阵列的形式进行存储。
参见下表1以及附图3,表1为路由列表,顺序存储有多个内容网络名字,每个内容网络名字作为一个路由地址,其通过分隔符进行分隔。图3中树状结构为经过上述步骤201-204后形成的哈希编码树。可知,路由列表分解为多个名字元素后,名字元素分属与多个层级。举例如:org和com都属于第二层级,sina、google、baidu、soso、google都属于第二层级,等等。而哈希编码树也可以分为多个层级,其中第一层级为根节点,其不存储任何信息,第二层级包括两个节点,分别存储名字元素org和com,第三层级包括四个节点,分别存储名字元素sina、google、baidu、soso和google。可见,哈希编码树与名字元素树是相互对应的,二者之间互相映射。并且,各节点在存储名字元素的同时,还同时存储有该名字元素对应的哈希值。
内容网络名字 |
/org/sina |
/org/sina/play |
/org/sina/game/wow |
/org/google |
/org/google/videos |
/com/baidu |
/com/baidu/maps |
/com/soso |
/com/google |
/com/google/news |
表1
而在对哈希编码树中的节点进行编号时,同理参见图3,我们将根节点编号为1,从上至下,从左至右遍历哈希编码树,按照顺序为每个节点进行编号。
这里提到了哈希值的概念,我们介绍一下对名字元素进行哈希处理,得到哈希编码树的过程:
我们采用一种n元语法的递归增量哈希函数H(h,s),来对名字元素树中所有的名字元素进行哈希处理,产生一个连续的相关联的哈希值序列。也就是说,哈希函数对于首次通过第i个语法产生的哈希值与第i-1个语法产生的哈希值是相互关联的。
我们定义名字元素序列S=(x,s1,s2,s3,…si),其中x为预设值,主要是为了算法的需要而引入的一个值,其可以是内容网络名字的格式scheme。si为第i个名字元素,利用哈希函数H(h,s)进行计算,得到与各个名字元素对应的哈希值:h0=H(0,x)、h1=H(h0,s1)、h2=H(h1,s2)…hi=H(hi-1,si)。可见,每一个哈希值均是产生下一个哈希值所必须的参数,即哈希值序列中的每个哈希值均是相关联的。
通过这种哈希处理,降低了名字元素树中属于不同父节点的相同的名字元素可能产生相同的哈希值的概率。例如,如图3所示,节点7中的名字元素google与节点D中的名字元素google相同,但是二者分属于不同的父节点2和父节点9。传统的算法有可能会将节点7中的名字元素与节点D中的名字元素编码为相同的哈希值,这当然是不正确的,而本申请所采用的哈希处理方法,通过综合考虑当前节点所存储的名字元素以及当前节点的上一节点的哈希值,生成的哈希值能够有效的避免上述错误情况,提高了名字查询的正确性。
实施例三
上述实施例二中步骤205:将编号后的哈希编码树以阵列的形式进行存储,其具体实现过程参见图4所示:
步骤401:按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中;
所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量。
步骤402:按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处;
每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号。
按照上述建立的基础阵列和过渡阵列,实施例一中的步骤104:查询预先建立的存储阵列,可以参照图5的方法实现:
步骤S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
步骤S2、获取所述当前节点所对应的名字元素的位置信息;
步骤S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
步骤S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S8;
步骤S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
步骤S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
步骤S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节点的路由指针;
步骤S8、提示查找失败,退出查询过程。
另外一种实现方式,参见图6所示:
与图5所不同的,仅仅是将原步骤S8改变为步骤S9,步骤S9:利用待测内容网络名字更新路由列表,退出查询过程。
上述两种实现方式,当待测内容网络名字在路由列表中时,按照上述方式可以查找到最终的路由指针,利用该路由指针,确定其在路由列表中的位置。当待测内容网络名字不在路由列表中时,第二种方式可以将该待测内容网络名字添加到路由列表中,然后由更新后的路由列表来更新存储阵列。
在上述实施例的基础上,存储阵列除了包括有基础阵列和过渡阵列,还可以包括一个管理阵列。该管理阵列存储有每一个过渡阵列中空闲存储条目的起始与终止位置。在此基础上,在向过渡阵列中存放名字元素的状态信息时,可以在管理阵列的指导下,存放在空闲条目中。
实施例四
与实施例相对应的,本实施例将提供一种内容路由的查询系统,参见图7:
该查询系统包括:
获取单元71,用于获取待测内容网络名字;
第一分解单元72,用于将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
第一哈希处理单元73,用于分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
查询单元74,用于查询预先建立的存储阵列;
其中:所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素。
本申请实施例提供的查询系统,通过预先将路由列表中的内容网络名字经过哈希处理,以哈希值的形式存储在阵列中,然后对待测的内容网络名字同样进行哈希处理,然后进行哈希值的匹配工作,完成查询过程,相比于传统的查询方式,其路由压缩率更高、搜索效率也更高。
实施例五
参见图8,在上一实施例的基础上,本实施例公开了另一种内容路由的查询系统,相比于上一实施例,本实施例进一步增加了用于建立存储阵列的存储阵列建立单元75,该存储阵列建立单元75包括:
第二分解单元81,用于将路由列表中所有的内容网络名字进行分解,其中每一个内容网络名字的分解过程为:以分隔符为标志,,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层;
组合单元82,用于将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树,该名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层;
第二哈希处理单元83,用于对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
编号单元84,用于将所述哈希编码树中的每一个节点进行编号;
存储单元85,用于将编号后的哈希编码树以阵列的形式进行存储。
具体地,存储单元85还可以进一步细分,如图9所示,存储单元85包括:
基础阵列构建单元851,用于按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;
过渡阵列构建单元852,用于按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处,每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号。
通过基础阵列构建单元851和过渡阵列构建单元852,将哈希编码树以阵列的形式进行存储,便于后续的查询使用。
在此基础上,我们还可以建立一个管理阵列,该管理阵列存储有每一个过渡阵列中空闲存储条目的起始与终止位置。因此,在向过渡阵列中存放名字元素的状态信息时,可以在管理阵列的指导下,存放在空闲条目中。
实施例六
在上述实施例的基础上,参见图10所示,本申请的查询系统还可以进一步增加一个更新单元76,该更新单元用于在路由列表中不存在与待测内容网络名字相同的路由条目时,利用待测内容网络名字对路由列表进行更新。
当然,上述更新并不仅仅限于将新的内容网络名字添加到路由列表中,其还可以将一些长期不使用的路由名称从存储阵列中删除掉,从而节省有限的存储空间。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种内容路由的查询方法,其特征在于,包括:
获取待测内容网络名字;
将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
查询预先建立的存储阵列;
其中:所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素;
所述存储阵列的建立过程如下:
将路由列表中所有的内容网络名字进行分解,其中每一个内容网络名字的分解过程为:以分隔符为标志,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层;
将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树,该名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层;
对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名 字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
将所述哈希编码树中的每一个节点进行编号;
将编号后的哈希编码树以阵列的形式进行存储;
所述将编号后的哈希编码树以阵列的形式进行存储,具体为:
按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;
按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处,每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
所述查询预先建立的存储阵列,包括:
S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
S2、获取所述当前节点所对应的名字元素的位置信息;
S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S8;
S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节 点的路由指针;
S8、提示查找失败,退出查询过程。
2.根据权利要求1所述的查询方法,其特征在于,所述将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素,包括:
以分隔符为标志,将所述待测内容网络名字分解为若干个由字符串组成的名字元素。
3.根据权利要求1所述的查询方法,其特征在于,所述查询预先建立的存储阵列,包括:
S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
S2、获取所述当前节点所对应的名字元素的位置信息;
S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S9;
S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节点的路由指针;
S9、利用待测内容网络名字更新路由列表,退出查询过程。
4.根据权利要求3所述的查询方法,其特征在于,所述存储阵列还包括管理阵列,所述管理阵列存储有每一个过渡阵列中空闲存储条目的起始与终止位置。
5.根据权利要求1所述的查询方法,其特征在于,所述对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,具体为:
采用递归增量哈希函数H(h,s)对名字元素树中所有的名字元素进行哈希处理,产生一个连续的相关联的哈希值序列:
定义给定名字元素序列S=(x,s1,s2,s3,…si),其中x为预设值,si为第i个名字元素,利用哈希函数H(h,s)进行计算,得到与各个名字元素对应的哈希值:h0=H(0,x)、h1=H(h0,s1)、h2=H(h1,s2)…hi=H(hi-1,si)。
6.一种内容路由的查询系统,其特征在于,包括:
获取单元,用于获取待测内容网络名字;
第一分解单元,用于将所述待测内容网络名字进行分解,得到若干个由字符串组成的名字元素;
第一哈希处理单元,用于分别对每个名字元素进行哈希处理,得到对应的待测哈希值序列;
查询单元,用于查询预先建立的存储阵列;
其中:所述存储阵列包括基础阵列和若干个过渡阵列,所述基础阵列中按照节点的编号顺序,分别存储有哈希编码树中各个节点对应的名字元素的位置信息,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;若干个所述过渡阵列按照顺序依次排列,每个所述过渡阵列中存储有若干个节点的名字元素的状态信息,其中每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
其中,哈希编码树由多个具有编号的节点、各节点对应保存的名字元素及名字元素的哈希值构成,其中各节点对应保存的名字元素为通过对路由列表中所有的内容网络名字进行分解而得到的,哈希编码树中处于同一层的节点分别存储的是:路由列表中每个内容网络名字分解后处于同一层级的名字元素;
还包括:
存储阵列建立单元,用于建立存储阵列,所述存储阵列建立单元包括:
第二分解单元,用于将路由列表中所有的内容网络名字进行分解,其中每一个内容网络名字的分解过程为:以分隔符为标志,将内容网络名字分解为若干个由字符串组成的名字元素,按照从左到右的顺序,将每一个名字元素确定为一层;
组合单元,用于将所有的内容网络名字分解后得到的每一个名字元素按照其所属层级进行组合,形成具有层次结构的名字元素树,该名字元素树中除去根节点外的每个节点均存储有一个名字元素,保存有同一层名字元素的节点属于同一层;
第二哈希处理单元,用于对所述名字元素树中的每一个名字元素进行哈希处理,得到与每一个名字元素对应的哈希值,将哈希值与对应的名字元素共同保存在节点中,得到哈希编码树;
编号单元,用于将所述哈希编码树中的每一个节点进行编号;
存储单元,用于将编号后的哈希编码树以阵列的形式进行存储;
所述存储单元包括:
基础阵列构建单元,用于按照编号顺序,将哈希编码树中每一个节点对应的名字元素的位置信息存储在基础阵列中,所述位置信息包括:每个名字元素的状态信息所在的过渡阵列,以及在该过渡阵列中的偏移量;
过渡阵列构建单元,用于按照基础阵列中存储的每个名字元素的位置信息的指示,将对应的名字元素的状态信息存储在对应的过渡阵列中的指定位置处,每个节点的名字元素的状态信息包括:该节点对应的路由指针、该节点对应的子节点的数量、子节点对应的哈希值以及子节点的节点编号;
所述查询单元查询预先建立的存储阵列的过程,包括:
S1、令基础阵列中首个编号的节点为当前节点,令所述待测哈希值序列中的第一个哈希值为当前哈希值;
S2、获取所述当前节点所对应的名字元素的位置信息;
S3、根据所述当前节点所对应的名字元素的位置信息获取指定的过渡阵列中当前节点所对应的名字元素的状态信息;
S4、判断当前节点所对应的名字元素的状态信息中包含的若干个子节点分别对应的哈希值组中是否存在与所述当前哈希值相同的,若存在,执行步骤S5,否则执行步骤S8;
S5、获取相同哈希值的子节点的节点编号,并将该节点编号确定为基础阵列中的新的当前节点,将所述待测哈希值序列中的下一个哈希值确定为新的当前哈希值;
S6、判断当前节点是否为待测哈希值序列中最后一个哈希值,如果是,执行步骤S7,否则执行步骤S2;
S7、获取与待测哈希值序列中最后一个哈希值相同的哈希值所对应的节点的路由指针;
S8、提示查找失败,退出查询过程。
7.根据权利要求6所述的查询系统,其特征在于,还包括:更新单元,用于在路由列表中不存在与待测内容网络名字相同的路由条目时,利用待测内容网络名字对路由列表进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410272574.4A CN104008205B (zh) | 2014-06-18 | 2014-06-18 | 一种内容路由的查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410272574.4A CN104008205B (zh) | 2014-06-18 | 2014-06-18 | 一种内容路由的查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008205A CN104008205A (zh) | 2014-08-27 |
CN104008205B true CN104008205B (zh) | 2017-12-12 |
Family
ID=51368862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410272574.4A Active CN104008205B (zh) | 2014-06-18 | 2014-06-18 | 一种内容路由的查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008205B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786931B (zh) * | 2014-12-26 | 2019-06-04 | 北京神州泰岳软件股份有限公司 | 一种树结构资源存储、查询的方法和装置 |
CN105955982A (zh) * | 2016-04-18 | 2016-09-21 | 上海泥娃通信科技有限公司 | 信息序列特征编码和检索的方法和系统 |
CN105843960B (zh) * | 2016-04-18 | 2019-12-06 | 上海泥娃通信科技有限公司 | 基于语义树的索引方法和系统 |
CN108121791A (zh) * | 2017-12-14 | 2018-06-05 | 苏州泥娃软件科技有限公司 | 一种交通大数据路径可搜索系统 |
CN113901280B (zh) * | 2021-12-07 | 2022-03-11 | 南京集成电路设计服务产业创新中心有限公司 | 一种集成电路展平式设计的字符串存储与查询系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2495106B (en) * | 2011-09-28 | 2020-09-09 | Metaswitch Networks Ltd | Searching and storing data in a database |
-
2014
- 2014-06-18 CN CN201410272574.4A patent/CN104008205B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
Non-Patent Citations (1)
Title |
---|
一种基于哈希编码的内容路由查询匹配机制;杜传震 等;《计算机应用研究》;20140418;第31卷(第10期);第3081-3086页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104008205A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104008205B (zh) | 一种内容路由的查询方法及系统 | |
CN104199986B (zh) | 基于hbase和geohash的矢量数据空间索引方法 | |
CN104904167B (zh) | 通信网络中对于分组处理的高性能基于哈希的查找 | |
CN104216895B (zh) | 一种生成poi数据的方法及装置 | |
CN103123650B (zh) | 一种基于整数映射的xml数据库全文索引方法 | |
CN104346444B (zh) | 一种基于路网反空间关键字查询的最佳选址方法 | |
CN107566150A (zh) | 处理云资源的方法和物理节点 | |
CN106777163A (zh) | 基于红黑树的ip地址所属地查询方法及系统 | |
CN101673307A (zh) | 空间数据索引方法及系统 | |
CN104836841B (zh) | 一种传感器网络传感节点标识解析过程信息的管理方法 | |
CN103377237B (zh) | 高维数据的近邻搜索方法以及快速近似图像搜索方法 | |
CN109471905A (zh) | 一种支持时间范围和属性范围复合查询的区块链索引方法 | |
CN103699647B (zh) | 一种字符串词典的索引方法及系统 | |
EP2544414A1 (en) | Method and device for storing routing table entry | |
CN108733803A (zh) | 一种道路网络下多用户空间关键词查询方法 | |
CN101286935A (zh) | 一种基于ip地址范围的路由查找方法 | |
CN105141525A (zh) | IPv6路由查找方法及装置 | |
CN106203494A (zh) | 一种基于内存计算的并行化聚类方法 | |
CN109144514A (zh) | Json格式数据解析存储方法及装置 | |
CN107634765A (zh) | 一种物联网编码方法及系统 | |
CN108009265A (zh) | 一种云计算环境下的空间数据索引方法 | |
CN102508971A (zh) | 概念设计阶段产品功能模型建立方法 | |
CN102378407B (zh) | 一种物联网中的对象名字解析系统及其解析方法 | |
CN105025013B (zh) | 基于优先级Trie树的动态IP匹配模型的建立方法 | |
CN106095952A (zh) | 基于键值云存储的时空范围内海量过车记录快速查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |