CN110321346B - 一种字符串散列表实现方法和系统 - Google Patents
一种字符串散列表实现方法和系统 Download PDFInfo
- Publication number
- CN110321346B CN110321346B CN201910450998.8A CN201910450998A CN110321346B CN 110321346 B CN110321346 B CN 110321346B CN 201910450998 A CN201910450998 A CN 201910450998A CN 110321346 B CN110321346 B CN 110321346B
- Authority
- CN
- China
- Prior art keywords
- hash
- character string
- hash table
- slot
- character
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种字符串散列表实现方法,包括:根据字符串长度,将该字符串分发至对应的散列表;其中,该散列表包括数组散列表、数值型散列表和字符型双散列表。本发明使用多种异构散列表存储字符串,针对不同字符串的长度选择合适的散列表;同时针对短字符串,将短字符串划分为固定的几个长度区间,提高内存空间利用率,利用字符串变长的特性,为每种区间的散列槽预留末尾的1字节空间原地存储元数据信息;而针对长字符串,使用二级散列表结构,一级散列表通过仅使用部分前缀值计算字符串散列,减少了散列值的计算量;而二级散列表作为一级散列表的冲突链存储表,解决了一级散列表精简散列计算导致的冲突增大的问题。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种字符串散列表实现方法和系统。
背景技术
散列表经典的数据结构,广泛运用在计算机各个领域。对于数据库应用而言,散列表是核心的数据结构之一,其支撑了数据库的聚合操作、数据去重操作与连接操作等。随着互联网数据爆炸式增长,数据库中的字符型数据占比逐渐提高,其中包括了用户浏览日志,网页元数据等等。由于这类数据的长度不定,对散列表的设计提出了新的挑战。
当前对字符串的散列表实现主要分为两类:(1)使用指针作为散列键存储于由开放地址或链地址实现的散列表中。该类散列表实现简单,使用方便。对于链地址实现的散列表由于其具有键的稳定性,能适用于更广泛的应用场景,因此程序语言标准库通常直接提供该类散列表的实现;(2)使用Trie树结构原地存储字符串实现散列表。该类散列表规避了指针存储,同时提供字符串的前缀复用,有效地减少了散列表的空间占用率,同时其提供前缀匹配功能,能够支撑特定的应用场景。
然而,上述现有的字符串散列表分别存在以下问题:一方面,对于使用指针作为键的散列表实现,由于每次操作都引入了指针的解引用,这破坏了访存的连续性,导致性能低于数值型定长键散列表;另一方面,使用Trie树作为字符串散列存储虽然做到了原地存储字符串,规避了指针的解引用,但是其数据结构本身的连续性不强,对键的检索引入了树型结构的遍历操作,这不仅使得访存局部性被破坏,还引入了额外的计算开销,因此其性能甚至要低于由指针实现的字符串散列表。
中国国家发明“一种高效的静态哈希表实现方法及系统”(申请号:CN201610793354.5),提出一种高效的静态哈希表实现方法及系统,包括:1)设定哈希桶大小hash_bit,生成多个数据对,将key[i]和value[i]对应于关键字和值;2)根据key[i]值,利用rank操作构建哈希表,并计算C表和D表;3)根据C表和D表计算rank(h),并根据rank(h)的值存储相应的key[i]和value[i];4)根据所要查询的值key判断哈希表中是否存在该元素,若存在则在对应存储位置查询并返回value值,否则访问失败;5)根据步骤4)所得的结果返回结果信息。该发明利用Rank-select算法实现新型静态哈希表的构建与访问,可用于内容过滤、信息安全等领域,但没有提出对字符串哈希优化的技术方案。
发明内容
本发明通过针对不同长度字符串,使用多种异构散列表进行存储,提出了一种字符串散列表实现方法,解决了现有技术中字符串散列表的性能瓶颈问题。
具体来说,本发明的字符串散列表实现方法包括:根据输入字符串的长度,将该字符串分发至对应的散列表;该散列表包括数组散列表、数值型散列表和字符型双散列表。
其中,当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串对应的字符串转为数值型作为索引数组的下标;当该字符串的长度大于该第一长度阈值且小于第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离;当该字符串的长度大于或等于该第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则该标签标识为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
本发明还提出一种字符串散列表实现系统,包括:字符串分发模块,用于根据该字符串的长度,将该字符串分发至对应的散列表;其中,该散列表包括数组散列表、数值型散列表和字符型双散列表。
本发明所述的字符串散列表实现系统,其中该字符串分发模块包括:
极短字符串散列模块,用于极短字符串散列表实现;其中当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串对应的字符串转为数值型作为索引数组的下标。
短字符串散列模块,用于短字符串散列表实现;其中当该字符串的长度大于该第一长度阈值且小于第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离。
长字符串散列模块,用于长字符串散列表实现;其中当该字符串的长度大于或等于该第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则该标签标识为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
本发明还提出一种可读存储介质,存储有可执行指令,该可执行指令用于执行如前述的字符串散列表实现方法。
本发明还提出一种数据处理装置,包括:可读存储介质;处理器,用于调取并执行该可读存储介质中的可执行指令,以实现字符串散列表。
附图说明
图1是现有技术对不同长度字符串存储性能的对比图。
图2是本发明的字符串散列表实现方法示意图。
图3是本发明的字符串散列表实现方法的字符串分发代码流程示意图。
图4是本发明的字符串散列表实现方法的短字符串散列表实现示意图。
图5是本发明的字符串散列表实现方法的长字符串散列表实现示意图。
图6是本发明的数据处理装置结构示意图。
图7是本发明的散列表与ClickHouse数据库散列表性能对比效果示意图。
图8是本发明的散列表与ClickHouse数据库散列表性能测试与内存占用对比效果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明提出的字符串散列表实现方法进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
发明人在研发字符串散列表时,发现现有的字符串散列表在性能存在瓶颈,因此对字符串在不同散列表中的表现进行了测试,如图1所示。其中,link_map是stdlibc++的散列表实现,使用传统的链式散列方法;array_map在链式散列的基础上,将冲突链中的字符串聚合存储来优化Cache性能;linear_map是开放地址散列表,使用线性探测方法。HAT-Trie树是基于Cache优化的trie树实现。测试用例使用数据库聚合操作(wordcount)。从图1中可以看出,HAT-Tree的性能最差;朴素的链式散列实现性能要差于其他两种散列表;优化的链式散列表array_map在短字符为主的数据集中表现最好,而传统的开放地址散列表linear_map在长字符为主的数据集中性能最好。对此,发明人进一步展开了分析,发现link_map的性能较差是源于其标准的链表结构导致的多次Cache Misses;通过将冲突链聚合,array_map的探测过程转变为Cache友好的线性探测,因此性能要高于link_map。且对短字符而言,冲突链遍历复杂度低,性能好linear_map。相反,对于长字符串而言,由于单个字符串长度超过了Cache Line的大小,导致遍历冲突链性能下降,故整体性能要低于linear_map。发明人在进一步的测试中发现,在长字符串的测试场景中,其主要的开销来自于散列值的计算以及字符串的比较操作。根据以上分析,可以只将短字符串聚集存储,而长字符串针对其散列操作进行优化,即可在两种负载中都取得最好的性能。因此,发明人设计并实现了二级异构散列表,并在此基础之上,分别设计了针对短字符串与长字符串的散列表。
本发明使用多种异构散列表存储字符串,针对不同字符串长度选择合适的散列表;同时针对短字符串,将短字符串划分为固定的几个长度区间,提高内存空间利用率,利用字符串变长的特性,为每种区间的散列槽预留末尾的1字节空间原地存储元数据信息;而针对长字符串,使用二级散列表结构,一级散列表通过仅使用部分前缀值计算字符串散列,减少了散列值的计算量;而二级散列表作为一级散列表的冲突链存储表,解决了一级散列表精简散列计算导致的冲突增大的问题。
图2是本发明的字符串散列表实现方法示意图。如图2所示,本发明设计并实现了一种高效的字符串散列表,包含分发器,数组散列表,数值型散列表以及字符型双散列表。通过分发器将不同字符串根据长度分发至不同的散列表中,基于已知的长度信息进行优化,包括使用查表技术加速极短字符的索引,使用多个数值型散列表加速短字符索引以及使用前缀散列技术结合双散列表加速长字符索引。
图3是本发明的字符串散列表实现方法字符串分发代码流程示意图。如图3所示,本发明的分发器对于小于等于2的字符串,按照字符串内容计算出数组下标,插入数组散列表中。对于大于等于32的字符串,直接发送至对应的散列表中。对于字符串长度在[3,8)字节范围的输入,首先判断该字符串的地址是否属于某个内存页的前半页;如果是,则表明读取字符串的前8个字节为合法操作,将字符串的前8个字节加载进寄存器,并通过比特与操作去除高位超过字符串长度的无效比特;之后计算散列值,并将寄存器与散列值发送至8字节数值型散列表;如果否,则表明读取字符串的后8个字节为合法操作,将字符串的后8个字节加载进寄存器,并通过移位操作去除低位超过字符串长度的无效比特;之后计算散列值,并将寄存器与散列值发送至8字节数值型散列表。对于字符串长度在[8,32)字节范围内的输入,首先以8字节为单位将字符串内容加载进寄存器,计算散列值,当读取操作超过字符串长度时停止;之后将字符串末尾的8个字节读取进寄存器,并通过移位操作移除前述已读取的重叠部分;最后计算该部分散列值,与前述散列值合并,将读取到的所有寄存器与合并散列值发送至对应的数值型散列表中。本发明利用内存按页分配的特性,每次加载至少8个字节,以最小的代价将字符串转换为数值类型,同时进行散列值计算。
请再次参阅图2,如图2所示,极短字符串使用数组直接进行索引,将字符串值转成数值型直接用于索引数组下标,形成完美散列,避免了散列计算与冲突,同时解决了其余哈希表空字符的存储问题。
图4是本发明的字符串散列表实现方法的短字符串散列表实现示意图。短字符串使用4个数值型RobinHood散列表实现,字符串长分别为小于8字节,小于16字节,小于24字节与小于32字节。根据分发器首先获得对应的散列表,并对其进行查询,插入与删除操作。本发明中与现有RobinHood散列表实现的不同点在于,利用了变长数据的特性,在每个散列槽的末尾字节记录了当前元素至其对应槽位的距离,图4展示了小于8字节的散列表实现方式。该散列表的操作与现有RobinHood散列表一致,但由于内嵌了“距离”信息,需要在键比较时增加“与”操作。
长字符串使用双散列表实现,其中,一级散列使用类似上述短字符串的RobinHood散列表,其包含一系列散列槽,每个散列槽存储字符串指针与标签字段。标签字段记录了当前槽的状态,可以是空,满或溢出;对于查询操作,首先计算出当前查询字符串的前32字节的散列值,并由此计算出对应的槽位,如果槽位为空,则查询失败;如果槽位为满,则开始线性探测,直到找到对应的字符串或查询失败;如果槽位为溢出,则计算剩余字符串的散列值,与前缀散列值聚合得到该字符串的完全散列值,并由此计算出对应的二级散列表的槽位,向二级散列表提交查询请求。
对于插入操作,首先计算出当前查询字符串的前32字节的散列值,并由此计算出对应的槽位,如果槽位为空,则插入字符串;如果槽位为满,则开始线性探测,如果找到对应的字符串,则插入失败,否则判断当前槽的链长度,如果小于4,则插入成功,否则将当前槽的冲突链以及待插入元素溢出至二级散列表中,并在当前槽的标签状态中标记溢出,该操作利用了RobinHood哈希表冲突链连续这一特点,在探测时可计算出冲突链的长度;如果槽位为溢出,则计算剩余字符串的散列值,与前缀散列值聚合得到该字符串的完全散列值,并由此计算出对应的二级散列表的槽位,向二级散列表提交插入请求。
对于插入操作,首先计算出当前查询字符串的前32字节的散列值,并由此计算出对应的槽位,如果槽位为空,则删除失败;如果槽位为满,则开始线性探测,如果未找到对应的字符串,则删除失败,否则删除该元素,并将后续的元素按照RobinHood规则前移,保持冲突链连续;如果槽位为溢出,则计算剩余字符串的散列值,与前缀散列值聚合得到该字符串的完全散列值,并由此计算出对应的二级散列表的槽位,向二级散列表提交删除请求。
二级散列表接收一级散列表转发的查询与插入请求,使用线性探测法实现。
图5是本发明的字符串散列表实现方法的长字符串散列表实现示意图。图5演示了双散列表插入溢出的过程。
图6是本发明的数据处理装置结构示意图。如图6所示,本发明实施例还提供一种可读存储介质,以及一种数据处理装置。本发明的可读存储介质存储有计可执行指令,可执行指令被数据处理装置的处理器执行时,实现上述字符串散列表实现方法。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器、FPGA、ASIC等)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
图7是本发明的散列表与ClickHouse数据库散列表性能对比效果示意图。如图7展示了本发明散列表与现有技术的ClickHouse数据库散列表,在不同字符串长度分布下的性能对比,分别测试了不同字符串期望长度的数据集,其中图名TermN表示输入的字符串长度服从期望为N的二项分布。ClickHouse散列表在性能测试中相比于其他主流散列表(如RobinHood Map,Cuckoo Map,HopscotchMap,Swiss Table,F14Map,HAT-Trie)有20%-100%的提升,并且内存占用率最低,因此以下实验只与ClickHouse散列表对比。
(1)极短字符,N=2
在极短字符为主的输入下,本发明的散列表较ClickHouse散列表提升了1倍的性能,这是由于极短数组散列表规避了散列值计算,同时不需要额外存储字符串指针。
(2)短字符,N=4,8,16,32
在短字符为主的输入下,本发明的散列表较ClickHouse散列表提升了1倍的性能,这是由于将字符串转为数值型后,键的比较操作性能极大提升,且避免了字符串指针的遍历,提高了访存的局部性。
(3)长字符,N=64
在长字符为主的输入下,本发明的散列表较ClickHouse散列表有10%的性能提升,这是由于二级字符型散列表降低了字符串散列计算的开销。然而字符串比较操作依然是主要的计算内容,因此提升性能有限。
图8是本发明的散列表与ClickHouse数据库散列表性能测试与内存占用对比效果示意图。图8展示了本发明散列表在实际数据库系统应用中的性能测试与内存占用,在ClickHouse数据库中应用本发明的散列表,并使用真实的数据集进行测试。将微博采集数据按照发博昵称的长度进行采样,分别得到长度期望为2,4,8,16,32与64字节的微博数据集。使用如下查询进行测试:SELECT nickname,COUNT(comment_num)FROM weiboN GROUPBY nickname
(1)性能测试方面,本发明散列表相比与ClickHouse数据库原散列表有10%到35%的提升。其中短字符的提升效果较为显著。由于真实数据集中对字符串进行聚合操作短字符居多,因此该发明能有效加速真实场景的查询。
(2)内存占用测试方面,本发明由于减少了字符串的指针存储,对于短字符为主的数据输入能减少35%,能够支撑更多的应用场景。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中的普通技术人员,在不脱离本发明的精神和范围内,可以做出若干变形和改进,故本发明的保护范围当视后附的申请专利范围所界定者为准。
Claims (8)
1.一种字符串散列表实现方法,其特征在于,包括:
根据字符串长度,将该字符串分发至对应的散列表;该散列表包括数组散列表、数值型散列表和字符型双散列表;
其中,当该字符串的长度大于或等于第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则标识该标签为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
2.如权利要求1所述的字符串散列表实现方法,其特征在于,当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串转为数值型作为索引数组的下标。
3.如权利要求1所述的字符串散列表实现方法,其特征在于,当该字符串的长度大于第一长度阈值且小于该第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离。
4.一种字符串散列表实现系统,其特征在于,包括:
字符串分发模块,用于根据该字符串的长度,将该字符串分发至对应的散列表;该散列表包括数组散列表、数值型散列表和字符型双散列表;
该字符串分发模块具体包括:
长字符串散列模块,用于长字符串散列表实现;其中当该字符串的长度大于或等于第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则标识该标签为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
5.如权利要求4所述的字符串散列表实现系统,其特征在于,该字符串分发模块还包括:
极短字符串散列模块,用于极短字符串散列表实现;其中当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串转为数值型作为索引数组的下标。
6.如权利要求4所述的字符串散列表实现系统,其特征在于,该字符串分发模块还包括:
短字符串散列模块,用于短字符串散列表实现;其中当该字符串的长度大于第一长度阈值且小于该第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离。
7.一种可读存储介质,存储有可执行指令,该可执行指令用于执行如权利要求1~3任一项所述的字符串散列表实现方法。
8.一种数据处理装置,其特征在于,包括:
如权利要求7所述的可读存储介质;
处理器,用于调取并执行该可读存储介质中的可执行指令,以实现字符串散列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910450998.8A CN110321346B (zh) | 2019-05-28 | 2019-05-28 | 一种字符串散列表实现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910450998.8A CN110321346B (zh) | 2019-05-28 | 2019-05-28 | 一种字符串散列表实现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321346A CN110321346A (zh) | 2019-10-11 |
CN110321346B true CN110321346B (zh) | 2021-09-21 |
Family
ID=68119112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910450998.8A Active CN110321346B (zh) | 2019-05-28 | 2019-05-28 | 一种字符串散列表实现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321346B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143340B (zh) * | 2019-12-25 | 2023-03-21 | 北京中网易企秀科技有限公司 | 一种数据处理方法、装置及服务器、客户端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901257A (zh) * | 2010-07-21 | 2010-12-01 | 北京理工大学 | 一种多字符串匹配方法 |
CN105704041A (zh) * | 2014-12-15 | 2016-06-22 | 帕洛阿尔托研究中心公司 | 使用硬件辅助散列表的ccn路由 |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521751B2 (en) * | 2008-08-22 | 2013-08-27 | Nec Corporation | Search device, a search method and a program |
-
2019
- 2019-05-28 CN CN201910450998.8A patent/CN110321346B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901257A (zh) * | 2010-07-21 | 2010-12-01 | 北京理工大学 | 一种多字符串匹配方法 |
CN105704041A (zh) * | 2014-12-15 | 2016-06-22 | 帕洛阿尔托研究中心公司 | 使用硬件辅助散列表的ccn路由 |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110321346A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
CN102122285B (zh) | 一种数据缓存系统中的数据查询系统和数据查询方法 | |
CN107515901B (zh) | 一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质 | |
CN105320775A (zh) | 数据的存取方法和装置 | |
US7831626B1 (en) | Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node | |
US9292554B2 (en) | Thin database indexing | |
US8190591B2 (en) | Bit string searching apparatus, searching method, and program | |
US7603346B1 (en) | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
EP3072076B1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN114064984B (zh) | 一种基于稀疏数组链表的世界状态增量更新方法及装置 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
US7987205B1 (en) | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations | |
CN110321346B (zh) | 一种字符串散列表实现方法和系统 | |
CN113010477B (zh) | 持久内存文件系统元数据的检索方法和装置、存储结构 | |
US8392433B2 (en) | Self-indexer and self indexing system | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
CN111541617B (zh) | 一种用于高速大规模并发数据流的数据流表处理方法及装置 | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
US9292553B2 (en) | Queries for thin database indexing | |
US8988258B2 (en) | Hardware compression using common portions of data | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
CN109325023B (zh) | 一种数据处理方法及装置 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |