CN101256579A - 一种数据库范围查询数据组织的方法 - Google Patents
一种数据库范围查询数据组织的方法 Download PDFInfo
- Publication number
- CN101256579A CN101256579A CNA2008100664721A CN200810066472A CN101256579A CN 101256579 A CN101256579 A CN 101256579A CN A2008100664721 A CNA2008100664721 A CN A2008100664721A CN 200810066472 A CN200810066472 A CN 200810066472A CN 101256579 A CN101256579 A CN 101256579A
- Authority
- CN
- China
- Prior art keywords
- tree
- record
- index
- indexed
- correspondence
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库范围查询数据组织的方法,其用于一通讯***的数据管理,并包括以下步骤:首先根据索引关键字建立B树索引;然后,对所述B树索引以所述索引关键字建立hash索引;再次,结合所述B树索引和hash索引对数据库进行管理。采用本发明的上述方法,既可以在单位时间内完成单一查询,也可以在单位时间内完成范围查询。相对于现有技术中只采用B树索引的查找方式,从原B树索引的logn+m减少了logn-2次操作,这在频繁的查询操作中是非常有益的,并且在数据量较大的数据库***中本发明的方法也具有明显的效果。
Description
技术领域
本发明涉及现代内存数据库查询技术,具体涉及一种数据库范围查询数据组织的方法。
背景技术
无线通讯技术的发展对数据管理提出了越来越高的要求,特别是在***通讯***中对数据查询速度的更是提出了更高的要求,传统的范围查询一般采用B树的方式对某些列建立索引以辅助查询,找到查询的最小值,找到查询的最大值就可以用常数时间遍历需要的数据。但是对于最大值和最小值的查询却是对数时间复杂度。数据库中另一种O(1)时间复杂度的索引方案是采用hash方法建立索引,但是该方法却不能实现范围查询的目的。
目前对于实时***,特别是未来的基站***,其数据量比较大,传统的范围查询方案逐渐地不能满足其要求。比如,现在常用的各种数据库的范围查询所采用的B树索引,其在查小范围记录的时候查询效率比较低,无法满足大数据量查询的需求。所以就需要提供一种更高效地查询方法。
发明内容
本发明的目的在于提出一种数据库范围查询数据组织的方法,其属于一种新的索引组织方案,该方案既能很好地适应单一记录查询,也能更有效地实现范围查询,并且这两种查询在效率上没有任何区别。
为了实现上述目的,本发明采用如下技术方案:
本发明的方法用于一通讯***的数据管理,并包括以下步骤进行:
A、根据索引关键字建立B树索引;
B、对所述B树索引以所述索引关键字建立hash索引;
C、结合所述B树索引和hash索引对数据库进行管理。
其中,在hash索引中,每个hash索引项记录有:所述索引关键字,以及所述索引关键字对应的B树节点地址。
其中,所述步骤C采用如下过程在数据库范围内进行单记录查询:
C11、根据预查询记录的索引关键字,在所述hash索引处查找与预查询记录相对应的hash索引项;
C12、从查找到的hash索引项中读取对应的B树节点地址;
C13、根据读取的B树节点地址,在所述B树索引处查找与预查询记录相对应于的B树索引项。
其中,所述步骤C采用如下过程在数据库范围内进行范围查询:
C21、根据所述单记录查询的过程,查找预查询范围的最大记录和最小记录对应的B树索引项;
C22、从所述最小记录的B树索引项对应的B树节点地址开始,根据B树索引一直顺序查找,直到找到所述最大记录的B树索引项对应的B树节点地址,在所述最小记录对应的B树节点地址和所述最大记录对应的B树节点地址之间的数据,就是预查询范围内的数据。
其中,所述步骤C采用如下过程在数据库范围内进行记录***:
C31、根据预***记录的索引关键字,将该记录***到所述B树索引中;
C32、对所述预***记录的索引关键字进行hash算法计算,并根据计算结果,在hash索引中***该记录对应的hash索引项。
其中,所述步骤C采用如下过程在数据库范围内进行记录删除:
C41、根据预删除记录的索引关键字,查找该记录对应的hash索引项;
C42、读取所述hash索引项中记录的B树节点地址,并删除该hash索引项;
C43、根据读取的B树节点地址,在B树索引中查找并删除对应的B树索引项。
其中,所述范围查询过程中,所述步骤C21与步骤C22之间还包括以下步骤:若预查询范围的最大记录和最小记录对应的B树索引项查询不命中,则采用在所述B树索引中***虚拟节点的方式,构造所述最大记录和最小记录对应的B树索引项。其中,根据所述B树索引中***的虚拟节点,在所述hash索引中***对应的hash节点。
其中,所述***虚拟节点的方式采用如下过程:根据预查询记录的索引关键字,在B树索引处查找大于预查询记录的第一B树索引项和小于预查询记录的第二B树索引项,并在所述第一B树索引项和第二B树索引项之间***一虚拟B树节点,该B树节点对应的B树索引项就是与预查询记录相对应的B树索引项。其中,当在所述B树索引处***一虚拟B树节点后,对该B树节点对应的索引关键字进行hash计算,并在所述hash索引中***该B树节点对应的hash索引项。
采用本发明的上述方法,既可以在单位时间内完成单一查询,也可以在单位时间内完成范围查询。相对于现有技术中只采用B树索引的查找方式,从原B树索引的logn+m减少了lon-2次操作,这在频繁的查询操作中是非常有益的,并且在数据量较大的数据库***中本发明的方法也具有明显的效果。
附图说明
图1为本发明索引组织的方案图。
具体实施方式
以下结合附图详细描述本发明的技术方案。
如图1所示,本发明在原有只采用B树索引的基础上,结合了hash索引方案,对数据库进行管理,使本发明同时结合了B树和hash索引两者的优点。本发明的方法用于一通讯***的数据管理,并包括以下步骤:
首先,根据原记录的索引关键字建立;
然后,对该B树索引以索引关键字建立hash索引,也就是通过对B树索引区的索引关键字进行hash计算,并根据计算结果建立hash索引区域。为了减少空间浪费,索引关键字只存在于hash索引处,B树索引只具有B树的其他非索引关键字字段,那么为了建立其两者的对应关系,如图1所示,在hash索引中,每个hash索引项记录有:索引关键字(Key1,Key2,...,KeyN-1,KeyN),以及该索引关键字分别对应的B树节点地址(BindexAddr1,BindexAddr2,...,BindexAddrN-1,BindexAddrN)。
其次,结合所述B树索引和hash索引对数据库进行管理,此管理内容包括以下几个方面:
(1)记录***操作,其主要过程如下:
当一条记录***时,首先根据预***记录的索引关键字,将该记录号及相应的B树节点数据***到B树索引中;然后,对预***记录的索引关键字进行hash计算,并根据计算结果,在hash索引中***该记录对应的hash索引项,该hash索引项记录有:索引关键字,以及该索引关键字对应的B树节点地址。
(2)记录删除操作,其主要过程如下:
当一条记录删除时,首先根据预删除记录的索引关键字,查找该记录对应的hash索引项;然后读取hash索引项中记录的B树节点地址,并删除该hash索引项;最后根据读取的B树节点地址,在B树索引中查找并删除对应的B树索引项。
(3)单记录查询操作,其主要过程如下:
单记录查询时,首先根据预查询记录的索引关键字,在hash索引处查找与预查询记录相对应的hash索引项,从该hash索引项中读取对应的B树节点地址,然后根据读取的B树节点地址,在B树索引处查找与预查询记录相对应于的B树索引项,这一过程大概为2单位时间。
(4)范围查询操作,其主要过程如下:
在进行范围查询时,首先根据上述单记录查询的过程,查找预查询范围的最大记录和最小记录对应的B树索引项;然后,从最小记录的B树索引项对应的B树节点地址开始,根据B树索引一直顺序查找,直到找到最大记录的B树索引项对应的B树节点地址,那么,在最小记录对应的B树节点地址和最大记录对应的B树节点地址之间的m个数据,就是预查询范围内的数据,这个过程的总时间是2+m个单位时间。
上述范围查询时,不一定会命中,比如预查询范围的最大记录和最小记录恰不在数据库的B树索引中,那么就存在预查询范围的最大记录和最小记录对应的B树索引项查询不命中的情况。对于这种情况,本发明采用在B树索引中***虚拟节点的方式,构造最大记录和最小记录对应的B树索引项,从而完成范围查找的操作,当范围查询结束后,删除虚拟节点。这样即完成了范围查找,而且也不影响B树索引的准确性。当B树索引中***的虚拟节点,同时在hash索引中***对应的hash节点;当删除构造的虚拟节点时,也应删除对应的hash节点,从而实时保持B树索引和hash索引的一致性。
上述关于范围查询中如何***虚拟节点,本发明提出了这样一种方式:首先根据预查询记录的索引关键字,在B树索引处查找大于预查询记录的第一B树索引项和小于预查询记录的第二B树索引项,并在所述第一B树索引项和第二B树索引项之间***一虚拟B树节点,该B树节点对应的B树索引项就是与预查询记录相对应的B树索引项。当在B树索引处***一虚拟B树节点后,对该B树节点对应的索引关键字进行hash计算,并在hash索引中***该B树节点对应的hash索引项。根据这一思想,在进行范围查询时,如果出现查询不命中的时候,可以先依据上述方法在B树索引中***预查询范围的最大记录和最小记录对应的B树节点,然后再沿着B树的节点依次找下去。例如,如图1所示,B树索引区域中叶子节点Leaf1中记录数据“1”,Leaf2中记录数据“3”,...,LeafN-1中记录数据“6”,LeafN中记录数据“8”,当预查询范围为“2”至“7”时,如果直接在B树索引中直接查找“2”和“7”都会不命中,因为B树中不存在这两值,所以通过***虚拟节点的方式,先查找大于“2”和小于“2”的B树节点,即Leaf1和Leaf2,然后在Leaf1和Leaf2之间***一个虚拟的节点记录“2”这个值,同理,在LeafN-1和LeafN之间***一个虚拟的节点记录“7”这个值,这样就可以方便范围查找了。当这次范围查找完成后,删除***的虚拟节点。
上述各具体步骤的举例说明较为具体,并不能因此而认为是对本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
Claims (10)
1、一种数据库范围查询数据组织的方法,其用于一通讯***的数据管理,并包括以下步骤:
A、根据索引关键字建立B树索引;
B、对所述B树索引以所述索引关键字建立hash索引;
C、结合所述B树索引和hash索引对数据库进行管理。
2、根据权利要求1所述的方法,其特征在于,在hash索引中,每个hash索引项记录有:所述索引关键字,以及所述索引关键字对应的B树节点地址。
3、根据权利要求2所述的方法,其特征在于,所述步骤C采用如下过程在数据库范围内进行单记录查询:
C11、根据预查询记录的索引关键字,在所述hash索引处查找与预查询记录相对应的hash索引项;
C12、从查找到的hash索引项中读取对应的B树节点地址;
C13、根据读取的B树节点地址,在所述B树索引处查找与预查询记录相对应于的B树索引项。
4、根据权利要求3所述的方法,其特征在于,所述步骤C采用如下过程在数据库范围内进行范围查询:
C21、根据所述单记录查询的过程,查找预查询范围的最大记录和最小记录对应的B树索引项;
C22、从所述最小记录的B树索引项对应的B树节点地址开始,根据B树索引一直顺序查找,直到找到所述最大记录的B树索引项对应的B树节点地址,在所述最小记录对应的B树节点地址和所述最大记录对应的B树节点地址之间的数据,就是预查询范围内的数据。
5、根据权利要求2所述的方法,其特征在于,所述步骤C采用如下过程在数据库范围内进行记录***:
C31、根据预***记录的索引关键字,将该记录***到所述B树索引中;
C32、对所述预***记录的索引关键字进行hash算法计算,并根据计算结果,在hash索引中***该记录对应的hash索引项。
6、根据权利要求2所述的方法,其特征在于,所述步骤C采用如下过程在数据库范围内进行记录删除:
C41、根据预删除记录的索引关键字,查找该记录对应的hash索引项;
C42、读取所述hash索引项中记录的B树节点地址,并删除该hash索引项;
C43、根据读取的B树节点地址,在B树索引中查找并删除对应的B树索引项。
7、根据权利要求4所述的方法,其特征在于,所述范围查询过程中,所述步骤C21与步骤C22之间还包括以下步骤:
若预查询范围的最大记录和最小记录对应的B树索引项查询不命中,则采用在所述B树索引中***虚拟节点的方式,构造所述最大记录和最小记录对应的B树索引项。
8、根据权利要求7所述的方法,其特征在于,根据所述B树索引中***的虚拟节点,在所述hash索引中***对应的hash节点。
9、根据权利要求7所述的方法,其特征在于,所述***虚拟节点的方式采用如下过程:
根据预查询记录的索引关键字,在B树索引处查找大于预查询记录的第一B树索引项和小于预查询记录的第二B树索引项,并在所述第一B树索引项和第二B树索引项之间***一虚拟B树节点,该B树节点对应的B树索引项就是与预查询记录相对应的B树索引项。
10、根据权利要求9所述的方法,其特征在于,当在所述B树索引处***一虚拟B树节点后,对该B树节点对应的索引关键字进行hash计算,并在所述hash索引中***该B树节点对应的hash索引项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100664721A CN101256579A (zh) | 2008-04-08 | 2008-04-08 | 一种数据库范围查询数据组织的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100664721A CN101256579A (zh) | 2008-04-08 | 2008-04-08 | 一种数据库范围查询数据组织的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101256579A true CN101256579A (zh) | 2008-09-03 |
Family
ID=39891406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100664721A Pending CN101256579A (zh) | 2008-04-08 | 2008-04-08 | 一种数据库范围查询数据组织的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101256579A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253990A (zh) * | 2011-07-05 | 2011-11-23 | 广东星海数字家庭产业技术研究院有限公司 | 一种交互应用多媒体数据的查询方法及其装置 |
CN102521375A (zh) * | 2011-12-19 | 2012-06-27 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及*** |
WO2013123867A1 (zh) * | 2012-02-20 | 2013-08-29 | 浪潮(北京)电子信息产业有限公司 | 数据索引方法和装置 |
CN104572990A (zh) * | 2015-01-05 | 2015-04-29 | 华为技术有限公司 | 用于检索的方法和装置 |
CN104636349A (zh) * | 2013-11-07 | 2015-05-20 | 阿里巴巴集团控股有限公司 | 一种索引数据压缩以及索引数据搜索的方法和设备 |
CN106202416A (zh) * | 2016-07-11 | 2016-12-07 | 腾讯科技(深圳)有限公司 | 列表数据写方法和装置、列表数据读取方法和装置 |
CN106528817A (zh) * | 2016-11-17 | 2017-03-22 | 中国电子科技集团公司第四十研究所 | 基于哈希策略的b+树时态查询方法 |
CN108416027A (zh) * | 2018-03-09 | 2018-08-17 | 广西师范大学 | 一种基于范围查询边界集的自底向上合并数据分片优化方法 |
CN109033134A (zh) * | 2018-06-06 | 2018-12-18 | 海尔优家智能科技(北京)有限公司 | 一种消息处理方法、装置、存储介质及计算机设备 |
-
2008
- 2008-04-08 CN CNA2008100664721A patent/CN101256579A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253990A (zh) * | 2011-07-05 | 2011-11-23 | 广东星海数字家庭产业技术研究院有限公司 | 一种交互应用多媒体数据的查询方法及其装置 |
CN102521375A (zh) * | 2011-12-19 | 2012-06-27 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及*** |
CN102521375B (zh) * | 2011-12-19 | 2013-12-11 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及*** |
WO2013123867A1 (zh) * | 2012-02-20 | 2013-08-29 | 浪潮(北京)电子信息产业有限公司 | 数据索引方法和装置 |
CN104636349B (zh) * | 2013-11-07 | 2018-05-22 | 阿里巴巴集团控股有限公司 | 一种索引数据压缩以及索引数据搜索的方法和设备 |
CN104636349A (zh) * | 2013-11-07 | 2015-05-20 | 阿里巴巴集团控股有限公司 | 一种索引数据压缩以及索引数据搜索的方法和设备 |
CN104572990A (zh) * | 2015-01-05 | 2015-04-29 | 华为技术有限公司 | 用于检索的方法和装置 |
CN106202416A (zh) * | 2016-07-11 | 2016-12-07 | 腾讯科技(深圳)有限公司 | 列表数据写方法和装置、列表数据读取方法和装置 |
CN106528817A (zh) * | 2016-11-17 | 2017-03-22 | 中国电子科技集团公司第四十研究所 | 基于哈希策略的b+树时态查询方法 |
CN106528817B (zh) * | 2016-11-17 | 2019-05-14 | 中国电子科技集团公司第四十一研究所 | 基于哈希策略的b+树时态查询方法 |
CN108416027A (zh) * | 2018-03-09 | 2018-08-17 | 广西师范大学 | 一种基于范围查询边界集的自底向上合并数据分片优化方法 |
CN108416027B (zh) * | 2018-03-09 | 2021-07-20 | 广西师范大学 | 一种基于范围查询边界集的合并数据分片优化方法 |
CN109033134A (zh) * | 2018-06-06 | 2018-12-18 | 海尔优家智能科技(北京)有限公司 | 一种消息处理方法、装置、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101256579A (zh) | 一种数据库范围查询数据组织的方法 | |
US11468027B2 (en) | Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor | |
CN100458779C (zh) | 扩展索引的方法 | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
US20040205044A1 (en) | Method for storing inverted index, method for on-line updating the same and inverted index mechanism | |
CN103020054B (zh) | 模糊查询方法及*** | |
CN102456055B (zh) | 兴趣点检索的方法及装置 | |
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
JP2004518226A (ja) | データベースシステムおよびクエリオプティマイザ | |
CN101241511A (zh) | 一种基于时空数据的快速索引方法 | |
CN105975587A (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
US20080133494A1 (en) | Method and apparatus for searching forwarding table | |
CN103605778A (zh) | 一种视频文件的定位方法、装置及*** | |
CN112765181A (zh) | 一种基于区块索引结构的数据溯源查询方法 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN109299143B (zh) | 基于Redis缓存的数据互操作测试知识库的知识快速索引方法 | |
Abbasifard et al. | Efficient indexing for past and current position of moving objects on road networks | |
CN111782663A (zh) | 一种提升聚合查询效率的聚合索引结构及聚合索引方法 | |
WO2005066835A1 (fr) | Procede d'extraction d'un enregistrement d'une page de donnees d'une base de donnees | |
CN112463837B (zh) | 一种关系型数据库数据存储查询方法 | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及*** | |
CN115048377A (zh) | 一种混合存储区块链环境下的时空关键字查询方法 | |
CN111159175B (zh) | 基于索引的非完整数据库Skyline查询方法 | |
CN101377775A (zh) | 一种内存数据库中构造冲突数据索引的方法 | |
CN117311645B (zh) | 一种lsm存储元数据读放大的优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080903 |