CN104866502A - 数据匹配的方法及装置 - Google Patents
数据匹配的方法及装置 Download PDFInfo
- Publication number
- CN104866502A CN104866502A CN201410064599.5A CN201410064599A CN104866502A CN 104866502 A CN104866502 A CN 104866502A CN 201410064599 A CN201410064599 A CN 201410064599A CN 104866502 A CN104866502 A CN 104866502A
- Authority
- CN
- China
- Prior art keywords
- found
- key
- search
- key word
- content
- 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.)
- Granted
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
-
- 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/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- 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/9027—Trees
-
- 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/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据匹配的方法,根据待查找内容生成查找表;对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容;同时本发明还公开了一种数据匹配的装置。
Description
技术领域
本发明涉及数据查找技术,尤其涉及一种数据匹配的方法及装置。
背景技术
近年来,随着因特网的迅速普及和多媒体业务需求的不断增加,使网络的链路速率发展到100Gb/s,甚至更高,为了设计出满足网络要求的交换设备,研究高速查找算法是非常重要的。
现在用于高速查找的器件一般为内容可寻址存储器(CAM,ContentAddressable Memory)和三态内容寻址存储器(TCAM,Ternary ContentAddressable Memory)。CAM在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。概括地讲,RAM是一个根据地址读、写数据的存储单元,而CAM和RAM恰恰相反,它返回的是与端口数据内容相匹配的地址;TCAM中每个bit位有三种状态,除掉“0”状态和“1”状态外,还有一个“don’tcare”状态,所以称为“三态”,正是TCAM的这个第三种状态特征使TCAM既能进行精确匹配查找,又能进行模糊匹配查找,而CAM没有第三种状态,所以只能进行精确匹配查找。
TCAM和CAM具有查找速度快、操作简单的优点,但同时它也具有3个明显的缺点:成本高、功耗大和配置更新复杂。
发明内容
为解决现有存在的技术问题,本发明提供一种数据匹配的方法及装置。
本发明的技术方案是这样实现的:
本发明提供的一种数据匹配的方法,该方法包括:根据待查找内容生成查找表;对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容。
上述方案中,所述根据待查找内容生成查找表为:对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表。
上述方案中,所述对待查找关键字进行哈希处理为:采用两个以上的哈希函数对所述获得的待查找关键字进行哈希处理,获得所述待查找关键字的两个以上不同的哈希索引值。
上述方案中,所述根据待查找关键字的哈希索引值在查找表中查找到匹配的查找内容为:将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容。
上述方案中,所述在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的查找内容为:将所述待查找关键字的键值与所述条目中树形结构的节点内查找关键字的键值进行对比,当所述待查找关键字的键值与所述节点内查找关键字的键值相等时,所述节点的查找关键字与所述待查找关键字相同,读取所述查找关键字对应的待查找内容。
本发明提供的一种数据匹配的装置,该装置包括:控制单元、查找单元、查找表生成单元;其中,
所述查找表生成单元,用于根据待查找内容生成查找表,发送所述生成的查找表到查找单元;
所述控制单元,用于对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值,发送获得的所述待查找关键字的哈希索引值到所述查找单元;
所述查找单元,用于根据待查找关键字的哈希索引值在所述查找表中查找
2到匹配的待查找内容。
上述方案中,所述查找表生成单元,具体用于对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表。
上述方案中,所述控制单元,具体用于采用两个以上的哈希函数对所述获得的待查找关键字进行哈希处理,获得所述待查找关键字的两个以上不同的哈希索引值。
上述方案中,所述查找单元,具体用于将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容。
上述方案中,所述查找单元,具体用于将所述待查找关键字的键值与所述条目中树形结构的节点内查找关键字的键值进行对比,当所述待查找关键字的键值与所述节点内查找关键字的键值相等时,所述节点的查找关键字与所述待查找关键字相同,读取所述查找关键字对应的待查找内容。
本发明提供了一种数据匹配的方法及装置,根据待查找内容生成查找表;对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容;如此,能够降低设备的成本和功耗,查找表使用树形结构,节省了内存,不需要冗余的条目来存放产生哈希冲突的查找内容。
附图说明
图1为本发明实施例一提供一种数据匹配的方法的流程示意图;
图2为本发明实施例一提供的查找表的结构示意图;
图3为本发明实施例一提供的生成查找表的流程示意图;
图4为本发明实施例一提供的在查找表查找匹配条目的流程示意图;
图5为本发明实施例二提供一种数据匹配的装置的结构示意图。
图中:1,控制单元;2,查找单元;3,查找表生成单元。
具体实施方式
本发明实施例中,根据待查找内容生成查找表;对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容。
下面通过附图及具体实施例对本发明做进一步的详细说明。
实施例一
本发明实施例实现一种数据匹配的方法,如图1所示,该方法具体通过以
下步骤实现:
步骤101:网络互联设备根据待查找内容生成查找表;
具体的,网络互联设备对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表;其中,树形结构的条目中每个节点均包括查找关键字的键值和指示是根节点还是叶子节点的指示信息,所述键值为所述查找关键字对应的二进制或者其他数制的数值,所述指示信息可以是1比特,所述查找关键字除了用于确定匹配的查找内容外还用于确定搜索路径;所述网络互联设备可以是交换机或路由器等用于网络连接的设备。
所述树形结构可以为2-3树、二叉树或多叉树等树形结构,以2-3树为例,如图2所示,对第一查找关键字key1、第二查找关键字key2、第三查找关键字key3、第四查找关键字key4、第五查找关键字key5、第六查找关键字key6进行哈希处理,假设获得的哈希索引值相同,这样,将key1、key2、key3、key4、key5、key6作为一个查找表的条目,所述条目的哈希索引值为hash idxl,其中,key1、key2、key3、key4、key5、key6的键值按照从小到大关系排序为:key3<key1<key4<key5<key2<key6;所述键值按照从小到大关系排序对应数组的排序为:a[0]<a[1]<a[2]<a[3]<a[4]<a[5],从所述数组的排序中提取根节点的左端点和右端点,取查找关键字总数减1的差除以3取整数得到的对应数组作为左端点,即(6-1)÷3=1,选取a[1]作为左端点,查找关键字总数减1的差乘以2的积然后除以3的商取整数再加1得到的对应数组作为右端点,即{(6-1)×2÷3}+1=4,选取a[4]作为右端点,同时所述根节点还包括左指针、中指针和右指针,所述根节点的左子树的节点包括key3的键值和中止指令信息,所述根节点的中间子树的节点包括key4的键值、key5的键值和中止指令信息,所述根节点的右子树的节点包括key6的键值和中止指令信息,所述根节点的左指针指向左子树的节点,所述中指针指向中间子树的节点,所述右指针指向右子树的节点,所述中止指令信息指示停止当前查找流程;所述中止指令信息为12’hFFF,所述12’hFFF为verilog的语法表示16进制的方式,表示12比特位(bit),每个bit都是1;当在所述2-3树中查找时,根据Hash idx1的值查找1K地址范围内的具体位置以及根据2-3树中的左指针、中指针、指针查找到在3K范围内的具体位置。
步骤102:网络互联设备对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;
具体的,网络互联设备根据数据包的待查找关键字段确定待查找关键字,通过哈希函数对获得的待查找关键字进行哈希处理,获得缩减位宽的待查找关键字的哈希索引值;所述哈希函数采用能够将多比特位的数据处理为少比特位的数据,并且所述少比特位的数据分布比较均匀的函数,例如可以采用循环冗 余校验码(CRC,Cyclic Redundancy Check)生成多项式;
其中,所述网络互联设备根据数据包的待查找关键字段确定待查找关键字可以为:从数据包中提取待查找关键字段,根据所述待查找关键字段在数据库中查找所述待查找关键字段对应的名称,所述名称即为所述待查找关键字段的待查找关键字,所述待查找关键字段包括源、目的硬件地址、虚拟局域网(VLAN,Virtual Local Area Network)、优先级等数据包内的关键信息,所述待查找关键字是唯一的,并且标识对应的所述关键字段,所述待查找关键字的宽度为N比特,当所述待查找关键字的宽度不足N比特时,在所述待查找关键字的宽度前面补零,这样所述待查找关键字的宽度达到查找表中条目规定的位宽。
步骤103:网络互联设备根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容;
具体的,网络互联设备将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容;所述键值为所述待查找关键字对应的二进制或者其他数制的数值;
具体的,网络互联设备将所述待查找关键字的键值与所述条目中树形结构的节点内查找关键字的键值进行对比,当所述待查找关键字的键值与所述节点内查找关键字的键值相等时,所述节点的查找关键字与所述待查找关键字相同,读取所述查找关键字对应的待查找内容。
本实施例中,为了在树形结构中快速查找到匹配的查找内容,网络互联设备还可以采用两个以上的哈希函数对获得的待查找关键字进行哈希处理,获得所述待查找关键字两个以上不同的哈希索引值,同时在查找表中两个以上的条目内查找匹配的待查找内容。
所述网络互联设备根据待查找内容生成查找表,如图3所示,包括以下几个步骤:
步骤301:网络互联设备将哈希索引值相同的查找关键字的键值按照大小关系排序;
其中,网络互联设备将获得的相同哈希索引值的查找关键字的键值生成查找表的一个条目,不同的哈希索引值的查找关键字的键值生成多个条目,将所述多个条目合并生成查找表;在所述每个条目中的所有待查找关键字的键值按照从小到大排序,将排序后的键值设置在一个数组内。
例如,所述查找表的数据结构为2-3树时,所述数组记为a[n],其中n为查找关键字总数减一。
步骤302:网络互联设备从所述查找关键字的键值的排序中提取键值,并将提取的键值保存在条目的节点内;
其中,所述查找表每个条目的最高层为树根层,记为第一层;所述树根层的下一层为第二层,依次递增;每层的每个节点的键值从所述数组中提取,在所述数组中提取左右两个端点,所述数组中查找关键字总数减1的差除以3取整数的键值作为左端点,所述数组中查找关键字总数减1的差乘以2的积然后除以3的商取整数再加1的键值作为右端点,将所述数组剩余的键值划分为三段数组,其中,第一段数组的右端点小于第二段数组的左端点,第三段数组的左端点大于第二段数组的右端点,分别从所述三段数组中提取下一层节点的左右端点,并且将每段数组剩余的键值分为三段数组,依次循环至所述每段数组剩余的键值只有两个或者少于两个为止;
例如,所述查找表的条目的数据结构为2-3树时,从所述查找关键字的键值的排序中提取键值,并将提取的键值保存在条目的2-3树的节点内;第一层每个节点的左右端点从数组a[n]中提取,取a[i]作为左端点,取a[j]作为右端点,其中,i为n/3取整数,j为2n/3取整数加1,取完左、右端点后,将数组a[n]剩余的键值划分为三段数组a[n1]、a[n2]、a[n3],其中,a[n1]为小于a[i]的第一段数组,a[n3]为大于a[j]的第二段数组,a[n2]为在a[i]、a[j]之间的第三段数组;对所述数组a[n1]、a[n2]、a[n3]再分别取左右端点,按照取a[n]数组左右端点的方式,分别取左右端点后将每个数组再分成三段数组,这样重复取左右端点直到每个数组剩下的端点只有两个或少于两个;
将生成的2-3树的条目保存到对应的查找表存储区和备份查找表存储区中,并且将每个条目的每个节点对应的待查找内容保存到查找表中;
所述生成的查找表可以保存在静态随机存储器(SRAM,static random accessmemory)内,SRAM能够在具有高速查找算法的情况下,降低成本和功耗,同时又能满足网络的高速率要求。
所述网络互联设备根据待查找关键字的哈希索引值在查找表中查找到匹配的查找内容,如图4所示,具体通过以下步骤实现:
步骤401:网络互联设备根据待查找关键字的哈希索引值在查找表中查找到对应的条目,之后根据待查找关键字的键值判断与所述待查找关键字匹配的查找关键字是否是条目中树形结构的叶子节点,如果是,则执行步骤403,如果不是,则执行步骤402;
步骤402:网络互联设备将所述待查找关键字与根节点的查找关键字进行对比,当所述待查找关键字与所述根节点的查找关键字相同时,读取所述根节点对应的待查找内容;
其中,网络互联设备将所述待查找关键字的键值和根节点中查找关键字的端点对应的键值进行对比,如果所述待查找关键字的键值小于所述查找关键字的左端点对应的键值时,则取出所述根节点的左指针,读取所述左指针对应的节点,如果所述待查找关键字的键值大于所述查找关键字的左端点对应的键值但是小于所述查找关键字的右端点对应的键值时,则取出所述根节点的中间指针,读取所述中间指针对应的节点,如果所述待查找关键字的键值大于所述查找关键字的右端点对应的键值时,则取出所述根节点的右指针,读取所述右指针对应的节点并判断所述对应的节点是否是叶子节点,如果所述对应的节点是叶子节点,则执行步骤403,如果所述对应的节点不是叶子节点,则对所述对应的节点重新执行步骤402;如果所述待查找关键字的键值等于查找关键字的左端点或右端点对应的键值,则所述待查找关键字精确匹配到查找内容,执行左端点或右端点对应的动作。
步骤403:网络互联设备将所述待查找关键字与叶子节点的查找关键字进行对比,当所述待查找关键字与所述叶子节点的查找关键字相同时,读取所述叶子节点对应的待查找内容;
其中,网络互联设备将所述待查找关键字的键值和叶子节点中查找关键字的端点对应的键值进行对比,如果所述待查找关键字的键值和所述查找关键字的左端点对应的键值相等时,则所述待查找关键字与所述左端点对应的动作已经精确匹配,否则将所述待查找关键字的键值与所述查找关键字的右端点对应的键值进行对比,如果相等则所述待查找关键字与所述右端点对应的动作已经精确匹配;如果所述待查找关键字的键值与所述叶子节点中查找关键字的左、右端点对应的键值都不相等则查找结束,所述查找表中没有待查找关键字对应的查找内容。
这里,所述叶子节点的判断可以根据节点包括的指示信息来确认。
为了使查找的速度提高,查找的深度不要超过两层,这样每个待查找哈希值对应的2-3树可以容纳8个哈希冲突。为了容纳更多的冲突,可以使用两个以上的哈希函数,将待查找的内容分成若干组,每组对应一个哈希函数,对每个组的内容分别对各自的哈希函数求待查找关键字的哈希索引值;将查找关键字的哈希索引值根据两个以上的哈希函数进行哈希处理,进而生成了查找表的两个以上的条目。查找时,对查找表的两个以上的条目同时并行查找,这样提高了查找的速度。
在需要对已经生成的查找表进行更新时,根据增加或者删除查找表中的查找关键字调整查找表的数据结构,处理器开始根据新的查找表配置备份查找表,完成备份查找表更新后,处理器请求切换到备份查找表上查找,完成切换后上报中断给处理器,处理器接收到中断后开始更新查找表,更新完查找表后,请求从备份查找表切换到新的查找表上查找;所述更新包括修改、增加或删除数据。
实施例二
本发明实施例提供一种数据匹配的装置,如图9所示,该装置包括控制单元1、查找单元2、查找表生成单元3;其中:
所述查找表生成单元3根据待查找内容生成查找表;
具体的,所述查找表生成单元3对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表;其中,树形结构的条目中每个节点均包括查找关键字的键值和指示是中间节点还是叶子节点的指示信息,所述键值为所述查找关键字对应的二进制或者其他数制的数值,所述指示信息可以是1比特,所述查找关键字除了用于确定匹配的查找内容外还用于确定搜索路径。
所述控制单元1对待查找关键字进行哈希处理,获得所述待查找关键字的哈希索引值;
具体的,所述控制单元1根据数据包的待查找关键字段确定待查找关键字,通过哈希函数对获得的待查找关键字进行哈希处理,获得缩减位宽的待查找关键字的哈希索引值;
其中,所述根据数据包的待查找关键字段确定待查找关键字可以为:从数据包中提取待查找关键字段,根据所述待查找关键字段在数据库中查找所述待查找关键字段对应的名称,所述名称即为所述待查找关键字段的待查找关键字,所述关键字段为源、目的硬件地址、虚拟局域网(VLAN,Virtual Local AreaNetwork)、优先级等数据包内的关键信息,所述待查找关键字是唯一的,并且标识对应的所述关键字段,所述待查找关键字的宽度为N比特,当所述待查找关键字的宽度不足N比特时,在所述待查找关键字的宽度前面补零,这样所述待查找关键字的宽度达到查找表中条目规定的位宽。
本实施例中,为了在树形结构的数据中快速查找到匹配的查找内容,所述控制单元1采用两个以上的哈希函数对获得的待查找关键字进行哈希处理,获得所述待查找关键字两个以上不同的哈希索引值。
所述查找单元2根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容;
具体的,所述查找单元2将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容。
所述查找表生成单元3,具体用于将哈希索引值相同的查找关键字的键值按照大小关系排序,将排序后的键值设置在一个数组内;例如,所述查找表的数据结构为2-3树时,所述数组记为a[n];从所述待查找关键字的键值的排序中提取键值,并将提取的键值保存在条目的2-3树的节点内;
所述查找表生成单元3将生成的2-3树的条目保存到对应的查找表存储区和备份查找表存储区中,并且将每个条目的每个节点对应的待查找内容保存到查找表中;所述生成的查找表可以保存在静态随机存储器(SRAM,static randomaccess memory)内,SRAM能够在具有高速查找算法的情况下,降低成本和功耗,同时又能满足网络的高速率要求。
所述查找单元2,具体用于根据待查找关键字的哈希索引值在查找表中查找到对应的条目,之后根据待查找关键字的键值判断与所述待查找关键字匹配的查找关键字是否是条目中树形结构的叶子节点,如果所述节点不是叶子节点,将所述待查找关键字的键值与根节点中查找关键字的键值进行对比,当所述待查找关键字的键值与所述根节点中查找关键字的键值相同时,读取所述根节点对应的待查找内容;如果所述节点是叶子节点,将所述待查找关键字的键值与叶子节点中查找关键字的键值进行对比,当所述待查找关键字的键值与所述叶子节点中查找关键字的键值相同时,读取所述叶子节点对应的待查找内容。
所述查找表生成单元3在需要对已经生成的查找表进行更新时,根据新的查找关键字调整查找表的数据结构,包括:根据新的查找表配置备份查找表,完成备份查找表更新后,请求切换到备份查找表上查找,完成切换后上报中断给控制单元1;所述控制单元1接收到中断后开始更新查找表,更新完查找表后,请求从备份查找表切换到新的查找表上查找。所述更新包括修改、增加或删除数据。
所述控制单元1可以是网络互联设备的处理器,所述查找单元2可以是网络互联设备的SRAM,所述查找表生成单元3可以是网络互联设备的处理器。
本发明实施例所述数据匹配的方法如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式,所述存储介质包括但不限于U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁盘存储器、CD-ROM、光学存储器等。
本申请是根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在所述计算机可读存储器中的指令产生包括指令装置的制造品,所述指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的数据匹配的方法。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据匹配的方法,其特征在于,该方法包括:根据待查找内容生成查找表;对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值;根据待查找关键字的哈希索引值在查找表中查找到匹配的待查找内容。
2.根据权利要求1所述的方法,其特征在于,所述根据待查找内容生成查找表为:对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表。
3.根据权利要求1或2所述的方法,其特征在于,所述对待查找关键字进行哈希处理为:采用两个以上的哈希函数对所述获得的待查找关键字进行哈希处理,获得所述待查找关键字的两个以上不同的哈希索引值。
4.根据权利要求1所述的方法,其特征在于,所述根据待查找关键字的哈希索引值在查找表中查找到匹配的查找内容为:将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容。
5.根据权利要求4所述的方法,其特征在于,所述在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的查找内容为:将所述待查找关键字的键值与所述条目中树形结构的节点内查找关键字的键值进行对比,当所述待查找关键字的键值与所述节点内查找关键字的键值相等时,所述节点的查找关键字与所述待查找关键字相同,读取所述查找关键字对应的待查找内容。
6.一种数据匹配的装置,其特征在于,该装置包括:控制单元、查找单元、查找表生成单元;其中,
所述查找表生成单元,用于根据待查找内容生成查找表,发送所述生成的查找表到查找单元;
所述控制单元,用于对待查找关键字进行哈希处理,获得待查找关键字的哈希索引值,发送获得的所述待查找关键字的哈希索引值到所述查找单元;
所述查找单元,用于根据待查找关键字的哈希索引值在所述查找表中查找到匹配的待查找内容。
7.根据权利要求6所述的装置,其特征在于,所述查找表生成单元,具体用于对待查找内容的查找关键字进行哈希处理,得到待查找内容的查找关键字的哈希索引值,将所有哈希索引值相同的查找关键字作为一个条目,将所述条目构建为树形结构,所有条目组成查找表。
8.根据权利要求6或7所述的装置,其特征在于,所述控制单元,具体用于采用两个以上的哈希函数对所述获得的待查找关键字进行哈希处理,获得所述待查找关键字的两个以上不同的哈希索引值。
9.根据权利要求6所述的装置,其特征在于,所述查找单元,具体用于将待查找关键字的哈希索引值作为地址,在查找表中查找到对应的条目,根据所述待查找关键字的键值确定与所述待查找关键字匹配的查找关键字在条目中树形结构的位置,在所确定的位置查找到与所述待查找关键字具有相等键值的查找关键字,执行所述查找关键字对应的待查找内容。
10.根据权利要求9所述的装置,其特征在于,所述查找单元,具体用于将所述待查找关键字的键值与所述条目中树形结构的节点内查找关键字的键值进行对比,当所述待查找关键字的键值与所述节点内查找关键字的键值相等时,所述节点的查找关键字与所述待查找关键字相同,读取所述查找关键字对应的待查找内容。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410064599.5A CN104866502B (zh) | 2014-02-25 | 2014-02-25 | 数据匹配的方法及装置 |
EP14884011.9A EP3113036B1 (en) | 2014-02-25 | 2014-05-19 | Data matching method and apparatus and computer storage medium |
US15/121,547 US10671667B2 (en) | 2014-02-25 | 2014-05-19 | Data matching method and apparatus and computer storage medium |
PCT/CN2014/077824 WO2015127721A1 (zh) | 2014-02-25 | 2014-05-19 | 数据匹配的方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410064599.5A CN104866502B (zh) | 2014-02-25 | 2014-02-25 | 数据匹配的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866502A true CN104866502A (zh) | 2015-08-26 |
CN104866502B CN104866502B (zh) | 2020-10-13 |
Family
ID=53912337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410064599.5A Active CN104866502B (zh) | 2014-02-25 | 2014-02-25 | 数据匹配的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10671667B2 (zh) |
EP (1) | EP3113036B1 (zh) |
CN (1) | CN104866502B (zh) |
WO (1) | WO2015127721A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893601A (zh) * | 2016-04-20 | 2016-08-24 | 零氪科技(北京)有限公司 | 一种数据对比方法 |
CN107357632A (zh) * | 2017-07-17 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种命令行解析方法及装置 |
CN107862061A (zh) * | 2017-11-15 | 2018-03-30 | 深圳市华讯方舟软件信息有限公司 | 一种数据库的索引文件建立方法及检索方法 |
WO2018068524A1 (zh) * | 2016-10-12 | 2018-04-19 | 深圳市中兴微电子技术有限公司 | 路由表建立、以及ip路由查找方法、装置、存储介质 |
CN108182221A (zh) * | 2017-12-26 | 2018-06-19 | 珠海市君天电子科技有限公司 | 数据处理的方法以及相关设备 |
CN108268620A (zh) * | 2018-01-08 | 2018-07-10 | 南京邮电大学 | 一种基于hadoop数据挖掘的文档分类方法 |
WO2018177184A1 (zh) * | 2017-03-31 | 2018-10-04 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置、设备、存储介质 |
CN109885576A (zh) * | 2019-03-06 | 2019-06-14 | 珠海金山网络游戏科技有限公司 | 一种哈希表创建方法及系统、计算设备及存储介质 |
WO2020020142A1 (zh) * | 2018-07-23 | 2020-01-30 | 华为技术有限公司 | 处理地址的方法和网络设备 |
CN111651487A (zh) * | 2020-05-25 | 2020-09-11 | 上海寒武纪信息科技有限公司 | 处理装置及方法 |
CN112087389A (zh) * | 2019-06-14 | 2020-12-15 | 深圳市中兴微电子技术有限公司 | 一种报文匹配查表方法、系统、存储介质和终端 |
CN114598616A (zh) * | 2022-05-09 | 2022-06-07 | 上海飞旗网络技术股份有限公司 | 一种解决实时海量数据的高效模式匹配方法 |
CN114610958A (zh) * | 2022-05-10 | 2022-06-10 | 上海飞旗网络技术股份有限公司 | 一种传输资源的处理方法、装置及电子设备 |
CN117573703B (zh) * | 2024-01-16 | 2024-04-09 | 科来网络技术股份有限公司 | 时序数据的通用检索方法、系统、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020180790A1 (en) * | 2019-03-01 | 2020-09-10 | Cyborg Inc. | System and method for statistics-based pattern searching of compressed data and encrypted data |
WO2022040621A1 (en) * | 2020-08-21 | 2022-02-24 | Cyborg Inc. | System and method for encrypted search using hash vectorization models |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434662B1 (en) * | 1999-11-02 | 2002-08-13 | Juniper Networks, Inc. | System and method for searching an associative memory utilizing first and second hash functions |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
CN102364463B (zh) * | 2011-09-19 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7324514B1 (en) | 2000-01-14 | 2008-01-29 | Cisco Technology, Inc. | Implementing access control lists using a balanced hash table of access control list binary comparison trees |
US20030065774A1 (en) * | 2001-05-24 | 2003-04-03 | Donald Steiner | Peer-to-peer based distributed search architecture in a networked environment |
US8295286B2 (en) | 2003-12-31 | 2012-10-23 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
US7782859B2 (en) | 2007-05-07 | 2010-08-24 | Cisco Technology, Inc. | Enhanced packet classification |
CN101247337B (zh) | 2008-02-18 | 2012-11-21 | 华为技术有限公司 | 一种报文转发的方法和设备 |
US7808929B2 (en) | 2008-09-30 | 2010-10-05 | Oracle America, Inc. | Efficient ACL lookup algorithms |
CN101894236B (zh) | 2010-07-28 | 2012-01-11 | 北京华夏信安科技有限公司 | 基于摘要语法树和语义匹配的软件同源性检测方法及装置 |
CN102571494B (zh) | 2012-01-12 | 2014-11-05 | 东北大学 | 一种基于fpga的入侵检测系统及方法 |
CN102722557B (zh) | 2012-05-29 | 2013-12-25 | 南京大学 | 一种相同数据块的自适应识别方法 |
US8817541B2 (en) * | 2012-11-09 | 2014-08-26 | Sandisk Technologies Inc. | Data search using bloom filters and NAND based content addressable memory |
KR101496179B1 (ko) * | 2013-05-24 | 2015-02-26 | 삼성에스디에스 주식회사 | 데이터 부재 태깅 기반의 정보 검색 시스템 및 방법 |
-
2014
- 2014-02-25 CN CN201410064599.5A patent/CN104866502B/zh active Active
- 2014-05-19 US US15/121,547 patent/US10671667B2/en active Active
- 2014-05-19 WO PCT/CN2014/077824 patent/WO2015127721A1/zh active Application Filing
- 2014-05-19 EP EP14884011.9A patent/EP3113036B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434662B1 (en) * | 1999-11-02 | 2002-08-13 | Juniper Networks, Inc. | System and method for searching an associative memory utilizing first and second hash functions |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102487374A (zh) * | 2010-12-01 | 2012-06-06 | 中兴通讯股份有限公司 | 一种访问控制列表实现方法及装置 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
CN102364463B (zh) * | 2011-09-19 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893601A (zh) * | 2016-04-20 | 2016-08-24 | 零氪科技(北京)有限公司 | 一种数据对比方法 |
CN105893601B (zh) * | 2016-04-20 | 2019-05-28 | 零氪科技(北京)有限公司 | 一种数据对比方法 |
WO2018068524A1 (zh) * | 2016-10-12 | 2018-04-19 | 深圳市中兴微电子技术有限公司 | 路由表建立、以及ip路由查找方法、装置、存储介质 |
CN107948060A (zh) * | 2016-10-12 | 2018-04-20 | 深圳市中兴微电子技术有限公司 | 一种新型的路由表建立、以及ip路由查找方法和装置 |
WO2018177184A1 (zh) * | 2017-03-31 | 2018-10-04 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置、设备、存储介质 |
CN107357632A (zh) * | 2017-07-17 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种命令行解析方法及装置 |
CN107862061A (zh) * | 2017-11-15 | 2018-03-30 | 深圳市华讯方舟软件信息有限公司 | 一种数据库的索引文件建立方法及检索方法 |
CN108182221B (zh) * | 2017-12-26 | 2022-05-31 | 北京乐蜜科技有限责任公司 | 数据处理的方法以及相关设备 |
CN108182221A (zh) * | 2017-12-26 | 2018-06-19 | 珠海市君天电子科技有限公司 | 数据处理的方法以及相关设备 |
CN108268620A (zh) * | 2018-01-08 | 2018-07-10 | 南京邮电大学 | 一种基于hadoop数据挖掘的文档分类方法 |
CN110753133B (zh) * | 2018-07-23 | 2022-03-29 | 华为技术有限公司 | 处理地址的方法和网络设备 |
CN110753133A (zh) * | 2018-07-23 | 2020-02-04 | 华为技术有限公司 | 处理地址的方法和网络设备 |
WO2020020142A1 (zh) * | 2018-07-23 | 2020-01-30 | 华为技术有限公司 | 处理地址的方法和网络设备 |
US11570106B2 (en) | 2018-07-23 | 2023-01-31 | Huawei Technologies Co., Ltd. | Address processing method and network device |
CN109885576A (zh) * | 2019-03-06 | 2019-06-14 | 珠海金山网络游戏科技有限公司 | 一种哈希表创建方法及系统、计算设备及存储介质 |
CN112087389A (zh) * | 2019-06-14 | 2020-12-15 | 深圳市中兴微电子技术有限公司 | 一种报文匹配查表方法、系统、存储介质和终端 |
CN111651487A (zh) * | 2020-05-25 | 2020-09-11 | 上海寒武纪信息科技有限公司 | 处理装置及方法 |
CN111651487B (zh) * | 2020-05-25 | 2023-06-27 | 上海寒武纪信息科技有限公司 | 处理装置及方法 |
CN114598616A (zh) * | 2022-05-09 | 2022-06-07 | 上海飞旗网络技术股份有限公司 | 一种解决实时海量数据的高效模式匹配方法 |
CN114610958A (zh) * | 2022-05-10 | 2022-06-10 | 上海飞旗网络技术股份有限公司 | 一种传输资源的处理方法、装置及电子设备 |
CN117573703B (zh) * | 2024-01-16 | 2024-04-09 | 科来网络技术股份有限公司 | 时序数据的通用检索方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104866502B (zh) | 2020-10-13 |
EP3113036A4 (en) | 2017-02-15 |
EP3113036A1 (en) | 2017-01-04 |
US10671667B2 (en) | 2020-06-02 |
WO2015127721A1 (zh) | 2015-09-03 |
US20170220696A1 (en) | 2017-08-03 |
EP3113036B1 (en) | 2019-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866502A (zh) | 数据匹配的方法及装置 | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
US20130246698A1 (en) | Hybrid Memory for Search Operations | |
Shabaz et al. | SA sorting: a novel sorting technique for large‐scale data | |
Priya et al. | Hierarchical packet classification using a Bloom filter and rule-priority tries | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
Broutin et al. | Asymptotics of trees with a prescribed degree sequence and applications | |
CN106528647B (zh) | 一种基于cedar双数组字典树算法进行术语匹配的方法 | |
US9672239B1 (en) | Efficient content addressable memory (CAM) architecture | |
WO2016201930A1 (zh) | 流分类方法及装置、存储介质 | |
CN108875064A (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
Mahdian et al. | Stochastic kronecker graphs | |
CN102308296A (zh) | 哈希计算处理方法及装置 | |
Zhang et al. | SUMMA: subgraph matching in massive graphs | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
CN101222434B (zh) | 存储策略控制列表、策略搜索方法和三态寻址存储器 | |
Michelson et al. | Unsupervised information extraction from unstructured, ungrammatical data sources on the world wide web | |
CN103414555B (zh) | 阵列基于io块加密的密钥管理方法 | |
CN110505322A (zh) | 一种ip地址段查找方法及装置 | |
Khan et al. | Set-based unified approach for attributed graph summarization | |
CN104504038A (zh) | 一种减少哈希冲突的哈希查找方法 | |
CN102725754B (zh) | 一种索引数据处理方法及设备 | |
CN109086815B (zh) | 基于fpga的决策树模型中的浮点数离散化方法 |
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 |