CN111782659B - 数据库索引创建方法、装置、计算机设备和存储介质 - Google Patents
数据库索引创建方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111782659B CN111782659B CN202010663640.6A CN202010663640A CN111782659B CN 111782659 B CN111782659 B CN 111782659B CN 202010663640 A CN202010663640 A CN 202010663640A CN 111782659 B CN111782659 B CN 111782659B
- Authority
- CN
- China
- Prior art keywords
- index
- target
- database
- data
- query
- 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
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000003780 insertion Methods 0.000 claims description 16
- 230000037431 insertion Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000009825 accumulation Methods 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 19
- 230000004044 response Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 238000005336 cracking Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/23—Updating
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (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
本发明适用于计算机领域,提供了一种数据库索引创建方法、装置、计算机设备和存储介质,其中,所述一种数据库索引创建方法包括获取第一索引与检索条件,以及根据所述检索条件对所述第一索引进行调整得到目标索引,所述检索条件至少包含检索目标的上界和下界。本发明实施例提供的一种数据库索引创建方法,通过第一索引实现对数据的快速访问,第一索引是根据数据库中存储的数据预先构建的索引,具有较短的初始化时间,同时,根据检索条件对第一索引进行调整得到目标索引,通过不断查询自适应的构建索引,最终形成一个完整的索引,解决了一次性构建的完整索引在初始化阶段等待耗时过长的问题。
Description
技术领域
本发明属于计算机领域,尤其涉及一种数据库索引创建方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展以及对实时事务和分析处理需求的增加,数据库中的数据量也在不断增加。其中,索引提供了一种快速访问数据库中数据的方法,通过提前构建完整的索引来提高后续查询的响应速度。
尽管索引可以提高查询效率,但是,索引的构建时间不容忽视。尤其是对于IMDB(In-memory Database,内存数据库),通常具有比磁盘数据库更高的吞吐量,这就需要更多的索引构建时间。对于索引构建时间的问题,目前通常的方法是通过一次性构建完整索引来减少构建时间,即通过扫描所有数据来构建索引,然后把所有的索引存储到内存中,直到所有数据扫描完毕。
但是,在数据查询时需要对索引进行初始化,采用上述方法构建的索引在初始化阶段的等待耗时过长,增加了查询的响应时间。
发明内容
本发明实施例的目的在于提供一种数据库索引创建方法、装置、计算机设备和存储介质,旨在解决一次性构建的完整索引在初始化阶段等待耗时过长的技术问题。
本发明实施例是这样实现的:一种数据库索引创建方法,所述方法包括:
获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引;
获取检索条件,所述检索条件至少包含检索目标的上界和下界;
根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
本发明实施例的另一目的在于提供一种数据库索引创建装置,所述数据库索引创建装置包括:
第一获取模块,用于获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引;
第二获取模块,用于获取检索条件,所述检索条件至少包含检索目标的上界和下界;
调整模块,用于根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
本发明实施例的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述数据库索引创建方法的步骤。
本发明实施例的另一目的在于提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述数据库索引创建方法的步骤。
本发明实施例提供的数据库索引创建方法包括获取第一索引与检索条件,所述检索条件至少包含检索目标的上界和下界,所述数据库索引创建方法还包括根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。本发明实施例提供的一种数据库索引创建方法,通过根据所述检索条件对所述第一索引进行调整得到目标索引,实现对数据的快速访问,所述第一索引是根据数据库中存储的数据预先构建的索引,具有较短的初始化时间,通过第一索引保证查询的正常工作,初始化阶段等待耗时少,同时,通过不断的查询逐步构建形成一个完整的索引,从而解决了一次性构建的完整索引在初始化阶段等待耗时过长的问题。
附图说明
图1为本发明实施例提供的数据库索引创建方法的应用环境图;
图2为本发明实施例提供的数据库索引创建方法的流程图;
图3为本发明实施例提供的数据库索引创建装置的结构框图;
图4为本发明实施例提供的数据库索引创建方法中的连续范围查询过程的示例图;
图5为本发明实施例提供的数据库索引创建方法中的更新目标索引过程的示例图;
图6为本发明实施例提供的数据库索引创建方法中的查询次数对响应时间的影响关系图;
图7为一个实施例中计算机设备的内部结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一数据库索引创建脚本称为第二数据库索引创建脚本,且类似地,可将第二数据库索引创建脚本称为第一数据库索引创建脚本。
图1为本发明实施例提供的数据库索引创建方法的应用环境图,如图1所示,在该应用环境中,包括终端110与服务器120。
终端110可以是智能终端,如台式计算机、笔记本电脑等计算机设备,也可以是便于携带的智能终端,如平板电脑、智能手机、掌上电脑、智能眼镜、智能手表、智能手环、智能音箱等,但并不局限于此,可用于进行数据接收、传输和处理,所述终端110的数量可以根据需要进行设计,可以是一个,也可以是多个,这里并不作限定。
服务器120可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN(Content Delivery Network,内容分发网络)等基础云计算服务的云服务器,但并不局限于此,可用于进行数据接收、传输和处理。
终端110以及服务器120可以通过有线网络或者无线网络进行连接,本发明在此不做限制。
作为本发明一种实施例提供的应用场景,用户需要对服务器120中存储的数据进行访问时,通过操作终端110向服务器120发送查询请求,服务器120根据查询请求通过构建的索引来查询服务器120中存储的数据,然后将通过查询获得的数据传输至终端110,即可实现对服务器120中存储的数据的快速访问。而在本发明实施例中,终端110为用户家中的台式计算机,服务器120为物理服务器,当用户通过操作台式计算机向物理服务器发送查询请求后,物理服务器根据查询请求获取检索条件,所述检索条件至少包含检索目标的上界和下界,同时获取第一索引,所述第一索引是根据物理服务器的数据库中存储的数据预先构建的索引,根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线,目标索引通过物理服务器传输至台式计算机,即可实现对物理服务器中存储的数据的快速访问,通过第一索引保证查询的正常工作,初始化阶段等待耗时少,同时,通过不断的查询逐步构建形成一个完整的索引,从而解决了因一次性构建完整索引而造成的可用性较差、初始化阶段耗时过长的问题。
如图2所示,在一个实施例中,提出了一种数据库索引创建方法,本实施例主要以该方法应用于上述图1中的服务器120来举例说明。
本发明实施例提供了一种数据库索引创建方法,具体可以包括以下步骤,如图2所示:
在步骤S202中,获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引。
在本发明实施例中,所述数据库可以是关系型数据库,或者是非关系型数据库,所述关系型数据库可以是遵循SQL(Structured Query Language,结构化查询语言)标准的数据库,当然,根据用户的实际需求情况,所述数据库中存储的数据可以是所有类型的文件;所述关系型数据库可以执行的操作有查询、新增、更新、删除、求和、排序等;所述获取第一索引可以是通过服务器获取所述第一索引,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器;所述根据数据库中存储的数据预先构建的索引为支持范围查询的索引,例如,可以是ART(Adaptive Radix Tree,自适应基数树)索引,也可以是B+树索引,还可以是红黑树索引,或者其他类型的支持范围查询的索引。
作为本发明一种实施例,在查询中自适应构建的为ART索引,所述ART索引有两种类型的节点,其中内部节点提供从部分键到其他节点的映射,而叶节点存储与关键字相对应的值,树的高度仅由索引关键字的最大长度而不是索引关键字的数目决定,并且所有关键字都按字典顺序排序,内部节点的容量随着插入的关键字而自适应地改变,这使得ART索引具有高查询效率;这里采用的是内存数据库,顾名思义就是将数据放在内存中直接操作的数据库,相对于磁盘数据库,内存数据库的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能,数据库分裂的过程是由连续发出的范围查询驱动的,因此,应该确保要分裂的任何数据结构都支持范围查询,而ART索引不仅支持点查询,还支持范围扫描,当子指针在内部节点中排序时,可以通过返回范围下限和上限之间的子树中的所有叶节点来有效地执行范围扫描。
本发明实施例通过获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引,具有较短的初始化时间,通过第一索引保证查询的正常工作,初始化阶段等待耗时少,可以用于任何时候需要即时查询响应的场景,保证了对于热点数据的查询具有实时性。
在步骤S204中,获取检索条件,所述检索条件至少包含检索目标的上界和下界。
在本发明实施例中,所述检索目标为包含范围的查询,所述检索目标的上界和下界即为所述查询的范围,所述检索条件为包含下界和上界的元素集合,所述下界和上界的定义中,可以是存在一个实数a和一个实数集合B,使得对 都有x≥a,则称a为B的下界,也可以是将偏序集中大于或等于它的子集中一切元素的元素作为上界,还可以是在某些部分有序集合(K,≤)的子集S里面,大于或等于S的每个元素的K的那个元素,叫做上界,而下界被定义为K的元素小于或等于S的每个元素;所述获取检索条件可以是通过服务器进行获取,例如,服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器;当然,根据用户的实际需求情况,所述检索目标的上界和下界可以是用户设置的任意范围的元素集合。
作为本发明一种实施例,所述ART索引中,当子指针在内部节点中排序时,可以通过返回范围下限和上限之间的子树中的所有叶节点来有效地执行范围扫描,即通过返回检索目标的上界和下界之间的子树中的所有叶节点来有效地执行范围扫描,通过获取检索条件,所述检索条件至少包含检索目标的上界和下界,根据检索目标的上界和下界可以用于在数据库中实现数据的查询,在查询过程中,总的查询性能受有序数组上二进制搜索的计算复杂度的限制,但是比较的数量只与ART索引中的键的路径长度有关,而不是与ART索引中的键的数量有关,因此查询性能明显提升。
本发明实施例通过获取检索条件,所述检索条件至少包含检索目标的上界和下界,根据检索目标的上界和下界可以在数据库中实现数据的查询,通过连续发出的范围查询来驱动数据库分裂。
在步骤S206中,根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
在本发明实施例中,所述调整为根据所述检索条件对所述第一索引进行范围查询,所述调整可以是通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,所述范围查询是根据所述检索条件中包含检索目标的上界和下界对所述第一索引中的所有数据进行索引,因此,所述第一索引被分裂并重新排列为多个数据集合,这保证了所述第一索引中数据集合之间的排序顺序,且多个数据集合之间通过所述上界和下界进行分开,位于所述上界和下界中的所有数据都满足查询,因此作为结果集返回,根据返回的结果集对所述第一索引进行调整得到目标索引。
作为本发明一种实施例,通过范围查询实现对所述第一索引的分裂,进而生成所述目标索引,所述目标索引通过所述上界和所述下界作为所述目标索引中的两个分界线,通过所述两个分界线实现对所述第一索引的分裂,一方面,每个范围查询选择的元组越少,查询响应就越快,但构建完整的索引所需的时间就越长,另一方面,每个查询选择的元组越多,查询响应速度就越慢,但构建完整的索引的时间就越短,通过范围查询的选择来尽可能地延迟不可避免的更改,能够使索引的创建反应实际的工作负载。
作为本发明又一种实施例,提供一种ART索引分裂算法,为根据所述检索条件对所述第一索引进行调整得到目标索引,并逐步构建ART的举例说明,具体的算法如下:
在本发明实施例中,假设范围查询发生在表R的列A上,并且列A中值的数据类型为整数,给定列A上的范围查询为[lb,ub],即[lb,ub]为所述下界和上界,art_idx则为ART索引,hit_slices为列切片,所述列切片是列A上由范围间隔标识的数据簇,并按排序顺序对列切片进行排序;tbl为范围查找表,所述范围查找表用于记录已经在ART索引中被索引的那些数据集合,以便分裂算法可以决定是直接通过ART索引返回查询结果还是执行标准分裂操作,范围查找表中的键和值分别被设计为合并的历史查询范围和相应被覆盖的列切片;分裂列为col,所述分裂列是构建ART索引的数据库列的副本,从ART索引的角度,它是待索引的键数组;首先,以[lb,ub]作为输入,根据ART索引分裂算法在进行ART索引分裂的同时输出一组值rs作为列col上的范围查询结果。
在本发明实施例中,所述ART索引分裂算法由四个阶段组成,包括初始化阶段,即第2行第5行,ART索引中的范围搜索阶段,即第6行第13行,分裂阶段,即第14行第23行,以及结束阶段,即第24行第26行。
在本发明实施例中,如果范围查找表tbl为空,即表中没有记录任何范围,则算法将首先初始化ART索引art_idx和分裂列col,即第3和第4行。
在本发明实施例中,初始化之后,算法根据范围查找表tbl的指示决定是否在ART索引中执行范围搜索,它首先查找记录在范围查找表tbl中的所有条目,这些条目的键具有与[lb,ub]的非空交集hit_range,即第8行,对于每个找到的条目,执行ART索引中的范围查询hit_range,并将rs与当前结果合并,即第10行,在每个找到的条目中的相应数据集合被收集在一组hit_slices中,以便在下一阶段使用,即第11行。
在本发明实施例中,初始化后进入分裂阶段,算法遍历分裂列col中未在art_idx中索引但与[lb,ub]相交的所有列切片,即第15和16行,最初整个分裂列col中只有一个完整的切片,所有这些交集作为元素存储于new_slices集合中,用于在最后阶段更新范围查找表tbl,所述最后阶段即第17行和第18行,然后调用传统的数据库分裂函数DB_CRACKING()分裂每个交集,即第19行,调用DB_CRACKING()后,新的列切片与原始列切片分离,交集中的所有值都将在rs_db中进行排序后返回,此外,将rs_db中的值插入ART索引art_idx,即第20行,并在rs和rs_db之间进行求并集,即第21行;在结束阶段,将[lb,ub]作为键并将所有新列切片new_slices作为值来构造键值对,即第24行,键值对被插入范围查找表tbl并与现有条目合并,即第25行。
本发明实施例通过根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线,在根据所述检索条件进行范围查询的同时实现所述第一索引的分裂,通过这种方式,利用连续到达的范围查询逐步构建完整的ART索引,减少了初始化阶段的等待耗时,通过第一索引保证查询的正常工作,同时通过不断的查询逐步构建形成一个完整的索引。
本发明实施例通过第一索引保证查询的正常工作,初始化阶段等待耗时少,同时,通过获取检索条件对所述第一索引进行不断的查询来逐步构建形成一个完整的索引,从而解决了因一次性构建完整索引而造成的可用性较差、初始化阶段耗时过长的问题,在整个分裂过程中,数据集合是动态维护的,历史范围查询所覆盖的任何列切片都已保留在目标索引中,这确保了尽可能使用已经部分建立的索引完成相关查询的执行,通过这一策略来提高整体查询性能。
本发明实施例提供的数据库索引创建方法中,当所述上界和所述下界不在所述第一索引的范围中时,根据所述上界和所述下界增加所述第一索引的范围,以保证所述目标索引中的两个分界线位于所述第一索引的范围内,同时根据所述上界和所述下界完成所述目标索引中位于所述两个分界线内的所述多个数据集合的排序,以构建第三索引并输出检索结果。
在本发明实施例中,所述根据所述上界和所述下界增加所述第一索引的范围,可以是根据所述上界和所述下界将所述检索目标的查询范围插入至所述第一索引中,所述插入过程可以通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器;通过根据所述上界和所述下界增加所述第一索引的范围,保证检索范围在索引范围内,以构建第三索引并输出检索结果,这个第三索引就是增加范围之后的第一索引。
作为本发明一种实施例,请参阅图4,为根据所述检索条件对所述第一索引进行分裂并逐步构建自适应索引的过程举例,而且,在本实施例中,是使用三个连续的检索条件来实现连续的范围查询,通过使用三个连续的范围查询进行ART索引分裂,具体的,为了便于讨论,假设查询发生在表R的列A上,并且列A中值的数据类型为整数,当发出第一个范围查询Q1时,范围查找表为空,范围查询Q1为80≤A≤110,所述范围查找表用于记录已经在ART索引中被索引的那些数据集合,所以将通过复制原始列A来创建分裂列,所述分裂列为构建ART索引的数据库列副本,然后,根据范围查询的下界和上界,即分别为80和110,来对分裂列中的所有数据进行索引来构建ART索引,因此,分裂列被分裂并重新排列为三个数据集合,即P1、P2和P3,P1为A<80,P2为80≤A≤110,P3为A>110,这保证了分裂列中数据集合之间的排序顺序,即P1<P2<P3,此时,P2的下界索引大于P1的上界索引,P2的上界索引低于P3的下界索引,P2中的所有数据都满足查询,因此作为结果集返回,最后,查询范围[80,110]和数据集合P2被记录在范围查找表中作为键值对。
在本实施例中,由于Q2的查询范围与范围查找表中记录的任何查询范围之间没有交集,Q2为220≤A≤300,此时,任何查询范围只有[80,110],所以进行了与Q1类似的分裂过程:首先,根据范围查找表中记录的键值对,可以推断结果集必须包括在大于P2即P3的数据集合中,因为Q2的下界大于唯一键的上界,即110<220,这导致从P3分离出另外两个数据集合,即P4和P5,P4为220≤A≤300,P5为A>300,然后返回包含来自P4的所有数据的结果集,并将其进一步插入到ART索引中,然后用[220,300]作为键、用P4作为其值来更新范围查找表。
本发明实施例通过根据所述上界和所述下界增加所述第一索引的范围,以保证所述目标索引中的两个分界线位于所述第一索引的范围内,同时通过多个数据集合的排序来进行动态维护,范围查询可能导致通过分裂创建数据集合,或者通过合并现有数据集合来删除多余的数据集合,减少了数据的冗余。
本发明实施例提供的数据库索引创建方法中,当所述上界和所述下界在所述第一索引的范围中时,根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时在所述第一索引中搜索所述上界和所述下界,根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序,以输出检索结果构建第二索引。
在本发明实施例中,所述根据所述上界和所述下界分裂所述第一索引生成多个数据集合,可以是根据范围查询的所述上界和所述下界对第一索引中的所有数据进行索引,因此,第一索引被分裂并重新排列为三个数据集合,并输出检索结果构建第二索引,这个第二索引就是分裂后的第一索引;所述分裂过程可以通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。
作为本发明一种实施例,请参阅图4,为根据所述检索条件对所述第一索引进行调整得到目标索引的过程举例,而且,在本实施例中,是使用三个连续的检索条件来实现连续的范围查询,通过使用三个连续的范围查询进行ART索引的分裂,具体的,为了便于讨论,假设查询发生在表R的列A上,并且列A中值的数据类型为整数,当发出第三个范围查询Q3时,Q3为80≤A≤350,对于范围在P2、P4、P3和部分P5上延伸的范围查询Q3,前两个数据集合已经记录在范围查找表中,而P3和部分P5还没有被访问和排序,将形成由直接从本地获得的搜索结果和从P3和P5获得的搜索结果两者组成的联合结果集,同时,新的数据集合P6将相对于上限值350从P5分离,在Q3的查询处理结束时,将P3和新P5中的那些数据排序并插入到ART索引中,并且范围查找表中的范围被新的键值对替换,即被间隔[80,350]以及横跨P2、P3、P4和P5的合并数据集合替换,因为[80,110]和[220,300]都可以被[80,350]覆盖,前两个具有键[80,110]和[220,300]的条目与新的键值对[80,350]:{p3,p5}合并为一个新的单一条目[80,350]:{P2,P3,P4,P5}。
本发明实施例通过根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序,实现了数据的动态维护,通过合并现有数据集合来删除多余的数据集合,减少了数据的冗余。
本发明实施例提供的数据库索引创建方法中,当在生成所述目标检索后再次获取到所述检索条件时,对所述目标索引进行调整操作,所述调整操作为:
根据再次获取到的所述检索条件对所述目标索引进行调整得到调整索引,以保证所述上界和所述下界为所述调整索引中的两个分界线,且所述调整索引中位于所述两个分界线内的所述多个数据集合完成排序。
在本发明实施例中,所述调整为根据再次获取到的所述检索条件对所述目标索引进行范围查询,所述调整可以是通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群;所述范围查询是根据所述检索条件中包含检索目标的上界和下界对所述目标索引中的所有数据进行索引,因此,所述目标索引被分裂并重新排列为多个数据集合,这保证了所述目标索引中数据集合之间的排序顺序,且数据集合之间通过所述上界和下界进行分开,位于所述上界和下界中的所有数据都满足查询,因此作为结果集返回,根据返回的结果集对所述目标索引进行调整得到调整索引。
作为本发明一种实施例,通过范围查询实现对所述目标索引的分裂,进而生成所述调整索引,通过所述上界和所述下界作为所述调整索引中的两个分界线,通过所述两个分界线实现对所述目标索引的分裂,通过在生成所述目标检索后再次获取到所述检索条件,完成对所述目标索引的调整操作,实现了多次的范围查询,尽可能地延迟不可避免的更改。
本发明实施例通过根据所述检索条件对所述目标索引进行调整得到调整索引,以保证所述上界和所述下界为所述调整索引中的两个分界线,在根据所述检索条件进行范围查询的同时实现所述目标索引的分裂,通过这种方式,利用连续到达的范围查询逐步构建完整的ART索引,减少了初始化阶段的等待耗时,从而解决了因一次性构建完整索引而造成的可用性较差、初始化阶段耗时过长的问题,在整个分裂过程中,数据集合是动态维护的,历史范围查询所覆盖的任何数据集合都已保留在目标索引中,这确保了尽可能使用已经部分建立的索引完成相关查询的执行,通过这一策略来提高整体查询性能。
本发明实施例提供的数据库索引创建方法中,所述方法还包括更新所述目标索引,所述更新所述目标索引为:
获取更新数据,所述更新数据为所述数据库中预先存储的数据;
获取所述更新数据的插入位置信息;
根据所述插入位置信息移动所述目标索引中的数据,以生成插入位置;
将所述更新数据插入所述插入位置,以更新所述目标索引。
在本发明实施例中,所述更新所述目标索引包括对所述目标索引中列的更新,所述更新可以是插入数据,或者是删除数据,所述更新所述目标索引通过服务器完成,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器,所述更新数据的具体内容可以根据用户的需求进行选择,所述移动所述目标索引中的数据为将所述目标索引中所有要插入数据或删除数据的位置后面的数据向后移动。
作为本发明一种实施例,通过使用排序列表结构根据数据值缓存被更新的数据及其相应的操作类型,即插入或删除,假设这种简单的缓存结构与整个索引列相比非常小,则可以忽略对其进行排序的时间代价,对于相同的数据值,插入后的删除则直接从列表中删除,而删除后的插入则将覆盖先前的删除,一旦到达的范围查询与任何缓存的更新操作有交集,交集中的所有数据都将从目标索引中插入或删除,而查询范围中不在排序列表缓存中的所有数据将被分裂,最后,从排序列表中删除已在目标索引中完成的那些更新操作。
作为本发明又一种实施例,对于排序列表缓存已满的情况,构造排序列表中数据的下限和上限之间的范围查询,并主动发出该查询,以触发对目标索引的更新处理,之后的处理过程与前面情况相同。
本发明实施例通过更新所述目标索引来延迟更新操作,直到到达的范围查询与已缓存的任意一更新操作相交或者缓存已满为止,当更新后的数据位于范围查找表中的任何范围内,则该范围将由所述目标索引立即处理,从而有效地减少了写锁争用。
本发明实施例提供的数据库索引创建方法中,所述方法还包括更新所述目标索引,所述更新所述目标索引为:
获取更新数据,所述更新数据为所述数据库中预先存储的数据;
根据所述更新数据判断所述目标索引中的插入位置与移动位置,所述插入位置为所述更新数据位于所述目标索引中的位置,所述移动位置为所述目标索引中的所述下界的位置;
移动所述目标索引中所述插入位置的数据至所述移动位置;
插入所述更新数据至所述插入位置,以更新所述目标索引。
在本发明实施例中,所述插入位置为所述更新数据位于所述目标索引中的位置,即根据所述更新数据中包含的数据集合的范围来确定所述更新数据位于所述目标索引中的位置,所述移动位置为所述目标索引中的所述下界的位置,所述下界的位置是所述目标索引中的两个分界线中较小的分界线的位置。
作为本发明一种实施例,请参阅图5,为更新所述目标索引的一个举例,对于45的插入,首先在范围查找表中进行搜索,因为45小于唯一条目的键[80,350]的下限,所以可以推断45应该插入数据集合P1中;因此,对于高于P1的数据集合的每个下限值,将其移动到下一数据集合的下限值的位置,由于数据集合P2、P3、P4和P5都被索引在目标索引中,并且它们被合并为范围查找表中的一个完整间隔,所以实际过程只发生在P6和P2中,最后,将45插入原100的位置,虽然在100被移动到320后面的位置,但[80,350]中的数据的排序顺序仍然通过目标索引保持,通过这种方式,仅需要移动2次即可实现更新。
本发明实施例根据所述更新数据判断所述目标索引中的插入位置与移动位置,通过移动所述目标索引中所述插入位置的数据至所述移动位置即可实现所述目标索引的更新,只需移动两次,减少了更新的操作步骤,有效地减少了写锁争用。
在一个实施例中,如图6所示,上述的数据库索引创建方法的效果可通过以下实施例进一步说明:
在本实施例中,获取数据库中存储的合成数据集,在随机查询模式下统计本发明实施例的数据库索引创建方法的响应时间,以上算法均用C++语言实现,均在一台Intel(R)Xeon(R)CPU E7-4820 v4@2.00GHz服务器上进行,该服务器具有512GB RAM和25600K L3缓存,操作系统为Ubuntu 18.04.4LTS(GNU/Linux hp504.15.0-38-generic x86_64),所有过程都在内存中进行,范围查询默认选择在[1,N]之间随机分布的N个非重复整数,其中N等于10M,查询选择率S设置为0.0001,并具有随机工作负载。
在本实施例中,具体的响应时间结果参见图6,其中,菱形表示的曲线为采用排序算法进行查询的响应时间结果,正方形表示的曲线为采用ART索引构建方法进行查询的响应时间结果,三角形表示的曲线为采用本发明实施例的数据库索引创建方法进行查询的响应时间结果,可以看出,当查询次数超过8000的时候,本发明实施例的数据库索引创建方法的响应时间超过ART索引构建方法,这是由于此时仍需要一部分时间去构建完整的目标索引,但两者在响应时间上的最大差距不会超过1秒,且随着目标索引的逐步构建完整,这种差距越来越小,可见,本发明实施例的数据库索引创建方法可以避免一次性构建完整ART索引,具有相对低的初始化成本,同时对于热点数据的查询具有实时性,即当查询到来时,避免由于长时间初始化索引的等待开销。
在本实施例中,所述采用排序算法进行查询为采用快速排序算法对数组进行排序,并使用二分法来查找数组,对于,所述快速排序算法为通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;所述二分法为对于区间[a,b]上连续不断且f(a)×f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。
如图3所示,在一个实施例中,提供了一种数据库索引创建装置,所述数据库索引创建装置可以集成于上述的服务器120中,具体可以包括:第一获取模块310、第二获取模块320和调整模块330。
第一获取模块310,用于获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引。
第二获取模块320,用于获取检索条件,所述检索条件至少包含检索目标的上界和下界。
调整模块330,用于根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
在本发明实施例中,所述数据库索引创建装置可以是数据电路端接设备,如调制解调器、集线器、桥接器或交换机;也可以是一个数据终端设备,如数字手机,打印机或主机,所述主机可以是路由器、工作站、服务器或无线传感器;还可以是智能终端,如笔记本电脑等计算机设备,也可以是便于携带的智能终端,如平板电脑、掌上电脑、智能眼镜、智能手表、智能手环、智能音箱等,但并不局限于此,可用于数据的转换、管理、处理和传输,所述第一获取模块310、第二获取模块320和调整模块330均存储有操作系统,用于处理各种基本系统服务和用于执行硬件相关任务的程序;还存储有应用软件,用于实现本发明实施例中的数据库索引创建方法的步骤。
所述数据库索引创建装置可执行如上述任一实施例中提供的数据库索引创建方法的步骤,其中,本发明实施例提供了一种数据库索引创建方法,所述方法包括如下步骤,如图2所示:
在步骤S202中,获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引。
在本发明实施例中,所述数据库可以是关系型数据库,或者是非关系型数据库,所述关系型数据库可以是遵循SQL标准的数据库,当然,根据用户的实际需求情况,所述数据库中存储的数据可以是所有类型的文件;所述关系型数据库可以执行的操作有查询、新增、更新、删除、求和、排序等;所述获取第一索引可以是通过服务器获取所述第一索引,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器;所述根据数据库中存储的数据预先构建的索引为支持范围查询的索引,例如,可以是ART索引,也可以是B+树索引,还可以是红黑树索引,或者其他类型的支持范围查询的索引。
作为本发明一种实施例,在查询中自适应构建的索引为ART索引,所述ART索引有两种类型的节点,其中内部节点提供从部分键到其他节点的映射,而叶节点存储与关键字相对应的值,树的高度仅由索引关键字的最大长度而不是索引关键字的数目决定,并且所有关键字都按字典顺序排序,内部节点的容量随着插入的关键字而自适应地改变,这使得ART索引具有高查询效率;这里采用的是内存数据库,顾名思义就是将数据放在内存中直接操作的数据库,相对于磁盘数据库,内存数据库的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能,数据库分裂的过程是由连续发出的范围查询驱动的,因此,应该确保要分裂的任何数据结构都支持范围查询,而ART索引不仅支持点查询,还支持范围扫描,当子指针在内部节点中排序时,可以通过返回范围下限和上限之间的子树中的所有叶节点来有效地执行范围扫描。
本发明实施例通过获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引,具有较短的初始化时间,通过第一索引保证查询的正常工作,初始化阶段等待耗时少,可以用于任何时候需要即时查询响应的场景,保证了对于热点数据的查询具有实时性。
在步骤S204中,获取检索条件,所述检索条件至少包含检索目标的上界和下界。
在本发明实施例中,所述检索目标为包含范围的查询,所述检索目标的上界和下界即为所述查询的范围,所述检索条件为包含下界和上界的元素集合,所述下界和上界的定义中,可以是存在一个实数a和一个实数集合B,使得对 都有x≥a,则称a为B的下界,也可以是将偏序集中大于或等于它的子集中一切元素的元素作为上界,还可以是在某些部分有序集合(K,≤)的子集S里面,大于或等于S的每个元素的K的那个元素,叫做上界,而下界被定义为K的元素小于或等于S的每个元素;所述获取检索条件可以是通过服务器进行获取,例如,服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器;当然,根据用户的实际需求情况,所述检索目标的上界和下界可以是用户设置的任意范围的元素集合。
作为本发明一种实施例,所述ART索引中,当子指针在内部节点中排序时,可以通过返回范围下限和上限之间的子树中的所有叶节点来有效地执行范围扫描,即通过返回检索目标的上界和下界之间的子树中的所有叶节点来有效地执行范围扫描,通过获取检索条件,所述检索条件至少包含检索目标的上界和下界,根据检索目标的上界和下界可以用于在数据库中实现数据的查询,在查询过程中,总的查询性能受有序数组上二进制搜索的计算复杂度的限制,但是比较的数量只与ART索引中的键的路径长度有关,而不是与ART索引中的键的数量有关,因此查询性能明显提升。
本发明实施例通过获取检索条件,所述检索条件至少包含检索目标的上界和下界,根据检索目标的上界和下界可以在数据库中实现数据的查询,通过连续发出的范围查询来驱动数据库分裂。
在步骤S206中,根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
在本发明实施例中,所述调整为根据所述检索条件对所述第一索引进行范围查询,所述调整可以是通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,所述范围查询是根据所述检索条件中包含检索目标的上界和下界对所述第一索引中的所有数据进行索引,因此,所述第一索引被分裂并重新排列为多个数据集合,这保证了所述第一索引中数据集合之间的排序顺序,且多个数据集合之间通过所述上界和下界进行分开,位于所述上界和下界中的所有数据都满足查询,因此作为结果集返回,根据返回的结果集对所述第一索引进行调整得到目标索引。
作为本发明一种实施例,通过范围查询实现对所述第一索引的分裂,进而生成所述目标索引,所述目标索引通过所述上界和所述下界作为所述目标索引中的两个分界线,通过所述两个分界线实现对所述第一索引的分裂,一方面,每个范围查询选择的元组越少,查询响应就越快,但构建完整的索引所需的时间就越长,另一方面,每个查询选择的元组越多,查询响应速度就越慢,但构建完整的索引的时间就越短,通过范围查询的选择来尽可能地延迟不可避免的更改,能够使索引的创建反应实际的工作负载。
作为本发明又一种实施例,提供一种ART索引分裂算法,其中,假设范围查询发生在表R的列A上,并且列A中值的数据类型为整数,给定列A上的范围查询为[lb,ub],即[lb,ub]为所述下界和上界,art_idx则为ART索引,hit_slices为列切片,所述列切片是列A上由范围间隔标识的数据簇,并按排序顺序对列切片进行排序;tbl为范围查找表,所述范围查找表用于记录已经在ART索引中被索引的那些数据集合,以便分裂算法可以决定是直接通过ART索引返回查询结果还是执行标准分裂操作,范围查找表中的键和值分别被设计为合并的历史查询范围和相应被覆盖的列切片;分裂列为col,所述分裂列是构建ART索引的数据库列的副本,从ART索引的角度,它是待索引的键数组;首先,以[lb,ub]作为输入,根据ART索引分裂算法在进行ART索引分裂的同时输出一组值rs作为列col上的范围查询结果。
在本发明实施例中,如果范围查找表tbl为空,即表中没有记录任何范围,则算法将首先初始化ART索引art_idx和分裂列col。
在本发明实施例中,初始化之后,ART索引分裂算法根据范围查找表tbl的指示决定是否在ART索引中执行范围搜索,它首先查找记录在范围查找表tbl中的所有条目,这些条目的键具有与[lb,ub]的非空交集hit_range,对于每个找到的条目,执行ART索引中的范围查询hit_range,并将rs与当前结果合并,在每个找到的条目中的相应数据集合被收集在一组hit_slices中,以便在下一阶段使用。
在本发明实施例中,初始化后进入分裂阶段,算法遍历分裂列col中未在art_idx中索引但与[lb,ub]相交的所有列切片,最初整个分裂列col中只有一个完整的切片,所有这些交集作为元素存储于new_slices集合中,用于在最后阶段更新范围查找表tbl,然后调用传统的数据库分裂函数DB_CRACKING()分裂每个交集,调用DB_CRACKING()后,新的列切片与原始列切片分离,交集中的所有值都将在rs_db中进行排序后返回,此外,将rs_db中的值插入ART索引art_idx,并在rs和rs_db之间进行求并集;在结束阶段,将[lb,ub]作为键并将所有新列切片new_slices作为值来构造键值对,键值对被插入范围查找表tbl并与现有条目合并。
本发明实施例通过根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线,在根据所述检索条件进行范围查询的同时实现所述第一索引的分裂,通过这种方式,利用连续到达的范围查询逐步构建完整的ART索引,减少了初始化阶段的等待耗时,通过第一索引保证查询的正常工作,同时通过不断的查询逐步构建形成一个完整的索引。
本发明实施例通过第一索引保证查询的正常工作,初始化阶段等待耗时少,同时,通过获取检索条件对所述第一索引进行不断的查询来逐步构建形成一个完整的索引,从而解决了因一次性构建完整索引而造成的可用性较差、初始化阶段耗时过长的问题,在整个分裂过程中,数据集合是动态维护的,历史范围查询所覆盖的任何列切片都已保留在目标索引中,这确保了尽可能使用已经部分建立的索引完成相关查询的执行,通过这一策略来提高整体查询性能。
在一个实施例中,提供了一种数据库索引创建装置,其与图3所示的装置的区别在于,还包括构建模块,用于构建第二索引与第三索引,其中,所述构建第二索引与第三索引为:
当所述上界和所述下界不在所述第一索引累积的查找范围中时,根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时在所述第一索引中搜索所述上界和所述下界,根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序以得到第二索引,最后输出检索结果并构建ART索引;
当所述上界和所述下界在所述第一索引累积的查找范围中时,即可根据所述上界和所述下界直接到ART索引中检索位于所述两个分界线内的所述多个数据,最后输出检索结果。
在本发明实施例中,可以是根据所述上界和所述下界将所述检索目标的查询范围插入至所述第一索引中,所述插入过程可以通过服务器实现;通过根据所述上界和所述下界增加所述第一索引的范围,保证检索范围在索引范围内,以构建第三索引最后输出检索结果;所述根据所述上界和所述下界分裂所述第一索引生成多个数据集合,可以是根据范围查询的所述上界和所述下界对第一索引中的所有数据进行索引,因此,第一索引被分裂并重新排列为三个数据集合,以构建第二索引并输出检索结果;所述分裂过程可以通过服务器实现,所述服务器可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。
本发明实施例通过根据所述上界和所述下界增加所述第一索引的范围,以保证所述目标索引中的两个分界线位于所述第一索引的范围内,同时通过多个数据集合的排序来进行动态维护,通过根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序,实现了数据的动态维护,通过合并现有数据集合来删除多余的数据集合,减少了数据的冗余。
在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例中的数据库索引创建方法的步骤。
图7示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图7所示,本发明实施例提供的一种计算机设备,包括通过系统总线连接的处理器、存储器、网络接口和输入装置。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现本发明实施例中的数据库索引创建方法的步骤。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行本发明实施例中的数据库索引创建方法的步骤。计算机设备的输入装置可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、扩音器、触控板或鼠标等。
在本发明实施例中,存储器可以是高速随机存取存储器,诸如DRAM、SRAM、DDR、RAM、或者其他随机存取固态存储设备,或者非易失性存储器,诸如一个或多个硬盘存储设备、光盘存储设备、内存设备等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的数据库索引创建装置可以实现为一种计算机程序的形式,计算机程序可在如图7所示的计算机设备上运行。计算机设备的存储器中可存储组成该数据库索引创建装置的各个程序模块,比如,图3所示的第一获取模块310、第二获取模块320和调整模块330。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的数据库索引创建方法中的步骤。
例如,图7所示的计算机设备可以通过如图3所示的数据库索引创建装置中的第一获取模块310执行步骤S202,获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引。计算机设备可通过第二获取模块320执行步骤S204,获取检索条件,所述检索条件至少包含检索目标的上界和下界。计算机设备可通过调整模块330执行步骤S206,根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线。
另外,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据库索引创建方法的步骤。
在本发明所提供的几个实施例中,应该理解到,所描述的实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到一起,或一些模块可以忽略,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种数据库索引创建方法,其特征在于,所述方法包括:
获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引;
获取检索条件,所述检索条件至少包含检索目标的上界和下界;
根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线,具体包括:
当范围查询的所述上界和所述下界不在所述第一索引的累积查询范围中时,根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时在所述第一索引中搜索所述上界和所述下界,根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序,排序后的第一索引即为第二索引,则第二索引中所述上界和所述下界之间的元组为范围查询的目标检索结果,最后输出范围查询的所述目标检索结果并构建ART索引。
2.根据权利要求1所述的方法,其特征在于,当所述上界和所述下界在所述第一索引累积的查询范围中时,根据所述上界和所述下界直接到所述ART索引中检索位于所述两个分界线内的多个数据,ART索引返回的检索数据元组为范围查询的所述目标检索结果,最后输出范围查询的所述目标检索结果。
3.根据权利要求1所述的方法,其特征在于,当在生成所述目标索引后再次获取到所述检索条件时,对所述目标索引进行调整操作,所述调整操作为:
根据再次获取到的所述检索条件对所述目标索引进行调整得到调整索引,以保证所述上界和所述下界为所述调整索引中的两个分界线,且所述调整索引中位于所述两个分界线内的多个数据集合完成排序。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括更新所述目标索引,所述更新所述目标索引为:
获取更新数据,所述更新数据为所述数据库中预先存储的数据;
根据所述更新数据判断所述目标索引中的插入位置与移动位置,所述插入位置为所述更新数据位于所述目标索引中的位置,所述移动位置为检索所述第一索引累积范围查询获取的多个数据集合的下限值的位置;
移动所述目标索引中高于插入数据应在的数据集合的每个数据集合的下限值到下一个数据集合的下限值的位置;
插入所述更新数据至所述插入位置,以更新所述目标索引。
5.一种数据库索引创建装置,其特征在于,所述数据库索引创建装置包括:
第一获取模块,用于获取第一索引,所述第一索引是根据数据库中存储的数据预先构建的索引;
第二获取模块,用于获取检索条件,所述检索条件至少包含检索目标的上界和下界;
调整模块,用于根据所述检索条件对所述第一索引进行调整得到目标索引,以保证所述上界和所述下界为所述目标索引中的两个分界线,具体包括:
所述数据库索引创建装置还包括构建模块,所述构建模块用于构建第二索引,所述第二索引是根据所述上界和所述下界对所述第一索引分裂后所有数据集合构建的索引,每一次迭代范围查询均根据新的上界和下界基于所述第二索引进行分裂,使得目标索引进一步精细化,所述构建第二索引为:
当所述上界和所述下界不在所述第一索引的累积查询范围中时,根据所述上界和所述下界分裂所述第一索引生成多个数据集合,同时在所述第一索引中搜索所述上界和所述下界,根据所述上界和所述下界完成所述第一索引中位于所述两个分界线外的所述多个数据集合的排序,以构建第二索引并输出范围查询的目标检索结果。
6.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至4中任一项权利要求所述数据库索引创建方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至4中任一项权利要求所述数据库索引创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010663640.6A CN111782659B (zh) | 2020-07-10 | 2020-07-10 | 数据库索引创建方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010663640.6A CN111782659B (zh) | 2020-07-10 | 2020-07-10 | 数据库索引创建方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782659A CN111782659A (zh) | 2020-10-16 |
CN111782659B true CN111782659B (zh) | 2023-10-17 |
Family
ID=72768843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010663640.6A Active CN111782659B (zh) | 2020-07-10 | 2020-07-10 | 数据库索引创建方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782659B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506964B (zh) * | 2020-11-30 | 2024-05-28 | 深圳市移卡科技有限公司 | 数据查询方法、系统及计算机可读存储介质 |
CN113626432B (zh) * | 2021-08-03 | 2023-10-13 | 上海沄熹科技有限公司 | 一种支持任意Key值的自适应基数树的改进方法 |
CN117573703B (zh) * | 2024-01-16 | 2024-04-09 | 科来网络技术股份有限公司 | 时序数据的通用检索方法、系统、设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000027101A (ko) * | 1998-10-27 | 2000-05-15 | 정선종 | 고차원 색인 구조의 동시성 제어 방법 |
KR20010008853A (ko) * | 1999-07-05 | 2001-02-05 | 정선종 | 정보검색이 밀결합된 객체지향 디비엠에스의 질의처리시스템과방법 |
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
CN102737124A (zh) * | 2012-06-15 | 2012-10-17 | 复旦大学 | 在时间序列数据库中查找给定时间序列的近似序列的方法 |
CN102890682A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
CN104268146A (zh) * | 2014-08-21 | 2015-01-07 | 南京邮电大学 | 一种适合分析型应用的静态b+树索引方法 |
CN105095458A (zh) * | 2015-07-29 | 2015-11-25 | 南威软件股份有限公司 | 一种基于时间特征支持复杂条件的大数据检索方法 |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
CN108027763A (zh) * | 2016-04-19 | 2018-05-11 | 森斯班克株式会社 | 关系型数据库的调整装置和方法 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
CN109542907A (zh) * | 2018-11-21 | 2019-03-29 | 万兴科技股份有限公司 | 数据库缓存构建方法、装置、计算机设备以及存储介质 |
CN110807041A (zh) * | 2019-11-01 | 2020-02-18 | 广州华多网络科技有限公司 | 索引推荐方法、装置、电子设备及存储介质 |
WO2020055977A1 (en) * | 2018-09-14 | 2020-03-19 | Google Llc | Staggered merging in log-structured merge forests |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170124497A1 (en) * | 2015-10-28 | 2017-05-04 | Fractal Industries, Inc. | System for automated capture and analysis of business information for reliable business venture outcome prediction |
-
2020
- 2020-07-10 CN CN202010663640.6A patent/CN111782659B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000027101A (ko) * | 1998-10-27 | 2000-05-15 | 정선종 | 고차원 색인 구조의 동시성 제어 방법 |
KR20010008853A (ko) * | 1999-07-05 | 2001-02-05 | 정선종 | 정보검색이 밀결합된 객체지향 디비엠에스의 질의처리시스템과방법 |
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
CN102890682A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
WO2013010414A1 (zh) * | 2011-07-21 | 2013-01-24 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
CN102737124A (zh) * | 2012-06-15 | 2012-10-17 | 复旦大学 | 在时间序列数据库中查找给定时间序列的近似序列的方法 |
CN104268146A (zh) * | 2014-08-21 | 2015-01-07 | 南京邮电大学 | 一种适合分析型应用的静态b+树索引方法 |
CN105095458A (zh) * | 2015-07-29 | 2015-11-25 | 南威软件股份有限公司 | 一种基于时间特征支持复杂条件的大数据检索方法 |
CN108027763A (zh) * | 2016-04-19 | 2018-05-11 | 森斯班克株式会社 | 关系型数据库的调整装置和方法 |
CN106777351A (zh) * | 2017-01-17 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 基于art树分布式系统图存储计算系统及其方法 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
WO2020055977A1 (en) * | 2018-09-14 | 2020-03-19 | Google Llc | Staggered merging in log-structured merge forests |
CN109542907A (zh) * | 2018-11-21 | 2019-03-29 | 万兴科技股份有限公司 | 数据库缓存构建方法、装置、计算机设备以及存储介质 |
CN110807041A (zh) * | 2019-11-01 | 2020-02-18 | 广州华多网络科技有限公司 | 索引推荐方法、装置、电子设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
ALEX: an updatable adaptive learned index;J Ding 等;《arXiv》;1-15 * |
Cracking in-memory database index: A case study for Adaptive Radix Tree index;Gang Wu 等;《Information Systems》;第104卷;1-21 * |
分布式内存数据库数据并行快速加载与索引技术;柳陆;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I138-2216 * |
面向数据特征的内存跳表优化技术;李梁 等;《软件学报》;第31卷(第3期);663-679 * |
Also Published As
Publication number | Publication date |
---|---|
CN111782659A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782659B (zh) | 数据库索引创建方法、装置、计算机设备和存储介质 | |
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
CN102169507A (zh) | 一种分布式实时搜索引擎 | |
CN112000846B (zh) | 基于gpu分组lsm树索引的方法 | |
CN1979469A (zh) | 索引及其扩展和查询方法 | |
US20180203874A1 (en) | Space-efficient secondary indexing on distributed data stores | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
CN102819586A (zh) | 一种基于高速缓存的url分类方法和设备 | |
CN111400334B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN112559459B (zh) | 一种基于云计算的自适应存储分层系统及方法 | |
Challa et al. | DD-Rtree: A dynamic distributed data structure for efficient data distribution among cluster nodes for spatial data mining algorithms | |
CN115114374B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN111177090A (zh) | 一种基于子模优化算法的客户端缓存方法及系统 | |
CN112231398A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN113392089B (zh) | 一种数据库索引优化方法及可读存储介质 | |
US10558636B2 (en) | Index page with latch-free access | |
CN117539915B (zh) | 一种数据处理方法及相关装置 | |
KR102354343B1 (ko) | 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치 | |
US11537516B1 (en) | Multi-tier cache for a distributed storage system | |
US11704033B1 (en) | Request routing management for a distributed storage system | |
US11741078B1 (en) | Witness service for ensuring data consistency in a distributed storage system | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists | |
CN112989130A (zh) | B+树操作装置 |
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 |