CN112632087B - 基于范围简图的有序链表快速查询方法和装置 - Google Patents
基于范围简图的有序链表快速查询方法和装置 Download PDFInfo
- Publication number
- CN112632087B CN112632087B CN202110035396.3A CN202110035396A CN112632087B CN 112632087 B CN112632087 B CN 112632087B CN 202110035396 A CN202110035396 A CN 202110035396A CN 112632087 B CN112632087 B CN 112632087B
- Authority
- CN
- China
- Prior art keywords
- linked list
- node
- bucket
- key value
- ordered
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于范围简图的有序链表快速查询方法和装置。将有序链表切分为多个首尾相连的链表段,通过使用两个紧凑数据结构Buckets Array(桶数组)和Range Sketch(范围简图),可以快速定位待查询的键值所对应的结点必然存在于一个常数长度的链表段上,保证了查询结果可以在访问常数个结点之后给出,提升了有序链表查询的速度。通过调整RangeSketch中单元数组的长度和使用的哈希函数的个数,可以灵活地处理查询速度和内存占用之间的平衡,兼顾内存使用的高效率和键值查询的高性能。
Description
技术领域
本发明涉及键值存储数据库领域,具体为一种利用Range Sketch(范围简图)来进行有序链表的快速查询的方法。
背景技术
随着互联网生态的不断发展,大型互联网公司需要存储的数据已经达到PB量级,部分中小型互联网公司也逐渐积累了TB量级的数据。为了应对如此大规模的数据存储要求,键值存储数据库逐渐取代了传统的关系型数据库成为大规模数据存储的第一选择。键值存储数据库通常将不同的键值对按照键值大小的顺序组织成有序链表的形式,并且存储在磁盘等存储设备中。因此,如何快速地判断一个给定的键值是否在有序链表中,如何快速地查询该键值在有序链表中对应的结点的地址,就成为了决定键值存储数据库性能的关键问题。
著名的键值存储数据库,例如LevelDB、RocksDB和Redis等,基本都使用了辅助数据结构加速有序链表的成员关系测试和查询。目前常见的做法是将有序链表维护为块状链表的形式,通过二分查找算法定位一个特定的链表块,并通过布隆过滤器进行待查询键值的成员关系测试,对于通过了成员关系测试的键值在该链表块中顺序搜索对应的结点。这种做法需要在内存中为每一个链表块都建立一个布隆过滤器,为了保证布隆过滤器进行成员关系测试的精度,这种做法还需要消耗大量的内存空间。同时,这种查询算法至少需要非常数的时间复杂度,进行一次键值查询所需的时间较长,难以提供高质量的用户体验。
发明内容
为了克服现有的有序链表查询算法查询时间复杂度高、辅助数据结构内存空间占用大的问题,本发明提供一种使用了紧凑数据结构的算法,该算法可以有效地减少辅助数据结构的内存占用、提高有序链表的查询速度。
本发明的目的通过如下的技术方案来实现:
一种基于Range Sketch的有序链表快速查询方法,包括以下步骤:
将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
在查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索该特定链表段上的结点并依次判断其键值和待查询的键值是否相等。
进一步地,采用桶数组Buckets Array维护有序链表的每一个链表段的信息;Buckets Array是一个由多个桶组成的数组,桶的数量和有序链表被切分成的链表段的数量相等,第k个桶维护第k个链表段的信息。
进一步地,每一个桶包含三个域,分别是:
最小键值min,记录桶对应的链表段中所有结点的键值的最小值,即链表段第一个结点的键值;
最大键值max,记录桶对应的链表段中所有结点的键值的最大值,即链表段最后一个结点的键值;
段首地址address,记录桶对应的链表段的起始地址,即链表段第一个结点的地址。
进一步地,采用范围简图Range Sketch判断待查询的键值所对应的结点在有序链表中所属的特定链表段;Range Sketch是一个由多个单元组成的数组,其功能是维护每一个键值对应的结点可能属于哪些桶。
进一步地,Range Sketch含有d个相互独立的哈希函数,每一个哈希函数将一个键值随机地映射到一个单元内;每一个单元包含两个域即下界LB和上界UB,分别记录被映射到该单元的键值对应的结点所属的桶的编号的最小值和最大值;当对有序链表切分完并建立Buckets Array之后,将有序链表中的每一个结点和其所属的桶的编号插入到RangeSketch中。
进一步地,所述将有序链表中的每一个结点和其所属的桶的编号插入到RangeSketch中,包括:
通过结点的键值和d个哈希函数在Range Sketch中定位d个单元;
对于每一个单元,将其记录的LB修改为LB和该结点所属的桶的编号中的较小值,将其记录的UB修改为UB和该结点所属的桶的编号中的较大值。
进一步地,采用以下步骤查询一个给定的键值在有序链表中对应的结点:
根据该键值和Range Sketch的d个哈希函数定位d个单元,在每一个单元中根据其记录的LB和UB得到一个桶的编号的范围,将得到的d个范围求交集;
如果求得的交集是空集,那么返回有序链表中没有待查询键值对应的结点;如果求得的交集不是空集,那么依次遍历编号在该交集内的桶,并判断是否存在一个桶,其记录的min小于等于待查询的键值而其记录的max大于等于待查询的键值;
如果不存在这样一个桶,那么返回有序链表中没有待查询键值对应的结点;否则会存在唯一一个符合要求的桶,通过该桶记录的address得到对应的链表段的第一个结点的地址,并依次访问链表段上的每一个结点,直到某个结点的键值等于待查询的键值或者等于该桶记录的max;
如果找到了某个结点的键值等于待查询的键值,那么返回这个结点的地址作为当前的查询的答案,否则返回有序链表中没有待查询键值对应的结点。
一种采用上述方法的基于Range Sketch的有序链表快速查询装置,其包括:
有序链表切分模块,用于将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
有序链表查询模块,用于当需要查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索所述特定链表段上的结点并依次判断其键值和待查询的键值是否相等。
本发明的有益效果:通过使用两个紧凑数据结构Buckets Array和Range Sketch,可以快速定位待查询的键值所对应的结点必然存在于一个常数长度的链表段上,保证了查询结果可以在访问常数个结点之后给出,提升了有序链表查询的速度。通过调整RangeSketch中单元数组的长度和使用的哈希函数的个数,可以灵活地处理查询速度和内存占用之间的平衡,兼顾内存使用的高效率和键值查询的高性能。本发明可以用于在键-值存储数据库中对键-值对建立有序索引。
附图说明
图1是一个将有序链表切分成链表段并建立的Bucket Array的示例。
图2是一个将键值和其对应的结点所属的桶的编号插入Range Sketch的示例。
图3是使用Buckets Array和Range Sketch加速在有序链表中查询给定键值所对应的结点的过程。
图4是本发明的基于Range Sketch的有序链表快速查询的整体流程。
图5是不同数据结构的空间占用和查询效率实验结果对比图。
具体实施方式
为了使得本发明的目的,技术方案以及优点更加清楚明白,以下结合附图当中的实例对本发明进行更进一步详细说明。
本发明的关键思想是减少每次查询所需要搜索的有序链表结点的数量。首先将有序链表切分为许多首尾相连的链表段,每一个链表段包含常数个结点,并且建立数据结构记录每一个链表段的信息。本发明希望,当需要查询一个特定的键值所对应的结点时,能够提前判断出如果该结点存在,那么必然位于有序链表中的哪一个链表段上。如果知道了该结点只能存在于特定的链表段上(即提前判断给定键值对应的结点在有序链表中所属的特定链表段),那么只需要顺序地搜索这一个链表段上的结点并依次判断其键值和待查询的键值是否相等即可。为了实现上述功能,本发明使用了两个数据结构分别实现这两个需求。本发明首先使用名为Buckets Array(桶数组)的数据结构维护有序链表的每一个链表段的信息,并提出了一种名为Range Sketch(范围简图)的数据结构支持对给定键值可能在有序链表的哪些段上进行查询。
对于一个已经构建完毕并切分成链表段的有序链表,本发明建立Buckets Array对其分段信息进行维护。Buckets Array是一个由多个桶组成的数组,其包含的桶的数量和有序链表被切分成的链表段的数量相等,第k个桶维护第k个链表段的信息。Buckets Array中每一个桶包含三个域,分别是min(最小键值)、max(最大键值)和address(段首地址)。具体地,min记录的是该桶对应的链表段中所有结点的键值的最小值,即链表段第一个结点的键值;max记录的是该桶对应的链表段中所有结点的键值的最大值,即链表段最后一个结点的键值;address记录的是该桶对应的链表段的起始地址,即链表段第一个结点的地址。对于一个有序链表中的结点,如果其属于第k个链表段,也称其属于第k个桶。
Range Sketch是一个由多个单元组成的数组,其功能是维护每一个键值对应的结点可能属于哪些桶。Range Sketch有d个相互独立的哈希函数,每一个哈希函数将一个键值随机地映射到一个单元内。Range Sketch的每一个单元包含两个域,称其为LB(下界)和UB(上界),分别记录被映射到该单元的键值对应的结点所属的桶的编号的最小值和最大值。当对有序链表切分完并建立Buckets Array之后,需要将有序链表中的每一个结点和其所属的桶的编号插入到Range Sketch中。具体地,首先通过该结点的键值和d个哈希函数在Range Sketch中定位d个单元。对于每一个单元,将其记录的LB修改为LB和该结点所属的桶的编号中的较小值,将其记录的UB修改为UB和该结点所属的桶的编号中的较大值。
当查询一个给定的键值在有序链表中对应的结点时,查询流程如图4所示,首先根据该键值和Range Sketch的d个哈希函数定位d个单元。在每一个单元中根据其记录的LB和UB可以得到一个桶的编号的范围。将得到的d个范围求交集,如果求得的交集是空集,那么返回有序链表中没有待查询键值对应的结点。如果求得的交集不是空集,那么依次遍历编号在该交集内的桶,并判断是否存在一个桶,其记录的min小于等于待查询的键值而其记录的max大于等于待查询的键值。如果不存在这样一个桶,那么返回有序链表中没有待查询键值对应的结点。否则会存在唯一一个符合要求的桶,如果有序链表中存在待查询键值对应的结点,这个结点一定在该桶对应的链表段上。通过该桶记录的address得到对应的链表段的第一个结点的地址,并依次访问链表段上的每一个结点,直到某个结点的键值等于待查询的键值或者等于该桶记录的max。如果找到了某个结点的键值等于待查询的键值,那么返回这个结点的地址作为当前的查询的答案,否则返回有序链表中没有待查询键值对应的结点。
图1是本发明一个实施例的切分有序链表并建立Buckets Array的过程。如图1所示,将有序链表切分为8个首尾相连的链表段,其中第4段包含2个结点,分别是键值67和79对应的结点;第5段包含3个结点,分别是键值89、104和124对应的结点;第6段包含3个结点,分别是键值146、198和204对应的结点。本实施例详细描述根据这种切分结果填充BucketsArray中第4、第5和第6个桶的过程。对于第4个桶,其记录的min值是第4个链表段中2个结点对应的键值的最小值,即min=min(67,79)=67;其记录的max值是这2个键值的最大值,即max=max(67,79)=79;其记录的address值是这一个链表段的段首地址,即键值67对应的结点的地址。对于第5个桶,其记录的min=min(89,104,124)=89,其记录的max=max(89,104,124)=124,其记录的address是键值89对应的结点的地址。对于第6个桶,其记录的min=min(146,198,204)=146,其记录的max=max(146,198,204)=204,其记录的address是键值146对应的结点的地址。按照这种规则填写Buckets Array中每一个桶的三个域,以此维护有序链表的分段信息。
图2是本实施例将键值和对应结点桶编号插入Range Sketch中的过程。在第一步中,将键值104对应的结点划分到了有序链表的第5个链表段,并将这一个链表段的信息记录到了Buckets Array中的第5个桶里。在这一步中,需要将键值104对应结点的桶编号5记录到Range Sketch中。具体的,该实例中的Range Sketch使用了3个相互独立的哈希函数,使用这3个哈希函数和键值104定位3个单元,即第2个单元、第6个单元和第10个单元,并且使用桶编号5依次修改这3个单元内记录的LB值和UB值。具体地,对于第2个桶,其LB值3已经小于等于5,则不需要修改其LB值;而其UB值4小于5,则需要将其UB值修改为4和5中的较大值,即修改UB=5。对于第6个桶,其LB值6大于5,则需要将其LB值修改为5和6中的较小值,即修改LB=5;而其UB值8已经大于等于5,则不需要修改其UB值。对于第10个桶,其LB值4已经小于等于5,而其UB值6也已经大于等于5,则对其LB值和UB值均不做修改。按照这种规则将有序链表中每一个结点的键值和所属的桶编号记录在Range Sketch中,以此缩减查询所需要搜索的Buckets Array中桶的数量。
图3是本实施例使用Range Sketch和Buckets Array加速有序链表的键值查找的过程。在本例中需要查找键值104所对应的结点,查找过程分3个步骤进行。
在第一个步骤中,通过Range Sketch确定键值104对应的结点所属的桶的范围。具体地,使用Range Sketch所包含的3个哈希函数和键值104定位3个单元,即第2个单元、第6个单元和第10个单元,并且使用每一个单元内记录的LB值和UB值分别生成3个区间[2,6]、[4,8]和[3,7]。对3个区间求交集运算,得到交集[2,6]∩[4,8]∩[3,7]=[4,6],从而确定键值104对应结点一定属于第4个、第5个或者第6个桶。
在第二个步骤中,顺序遍历Buckets Array的第4个到第6个桶,并判断键值104对应的结点具体属于那一个桶。对于第4个桶,发现键值104大于其记录的max值79,则键值104对应的结点不属于第4个桶。对于第5个桶,发现键值104大于等于其记录的min值89,并且小于等于其记录的max值124,则确定键值104对应的结点一定属于第5个桶,也就是一定在第5个链表段上。
在第三个步骤中,通过第5个桶的address值找到第5个链表段的第一个结点,即键值89对应的结点。我们发现这一个结点的键值89并不等于待查询的键值104,则访问这一个结点的后继结点。此时发现当前结点的键值104正好就是待查询的键值,则找到了键值104对应的结点,本算法返回当前结点的地址。此外,如果上述第一步中得到了一个空集,或者第二步和第三步在给定的范围内没有找到相应的桶或者结点,那么本算法返回待有序链表中不存在待查询的键值对应的结点。
下面提供采用本发明方法的一个具体应用领域的实例:
键-值存储数据库中通常需要对键-值对信息建立有序索引,当前的数据库通常使用B+树和红黑树作为有序索引数据结构。这些数据结构支持对数复杂度的键查询操作和区间查询操作。在静态键-值存储数据库中,范围简图能够作为B+树和红黑树的高效替代,在空间利用率更加高效的同时实现更加快速的键查找操作。例如:某用户需要建立数据库存储所有商品的物品信息,其中每个物品的信息存储在一个文件中。该用户希望能够快速定位存储某物品信息的文件,因此需要对“键:物品ID;值:文件地址”建立索引。该用户可以使用范围简图建立静态数据库,首先使用有序链表组织所有“键:物品ID;值:文件地址”键值对,并针对该有序链表建立范围简图;该用户在查找某物品的信息时,可以首先根据物品ID作为键,借助范围简图在有序链表中获取存储该物品信息的文件的文件地址,并读取相应文件获得物品信息。
实验对比了朴素的有序链表,基于红黑树的字典,和使用范围简图优化的有序链表3种数据结构的空间占用和查询效率。本实验使用320,000以内的160,000个随机正整数作为键插入数据结构,并依次使用1到320,000作为键在数据结构中进行查询,记录内存占用和查询用时。对于范围简图,本实验将链表划分为10,000个链表段,设置桶数组长度是10,000,令范围简图长度从200,000变化至1,900,000,并设置d=2。实验结果如表1所示。表1的实验结果展示如图5所示。根据表1和图5可知,本发明可以灵活地处理查询速度和内存占用之间的平衡,能够兼顾内存使用的高效率和键值查询的高性能。
表1.实验结果
基于同一发明构思,本发明的另一实施例提供一种采用上述方法的基于RangeSketch的有序链表快速查询装置,其包括:
有序链表切分模块,用于将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
有序链表查询模块,用于当需要查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索所述特定链表段上的结点并依次判断其键值和待查询的键值是否相等。
基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
以上公开的本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例和附图所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
Claims (8)
1.一种基于Range Sketch的有序链表快速查询方法,其特征在于,包括以下步骤:
将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
在查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索该特定链表段上的结点并依次判断其键值和待查询的键值是否相等;
采用桶数组Buckets Array维护有序链表的每一个链表段的信息;Buckets Array是一个由多个桶组成的数组,桶的数量和有序链表被切分成的链表段的数量相等,第k个桶维护第k个链表段的信息;
采用范围简图Range Sketch判断待查询的键值所对应的结点在有序链表中所属的特定链表段;Range Sketch是一个由多个单元组成的数组,其功能是维护每一个键值对应的结点可能属于哪些桶。
2.根据权利要求1所述的方法,其特征在于,每一个桶包含三个域,分别是:
最小键值min,记录桶对应的链表段中所有结点的键值的最小值,即链表段第一个结点的键值;
最大键值max,记录桶对应的链表段中所有结点的键值的最大值,即链表段最后一个结点的键值;
段首地址address,记录桶对应的链表段的起始地址,即链表段第一个结点的地址。
3.根据权利要求1所述的方法,其特征在于,Range Sketch含有d个相互独立的哈希函数,每一个哈希函数将一个键值随机地映射到一个单元内;每一个单元包含两个域即下界LB和上界UB,分别记录被映射到该单元的键值对应的结点所属的桶的编号的最小值和最大值;当对有序链表切分完并建立Buckets Array之后,将有序链表中的每一个结点和其所属的桶的编号插入到Range Sketch中。
4.根据权利要求3所述的方法,其特征在于,所述将有序链表中的每一个结点和其所属的桶的编号插入到Range Sketch中,包括:
通过结点的键值和d个哈希函数在Range Sketch中定位d个单元;
对于每一个单元,将其记录的LB修改为LB和该结点所属的桶的编号中的较小值,将其记录的UB修改为UB和该结点所属的桶的编号中的较大值。
5.根据权利要求4所述的方法,其特征在于,采用以下步骤查询一个给定的键值在有序链表中对应的结点:
根据该键值和Range Sketch的d个哈希函数定位d个单元,在每一个单元中根据其记录的LB和UB得到一个桶的编号的范围,将得到的d个范围求交集;
如果求得的交集是空集,那么返回有序链表中没有待查询键值对应的结点;如果求得的交集不是空集,那么依次遍历编号在该交集内的桶,并判断是否存在一个桶,其记录的min小于等于待查询的键值而其记录的max大于等于待查询的键值;
如果不存在这样一个桶,那么返回有序链表中没有待查询键值对应的结点;否则会存在唯一一个符合要求的桶,通过该桶记录的address得到对应的链表段的第一个结点的地址,并依次访问链表段上的每一个结点,直到某个结点的键值等于待查询的键值或者等于该桶记录的max;
如果找到了某个结点的键值等于待查询的键值,那么返回这个结点的地址作为当前的查询的答案,否则返回有序链表中没有待查询键值对应的结点。
6.一种采用权利要求1~5中任一权利要求所述方法的基于Range Sketch的有序链表快速查询装置,其特征在于,包括:
有序链表切分模块,用于将有序链表切分为多个首尾相连的链表段,每一个链表段包含常数个结点,并建立数据结构以记录每一个链表段的信息;
有序链表查询模块,用于当需要查询一个特定的键值所对应的结点时,判断该对应的结点在有序链表中所属的特定链表段,顺序地搜索所述特定链表段上的结点并依次判断其键值和待查询的键值是否相等;
所述有序链表查询模块采用桶数组Buckets Array维护有序链表的每一个链表段的信息;Buckets Array是一个由多个桶组成的数组,桶的数量和有序链表被切分成的链表段的数量相等,第k个桶维护第k个链表段的信息;
所述有序链表查询模块采用范围简图Range Sketch判断待查询的键值所对应的结点在有序链表中所属的特定链表段;Range Sketch是一个由多个单元组成的数组,其功能是维护每一个键值对应的结点可能属于哪些桶。
7.一种电子装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~5中任一权利要求所述方法的指令。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~5中任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010459848 | 2020-05-27 | ||
CN2020104598486 | 2020-05-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632087A CN112632087A (zh) | 2021-04-09 |
CN112632087B true CN112632087B (zh) | 2022-10-14 |
Family
ID=75294395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110035396.3A Active CN112632087B (zh) | 2020-05-27 | 2021-01-12 | 基于范围简图的有序链表快速查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632087B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287131B1 (en) * | 2003-03-21 | 2007-10-23 | Sun Microsystems, Inc. | Method and apparatus for implementing a fully dynamic lock-free hash table |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
CN110929103A (zh) * | 2019-11-20 | 2020-03-27 | 车智互联(北京)科技有限公司 | 为数据集合构建索引的方法、数据查询方法及计算设备 |
-
2021
- 2021-01-12 CN CN202110035396.3A patent/CN112632087B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287131B1 (en) * | 2003-03-21 | 2007-10-23 | Sun Microsystems, Inc. | Method and apparatus for implementing a fully dynamic lock-free hash table |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
CN110929103A (zh) * | 2019-11-20 | 2020-03-27 | 车智互联(北京)科技有限公司 | 为数据集合构建索引的方法、数据查询方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112632087A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101972645B1 (ko) | 클러스터링 저장 방법 및 장치 | |
Beckmann et al. | A revised R*-tree in comparison with related index structures | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
US9292554B2 (en) | Thin database indexing | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN106503223B (zh) | 一种结合位置和关键词信息的在线房源搜索方法及装置 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
WO2021016050A1 (en) | Multi-record index structure for key-value stores | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN111831691A (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
US9292553B2 (en) | Queries for thin database indexing | |
CN115809248B (zh) | 数据查询方法和装置以及存储介质 | |
CN112632087B (zh) | 基于范围简图的有序链表快速查询方法和装置 | |
CN109299106B (zh) | 数据查询方法和装置 | |
CN109241098B (zh) | 一种分布式数据库的查询优化方法 | |
CN112860734B (zh) | 地震数据多维度范围查询方法及装置 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN111639099A (zh) | 全文索引方法及系统 | |
Pagh | Basic external memory data structures | |
RU2656721C1 (ru) | Способ организации хранения частично совпадающих больших объектов | |
KR20010109945A (ko) | 비공간검색조건이 포함된 케이-최근접 질의를 위한알에스트리구조 및 점증적 최근접 방법 |
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 |