CN112800067B - 范围查询方法、装置、计算机可读存储介质及电子设备 - Google Patents
范围查询方法、装置、计算机可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN112800067B CN112800067B CN202110193211.1A CN202110193211A CN112800067B CN 112800067 B CN112800067 B CN 112800067B CN 202110193211 A CN202110193211 A CN 202110193211A CN 112800067 B CN112800067 B CN 112800067B
- Authority
- CN
- China
- Prior art keywords
- value
- key
- node
- range
- tree
- 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/2246—Trees, e.g. B+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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种范围查询方法、装置、计算机可读存储介质及电子设备,包括:将数据存储地址的范围信息按照B+树结构进行存储;接收范围查询请求;根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果;本发明通过将数据存储地址的范围信息按照B+树结构进行存储,并基于B+树结构的特性进行查询,相对于现有技术中的建立索引方式,可以节省大量的索引空间,相对现有技术中的区间排序方式,查询性能更加稳定,从而实现了既可以提供稳定高效的查询性能,同时又可以节省大量的缓存空间。
Description
技术领域
本发明涉及固件处理领域,尤其涉及一种范围查询方法、装置、计算机可读存储介质及电子设备。
背景技术
范围查询是固件处理中比较常见的功能,例如读写范围冲突检查、多段区间的合并等都涉及到范围查询功能。关于实现高效的范围查询机制,目前主要采用两种方式,一种是首先进行区间排序,然后遍历比较;另一种是根据范围建立索引,然后通过查询索引来进行比较,例如使用bitmap对整个范围建立索引,插入某个范围则更新对应的bit值,搜索某个范围则查询对应的bit值。
对于第一种方式,区间排序本身会引入一定的时间开销,同时遍历比较的过程也会引入不确定的时间开销,而且需要遍历的区间越多,自然查询的时间也越长。
对于第二种方式,会不可避免的引入额外的索引开销,包括时间开销和空间开销,而且如果需要查询的范围比较大,例如1T的范围,则需要消耗巨大的缓存空间,不具备实际应用的可行性。
发明内容
本发明所要解决的技术问题是:提出一种范围查询方法、装置、计算机可读存储介质及电子设备,既可以提供稳定高效的查询性能,同时又可以节省大量的缓存空间。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种范围查询方法,包括步骤:
将数据存储地址的范围信息按照B+树结构进行存储;
接收范围查询请求;
根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种范围查询装置,包括:
存储模块,用于将数据存储地址的范围信息按照B+树结构进行存储;
接收模块,用于接收范围查询请求;
操作模块,用于根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述范围查询方法中的各个步骤。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述范围查询方法中的各个步骤。
本发明的有益效果在于:本发明通过将数据存储地址的范围信息按照B+树结构进行存储,并基于B+树结构的特性进行查询,具体体现在B+树的中间节点只存放索引,不直接存放数据记录,所以单一节点可以存储更多的元素,从而相对于现有技术中的建立索引方式,可以节省大量的索引空间,不会因为需要查询的范围比较大而消耗巨大的缓存空间,同时B+树的阶数固定,每次查询都会从根节点逐层查找到叶子节点,所以每次查询的路径长度相同以及效率相当,相对现有技术中的区间排序方式,查询性能更加稳定,不会因为每次查询需要遍历的区间量不同而引入不同的时间开销,而且B+树中所有的叶子节点形成有序链表,根据有序链表进行范围查询更加简便高效;综上,本发明所述范围查询方法既可以提供稳定高效的查询性能,同时又可以节省大量的缓存空间。
附图说明
图1为本发明实施例的一种范围查询方法的步骤示意图;
图2为本发明实施例的一种范围查询装置的结构示意图;
图3为本发明实施例的一种电子设备的结构示意图;
图4为本发明实施例中一种B+树的结构示意图;
图5为本发明实施例中B+树节点存储空间的结构示意图;
图6为本发明实施例中一种存储范围信息的B+树结构示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种范围查询方法,包括步骤:
将数据存储地址的范围信息按照B+树结构进行存储;
接收范围查询请求;
根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
由上述描述可知,通过将数据存储地址的范围信息按照B+树结构进行存储,并基于B+树结构的特性进行查询,具体体现在B+树的中间节点只存放索引,不直接存放数据记录,所以单一节点可以存储更多的元素,从而相对于现有技术中的建立索引方式,可以节省大量的索引空间,不会因为需要查询的范围比较大而消耗巨大的缓存空间,同时B+树的阶数固定,每次查询都会从根节点逐层查找到叶子节点,所以每次查询的路径长度相同以及效率相当,相对现有技术中的区间排序方式,查询性能更加稳定,不会因为每次查询需要遍历的区间量不同而引入不同的时间开销,而且B+树中所有的叶子节点形成有序链表,根据有序链表进行范围查询更加简便高效;综上,本发明所述范围查询方法既可以提供稳定高效的查询性能,同时又可以节省大量的缓存空间。
进一步地,所述将数据存储地址的范围信息按照B+树结构进行存储包括:
将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点;
从所述叶子节点开始根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值直至根节点。
进一步地,所述B+树中的根节点、中间节点和叶子节点包括相同的节点结构;
所述节点结构包括Key-Value键值对;
所述将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点包括:
根据所述数据存储地址的范围信息的其中一个边界值确定所述B+树的叶子节点的Key-Value键值对的Key值,根据另一个边界值确定所述Key-Value键值对的Value值;
所述根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值包括:
根据下一级节点的个数在上一级节点中设置对应个数的Key-Value键值对;
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定,Value值根据其对应的下一级节点的索引信息确定。
由上述描述可知,通过将范围信息的两个边界值以Key-Value键值对的形式存储至所述B+树的叶子节点,并从所述叶子节点开始根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的Key-Value键值对直至根节点,通过所述设置可以将范围信息和B+树的数据结构适应的进行结合,便于后续的范围查询。
进一步地,所述两个边界值包括起始地址和截止地址;
根据所述截止地址确定所述B+树的叶子节点的Key-Value键值对的Key值,根据所述起始地址确定所述Key-Value键值对的Value值;
所述每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定包括:
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值的最大值确定。
由上述描述可知,通过将范围信息的截止地址存储在B+树的Key中,并且叶子节点中对应的Value存储对应的起始地址,由于B+树中叶子节点的Key涵盖全部的截止地址信息,从而在B+树遍历能够方便快速地查找到叶子节点的Key值,从而获取到所需要的范围信息。
进一步地,还包括:
预设节点空间;
将所述B+树的节点存储到所述预设节点空间。
由上述描述可知,通过根据所述B+树的节点情况适应的分配相应的节点空间,便于存储所述范围信息以供后续进行范围查询。
进一步地,所述范围查询请求包括范围冲突查询请求;
所述根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果包括:
获取所述范围冲突查询请求中目标范围的目标边界值;
根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对;
若所述目标Key-Value键值对对应的范围信息和所述目标范围有重合,则返回冲突;
若所述目标Key-Value键值对对应的范围信息和所述目标范围无重合,则返回不冲突。
由上述描述可知,通过设置读写范围冲突查询,可以在执行读写操作前先进行范围检测,判断所述读写操作是否在同一地址上,从而避免因读写冲突导致数据异常的现象。
进一步地,所述目标边界值为所述目标范围的起始地址;
所述根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对包括:
从B+树的根节点开始向下级节点逐级遍历到叶子节点,搜索大于或者等于所述目标边界值的最小Key值;
根据所述最小Key值确定与所述目标边界值最相近的目标Key-Value键值对。
由上述描述可知,通过根据目标范围的目标边界值在B+树中进行查询,可以得到与目标范围最相近的范围信息,从而判断是否读写范围出现冲突,并且每次执行读写操作前进行范围冲突查询都会从根节点逐层查找到叶子节点,因为B+树的阶数固定,所以每次查询的路径长度相同以及效率相当,查询性能更加稳定。
请参照图2,本发明另一实施例提供了一种范围查询装置,包括:
存储模块,用于将数据存储地址的范围信息按照B+树结构进行存储;
接收模块,用于接收范围查询请求;
操作模块,用于根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述范围查询方法中的各个步骤。
请参照图3,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述范围查询方法中的各个步骤。
本发明上述范围查询的方法、装置、计算机可读存储介质及电子设备可以应用于任何类型的范围查询,具有通用性,以下通过具体实施方式进行说明:
本发明的实施例一为:
请参照图1,一种范围查询方法,包括步骤:
将数据存储地址的范围信息按照B+树结构进行存储;
其中所述B+树是一种特殊的数据结构,B+树中具有k个子树的中间节点包含k个元素,每个元素不保存数据,只用来索引,所有数据都保存在叶子节点,所有的叶子节点中包含了全部元素的信息,以及指向含这些元素记录的指针,且叶子节点本身依关键字的大小自小而大顺序链接,所有的中间节点元素都同时存在于子节点,在子节点元素中是最大或最小元素;
以图4为例详细说明B+树的结构,图4是一棵5阶的B+树,中间节点和叶子节点包含的元素不超过5个,中间节点中包含的元素为子树中的最大值,例如节点(2、5、8)表示这个节点存在三棵子树,其中第一棵子树存储的范围为小于等于2,第二棵子树的范围为大于2同时小于等于5,第三棵子树表示大于5同时小于等于8,叶子节点中包含具体的范围和业务数据;
在一种可选的实施方式中,将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点,从所述叶子节点开始根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值直至根节点;
接收范围查询请求;
根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
本发明的实施例二为:
在实施例一的基础上,对所述B+树的节点结构进行了进一步限定:
预设节点空间;
将所述B+树的节点存储到所述预设节点空间;
具体地,可以预留256个节点,采用Range_Node_t rangeNodePool[256]进行定义;
所述B+树中的根节点、中间节点和叶子节点包括相同的节点结构;
所述节点结构包括Key-Value键值对;
具体地,m阶的B+树定义如下:
Typedef structtagRange_Node_t{
Uint8_t type;
Uint8_t cnt;
Uint8_t key[m];
Uint8_t value[m];
}Range_Node_t;
其中,字段type用来表示节点的类型是中间节点还是叶子节点,cnt用来存储节点中包含的有效元素数目,所述数目不超过m,字段key用来存储节点中的元素值,例如图4中节点(2、5、8)中的2、5、8,中间节点的字段value用来存储节点中子树的索引信息,叶子节点的字段valu+e用来存储范围信息;
预设节点空间中B+树的节点结构如图5所示,中间节点的字段value指向了叶子节点的索引;
所述将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点包括:
根据所述数据存储地址的范围信息的其中一个边界值确定所述B+树的叶子节点的Key-Value键值对的Key值,根据另一个边界值确定所述Key-Value键值对的Value值;
所述根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值包括:
根据下一级节点的个数在上一级节点中设置对应个数的Key-Value键值对;
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定,Value值根据其对应的下一级节点的索引信息确定。
本发明的实施例三为:
在实施例一和实施例二的基础上,进一步限定了将范围信息的两个边界值按照B+树结构进行存储的过程;
所述两个边界值包括起始地址和截止地址;
在一个可选的实施方式中,根据所述截止地址确定所述B+树的叶子节点的Key-Value键值对的Key值,根据所述起始地址确定所述Key-Value键值对的Value值;
在另一个可选的实施方式中,根据所述起始地址确定所述B+树的叶子节点的Key-Value键值对的Key值,根据所述截止地址确定所述Key-Value键值对的Value值;
所述每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定包括:
在一个可选的实施方式中,每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值的最大值确定;
在另一个可选的实施方式中,每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值的最小值确定;
具体地,本实施例中数据存储地址的范围分别为[10~16]、[20~30]、[33~43]、[45~58]、[69~76]、[78~90]、[99~107]、[111~119]、[123~320]、[415~510],将所述范围信息的两个边界值按照B+树结构进行存储的过程如下:
将截止地址16、30、43、58、76、90、107、119、320、510分别作为所述B+树的叶子节点中Key-Value键值对的Key值,起始地址10、20、33、45、69、78、99、111、123、415则作为所述B+树的叶子节点中Key-Value键值对的value值,叶子节点中存储的Key-Value键值对按照Key值由小到大的顺序依次由左到右排列,且相邻的叶子节点设置有相互链接的指针,其中每个叶子节点存储Key-Value键值对的数目不超过所述B+树的阶数;
根据索引子节点的个数在上一级的节点中设置对应个数的Key-Value键值对,其中每一Key-Value键值对的Key值根据其索引的子节点存储的所有Key值的最大值确定,Value值根据其对应的子节点的索引信息确定;
按照上述过程从叶子节点向上逐层设置中间节点直至到根节点,形成的存储上述范围信息的B+树结构如图6所示。
本发明的实施例四为:
在实施例三的基础上,对所述范围查询请求进行了进一步限定:
所述范围查询请求包括范围冲突查询请求;
所述根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果包括:
获取所述范围冲突查询请求中目标范围的目标边界值;
根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对;
若所述目标Key-Value键值对对应的范围信息和所述目标范围有重合,则返回冲突;
若所述目标Key-Value键值对对应的范围信息和所述目标范围无重合,则返回不冲突;
在一种可选的实施方式中,若所述B+树中叶子节点存储的Key-Value键值对中Key值为范围信息的截止地址,Value值为范围信息的起始地址,则所述目标边界值为所述目标范围的起始地址;
所述根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对包括:
从B+树的根节点开始向下级节点逐级遍历到叶子节点,搜索大于或者等于所述目标边界值的最小Key值;
根据所述最小Key值确定与所述目标边界值最相近的目标Key-Value键值对;
具体地,对实施例三中所述数据存储地址的范围进行冲突查询,例如查询地址范围[55~77]是否存在冲突,则需要从图6的B+树中的根节点开始向下级节点逐级遍历到叶子节点,查找大于等于起始地址55的最小Key值,具体过程如下:
根节点(90、510)表示这个节点具有两个子节点,其中Key值90对应的Value索引指向左边子节点,其存储的范围为小于等于90,Key值510对应的Value索引指向右边子节点,其存储的范围为大于90同时小于等于510,根据大于等于起始地址55的最小Key值,则先选择左边子节点(30、58、90)继续向下级遍历;
左边子节点(30、58、90)表示这个节点具有三个子节点,其中Key值30对应的Value索引指向最左边子节点,其存储的范围为小于等于30,Key值58对应的Value索引指向中间子节点,其存储的范围为大于30同时小于等于58,Key值90对应的Value索引指向最右边子节点,其存储的范围为大于58同时小于等于90,根据大于等于起始地址55的最小Key值,则先选择中间子节点(43、58)继续向下级遍历;
中间子节点(43、58)是叶子节点,不需要继续向下级遍历,则对该叶子节点内部存储的Key值进行比较即可,得到大于等于起始地址55的最小Key值58;
最小Key值58对应的目标Key-Value键值对中的Value值为45,其中Key值作为范围信息的截止地址,Value值作为范围信息的起始地址,可得与目标范围[55~77]最接近的范围信息为[45~58],由于[45~58]与[55~77]存在重合部分,所以该范围冲突查询的结果为冲突;
按照上述过程对地址范围[109~120]是否存在范围冲突进行查询,首先需要从B+树中查找大于等于109的最小Key值,查找到最小Key值为119,则目标Key-Value键值对对应的范围信息为[111~119],然后与目标范围[109~120]进行比较,由于[111~119]与[109~120]存在重合部分,所以该范围冲突查询的结果为冲突;
按照上述过程对地址范围[92~98]是否存在范围冲突进行查询,首先需要从B+树中查找大于等于92的最小Key值,查找到最小Key值为107,则目标Key-Value键值对对应的范围信息为[99~107],然后与目标范围[92~98]进行比较,由于[99~107]与[92~98]不存在重合部分,所以该范围冲突查询的结果为不冲突;
在另一种可选的实施方式中,若所述B+树中叶子节点存储的Key-Value键值对中Key值为范围信息的起始地址,Value值为范围信息的截止地址,则所述目标边界值为所述目标范围的截止地址;
所述根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对包括:
从B+树的根节点开始向下级节点逐级遍历到叶子节点,搜索小于或者等于所述目标边界值的最大Key值;
根据所述最大Key值确定与所述目标边界值最相近的目标Key-Value键值对。
本发明的实施例五为:
请参照图2,一种范围查询装置,包括:
存储模块,用于将数据存储地址的范围信息按照B+树结构进行存储;
接收模块,用于接收范围查询请求;
操作模块,用于根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果。
本发明的实施例六为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例一至四中任一个中的一种范围查询方法中的各个步骤。
本发明的实施例七为:
请参照图3,一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例一至四中任一个中的一种范围查询方法中的各个步骤。
综上所述,本发明提供的一种范围查询方法、装置、计算机可读存储介质及电子设备,通过将数据存储地址范围信息的两个边界值按照B+树结构进行存储,并设置B+树的节点结构包括Key-Value键值对,其中叶子节点中所述键值对的Key值和Value值与所述范围信息的起始地址和截止地址一一对应,从而可以将数据存储地址的范围信息与B+树结构适应性的结合,便于后续根据B+树结构的优良特性进行范围查询,具体体现在B+树的中间节点只存放索引,不直接存放数据记录,所以单一节点可以存储更多的元素,从而相对于现有技术中的建立索引方式,可以节省大量的索引空间,不会因为需要查询的范围比较大而消耗巨大的缓存空间;同时B+树的阶数固定,每次查询都会从根节点逐层查找到叶子节点,所以每次查询的路径长度相同以及效率相当,相对现有技术中的区间排序方式,查询性能更加稳定,不会因为每次查询需要遍历的区间量不同而引入不同的时间开销;尤其可以方便地应用于读写范围冲突查询,从而避免因读写冲突导致数据异常的现象;而且B+树中所有的叶子节点形成有序链表,根据有序链表进行范围查询更加简便高效;综上,本发明所述范围查询方法既可以提供稳定高效的查询性能,同时又可以节省大量的缓存空间。
在本申请所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种范围查询方法,其特征在于,包括步骤:
将数据存储地址的范围信息按照B+树结构进行存储;
接收范围查询请求;
根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果;
所述将数据存储地址的范围信息按照B+树结构进行存储包括:
将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点;
从所述叶子节点开始根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值直至根节点;
所述B+树中的根节点、中间节点和叶子节点包括相同的节点结构;
所述节点结构包括Key-Value键值对;
所述将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点包括:
根据所述数据存储地址的范围信息的其中一个边界值确定所述B+树的叶子节点的Key-Value键值对的Key值,根据另一个边界值确定所述Key-Value键值对的Value值;
所述根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值包括:
根据下一级节点的个数在上一级节点中设置对应个数的Key-Value键值对;
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定,Value值根据其对应的下一级节点的索引信息确定。
2.根据权利要求1所述的一种范围查询方法,其特征在于,所述两个边界值包括起始地址和截止地址;
根据所述截止地址确定所述B+树的叶子节点的Key-Value键值对的Key值,根据所述起始地址确定所述Key-Value键值对的Value值;
所述每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定包括:
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值的最大值确定。
3.根据权利要求1或2中任一项所述的一种范围查询方法,其特征在于,还包括:
预设节点空间;
将所述B+树的节点存储到所述预设节点空间。
4.根据权利要求2所述的一种范围查询方法,其特征在于,所述范围查询请求包括范围冲突查询请求;
所述根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果包括:
获取所述范围冲突查询请求中目标范围的目标边界值;
根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对;
若所述目标Key-Value键值对对应的范围信息和所述目标范围有重合,则返回冲突;
若所述目标Key-Value键值对对应的范围信息和所述目标范围无重合,则返回不冲突。
5.根据权利要求4所述的一种范围查询方法,其特征在于,所述目标边界值为所述目标范围的起始地址;
所述根据所述目标边界值在所述B+树中进行遍历并确定与所述目标边界值最相近的目标Key-Value键值对包括:
从B+树的根节点开始向下级节点逐级遍历到叶子节点,搜索大于或者等于所述目标边界值的最小Key值;
根据所述最小Key值确定与所述目标边界值最相近的目标Key-Value键值对。
6.一种范围查询装置,其特征在于,包括:
存储模块,用于将数据存储地址的范围信息按照B+树结构进行存储;
接收模块,用于接收范围查询请求;
操作模块,用于根据所述范围查询请求在所述B+树中进行遍历并反馈对应的结果;
所述将数据存储地址的范围信息按照B+树结构进行存储包括:
将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点;
从所述叶子节点开始根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值直至根节点;
所述B+树中的根节点、中间节点和叶子节点包括相同的节点结构;
所述节点结构包括Key-Value键值对;
所述将所述数据存储地址的范围信息的两个边界值存储至所述B+树的叶子节点包括:
根据所述数据存储地址的范围信息的其中一个边界值确定所述B+树的叶子节点的Key-Value键值对的Key值,根据另一个边界值确定所述Key-Value键值对的Value值;
所述根据下一级节点的索引信息以及存储的边界值确定上一级节点存储的值包括:
根据下一级节点的个数在上一级节点中设置对应个数的Key-Value键值对;
每一Key-Value键值对的Key值根据其对应的下一级节点存储的所有Key值确定,Value值根据其对应的下一级节点的索引信息确定。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任意一项所述的一种范围查询方法中的各个步骤。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5任意一项所述的一种范围查询方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110193211.1A CN112800067B (zh) | 2021-02-20 | 2021-02-20 | 范围查询方法、装置、计算机可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110193211.1A CN112800067B (zh) | 2021-02-20 | 2021-02-20 | 范围查询方法、装置、计算机可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112800067A CN112800067A (zh) | 2021-05-14 |
CN112800067B true CN112800067B (zh) | 2023-06-20 |
Family
ID=75815253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110193211.1A Active CN112800067B (zh) | 2021-02-20 | 2021-02-20 | 范围查询方法、装置、计算机可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112800067B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003562B (zh) * | 2021-12-29 | 2022-03-22 | 苏州浪潮智能科技有限公司 | 一种目录遍历方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108134856A (zh) * | 2017-12-25 | 2018-06-08 | 杭州叙简科技股份有限公司 | 一种基于网络树的虚拟化mac地址防冲突方法和装置 |
CN109299111A (zh) * | 2018-11-14 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种元数据查询方法、装置、设备及计算机可读存储介质 |
CN109643309A (zh) * | 2016-09-08 | 2019-04-16 | 华为技术有限公司 | 用于对跳跃表数据结构执行范围查询的系统和方法 |
CN111125120A (zh) * | 2019-12-30 | 2020-05-08 | 广州数锐智能科技有限公司 | 一种面向流数据的快速索引方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127465B2 (en) * | 2002-09-30 | 2006-10-24 | Sun Microsystems, Inc. | Memory-efficient metadata organization in a storage array |
US11341128B2 (en) * | 2015-11-12 | 2022-05-24 | Sap Se | Poly-logarithmic range queries on encrypted data |
US11093471B2 (en) * | 2018-06-05 | 2021-08-17 | Vmware, Inc. | Large range lookups for Bϵ-tree |
-
2021
- 2021-02-20 CN CN202110193211.1A patent/CN112800067B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643309A (zh) * | 2016-09-08 | 2019-04-16 | 华为技术有限公司 | 用于对跳跃表数据结构执行范围查询的系统和方法 |
CN108134856A (zh) * | 2017-12-25 | 2018-06-08 | 杭州叙简科技股份有限公司 | 一种基于网络树的虚拟化mac地址防冲突方法和装置 |
CN109299111A (zh) * | 2018-11-14 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种元数据查询方法、装置、设备及计算机可读存储介质 |
CN111125120A (zh) * | 2019-12-30 | 2020-05-08 | 广州数锐智能科技有限公司 | 一种面向流数据的快速索引方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
Efficient Concurrent Range Queries in B+-trees using RCU-HTM;Dimitrios Siakavaras 等;《SPAA "20: Proceedings of the 32nd ACM Symposium on Parallelism in Algorithms and Architectures》;20200709;571–573 * |
基于B+树的XML数据查询处理;林智华 等;《福建师范大学学报(自然科学版)》;20070320(第2期);29-32 * |
基于改进B树索引的DHT多维范围查询;谢富荣;《现代计算机》;20130215(第05期);15-17+52 * |
Also Published As
Publication number | Publication date |
---|---|
CN112800067A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
JP6225261B2 (ja) | データを記憶する方法及び装置 | |
US9537972B1 (en) | Efficient access to sparse packets in large repositories of stored network traffic | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
WO2009058696A1 (en) | Method and apparatus for searching a hierarchical database and an unstructured database with a single search query | |
CN109918341B (zh) | 日志处理方法及装置 | |
WO2010043970A2 (en) | System and method for distributed index searching of electronic content | |
CN103561133A (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN110928882B (zh) | 一种基于改进红黑树的内存数据库索引方法及系统 | |
CN110134335B (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN105335402A (zh) | 基于静态Cache的搜索方法、索引数据生成方法以及装置 | |
JP2014232532A (ja) | 範囲クエリを処理するデータベース制御部、方法及びプログラム | |
CN111966843A (zh) | 图数据库构建方法、路径搜索方法、装置和电子设备 | |
CN112800067B (zh) | 范围查询方法、装置、计算机可读存储介质及电子设备 | |
KR100999408B1 (ko) | 해시트리를 이용한 url 검색방법 | |
CN117435912A (zh) | 基于网络数据包属性值长短特征的数据包索引与检索方法 | |
CN112527824B (zh) | 分页查询方法、装置、电子设备和计算机可读存储介质 | |
Belazzougui et al. | Compressed string dictionary look-up with edit distance one | |
US8549041B2 (en) | Converter traversal using power of two-based operations | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
CN108984780B (zh) | 基于支持重复键值树数据结构管理磁盘数据的方法和装置 | |
US20210286793A1 (en) | Indexing stored data objects using probabilistic filters | |
CN110321346B (zh) | 一种字符串散列表实现方法和系统 | |
JP6323887B2 (ja) | ルートノードを変更するための方法および変更装置 |
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 |