CN112069185B - 索引构建方法、装置、电子设备和介质 - Google Patents

索引构建方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN112069185B
CN112069185B CN202010939115.2A CN202010939115A CN112069185B CN 112069185 B CN112069185 B CN 112069185B CN 202010939115 A CN202010939115 A CN 202010939115A CN 112069185 B CN112069185 B CN 112069185B
Authority
CN
China
Prior art keywords
index
node
value corresponding
construction
data
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
Application number
CN202010939115.2A
Other languages
English (en)
Other versions
CN112069185A (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.)
Industrial and Commercial Bank of China Ltd ICBC
ICBC Technology Co Ltd
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
ICBC 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 Industrial and Commercial Bank of China Ltd ICBC, ICBC Technology Co Ltd filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010939115.2A priority Critical patent/CN112069185B/zh
Publication of CN112069185A publication Critical patent/CN112069185A/zh
Application granted granted Critical
Publication of CN112069185B publication Critical patent/CN112069185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/21Design, administration or maintenance of databases

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供一种基于平衡树的索引构建方法,包括:针对构建指标,获取与构建指标对应的期望值,其中,构建指标包括层指标,层指标用于限定平衡树的层高;以及基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置,其中,平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。本公开还提供了一种基于平衡树的索引构建装置,电子设备以及计算机可读存储介质。本公开提供的方法和装置例如可以应用于金融领域或其他领域的数据库技术中。

Description

索引构建方法、装置、电子设备和介质
技术领域
本公开涉及数据库技术领域,特别是涉及一种索引构建方法、装置、电子设备和介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各方面得到广泛应用。
索引是为了加速对数据库表中数据行的检索而创建的一种分散存储的(不连续的)数据结构,硬盘级的,该数据结构用于对表中一列或多列的值进行排序,使用索引可以快速访问数据库表中的特定信息,能极大的减少存储引擎需要扫描的数据量,索引可以把随机I/O(Input/Output,输入/输出)变成顺序IO。索引可以帮助我们在进行分组、排序等操作时,避免使用临时表。因此,正确的创建合适的索引是提升数据库查询性能的基础。
B-tree(平衡多路搜索树)是一种常见的数据结构。B+Tree索引是在B-Tree基础上的一种优化,使其更适合实现外存储索引结构。现有B+Tree索引构建方案一般采用度控制,即控制每一个度中的结点数量,另外控制每一个结点中存储的数据大小,那么在插入数据的过程中,数据量过大时会根据实际情况不断扩充B+Tree的层高,而层数太多将直接增加磁盘I/O次数,严重影响对数据库执行数据插入和检索数据的性能。
发明内容
有鉴于此,为了克服相关技术中存在的上述技术问题,减少磁盘I/O次数,提高对数据库执行数据插入和检索数据的性能。本公开提供了一种基于平衡树的索引构建方法、装置、电子设备和介质。
为实现上述目标,本公开的一个方面提供了一种基于平衡树的索引构建方法,包括:针对构建指标,获取与上述构建指标对应的期望值,其中,上述构建指标包括层指标,上述层指标用于限定平衡树的层高。以及基于上述构建指标,虚拟能够容纳预期数量的平衡树,以使得基于上述虚拟的平衡树,能够定位待操作数据的位置,其中,上述平衡树包括多个结点,每个结点内所容纳的数据用于预置上述待操作数据的索引。
根据本公开的实施例,上述基于上述构建指标,虚拟能够容纳预期数量的平衡树包括:基于上述与上述构建指标对应的期望值和上述预期数量,确定与度指标对应的目标值,其中,上述度指标用于限定上述多个节点拥有子节点的最大值。以及基于上述与度指标对应的目标值以及上述与上述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树。
根据本公开的实施例,上述与上述构建指标对应的期望值为2层、3层或4层。
根据本公开的实施例,上述基于上述与度指标对应的目标值以及上述与上述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树包括:基于上述与度指标对应的目标值以及上述与上述构建指标对应的期望值,确定上述平衡树能够容纳的多个结点的结点数量。基于上述与上述构建指标对应的期望值,确定上述每个节点能够容纳实际数量。以及基于上述每个节点能够容纳实际数量,将上述预期数量预置到与上述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
为实现上述目标,本公开的另一个方面提供了一种基于平衡树的索引构建装置,包括:获取模块,用于针对构建指标,获取与上述构建指标对应的期望值,其中,上述构建指标包括层指标,上述层指标用于限定平衡树的层高。以及虚拟模块,用于基于上述构建指标,虚拟能够容纳预期数量的平衡树,以使得基于上述虚拟的平衡树,能够定位待操作数据的位置,其中,上述平衡树包括多个结点,每个结点内所容纳的数据用于预置上述待操作数据的索引。
根据本公开的实施例,上述虚拟模块包括:确定子模块,用于基于上述与上述构建指标对应的期望值和上述预期数量,确定与度指标对应的目标值,其中,上述度指标用于限定上述多个节点拥有子节点的最大值。以及虚拟子模块,用于基于上述与度指标对应的目标值以及上述与上述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树。
根据本公开的实施例,上述与上述构建指标对应的期望值为2层、3层或4层。
根据本公开的实施例,上述虚拟子模块包括:第一确定单元,用于基于上述与度指标对应的目标值以及上述与上述构建指标对应的期望值,确定上述平衡树能够容纳的多个结点的结点数量。第二确定单元,用于基于上述与上述构建指标对应的期望值,确定上述每个节点能够容纳实际数量。以及虚拟单元,用于基于上述每个节点能够容纳实际数量,将上述预期数量预置到与上述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
为实现上述目标,本公开的另一方面提供了一种电子设备,包括:一个或多个处理器,存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
为实现上述目标,本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
为实现上述目标,本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
与现有技术相比,本公开基于与构建指标对应的期望值,虚拟能够容纳预期数量的、且包含多个结点,每个结点内所容纳的数据用于预置所述待操作数据的索引平衡树,通过该平衡树可以得出整个树中每一个结点所能容纳的数据以及每一个数据的准确位置,以使得基于虚拟的平衡树,能够定位待操作数据的位置,至少可以克服相关技术中无法预估存入数据量的大小,或者存入的数据量过大时会造成树的层数太多从而增加了磁盘IO次数,影响插入操作和检索操作的性能的技术缺陷,可以根据预估的存入数据量的大小,基于与构建指标对应的期望值,建立具有期望构建指标值的索引树,虚拟一个能够容纳预期数量的树,且该树包含约定度和尽可能小的层,即使在存入的数据量过大时也能达到减少IO次数,提高数据插入和检索数据的性能的技术效果。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了适用于本公开实施例的可以应用基于平衡树的索引构建方法和装置的应用场景;
图2示意性示出了根据本公开实施例的基于平衡树的索引构建方法的流程图;
图3示意性示出了根据本公开实施例的虚拟的平衡树的示意图;
图4示意性示出了根据本公开实施例的基于平衡树的索引构建装置的框图;
图5示意性示出了根据本公开实施例的适于实现上文描述的基于平衡树的索引构建方法的计算机可读存储介质产品的示意图;以及
图6示意性示出了根据本公开实施例的适于实现上文描述的基于平衡树的索引构建方法的电子设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
应该注意的是,附图并未按比例绘制,并且出于说明目的,在整个附图中类似结构或功能的元素通常用类似的附图标记来表示。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了上述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程基于平衡树的索引构建装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
本公开的实施例提供了一种基于平衡树的索引构建方法、装置、电子设备和介质。其中,该基于平衡树的索引构建方法包括:针对构建指标,获取与构建指标对应的期望值,其中,构建指标包括层指标,层指标用于限定平衡树的层高;以及基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置,其中,平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。
需要说明的是,本公开提供的基于平衡树的索引构建方法和装置可用于金融领域的数据库技术中,也可用于除金融领域之外的任意领域的数据库技术中。因此,对本公开所提供的基于平衡树的索引构建方法和装置的应用领域不做限定。
图1示意性示出了适用于本公开实施例的可以应用基于平衡树的索引构建方法和装置的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和数据库服务器105。网络104用以在终端设备101、102、103和数据库服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与数据库服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如金融机构客户端应用、支付类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
数据库服务器105可以是提供数据库服务的服务器,由运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成,数据库服务器105可以为终端设备101、102、103提供数据服务。数据库服务器105建立在数据库系统基础上,具有数据库系统的特征,且有其独特的一面。主要功能包括:数据库管理功能,包括系统配置与管理、数据存取与更新管理、数据完整性管理和数据安全性管理。数据库的查询和操作功能,该功能包括数据库检索和修改。数据库维护功能,包括数据的导入/导出管理,数据库结构维护、数据恢复功能和性能监测。数据库并行运行,由于在同一时间,访问数据库的用户不止一个,所以数据库服务器105必须支持并行运行机制,处理多个事件的同时发生。
应该理解,图1中的终端设备、网络和数据服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目标终端设备、网络和数据服务器。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
图2示意性示出了根据本公开实施例的基于平衡树的索引构建方法的流程图。
如图2所示,该基于平衡树的索引构建方法可以包括操作S210~操作S220。
在操作S210,针对构建指标,获取与构建指标对应的期望值。
根据本公开的实施例,平衡树可以是B+Tree,构建指标包括层指标,层指标用于限定平衡树的层高。在B+Tree中,所有数据记录节点都是按照键(key)值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息。由于B+Tree的非叶子节点只存储键值信息,假设每个磁盘块能存储4个key值及指针信息。
在操作S220,基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置。
根据本公开的实施例,平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。待操作可以包括但不限于读取操作、插入操作、检索操作。
作为一种可选的实施例,本公开利用以下计算方式设立平衡树T。定义平衡树T的度为degree,简称D,平衡树T的层高为level,简称L,平衡树T的每一个结点为node,简称N,每一个结点内所容纳的数据量为count,简称C,平衡树T所能够容纳的结点数量为nodes,简称Ns,平衡树T所能容纳的数据数量为treeCount,简称TC,每一层中结点差为Li,i表示层高,默认在整个平衡树T中,L由上至下i值递增,且i初始值为1,Ns=DL/(D-1),C=D-1,TC=Ns*C,每一层节点数据差Li=DD-i
以D=128,L=4为例,可知该树所能容纳的节点数量为2113665(1284/3取整),每一个节点内所能容纳的数据数量为127,该树所能容纳的节点数量TC=2113665*127,第一层节点数据差为L1=1283=2097152,第二层节点数据差为L2=1282=16384,第三层节点数据差为L3=1281=128,第四层节点数据差为L4=1280=1,需要说明的是,位于平衡树最底层的节点数据差必然为1。
B+Tree是为磁盘或其他直接存取的辅助存储设备而设计的一种平衡搜索树,在降低磁盘I/O操作数方面比较好,一棵B+Tree包含根节点、内部节点(也称非叶子节点)和叶子节点,根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点,B+Tree通常用于数据库和操作系统的文件系统中。B+Tree的内部节点并没有指向关键字具体信息的指针,因此其内部节点较小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存中的需要查找的关键字也越多,相对来说I/O读写次数也就降低了,所以B+Tree的磁盘读写代价更低。同时,由于B+Tree的非终结点并不是最终指向文件内容的阶段,而只是叶子节点中关键字的索引,所以任何关键字的查找都必须要走一条从根节点到叶子节点的路,所有关键字查询的路径长度相同,导致每一个数据的查询效率相当,所以B+Tree的查询效率更加稳定。
通过本公开的实施例,基于与构建指标对应的期望值,虚拟能够容纳预期数量的、且包含多个结点,每个结点内所容纳的数据用于预置前述待操作数据的索引平衡树,通过该平衡树可以得出整个树中每一个结点所能容纳的数据以及每一个数据的准确位置,以使得基于虚拟的平衡树,能够定位待操作数据的位置,至少可以克服相关技术中无法预估存入数据量的大小,或者存入的数据量过大时会造成树的层数太多从而增加了磁盘IO次数,影响插入操作和检索操作的性能的技术缺陷,可以根据预估的存入数据量的大小,基于与构建指标对应的期望值,建立具有期望构建指标值的索引树,虚拟一个能够容纳预期数量的树,且该树包含约定度和尽可能小的层,即使在存入的数据量过大时也能达到减少IO次数,提高数据插入和检索数据的性能的技术效果。
作为一种可选的实施例,前述与前述构建指标对应的期望值为2层、3层或4层。
可以理解的是,系统从磁盘读取数据到内存时,是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性都读取处理,而不是需要什么读取什么。B+Tree的层数控制都在2~4层,查找某一键值的行记录时最多只需要1~3次磁盘I/O操作。
通过该树在插入或检索数据的时候遵循上述约定,即可实现对整个树的数据全量定位和控制,并以此实现最大化数据量范围同时最小化层高的目的,从而减少磁盘IO的读写次数提高效率和性能。
作为一种可选的实施例,前述基于前述构建指标,虚拟能够容纳预期数量的平衡树包括:基于前述与前述构建指标对应的期望值和前述预期数量,确定与度指标对应的目标值,其中,前述度指标用于限定前述多个节点拥有子节点的最大值;以及基于前述与度指标对应的目标值以及前述与前述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树。
作为一种可选的实施例,前述基于前述与度指标对应的目标值以及前述与前述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树包括:基于前述与度指标对应的目标值以及前述与前述构建指标对应的期望值,确定前述平衡树能够容纳的多个结点的结点数量;基于前述与前述构建指标对应的期望值,确定前述每个节点能够容纳实际数量;以及基于前述每个节点能够容纳实际数量,将前述预期数量预置到与前述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
下面以需要一个满足时间戳为索引条件的树为例,可以将uint64max即264的数据最大(简称MAX)值作为该树所能容纳的节点数量,即TC=18446744073709551616,与构建指标对应的期望值为层高L=4,以此可以推导出该树的度D=65536,每一个结点内数据的范围为65536,第一层的结点数据差L1为281474976710656,第二层的结点数据差L2为4294967296,第三层的结点数据差L3为65536,最后一层的结点数据差L4为1。
图3示意性示出了根据本公开实施例的虚拟的平衡树的示意图。
如图3所示,可以通过上述算法虚拟出度为5,层为3的平衡树,最终可以得出整个树中的每一个结点以及每一个数据的准确位置。
从图中可以看出,度为5,层为3的平衡树所能容纳的数据数量为124。度为5层为3的平衡树所能够容纳的结点数量为31,包括1个根节点(310)、5个非叶子节点(311、312、313、314以及315)和25个叶子节点(图中未示出),每个节点可以占用一个盘块的磁盘空间,每个节点上容纳有4个升序排序的索引值。
根节点(310)上容纳的4个升序排序的索引值25、50、75和100,用于将索引值划分为5个范围域,其中第一范围域为小于25,第二范围域为25~50,第三范围域为50~75,第四范围域为75~100,第五范围域为大于100,划分得到的5个范围域分别对应该根节点的5个非叶子节点(311、312、313、314以及315)上容纳的索引值范围。
位于最左侧的第一个非叶子节点(311)上容纳的4个升序排序的索引值5、10、15和20,用于将索引值划分为5个范围域,其中第一范围域为1~5,第二范围域为5~10,第三范围域为10~15,第四范围域为15~20,第五范围域为20~25,划分得到的5个范围域分别对应第一个非叶子节点(311)的5个叶子节点上容纳的索引值。具体地,第一个叶子节点的索引值为1、2、3、4,第二个叶子节点的索引值为6、7、8、9,第三个叶子节点的索引值为11、12、13、14,第四个叶子节点的索引值为16、17、18、19,第五个叶子节点的索引值为21、22、23、24。
第二个非叶子节点(312)上容纳的4个升序排序的索引值30、35、40和45,用于将索引值划分为5个范围域,其中第一范围域为25~30,第二范围域为30~35,第三范围域为35~10,第四范围域为40~45,第五范围域为45~50,划分得到的5个范围域分别对应第二个非叶子节点(312)的5个叶子节点上容纳的索引值。具体地,第一个叶子节点的索引值为26、27、28、29,第二个叶子节点的索引值为31、32、33、34,第三个叶子节点的索引值为36、37、38、39,第四个叶子节点的索引值为41、42、43、44,第五个叶子节点的索引值为46、47、48、49。
第三个非叶子节点(313)上容纳的4个升序排序的索引值55、60、65和70,用于将索引值划分为5个范围域,其中第一范围域为50~55,第二范围域为55~60,第三范围域为60~65,第四范围域为65~70,第五范围域为70~75,划分得到的5个范围域分别对应第三个非叶子节点(313)的5个叶子节点上容纳的索引值。具体地,第一个叶子节点的索引值为51、52、53、54,第二个叶子节点的索引值为56、57、58、59,第三个叶子节点的索引值为61、62、63、64,第四个叶子节点的索引值为66、67、68、69,第五个叶子节点的索引值为71、72、73、74。
第四个非叶子节点(314)上容纳的4个升序排序的索引值80、85、90和95,用于将索引值划分为5个范围域,其中第一范围域为75~80,第二范围域为80~85,第三范围域为80~90,第四范围域为90~95,第五范围域为95~100,划分得到的5个范围域分别对应第四个非叶子节点(314)的5个叶子节点上容纳的索引值。具体地,第一个叶子节点的索引值为76、77、78、79,第二个叶子节点的索引值为81、82、83、84,第三个叶子节点的索引值为86、87、88、89,第四个叶子节点的索引值为91、92、93、94,第五个叶子节点的索引值为96、97、98、99。
位于最右侧的第五个非叶子节点(315)上容纳的4个升序排序的索引值105、110、115和120,用于将索引值划分为5个范围域,其中第一范围域为100~105,第二范围域为105~110,第三范围域为110~115,第四范围域为115~120,第五范围域为120~125,划分得到的5个范围域分别对应第五个非叶子节点(315)的5个叶子节点上容纳的索引值。具体地,第一个叶子节点的索引值为101、102、103、104,第二个叶子节点的索引值为106、107、108、109,第三个叶子节点的索引值为111、112、113、114,第四个叶子节点的索引值为116、117、118、119,第五个叶子节点的索引值为121、122、123、124。
根据本公开的实施例,并不会通过直接计算的方式来存储或检索数据,而是通过该算法虚拟一个能够容纳预期数量的树,该树包含约定度和尽可能小的层。通过该树在插入或检索数据的时候遵循上述约定,即可实现对整个树的数据全量定位和控制,并以此实现最大化数据量范围同时最小化层高的目的,从而减少磁盘IO的读写次数提高效率和性能。
通过本公开的实施例,希望通过建立一个虚拟全景平衡树的方式提前预置好每一个插入数据的位置,并最大可能控制好层的高度从而实现减少磁盘IO读写的次数,达到性能的提升。
图4示意性示出了根据本公开实施例的基于平衡树的索引构建装置的框图。
如图4所示,该基于平衡树的索引构建装置400可以包括获取模块410和虚拟模块420。
获取模块410,用于针对构建指标,获取与构建指标对应的期望值。构建指标包括层指标,层指标用于限定平衡树的层高。
可选地,获取模块410例如可以用于执行图2描述的操作S210,在此不再赘述。
虚拟模块420,用于基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置。平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。
可选地,虚拟模块420例如可以用于执行图2描述的操作S220,在此不再赘述。
作为一种可选的实施例,前述虚拟模块420可以包括:确定子模块,用于基于前述与前述构建指标对应的期望值和前述预期数量,确定与度指标对应的目标值,其中,前述度指标用于限定前述多个节点拥有子节点的最大值;以及虚拟子模块,用于基于前述与度指标对应的目标值以及前述与前述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树。
作为一种可选的实施例,前述与前述构建指标对应的期望值为2层、3层或4层。
作为一种可选的实施例,前述虚拟子模块包括:第一确定单元,用于基于前述与度指标对应的目标值以及前述与前述构建指标对应的期望值,确定前述平衡树能够容纳的多个结点的结点数量;第二确定单元,用于基于前述与前述构建指标对应的期望值,确定前述每个节点能够容纳实际数量;以及虚拟单元,用于基于前述每个节点能够容纳实际数量,将前述预期数量预置到与前述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
需要说明的是,装置部分实施例中各模块的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
根据本公开的实施例的模块、子模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块410、虚拟模块420、确定子模块、虚拟子模块、第一确定单元、第二确定单元以及虚拟单元中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块410、虚拟模块420、确定子模块、虚拟子模块、第一确定单元、第二确定单元以及虚拟单元中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块410、虚拟模块420、确定子模块、虚拟子模块、第一确定单元、第二确定单元以及虚拟单元中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图5示意性示出了根据本公开实施例的适于实现上文描述的基于平衡树的索引构建方法的计算机可读存储介质产品的示意图。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在设备上运行时,程序代码用于使设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的基于平衡树的索引构建方法中的前述各项操作(或步骤),例如,电子设备可以执行如图2中所示的操作S210,针对构建指标,获取与构建指标对应的期望值,该构建指标包括层指标,层指标用于限定平衡树的层高。操作S220,基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置,该所述平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图5所示,描述了根据本发明的实施方式的基于平衡树的索引构建的程序产品500,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如Java,C++等,还包括常规的过程式程序设计语言—诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAA)或广域网(WAA)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
图6示意性示出了根据本公开实施例的适于实现上文描述的基于平衡树的索引构建方法的电子设备的框图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CNU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例图2中所示的操作S210,针对构建指标,获取与构建指标对应的期望值,该构建指标包括层指标,层指标用于限定平衡树的层高。操作S220,基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置,该所述平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。系统600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAA卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的基于平衡树的索引构建方法,包括图2中所示的操作S210,针对构建指标,获取与构建指标对应的期望值,该构建指标包括层指标,层指标用于限定平衡树的层高。操作S220,基于构建指标与期望值,虚拟能够容纳预期数量的平衡树,以使得基于虚拟的平衡树,能够定位待操作数据的位置,该所述平衡树包括多个结点,每个结点内所容纳的数据用于预置待操作数据的索引。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机防问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目标,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (8)

1.一种基于平衡树的索引构建方法,包括:
针对构建指标,获取与所述构建指标对应的期望值,其中,所述构建指标包括层指标,所述层指标用于限定平衡树的层高,其中,所述期望值为平衡数的层高;以及
基于所述构建指标,虚拟能够容纳预期数量的平衡树,以使得基于所述虚拟的平衡树,能够定位待操作数据的位置,其中,所述平衡树包括多个结点,每个结点内所容纳的数据用于预置所述待操作数据的索引;其中,所述基于所述构建指标,虚拟能够容纳预期数量的平衡树包括:
基于所述与所述构建指标对应的期望值和所述预期数量,确定与度指标对应的目标值,其中,所述度指标用于限定所述多个结点拥有子结点的最大值;以及
基于所述与度指标对应的目标值以及所述与所述构建指标对应的期望值,计算每个结点的容纳实际数量和每一层的结点数据差;
基于每个结点的容纳实际数量和每一层的结点数据差,虚拟能够容纳预期数量的平衡树。
2.根据权利要求1所述的方法,其中,所述与所述构建指标对应的期望值为2层、3层或4层。
3.根据权利要求1所述的方法,其中,所述基于所述与度指标对应的目标值以及所述与所述构建指标对应的期望值,虚拟能够容纳预期数量的平衡树包括:
基于所述与度指标对应的目标值以及所述与所述构建指标对应的期望值,确定所述平衡树能够容纳的多个结点的结点数量;
基于所述与所述构建指标对应的期望值,确定所述每个结点能够容纳实际数量;以及
基于所述每个结点能够容纳实际数量,将所述预期数量预置到与所述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
4.一种基于平衡树的索引构建装置,包括:
获取模块,用于针对构建指标,获取与所述构建指标对应的期望值,其中,所述构建指标包括层指标,所述层指标用于限定平衡树的层高,其中,所述期望值为平衡数的层高;以及
虚拟模块,用于基于所述构建指标,虚拟能够容纳预期数量的平衡树,以使得基于所述虚拟的平衡树,能够定位待操作数据的位置,其中,所述平衡树包括多个结点,每个结点内所容纳的数据用于预置所述待操作数据的索引;其中,所述虚拟模块包括:
确定子模块,用于基于所述与所述构建指标对应的期望值和所述预期数量,确定与度指标对应的目标值,其中,所述度指标用于限定所述多个结点拥有子结点的最大值;以及
虚拟子模块,用于基于所述与度指标对应的目标值以及所述与所述构建指标对应的期望值,计算每个结点的容纳实际数量和每一层的结点数据差;基于每个结点的容纳实际数量和每一层的结点数据差,虚拟能够容纳预期数量的平衡树。
5.根据权利要求4所述的装置,其中,所述与所述构建指标对应的期望值为2层、3层或4层。
6.根据权利要求4所述的装置,其中,所述虚拟子模块包括:
第一确定单元,用于基于所述与度指标对应的目标值以及所述与所述构建指标对应的期望值,确定所述平衡树能够容纳的多个结点的结点数量;
第二确定单元,用于基于所述与所述构建指标对应的期望值,确定所述每个结点能够容纳实际数量;以及
虚拟单元,用于基于所述每个结点能够容纳实际数量,将所述预期数量预置到与所述结点数量对应的多个结点中,以虚拟能够容纳预期数量的平衡树。
7.一种电子设备,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至3中任一项所述的方法。
8.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至3中任一项所述的方法。
CN202010939115.2A 2020-09-10 2020-09-10 索引构建方法、装置、电子设备和介质 Active CN112069185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010939115.2A CN112069185B (zh) 2020-09-10 2020-09-10 索引构建方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010939115.2A CN112069185B (zh) 2020-09-10 2020-09-10 索引构建方法、装置、电子设备和介质

Publications (2)

Publication Number Publication Date
CN112069185A CN112069185A (zh) 2020-12-11
CN112069185B true CN112069185B (zh) 2024-04-23

Family

ID=73662915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010939115.2A Active CN112069185B (zh) 2020-09-10 2020-09-10 索引构建方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN112069185B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402540A (zh) * 2010-09-15 2012-04-04 浙江天宇信息技术有限公司 基于多层优化平衡树的数值与文本混合倒排索引算法
CN104424267A (zh) * 2013-08-29 2015-03-18 北大方正集团有限公司 一种索引数据插入方法及系统
CN109117433A (zh) * 2017-06-23 2019-01-01 菜鸟智能物流控股有限公司 一种索引树对象的创建及其索引方法和相关装置
CN110704453A (zh) * 2019-10-15 2020-01-17 腾讯音乐娱乐科技(深圳)有限公司 一种数据查询方法、装置、存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402540A (zh) * 2010-09-15 2012-04-04 浙江天宇信息技术有限公司 基于多层优化平衡树的数值与文本混合倒排索引算法
CN104424267A (zh) * 2013-08-29 2015-03-18 北大方正集团有限公司 一种索引数据插入方法及系统
CN109117433A (zh) * 2017-06-23 2019-01-01 菜鸟智能物流控股有限公司 一种索引树对象的创建及其索引方法和相关装置
CN110704453A (zh) * 2019-10-15 2020-01-17 腾讯音乐娱乐科技(深圳)有限公司 一种数据查询方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN112069185A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
US10318512B2 (en) Storing and querying multidimensional data using first and second indicies
KR101976220B1 (ko) 데이터 보강 제안 기법
US10733172B2 (en) Method and computing device for minimizing accesses to data storage in conjunction with maintaining a B-tree
US20140136510A1 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US10915532B2 (en) Supporting a join operation against multiple NoSQL databases
US8364723B1 (en) Apparatus and method for realizing big data into a big object and non-transitory tangible machine-readable medium thereof
US10838963B2 (en) Optimized access for hierarchical low cardinality value synopsis in analytical databases
US11475151B2 (en) Security policy management for database
US11093541B2 (en) Transforming an ontology query to an SQL query
CN112949269A (zh) 可视化数据分析报表的生成方法、系统、设备及存储介质
US11281647B2 (en) Fine-grained scalable time-versioning support for large-scale property graph databases
CN110110184B (zh) 信息查询方法、系统、计算机系统及存储介质
US11789940B2 (en) Natural language interface to databases
CN111522820A (zh) 数据存储结构、存储检索方法、系统、设备及存储介质
CN112069185B (zh) 索引构建方法、装置、电子设备和介质
US11847121B2 (en) Compound predicate query statement transformation
US11868362B1 (en) Metadata extraction from big data sources
US20230153300A1 (en) Building cross table index in relational database
US11860939B2 (en) Manipulating a table with an XML column in a database
US11086836B2 (en) Index leaf page splits avoidance or reduction
US8015210B2 (en) Method and system for generating string-based addresses
US11586604B2 (en) In-memory data structure for data access
US20240045852A1 (en) Performing an operation in a tree structure
US20210349902A1 (en) Database query processing
US20230267121A1 (en) Query efficiency using merged columns

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

Effective date of registration: 20210121

Address after: 100140, 55, Fuxing Avenue, Xicheng District, Beijing

Applicant after: INDUSTRIAL AND COMMERCIAL BANK OF CHINA

Applicant after: ICBC Technology Co.,Ltd.

Address before: 071700 unit 111, 1st floor, building C, enterprise office area, xiong'an Civic Service Center, Rongcheng County, xiong'an District, China (Hebei) pilot Free Trade Zone, Hebei Province

Applicant before: ICBC Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant