掌桥专利:专业的专利平台
掌桥专利
首页

一种数据库索引构建方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 19:27:02


一种数据库索引构建方法、装置、计算机设备及存储介质

技术领域

本发明涉及数据库索引技术领域,尤其涉及一种数据库索引构建方法、装置、计算机设备及存储介质。

背景技术

索引是数据库系统中用于提升数据存取性能的主要技术之一。传统数据库系统一般使用磁盘作为持久性存储设备。但由于磁盘的访问延迟高,磁盘 I/O 次数成为影响数据库系统性能的关键指标。如何快速地在磁盘中找到数据,成为数据库系统中的重要问题。

几十年来,研究者致力于各种索引结构的设计,包括红黑树、B 树、哈希和布隆过滤器等。传统的 B+树索引是基于磁盘而设计的,即假设整个索引完全存储在磁盘中。为了提升数据库系统的读写性能,现代数据库系统倾向于将整个索引缓存在内存中。当数据库规模较小时,缓存索引是可行的。然而,在数据爆炸的现今,数据量可能达到 PB 级甚至百PB 级,其对应的索引占用内存的问题日益凸显,而过大的索引空间结构也导致索引效率不足。研究表明,当今的商用数据库中,索引结构占据服务器内存的 55%。随着数据规模增大,主存不能容纳庞大的数据索引,需要将一部分索引放在外存中,从而增加了I/O 操作数量。

针对传统索引结构的上述缺点,学习索引(Learned Index)作为优化数据库索引的一个重要方向受到广泛关注。学习索引将索引本身看成机器学习模型,可以通过训练的方式得到一个自适应的模型,输入一个待查询的键,返回该键所在记录的位置。但是以往机器学习模型的预测往往不是精确的,存在一定误差,因此需要在训练时记录模型的最大、最小误差,最终在误差范围内采用二分搜索确定记录的准确位置。

而针对可变长度string keys的场景,现有基于整型数值的学习索引不能很好的支持这个场景,支持这类工作的主要挑战是模型推理和数据访问的成本都随着key长度的增加而增加。这是由膨胀的算术计算和内存访问引起的。此外,模型精度会趋于下降,这导致在查找过程中有更多的数据访问。之前主流的解决方案是使用更复杂的模型来提高准确性,从而减少访问的数据量,并且因为大模型的推理性能和巨大的训练成本使得这项工作并没有整体优势。

因此,针对字符串类型的搜索,如何提高索引效率是目前亟待解决的技术问题。

发明内容

鉴于上述问题,本发明提供了一种克服上述问题或者至少部分地解决上述问题的数据库索引构建方法、装置、计算机设备及存储介质。

第一方面,本发明提供了一种数据库索引构建方法,包括:

获取训练数据集,所述训练数据集包括:N个搜索字符串以及在数据库中与每个所述搜索字符串所对应的多维列表地址,N为正整数;

对所述训练数据集进行数据处理,得到目标训练数据集;

基于所述目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;

接收待搜索字符串,基于所述预测模型,得到目标列表地址;

基于所述目标列表地址,查找存储在所述目标列表地址中的实际物理地址;

基于所述实际物理地址,在所述数据库中,获取与所述待搜索字符串对应的内容。

进一步地,所述对所述训练数据集进行数据处理,得到目标训练数据集,包括:

对N个搜索字符串中每个搜索字符串进行编码和数据增强处理,得到目标训练数据集。

进一步地,所述对N个搜索字符串中每个搜索字符串进行编码和数据增强处理,得到目标训练数据集,包括:

对每个搜索字符串中的每个字符进行二进制编码;

从每个搜索字符串中随机选取目标字符,并将所述目标字符用不同字符替换,得到随机字符替换的搜索字符串;

将随机字符替换的搜索字符串按照目标字符串长度进行位移增强,得到目标训练数据集。

进一步地,所述基于所述目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型,包括:

将所述目标训练数据集输入所述神经网络模型,并对所述神经网络模型进行训练,所述神经网络模型包括残差结构层以及前馈网络层,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型。

进一步地,在所述接收待搜索字符串,基于所述预测模型,得到目标列表地址之前,还包括:

获取负样本集;

基于训练数据集、目标训练数据集以及负样本集,通过所述预测模型,得到分别对应的输出结果;

基于所述输出结果,采用自监督学习的极大似然法计算得到比对损失;

基于所述比对损失,判断是否对所述预测模型进行优化调整。

进一步地,所述基于所述输出结果,采用自监督学习的极大似然法计算得到比对损失,具体按照如下公式得到:

其中,

进一步地,所述实际物理地址包括:用于精确查询的精确物理地址以及用于范围查询的空间偏移量,所述空间偏移量为与所述精确物理地址对应的邻近位置区域。

第二方面,本发明还提供了一种数据库索引构建装置,包括:

第一获取模块,用于获取训练数据集,所述训练数据集包括:N个搜索字符串以及在数据库中与每个所述搜索字符串所对应的多维列表地址,N为正整数;

处理模块,用于对所述训练数据集进行数据处理,得到目标训练数据集;

训练模块,用于基于所述目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;

得到模块,用于接收待搜索字符串,基于所述预测模型,得到目标列表地址;

查找模块,用于基于所述目标列表地址,查找存储在所述目标列表地址中的实际物理地址;

第二获取模块,用于基于所述实际物理地址,在所述数据库中,获取与所述待搜索字符串对应的内容。

第三方面,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面中所述的方法步骤。

第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中所述的方法步骤。

本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:

本发明提供了一种数据库索引构建方法,包括:获取训练数据集,训练数据集包括:N个搜索字符串以及在数据库中与每个搜索字符串所对应的多维列表地址;对训练数据集进行数据处理,得到目标训练数据集;基于目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;接收待搜索字符串,基于预测模型,得到目标列表地址;基于目标列表地址,查找存储在目标列表地址中的实际物理地址;基于实际物理地址,在数据库中,获得与待搜索字符串对应的内容,通过将原始搜索字符串用二进制代码代替的方式,在模型训练以及模型应用中的处理量减小,最终,通过地址索引方式,能够快速索引到相应的位置,提高了索引效率。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:

图1示出了本发明实施例中数据库索引构建方法的步骤流程示意图;

图2示出了本发明实施例中按照预测模型将待搜索字符串作为输入得到的输出结果的示意图;

图3示出了本发明实施例中数据库索引构建装置的结构示意图;

图4示出了本发明实施例中实现数据库索引构建方法的计算机设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

本发明的实施例提供了一种数据库索引构建方法,如图1所示,包括:

S101,获取训练数据集,该训练数据集包括:N个搜索字符串以及在数据库中与每个搜索字符串所对应的多维列表地址,N为正整数;

S102,对训练数据集进行数据处理,得到目标训练数据集;

S103,基于目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;

S104,接收待搜索字符串,基于预测模型,得到目标列表地址;

S105,基于目标列表地址,查找存储在目标列表地址中的实际物理地址;

S106,基于实际物理地址,在数据库中,获取与待搜索字符串对应的内容。

首先,执行S101,获取训练数据集,该训练数据集包括N个搜索字符串以及在数据库中与每个搜索字符串所对应的多维列表地址。

先对该训练数据集进行过滤,将无用的数据过滤。

接下来,执行S102,对训练数据集进行数据处理,得到目标训练数据集。

具体地,是对N个搜索字符串中每个搜索字符串进行编码和数据增强处理,得到目标训练数据集。

在具体地实施方式中,对每个搜索字符串的每个字符进行二进制编码;

从每个搜索字符串中随机选取目标字符,并将目标字符用不同字符替换,得到随机字符替换的搜索字符串;

将随机字符替换的搜索字符串按照目标字符串长度进行位移增强,得到目标训练数据集。

以搜索字符串“We live on a blue planet”为例,通过该搜索字符串数列化、编码以及随机增强。接着,还对经过随机字符替换的搜索字符串按照目标字符串长度进行位移增强。其中,数列化结果为:

['W', 'e', ' ', 'l', 'i', 'v', 'e', ' ', 'o', 'n', ' ', 'a', ' ', 'b', 'l', 'u', 'e', ' ','p', 'l', 'a', 'n', 'e', 't', '.']

编码结果如下:

随机增加结果如下:

其中,位移增强具体按照如下式子进行:

表示在位移增强时,列表前端位移长度,/>

接着,执行S103,基于目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型。

具体地,将目标训练数据集输入神经网络模型,并对神经网络模型进行训练,该神经网络模型包括残差结构层以及前馈网络层,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型。

首先,引入class token机制。具体地,对目标训练数据集记为

其中,

然后,进行数据的encoder操作:具体是添加位置矩阵,其目的是让神经网络模型可以感知输入数据的顺序信息,具体地:

其中,

对该目标训练数据集进行上述的处理之后,进而输入该神经网络模型中进行训练,该神经网络模型具体是采用self-attention的方式创建Q矩阵、K矩阵和V矩阵,具体如下:

其中,

接下来,按照如下式子进行注意力运算:

是Q矩阵和K矩阵的列数, />

随后

其中,

在模型训练过程中,需要重复(4)~(6)式子的步骤,进行深度学习提取特征,最后接入一个线性链接层,最终输出一维特征向量。

为了使得模型训练得到的预测模型更加准确,在S103之后,还包括:

获取负样本集;

基于训练数据集、目标训练数据集以及负样本集,通过预测模型,得到分别对应的输出结果;

基于输出结果,采用自监督学习的极大似然法计算得到比对损失;

基于比对损失,判断是否对预测模型进行优化调整。

在具体的实施方式中,该负样本集为与实际使用的目标训练数据集不相关的数据。基于训练数据集、目标数据集以及负样本集,通过预测模型,得到分别对应的输出结果,具体按照如下式子得到:

其中,

接着,基于输出结果,采用自监督学习的极大似然法计算得到比对损失,具体按照如下公式得到:

其中,在该比对损失大于预设值时,需要重新对该预测模型进行训练,在该对比损失小于预设值时,无需重新对与车模型进行训练。

接着,执行S104,接收待搜索字符串,基于预设模型,得到目标列表地址。

该待搜索字符串为用户输入的待搜索的字符串,若以“we live on a blueplanet”为例,同时,以5*5的2维列表为例,在将待搜索字符串输入预设模型之后,得到目标列表地址为[2,2],如图2所示。

由于多维列表地址与实际的物理地址之间建立有映射关系。因此,在得到目标列表地址之后,执行S105,基于目标列表地址,查找存储在目标列表地址中的实际物理地址。

对于每个多维列表地址均对应存储有实际物理地址。该实际物理地址具体包括:用于精确查询的精确物理地址以及用于范围查询的空间偏移量,该空间偏移量为精确物理地址对应的邻近位置区域。

比如,精确物理地址:[oxf001];空间偏移量:[[-1,2],[-2,1]]。

在得到实际物理地址之后,执行S106,基于实际物理地址,在数据库中获取与待搜索字符串对应的内容。

也就是根据实际物理地址所指引的位置能够找到实际所要查找的内容。针对上述“we live on a blue planet”的例子,最终根据实际物理地址,可以找到“Earth”内容。

本发明中正是利用机器学习模型,能够快速确定待搜索字符串所对应的多维列表地址,进而确定实际物理地址,由于所处理的数据是经过变化处理的数据,处理后的数据量降低,因此,处理效率得到提高,对于数据量庞大的数据库来说,能够快速索引,提高索引效率。

本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:

本发明提供了一种数据库索引构建方法,包括:获取训练数据集,训练数据集包括:N个搜索字符串以及在数据库中与每个搜索字符串所对应的多维列表地址;对训练数据集进行数据处理,得到目标训练数据集;基于目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;接收待搜索字符串,基于预测模型,得到目标列表地址;基于目标列表地址,查找存储在目标列表地址中的实际物理地址;基于实际物理地址,在数据库中,获得与待搜索字符串对应的内容,通过将原始搜索字符串用二进制代码代替的方式,在模型训练以及模型应用中的处理量减小,最终,通过地址索引方式,能够快速索引到相应的位置,提高了索引效率。

实施例二

基于相同的发明构思,本发明实施例还提供了一种数据库索引构建装置,如图3所示,包括:

第一获取模块301,用于获取训练数据集,所述训练数据集包括:N个搜索字符串以及在数据库中与每个所述搜索字符串所对应的多维列表地址,N为正整数;

处理模块302,用于对所述训练数据集进行数据处理,得到目标训练数据集;

训练模块303,用于基于所述目标训练数据集,对神经网络模型进行训练,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型;

得到模块304,用于接收待搜索字符串,基于所述预测模型,得到目标列表地址;

查找模块305,用于基于所述目标列表地址,查找存储在所述目标列表地址中的实际物理地址;

第二获取模块306,用于基于所述实际物理地址,在所述数据库中,获取与所述待搜索字符串对应的内容。

在一种可选的实施方式中,处理模块302,用于:

对N个搜索字符串中每个搜索字符串进行编码和数据增强处理,得到目标训练数据集。

在一种可选的实施方式中,处理模块302,具体用于:

对每个搜索字符串中的每个字符进行二进制编码;

从每个搜索字符串中随机选取目标字符,并将所述目标字符用不同字符替换,得到随机字符替换的搜索字符串;

将随机字符替换的搜索字符串按照目标字符串长度进行位移增强,得到目标训练数据集。

在一种可选的实施方式中,训练模块303,用于:

将所述目标训练数据集输入所述神经网络模型,并对所述神经网络模型进行训练,所述神经网络模型包括残差结构层以及前馈网络层,得到用于预测搜索字符串在数据库中对应的多维列表地址的预测模型。

在一种可选的实施方式中,还包括:优化调整模型,包括:

获取单元,用于获取负样本集;

得到单元,用于基于训练数据集、目标训练数据集以及负样本集,通过所述预测模型,得到分别对应的输出结果;

计算单元,用于基于所述输出结果,采用自监督学习的极大似然法计算得到比对损失;

判断单元,用于基于所述比对损失,判断是否对所述预测模型进行优化调整。

在一种可选的实施方式中,计算单元,用于按照如下公式得到:

其中,

在一种可选的实施方式中,所述实际物理地址包括:用于精确查询的精确物理地址以及用于范围查询的空间偏移量,所述空间偏移量为与所述精确物理地址对应的邻近位置区域。

实施例三

基于相同的发明构思,本发明实施例提供了一种计算机设备,如图4所示,包括存储器404、处理器402及存储在存储器404上并可在处理器402上运行的计算机程序,所述处理器402执行所述程序时实现上述数据库索引构建方法的步骤。

其中,在图4中,总线架构(用总线400来代表),总线400可以包括任意数量的互联的总线和桥,总线400将包括由处理器402代表的一个或多个处理器和存储器404代表的存储器的各种电路链接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口406在总线400和接收器401和发送器403之间提供接口。接收器401和发送器403可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器402负责管理总线400和通常的处理,而存储器404可以被用于存储处理器402在执行操作时所使用的数据。

实施例四

基于相同的发明构思,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述数据库索引构建方法的步骤。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个实施例中所明确记载的特征更多的特征。更确切地说,如每个实施例所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在具体实施方式中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据库索引构建装置、计算机设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

技术分类

06120115918574