数据库索引的管理方法、装置及电子设备与流程

文档序号:21724072发布日期:2020-08-05 01:14阅读:107来源:国知局
数据库索引的管理方法、装置及电子设备与流程

本发明涉及数据库技术领域,更具体地,涉及一种数据库索引的管理方法、一种数据库索引的管理装置以及一种电子设备。



背景技术:

数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。数据库中通常存储有海量数据,为了快速方便地管理数据,通常采用建立数据库索引的方式。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

索引是基于特定的关键字建立的。在某些场景中,存在大量数据的关键字完全相同,其他数据的关键字又相对离散的情况。相应地,索引中的关键字会大量重复。由于查询重复关键字对应的数据时需要一一遍历,因此上述情况会降低对数据库进行增改删查等处理的速度,还会增大设备的性能开销。

因此,有必要提出一种管理数据库索引的新的技术方案。



技术实现要素:

本发明的一个目的是提供一种管理数据库索引的新的技术方案。

根据本发明的第一方面,提供了一种数据库索引的管理方法,所述数据库采用红黑树规则建立数据索引和存储数据,所述方法包括:

获取所述数据库的新增数据;

确定所述数据库的初始索引中是否存在对应所述新增数据的目标节点,其中,所述初始索引包括第一关键字;

当确定所述初始索引中存在所述目标节点的情况下,根据所述目标节点和所述新增数据确定目标子树,所述目标子树用于存储所述新增数据,其中,所述目标子树包括第二关键字,所述第二关键字为所述新增数据的唯一标识;

根据所述初始索引和所述目标子树,确定所述数据库的更新索引;

根据所述数据库的更新索引对所述数据库中的数据进行管理。

可选地,所述确定所述数据库的初始索引中是否存在目标节点,包括:

判断所述数据库中当前存储数据是否具有与所述新增数据重复的数据;

当确定所述数据库中具有与所述新增数据重复的数据时,将与所述新增数据重复的数据所对应的节点为目标节点。

可选地,所述当确定所述初始索引中存在所述目标节点的情况下,根据所述目标节点和所述新增数据确定目标子树,包括:

当确定所述初始索引中存在所述目标节点,且在所述目标节点不存在对应的目标子树的情况下,在所述目标节点下建立对应的红黑树子树,以存储所述新增数据。

可选地,所述当确定所述初始索引中存在所述目标节点的情况下,根据所述目标节点和所述新增数据确定目标子树,包括:

当确定所述初始索引中存在所述目标节点,且在所述目标节点存在对应的目标子树的情况下,向所述目标子树中添加对应所述新增数据的子节点,以存储所述新增数据。

可选地,所述根据所述初始索引和所述目标子树,确定所述数据库的更新索引,包括:

将所述初始索引中的所述目标节点与所述目标子树的根节点连接,得到所述更新索引。

可选地,所述根据所述数据库的更新索引对所述数据库中的数据进行管理,包括:

当查询所述数据库中的数据时,根据待查询数据的第一关键字确定对应所述目标子树;

获取所述目标子树中的数据作为待查询数据,以作为查询结果。

可选地,所述根据所述数据库的更新索引对所述数据库中的数据进行管理,包括:

当对所述数据库中的数据进行删除时,根据待删除数据的第一关键字确定该待删除数据所在的子树,以作为目标子树;

以及根据所述第二关键字从所述目标子树中确定该待删除数据对应的节点,以作为目标子节点;

删除所述目标子节点,以删除所述待删除数据。

可选地,所述方法还包括:当所述目标子树中只包含一个节点时,在删除所述目标子节点后,更新所述数据库的初始索引。

根据本发明的第二方面,提供了一种数据库索引的管理装置,包括:

获取模块,用于获取所述数据库的新增数据;

第一处理模块,用于确定所述数据库的初始索引中是否存在对应所述新增数据的目标节点,其中,所述初始索引包括第一关键字;

第二处理模块,用于当确定所述初始索引中存在所述目标节点的情况下,根据所述目标节点和所述新增数据确定目标子树,所述目标子树用于存储所述新增数据,其中,所述目标子树包括第二关键字,所述第二关键字为所述新增数据的唯一标识;

更新模块,用于根据所述初始索引和所述目标子树,确定所述数据库的更新索引;

管理模块,用于根据所述数据库的更新索引对所述数据库中的数据进行管理。

根据本发明的第三方面,提供了一种电子设备,包括处理器和存储器,所述存储器用于存储机器可执行指令,所述处理器用于在所述机器可执行指令的控制下,实现如本发明第一方面所述的方法。

本实施例中数据索引的管理方法,在索引中存在重复关键字的情况下建立相应的目标子树,基于目标子树更新数据库索引以存储新增数据,查找、读取数据时可以将目标子树作为整体来处理,避免了查询重复关键字对应的数据时一一遍历,提高了对数据库进行增改删查等处理的速度,节省了设备的性能开销。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1是可用于实现本发明实施例的电子设备的示意图。

图2是根据本发明实施例的数据库索引的管理方法的流程图。

图3是根据本发明实施例的一个数据库索引的示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<硬件配置>

图1示出了可用于实现本发明的实施例的电子设备的硬件配置。

参见图1,电子设备1000包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500和输入装置1600。处理器1100例如可以是中央处理器cpu、微控制单元mcu等。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、串行接口等。通信装置1400例如是有线网卡或无线网卡。显示装置1500例如是液晶显示屏。输入装置1600例如包括触摸屏、键盘、鼠标、麦克风等。

应用于本说明书的实施例中,电子设备1100的存储器1120用于存储指令,该指令用于控制处理器1110进行操作以支持实现根据本说明书任意实施例的方法。技术人员可以根据本说明书所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

本领域技术人员应当理解,尽管在图1中示出了电子设备1100的多个装置,但是,本说明书实施例的电子设备1100可以仅涉及其中的部分装置,例如,只涉及处理器1110、存储器1120和通信装置1140。

图1所示的硬件配置仅是解释性的,并且决不是为了要限制本发明、其应用或用途。

<方法实施例>

本实施例提供了一种数据库索引的管理方法,例如由图1所示的电子设备1000实施。如图2所示,该方法包括以下步骤s1100-s1400。

在步骤s1100中,获取数据库的新增数据。

本实施例中,新增数据是向数据库中增加的数据。每条数据可以具有多个字段。可以指定某个字段作为关键字来建立索引。

索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

数据库的索引可以为树结构,例如二叉树、红黑树等。树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构,如同自然界中的树那样。

本实施例中,数据库采用红黑树规则建立数据索引和存储数据。

在步骤s1200中,确定数据库的初始索引中是否存在对应新增数据的目标节点,其中,初始索引包括第一关键字。

本实施例中,初始索引是数据库在增加数据前已有的索引。容易理解,如果数据库此前为空,则初始索引也为空。

本实施例中,初始索引包括第一关键字。初始索引中的每个节点均对应于某个第一关键字。

第一关键字可以是数据的唯一标识,也可以是其他非唯一的字段。

在第一关键字为非唯一字段的情况下,不同数据可能对应相同的第一关键字。因此,存在以下这种情况:新增数据对应的第一关键字与初始索引中已有节点对应的第一关键字相同,即出现重复的第一关键字。本实施例中,将上述情况中的节点称为目标节点,即目标节点与新增数据对应重复的第一关键字。

在一个例子中,确定数据库的初始索引中是否存在目标节点,包括:判断数据库中当前存储数据是否具有与新增数据重复的数据;当确定数据库中具有与新增数据重复的数据时,将与新增数据重复的数据所对应的节点为目标节点。

上述例子中,两个数据重复,意味着两个数据具有相同的关键字。

在步骤s1300中,当确定初始索引中存在目标节点的情况下,根据目标节点和新增数据确定目标子树,目标子树用于存储新增数据,其中,目标子树包括第二关键字,第二关键字为新增数据的唯一标识。

本实施例中,目标子树是初始索引之外的树结构,目标子树中的数据(或者节点)均对应于同一第一关键字。目标子树是根据第二关键字建立的。第二关键字为数据的唯一标识,即第二关键字不会出现重复的情况。

在一个例子中,目标子树为红黑树。红黑树是一种特定类型的二叉树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。通过采用红黑树,有利于维护树结构的自平衡,保证查询的效率。

在一个例子中,第二关键字为数据的存储位置rowid。如此,可以保证第二关键字的唯一性。此外,根据rowid可以快速确定数据的存储位置,有利于提高查询、修改等数据处理的速度。

当确定初始索引中存在目标节点的情况下,根据目标节点和新增数据确定目标子树,至少包括以下两种情况。

在第一种情况中,当确定初始索引中存在目标节点,且在目标节点不存在对应的目标子树的情况下,在目标节点下建立对应的红黑树子树,以存储新增数据。

在第二种情况中,当确定初始索引中存在目标节点,且在目标节点存在对应的目标子树的情况下,向目标子树中添加对应新增数据的子节点,以存储新增数据。

以上两种情况也可以归纳为:在目标节点不存在对应的目标子树的情况下,根据目标节点和新增数据建立目标子树;在目标节点存在对应的目标子树的情况下,根据新增数据更新目标子树。

上述建立目标子树,即新建一个符合树结构规则,以及包括新增数据和目标节点对应的数据的树结构,作为目标子树。上述更新目标子树,即在已有的目标子树中按照树结构的规则增加新增数据对应的子节点。

在步骤s1400中,根据初始索引和目标子树,获得数据库的更新索引。

本实施例中,根据初始索引和目标子树,得到更新索引,包括:将初始索引中的目标节点与目标子树的根节点连接,得到更新索引。

上述更新索引包括了初始索引和目标子树,目标子树对应于初始索引中的目标节点。

本实施例中数据索引的管理方法,在索引中存在重复关键字的情况下建立相应的目标子树,基于目标子树更新数据库索引以存储新增数据,查找、读取数据时可以将目标子树作为整体来处理,避免了查询重复关键字对应的数据时一一遍历,提高了对数据库进行增改删查等处理的速度,节省了设备的性能开销。

图3为本实施例中数据索引的管理方法实施的具体例子。该例子中的数据库用于管理企业中的电话号码。其中,每个企业均具有唯一的企业账号,每个企业账号下存在多个电话号码。因此,以每个电话号码作为一条数据,则每个数据具有两个字段,即“企业账号”和“电话号码”。“企业账号”的值例如是1、2、3……等,可能存在重复的情况。“电话号码”的值例如是n1、n2、n3……等,不存在重复情况。在向该数据库增加数据的时候,假设该新增数据对应的“企业账号”为9,对应的“电话号码”为n50。如图3所示,图3上方为初始索引,该初始索引根据“企业账号”建立,即将“企业账号”作为第一关键字。可以看出初始索引中已经存在第一关键字为“9”的节点,即该节点与新增数据对应于同一目标节点,因此为目标节点。在初始索引中存在目标节点的情况下,根据目标节点和新增数据获取目标子树。图3下方为已经存在的目标子树,该目标子树中的节点均对应于相同的第一关键字“9”,并且该目标子树根据“电话号码”建立,即将“电话号码”作为第二关键字。因此,在现有的目标子树中按照树结构规则增加新增数据对应的节点,即获得更新后的目标子树。最后,根据初始索引和更新后的目标子树,即得到了更新索引。更新索引具有与图3中的索引类似的结构,上方为初始索引,下方为目标节点对应的目标子树,其中虚线表示目标子树和目标节点之间的映射关系。

在一个例子中,数据库索引的管理方法还包括:当查询数据库中的数据时,根据待查询数据的第一关键字确定对应目标子树;获取目标子树中的数据作为待查询数据,以作为查询结果。

例如,在图3所示的例子里,如果待查询数据的第一关键字为“9”,则可据此确定图3中对应于“9”的子树。由于该子树中每个节点对应的关键字都是“9”,因此可以将该子树作为查询结果返回给用户,而无需在该子树中进一步进行查找。

通过上述方式,当查询的关键字对应目标子树的时候,不再需要一一处理目标子树中的每个节点,而是通过读取整棵树的模式,整体读取,快速遍历,提高了查找效率。

在一个例子中,数据库索引的管理方法还包括:当对数据库中的数据进行删除时,根据待删除数据的第一关键字确定该待删除数据所在的子树,以作为目标子树;以及根据第二关键字从目标子树中确定该待删除数据对应的节点,以作为目标子节点;删除目标子节点,以删除待删除数据。

在上述例子中,删除数据的过程还包括:当目标子树中只包含一个节点时,在删除目标子节点后,更新数据库的初始索引。

在上述例子中,删除数据的过程至少可以分为以下两种情况。

在第一种情况中,目标子树只包括一个节点,删除该目标子节点,也就意味着删除了目标子树,同时目标子树在初始索引中对应的目标节点也被删除,这种情况中需要更新数据库的初始索引。

在第二种情况中,目标子树包括多个节点,删除目标子节点后,其他子节点仍然存在,也就意味着目标子树仍然存在,目标子树在初始索引中对应的目标节点也存在,因此这种情况中无需变动数据库的初始索引。

通过上述方式,在删除数据时,如果目标子树仍包括至少一个节点,则初始索引的结构无需改变,从而能够保持初始索引结构稳定。

<装置实施例>

本实施例提供了一种数据库索引的管理装置,包括获取模块、第一处理模块、第二处理模块和更新模块。

获取模块,用于获取数据库的新增数据。

第一处理模块,用于确定数据库的初始索引中是否存在目标节点,其中,初始索引包括第一关键字。

第二处理模块,用于当确定初始索引中存在目标节点的情况下,根据目标节点和新增数据确定目标子树,目标子树用于存储新增数据,其中,目标子树包括第二关键字,第二关键字为新增数据的唯一标识。

更新模块,用于根据初始索引和目标子树,确定数据库的更新索引。

管理模块,用于根据数据库的更新索引对数据库中的数据进行管理。

在一个例子中,第一处理模块用于:判断数据库中当前存储数据是否具有与新增数据重复的数据;当确定数据库中具有与新增数据重复的数据时,将与新增数据重复的数据所对应的节点为目标节点。

在一个例子中,第二处理模块用于:当确定初始索引中存在目标节点,且在目标节点不存在对应的目标子树的情况下,在目标节点下建立对应的红黑树子树,以存储新增数据。

在一个例子中,第二处理模块用于:当确定初始索引中存在目标节点,且在目标节点存在对应的目标子树的情况下,向目标子树中添加对应新增数据的子节点,以存储新增数据。

在一个例子中,更新模块用于:将初始索引中的目标节点映射至目标子树,以得到更新索引。

在一个例子中,数据库索引的管理装置还包括查询模块,用于:当查询数据库中的数据时,根据待查询数据的第一关键字确定对应目标子树;获取目标子树中的数据作为待查询数据,以作为查询结果。

在一个例子中,数据库索引的管理装置还包括删除模块,用于:当对数据库中的数据进行删除时,根据待删除数据的第一关键字确定该待删除数据所在的子树,以作为目标子树;以及根据第二关键字从目标子树中确定该待删除数据对应的节点,以作为目标子节点;删除目标子节点,以删除待删除数据。

在一个例子中,删除模块还用于:当目标子树中只包含一个节点时,在删除目标子节点后,更新数据库的初始索引。

<电子设备实施例>

本实施例提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现本发明方法实施例描述的数据库索引的管理方法。

<机器可读存储介质实施例>

本实施例提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现本发明方法实施例描述的数据库索引的管理方法。

本发明可以是系统、装置、设备、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置、设备、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1