CN113626432A - 一种支持任意Key值的自适应基数树的改进方法 - Google Patents

一种支持任意Key值的自适应基数树的改进方法 Download PDF

Info

Publication number
CN113626432A
CN113626432A CN202110884239.XA CN202110884239A CN113626432A CN 113626432 A CN113626432 A CN 113626432A CN 202110884239 A CN202110884239 A CN 202110884239A CN 113626432 A CN113626432 A CN 113626432A
Authority
CN
China
Prior art keywords
node
key value
value
leaf
intermediate node
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
Application number
CN202110884239.XA
Other languages
English (en)
Other versions
CN113626432B (zh
Inventor
梁波
张炜刚
贾德星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yunxi Technology Co ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202110884239.XA priority Critical patent/CN113626432B/zh
Publication of CN113626432A publication Critical patent/CN113626432A/zh
Application granted granted Critical
Publication of CN113626432B publication Critical patent/CN113626432B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明特别涉及一种支持任意Key值的自适应基数树的改进方法。该支持任意Key值的自适应基数树的改进方法,在每个中间节点增加一个叶子节点指针,用于存储节点深度与Key值长度相同场景下的叶子节点;中间节点存储完整的相同前缀Tokens,使用C\C++语言的可变长结构体技术实现中间节点按照相同前缀的实际长度分配内存空间;改进查询算法,查询某个Key值时,返回大于等于当前Key值的Value,实现对Key值范围段的快速检索。该支持任意Key值的自适应基数树的改进方法,优化了插入查询任意的Key值功能,增加了改进的查询算法功能,提升了查询性能,减少了内存空间占用量,使得自适应基数树变得更加通用,使用场景也更加广泛。

Description

一种支持任意Key值的自适应基数树的改进方法
技术领域
本发明涉及数据存储结构技术领域,特别涉及一种支持任意Key值的自适应基数树的改进方法。
背景技术
RT(Radix Tree,基数树)是字典类型的数据结构。一种常见的前缀树,所有节点使用固定大小的数组,用于存储所有可能的token。Linux Kernel(linux内核)文件系统就使用该数据结构进行文件路径、内存的索引。
ART(Adaptive Radix Tree,自适应基数/前缀树)是以二进制位串为关键字的前缀树,是一种多叉树形结构,同时又类似多层索引表,每个中间节点包含指向多个子节点的指针数组,叶子节点包含指向实际的对象的指针。在基数树的基础上,优化增加了可变特性,其核心是优化空间的利用率,使每个节点空间大小不再相同,根据需要使用不同大小的节点类型。
但是,基数树的设计初衷仅针对定长key的应用场景,对于可变长key的场景考虑不足。比如顺序插入key:A和key:AB时,key:A会被覆盖掉,而不是同时存储这两个key。并且当前主流的ART算法实现(如Libart等)路径压缩时使用中间节点中定长数组存储前缀,对于超长前缀只存储前特定长度的token,完整前缀只能通过对叶子节点中的value解析获得,这极大降低了查询操作的性能。因此当前主流的ART算法只能提供基本的单点精确查询功能,应用场景单一。
针对ART树不支持变长key存储的问题以及当前主流ART算法实现性能低、功能单一的问题,本发明提出了一种支持任意Key值的自适应基数树的改进方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的支持任意Key值的自适应基数树的改进方法。
本发明是通过如下技术方案实现的:
一种支持任意Key值的自适应基数树的改进方法,其特征在于:包括以下步骤:
(1)在每个中间节点增加一个叶子节点指针,用于存储节点深度与Key值长度相同场景下的叶子节点;
(2)中间节点存储完整的相同前缀Tokens,使用C\C++语言的可变长结构体技术实现中间节点按照相同前缀的实际长度分配内存空间,提升CPU缓存命中率,减少叶子节点解析的次数;
(3)改进查询算法,将Key值按照Key值的值域划分成多个不相交的子域,每个子域代表一个Key值的范围段;将每个范围段内的最大Key值插入ART树中,查询某个Key值时,返回大于等于当前Key值的Value,实现对Key值范围段的快速检索。
ART树节点类型分为中间节点类型Node和叶子节点类型Leaf。所述步骤(1)中,在中间节点内聚合一个叶子节点Leaf,并使用增加的叶子节点Leaf存储信息,从而使得ART树能够正确存取任意的Key值;改进后的中间节点结构包括以下四个部分:
Header:存储节点本身的属性信息,包括token数量、节点类型、节点深度以及并发访问控制;
Leaf:节点聚合的叶子节点对象,用于存储节点深度与Key值长度相同的叶子节点;
Token list:存储插入该节点的所有Token,ART算法根据Token list的存储容量细分成Node4、Node16、Node48和Node256;
Prefix:节点前缀,存储路径压缩算法产生的token数组。
所述步骤(2)中,使用C\C++语言的变长结构体技术存储Prefix部分,将在中间节点结构的最后一个元素设为没有数组的元素,并对中间节点进行对象初始化;当中间节点对象不再被使用时,释放中间节点对象即可。
所述步骤(2)中,中间节点对象初始化流程如下:
首先,使用动态内存分配函数malloc为中间节点分配空间,空间大小为中间节点结构大小加前缀的长度;
然后,将申请内存的指针强转成中间节点类型对象,调用中间类型节点初始化函数,完成中间节点深度、前缀长度以及前缀存储数组的赋值操作;
最后,将中间节点对象指针返回。
所述步骤(2)中,调用中间节点对象释放函数时,对象不直接删除,而是将对象放到待删除队列中,间隔超过阈值时间(阈值设置为服务超时时间)后,调用free函数真正释放掉该中间节点对象。
所述步骤(3)中,使用递归调用实现方式实现查询算法;查询某个Key值时,如果有等于待查询Key值对应的value,则返回;如果没有,则返回比待查询Key值大的Key值对应的Value。
所述步骤(3)中,查询算法步骤如下:
S1.初始化:深度变量Level的值为0,当前处理的中间节点curNode等于ART树的根节点;
S2.判断curNode是否为叶子节点,如果是,则返回叶子节点中存储的Value,并退出;
S3.对当前处理节点curNode的前缀Token列表与待查询Key值相应的Token列表进行判断,(从Key的第Level个Token开始)按照字节序比对大小,将对比结果存储到变量compare内;
S4.如果变量compare大于0,说明没有找到相等的Key值,返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S5.如果变量compare小于0,说明没有找到相等的Key值且当前处理节点curNode的Key值全部小于待查询的Key值,因此,返回空值;
S6.如果变量compare等于0,说明当前处理节点与待查询的Key值路径一致,变量Level值加上当前处理节点curNode的前缀长度;
S7.判断当前处理节点curNode的深度值是否等于Key值的长度,如果相等,则返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S8.读取curNode中大于等于待查询Key值的第Level个Token的孩子节点列表,按照对应的Token值递增排序;从第一个开始,顺序处理每一个子节点,变量curNode等于正在处理的子节点,变量Level加一,调用步骤S2-S8的过程;
S9.若程序尚未结束,则返回空值,并退出。
所述步骤(3)中,中间节点中最小叶子节点查询算法如下:
S1.判断当前节点是否为叶子节点,如果是叶子节点,则返回该叶子节点,退出;
S2.判断当前中间节点对象的Leaf_叶子节点变量是否为空,如果不为空,返回Leaf_变量,退出;
S3.读取当前节点所有的子节点列表,按照对应的Token值递增排序,从第一个开始,递归调用步骤S1-S3,处理子节点;
S4.若程序尚未结束,则返回空值,并退出。
本发明的有益效果是:该支持任意Key值的自适应基数树的改进方法,优化了插入查询任意的Key值功能,增加了改进的查询算法功能,提升了查询性能,减少了内存空间占用量,使得自适应基数树变得更加通用,使用场景也更加广泛。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明支持任意Key值的自适应基数树的改进方法结构示意图。
附图2为本发明支持任意Key值的自适应基数树的改进方法中间节点结构示意图。
附图3为本发明支持任意Key值的自适应基数树的改进方法查询算法示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
对实施例中涉及的术语进行解释:
Key值:用于检索的字符串或字节数组。
Value:Key值对应的数据。
token:将Key值按照字节拆分,每个字节就是一个token。比如key:abc,它的token列表是'a’、’b’、’c’。
叶子节点:处于ART树最底层的节点,这些节点没有子节点;叶子节点用于存储value。
中间节点:在ART树中除叶子节点外的所有节点。
根节点:ART树中处于深度0的中间节点,深度0层仅有一个中间节点,就是根节点。
深度:ART树根节点处于深度0层,每往下一层深度加一。
前缀:prefix,存储在中间节点内,路径压缩算法产生的路径信息,路径压缩算法将仅有一个孩子节点的中间节点删除,在孩子节点的前缀数组内添加该中间节点tokenlist内的token。
Libart:github上开源项目,对自适应基数树的c语言实现。
该支持任意Key值的自适应基数树的改进方法,包括以下步骤:
(1)在每个中间节点增加一个叶子节点指针,用于存储节点深度与Key值长度相同场景下的叶子节点;
(2)中间节点存储完整的相同前缀Tokens,使用C\C++语言的可变长结构体技术实现中间节点按照相同前缀的实际长度分配内存空间,提升CPU缓存命中率,减少叶子节点解析的次数;
(3)改进查询算法,将Key值按照Key值的值域划分成多个不相交的子域,每个子域代表一个Key值的范围段;将每个范围段内的最大Key值插入ART树中,查询某个Key值时,返回大于等于当前Key值的Value,实现对Key值范围段的快速检索。
ART树节点类型分为中间节点类型Node和叶子节点类型Leaf。所述步骤(1)中,在中间节点内聚合一个叶子节点Leaf,并使用增加的叶子节点Leaf存储信息,从而使得ART树能够正确存取任意的Key值;改进后的中间节点结构包括以下四个部分:
Header:存储节点本身的属性信息,包括token数量、节点类型、节点深度以及并发访问控制;
Leaf:节点聚合的叶子节点对象,用于存储节点深度与Key值长度相同的叶子节点;
Token list:存储插入该节点的所有Token,ART算法根据Token list的存储容量细分成Node4、Node16、Node48和Node256;
Prefix:节点前缀,存储路径压缩算法产生的token数组。
比如插入key:空串(长度为0)、a、as、assert、but、button、buffer后形成的ART树结构(节点header部分不在图中展示),如附图1所示:
叶子节点leaf0对应Key值:空串;叶子节点leaf1对应Key值:a;叶子节点leaf2对应Key值:as;叶子节点leaf3对应Key值:assert;叶子节点leaf4对应Key值:but;叶子节点leaf5对应Key值:button;叶子节点leaf6对应Key值:buffer。
深度2的第二个中间节点,使用了路径压缩算法,去除了深度1的中间节点将Token:u放置在前缀数组prefix中。
中间节点中Prefix部分存储的前缀Tokens长度是不固定的,所述步骤(2)中,使用C\C++语言的变长结构体技术存储Prefix部分,将在中间节点结构的最后一个元素设为没有数组的元素,并对中间节点进行对象初始化;当中间节点对象不再被使用时,释放中间节点对象即可。
中间节点类型Node4的结构体定义说明示例如下:
struct Node4{
//略过header、token list的定义部分
std::atomic<void*>leaf_{nullptr};//新增叶子节点
uint16_t prefix_length_;
char prefix_[0];//使用可变长结构体,存储前缀tokens
}
所述步骤(2)中,中间节点对象初始化流程如下:
首先,使用动态内存分配函数malloc为中间节点分配空间,空间大小为中间节点结构大小加前缀的长度;比如中间节点为node4类型,并且prefix长度为5,则分配内存大小为sizeof(Node4)+5。
然后,将申请内存的指针强转成中间节点类型对象,调用中间类型节点初始化函数,完成中间节点深度、前缀长度以及前缀存储数组的赋值操作;
最后,将中间节点对象指针返回。
当中间节点对象不再被使用时,需要释放空间。由于C\C++语言普通指针的释放操作不会考虑当前对象可能正在被使用的场景,为了避免野指针的问题,使用延迟释放的方法。所述步骤(2)中,调用中间节点对象释放函数时,对象不直接删除,而是将对象放到待删除队列中,间隔超过阈值时间(阈值设置为服务超时时间)后,调用free函数真正释放掉该中间节点对象。
所述步骤(3)中,使用递归调用实现方式实现查询算法;查询某个Key值时,如果有等于待查询Key值对应的value,则返回;如果没有,则返回比待查询Key值大的Key值对应的Value。
所述步骤(3)中,查询算法步骤如下:
S1.初始化:深度变量Level的值为0,当前处理的中间节点curNode等于ART树的根节点;
S2.判断curNode是否为叶子节点,如果是,则返回叶子节点中存储的Value,并退出;
S3.对当前处理节点curNode的前缀Token列表与待查询Key值相应的Token列表进行判断,(从Key的第Level个Token开始)按照字节序比对大小,将对比结果存储到变量compare内;
S4.如果变量compare大于0,说明没有找到相等的Key值,返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S5.如果变量compare小于0,说明没有找到相等的Key值且当前处理节点curNode的Key值全部小于待查询的Key值,因此,返回空值;
S6.如果变量compare等于0,说明当前处理节点与待查询的Key值路径一致,变量Level值加上当前处理节点curNode的前缀长度;
S7.判断当前处理节点curNode的深度值是否等于Key值的长度,如果相等,则返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S8.读取curNode中大于等于待查询Key值的第Level个Token的孩子节点列表,按照对应的Token值递增排序;从第一个开始,顺序处理每一个子节点,变量curNode等于正在处理的子节点,变量Level加一,调用步骤S2-S8的过程;
S9.若程序尚未结束,则返回空值,并退出。
所述步骤(3)中,中间节点中最小叶子节点查询算法如下:
S1.判断当前节点是否为叶子节点,如果是叶子节点,则返回该叶子节点,退出;
S2.判断当前中间节点对象的Leaf_叶子节点变量是否为空,如果不为空,返回Leaf_变量,退出;
S3.读取当前节点所有的子节点列表,按照对应的Token值递增排序,从第一个开始,递归调用步骤S1-S3,处理子节点;
S4.若程序尚未结束,则返回空值,并退出。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (8)

1.一种支持任意Key值的自适应基数树的改进方法,其特征在于,包括以下步骤:
(1)在每个中间节点增加一个叶子节点指针,用于存储节点深度与Key值长度相同场景下的叶子节点;
(2)中间节点存储完整的相同前缀Tokens,使用C\C++语言的可变长结构体技术实现中间节点按照相同前缀的实际长度分配内存空间,提升CPU缓存命中率,减少叶子节点解析的次数;
(3)改进查询算法,将Key值按照Key值的值域划分成多个不相交的子域,每个子域代表一个Key值的范围段;将每个范围段内的最大Key值插入ART树中,查询某个Key值时,返回大于等于当前Key值的Value,实现对Key值范围段的快速检索。
2.根据权利要求1所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(1)中,在中间节点内聚合一个叶子节点Leaf,并使用增加的叶子节点Leaf存储信息,从而使得ART树能够正确存取任意的Key值;改进后的中间节点结构包括以下四个部分:
Header:存储节点本身的属性信息,包括token数量、节点类型、节点深度以及并发访问控制;
Leaf:节点聚合的叶子节点对象,用于存储节点深度与Key值长度相同的叶子节点;
Token list:存储插入该节点的所有Token,ART算法根据Token list的存储容量细分成Node4、Node16、Node48和Node256;
Prefix:节点前缀,存储路径压缩算法产生的token数组。
3.根据权利要求2所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(2)中,使用C\C++语言的变长结构体技术存储Prefix部分,将在中间节点结构的最后一个元素设为没有数组的元素,并对中间节点进行对象初始化;当中间节点对象不再被使用时,释放中间节点对象即可。
4.根据权利要求3所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(2)中,中间节点对象初始化流程如下:
首先,使用动态内存分配函数malloc为中间节点分配空间,空间大小为中间节点结构大小加前缀的长度;
然后,将申请内存的指针强转成中间节点类型对象,调用中间类型节点初始化函数,完成中间节点深度、前缀长度以及前缀存储数组的赋值操作;
最后,将中间节点对象指针返回。
5.根据权利要求3所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(2)中,调用中间节点对象释放函数时,对象不直接删除,而是将对象放到待删除队列中,间隔超过阈值时间后,调用free函数真正释放掉该中间节点对象。
6.根据权利要求1所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(3)中,使用递归调用实现方式实现查询算法;查询某个Key值时,如果有等于待查询Key值对应的value,则返回;如果没有,则返回比待查询Key值大的Key值对应的Value。
7.根据权利要求6所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(3)中,查询算法步骤如下:
S1.初始化:深度变量Level的值为0,当前处理的中间节点curNode等于ART树的根节点;
S2.判断curNode是否为叶子节点,如果是,则返回叶子节点中存储的Value,并退出;
S3.对当前处理节点curNode的前缀Token列表与待查询Key值相应的Token列表进行判断,按照字节序比对大小,将对比结果存储到变量compare内;
S4.如果变量compare大于0,说明没有找到相等的Key值,返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S5.如果变量compare小于0,说明没有找到相等的Key值且当前处理节点curNode的Key值全部小于待查询的Key值,因此,返回空值;
S6.如果变量compare等于0,说明当前处理节点与待查询的Key值路径一致,变量Level值加上当前处理节点curNode的前缀长度;
S7.判断当前处理节点curNode的深度值是否等于Key值的长度,如果相等,则返回当前处理节点curNode中最小的叶子节点存储的Value值,退出;
S8.读取curNode中大于等于待查询Key值的第Level个Token的孩子节点列表,按照对应的Token值递增排序;从第一个开始,顺序处理每一个子节点,变量curNode等于正在处理的子节点,变量Level加一,调用步骤S2-S8的过程;
S9.若程序尚未结束,则返回空值,并退出。
8.根据权利要求7所述的支持任意Key值的自适应基数树的改进方法,其特征在于:所述步骤(3)中,中间节点中最小叶子节点查询算法如下:
S1.判断当前节点是否为叶子节点,如果是叶子节点,则返回该叶子节点,退出;
S2.判断当前中间节点对象的Leaf_叶子节点变量是否为空,如果不为空,返回Leaf_变量,退出;
S3.读取当前节点所有的子节点列表,按照对应的Token值递增排序,从第一个开始,递归调用步骤S1-S3,处理子节点;
S4.若程序尚未结束,则返回空值,并退出。
CN202110884239.XA 2021-08-03 2021-08-03 一种支持任意Key值的自适应基数树的改进方法 Active CN113626432B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110884239.XA CN113626432B (zh) 2021-08-03 2021-08-03 一种支持任意Key值的自适应基数树的改进方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110884239.XA CN113626432B (zh) 2021-08-03 2021-08-03 一种支持任意Key值的自适应基数树的改进方法

Publications (2)

Publication Number Publication Date
CN113626432A true CN113626432A (zh) 2021-11-09
CN113626432B CN113626432B (zh) 2023-10-13

Family

ID=78382380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110884239.XA Active CN113626432B (zh) 2021-08-03 2021-08-03 一种支持任意Key值的自适应基数树的改进方法

Country Status (1)

Country Link
CN (1) CN113626432B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374124A (zh) * 2022-08-29 2022-11-22 钟士平 基于a+树数据结构存储的数据查询方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
US20170212680A1 (en) * 2016-01-22 2017-07-27 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
CN111316255A (zh) * 2017-11-20 2020-06-19 华为技术有限公司 数据存储系统以及用于提供数据存储系统的方法
CN111782659A (zh) * 2020-07-10 2020-10-16 东北大学 数据库索引创建方法、装置、计算机设备和存储介质
CN112000847A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu并行的自适应基数树动态索引方法
CN112269786A (zh) * 2020-11-02 2021-01-26 浪潮云信息技术股份公司 一种内存数据库kv存储引擎索引的创建方法
CN112732725A (zh) * 2021-01-22 2021-04-30 上海交通大学 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
CN112800065A (zh) * 2021-02-09 2021-05-14 北京工业大学 基于改进区块存储结构的高效数据检索方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
US20170212680A1 (en) * 2016-01-22 2017-07-27 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
CN111316255A (zh) * 2017-11-20 2020-06-19 华为技术有限公司 数据存储系统以及用于提供数据存储系统的方法
CN111782659A (zh) * 2020-07-10 2020-10-16 东北大学 数据库索引创建方法、装置、计算机设备和存储介质
CN112000847A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu并行的自适应基数树动态索引方法
CN112269786A (zh) * 2020-11-02 2021-01-26 浪潮云信息技术股份公司 一种内存数据库kv存储引擎索引的创建方法
CN112732725A (zh) * 2021-01-22 2021-04-30 上海交通大学 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
CN112800065A (zh) * 2021-02-09 2021-05-14 北京工业大学 基于改进区块存储结构的高效数据检索方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VIKTOR LEIS: "The adaptive radix tree: ARTful indexing for main-memory databases", 《PROCEEDINGS OF THE 12TH INTERNATIONAL WORKSHOP ON DATA MANAGEMENT ON NEW HARDWARE》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374124A (zh) * 2022-08-29 2022-11-22 钟士平 基于a+树数据结构存储的数据查询方法

Also Published As

Publication number Publication date
CN113626432B (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
CN110806986B (zh) 提高网络芯片报文存储效率的方法、设备及存储介质
US6289414B1 (en) Partially ordered cams used in ternary hierarchical address searching/sorting
US7725437B2 (en) Providing an index for a data store
US7856437B2 (en) Storing nodes representing respective chunks of files in a data store
US9367640B2 (en) Method and system for creating linked list, method and system for searching data
US7512739B2 (en) Updating a node-based cache LRU tree
CN110147204B (zh) 一种元数据落盘方法、装置、系统及计算机可读存储介质
CN105320775A (zh) 数据的存取方法和装置
US20100228914A1 (en) Data caching system and method for implementing large capacity cache
CN111858651A (zh) 一种数据处理方法以及数据处理装置
CN112860592A (zh) 基于链表的数据缓存方法、装置、电子设备和存储介质
CN113626432B (zh) 一种支持任意Key值的自适应基数树的改进方法
CN109298888B (zh) 队列的数据存取方法及装置
US8935508B1 (en) Implementing pseudo content access memory
CN116701440B (zh) 一种布谷鸟过滤器及数据插入、查询、删除方法
CN111241090B (zh) 存储系统中管理数据索引的方法和装置
CN112711564B (zh) 合并处理方法以及相关设备
Patgiri et al. Shed more light on bloom filter's variants
CN116089425A (zh) 一种基于LFU算法改进的redis内存淘汰策略的方法及装置
CN108614879A (zh) 小文件处理方法与装置
US6389549B1 (en) List management system, a list management method, a recording medium wherein a computer program for realizing the list management system is recorded and a packet exchange wherein the list management system is applied
CN110321346B (zh) 一种字符串散列表实现方法和系统
CN110334251B (zh) 一种有效解决rehash冲突的元素序列生成方法
CN111723266A (zh) 海量数据处理方法和装置
CN117193669B (zh) 一种报文描述符离散存储方法、装置、设备及存储介质

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
TA01 Transfer of patent application right

Effective date of registration: 20221226

Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120

Applicant after: Shanghai Yunxi Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Inspur cloud Information Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant