一种数据存储方法、装置、存储介质及电子设备与流程

文档序号:34122322发布日期:2023-05-11 05:32阅读:50来源:国知局
一种数据存储方法、装置、存储介质及电子设备与流程

本说明书涉及计算机,尤其涉及一种数据存储方法、装置、存储介质及电子设备。


背景技术:

1、随着数据库中需要存储的数据量不断地增加,数据库所使用的传统的索引由于其所具有占用内容高、每次查询需要多次间接搜索等问题,限制了对数据库性能的进一步地提高。而将人工智能技术与数据库技术结合产生的学习型索引技术,由于其具有更好的查找性能以及索引占用存储空间更低的优点,受到了广泛的关注。

2、目前的学习型索引是通过模型根据用户输入的需要存储的待存储数据,来预测出待存储数据的存储位置,进而可以加快数据的存储效率。但是,当数据库处于高并发状态下时,多个数据存储指令并发执行,其中,针对每个数据存储指令,需要通过学习型索引模型预测出该数据存储指令对应的待存储数据所要存储的节点数组(即从一个数据表存储的全部数据中划分出的子数据集),并通过这个节点数组对应的子模型预测出该数据存储指令对应的待存储数据在这个节点数组中的存储位置,并将该数据存储指令对应的待存储数据存储到预测出的存储位置中。

3、而若一个数据存储指令需要将大量新数据写入数据库时,会导致对应的节点数组中的数据频繁变化,并导致该节点数组的容量达到上限,从而使得需要对该节点数组进行扩容、分裂,并需要对该节点数组对应的子模型进行重训练等调整,而对该节点数组进行的调整操作,会使得暂时无法将数据写入该节点数组,因此,会导致进程的阻塞,进而会影响到其他数据存储指令的执行,最终影响数据库性能。


技术实现思路

1、本说明书提供一种数据存储方法、装置、存储介质及电子设备,以解决现有技术存在的进程阻塞的问题。

2、本说明书采用下述技术方案:

3、本说明书提供了一种数据存储方法,包括:

4、接收数据存储指令;

5、通过预设的学习型索引模型,预测存储所述数据存储指令对应的待存储数据的节点数组,作为第一数组;

6、判断所述第一数组中的存储空间的占用率是否超过设定占用率;

7、若是,则开始创建用于替换所述第一数组的第二数组,并在等待创建完所述第二数组的过程中,创建缓冲数组以及数据指针数组,将所述待存储数据存储到所述缓冲数组中,并按照假定将所述待存储数据存储在所述第一数组时所述第一数组中存储的各数据在存储位置上的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中;

8、在创建完所述第二数组后,按照所述数据指针数组中存储的各指针对应的先后顺序,将所述缓冲数组中的各数据与已存储在所述第一数组中的数据存储到所述第二数组中。

9、可选地,按照各数据存储的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中,具体包括:

10、通过所述学习型索引模型,预测出将所述待存储数据存储到所述第一数组中的存储位置,作为目标位置;

11、根据所述目标位置,确定所述待存储数据与所述第一数组中已经存储的各数据在存储位置上的先后顺序;

12、按照所述先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中。

13、可选地,开始创建用于替换所述第一数组的第二数组,并在等待创建完所述第二数组的过程中,创建缓冲数组以及数据指针数组,将所述待存储数据存储到所述缓冲数组中,并按照假定将所述待存储数据存储在所述第一数组时所述第一数组中存储的各数据在存储位置上的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中,具体包括:

14、在开始创建用于替换所述第一数组的第二数组后,判断用于执行创建所述第二数组的进程是否处于空闲状态;

15、若否,在等待所述进程的状态变为空闲状态的过程中,创建缓冲数组以及数据指针数组,将所述待存储数据存储到所述缓冲数组中,并按照假定将所述待存储数据存储在所述第一数组时所述第一数组中存储的各数据在存储位置上的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中。

16、可选地,所述方法还包括:

17、在所述进程的状态变为空闲状态后,通过所述进程,创建所述第二数组。

18、可选地,所述方法还包括:

19、若所述第一数组中的存储空间的占用率未超过设定占用率,则通过所述学习型索引模型,判断预测出的所述待存储数据在所述第一数组中的存储位置是否为空位;

20、若是,则将所述待存储数据存储到所述第一数组的所述存储位置中。

21、可选地,所述方法还包括:

22、若确定预测出的所述待存储数据在所述第一数组中的存储位置不为空位,则通过将所述第一数组中在预测出的存储位置的数据以及在预测出的存储位置之后的各数据依次后移,以将预测出的存储位置调整为空位,并将所述待存储数据存储到预测出的存储位置中。

23、可选地,所述第二数组是通过对所述第一数组进行扩容、对所述第一数组进行分裂得到的。

24、本说明书提供了一种数据存储装置,包括:

25、接收模块,用于接收数据存储指令;

26、预测模块,用于通过预设的学习型索引模型,预测存储所述数据存储指令对应的待存储数据的节点数组,作为第一数组;

27、确定模块,用于判断所述第一数组中的存储空间的占用率是否超过设定占用率;

28、第一存储模块,用于若是,则开始创建用于替换所述第一数组的第二数组,并在等待创建完所述第二数组的过程中,创建缓冲数组以及数据指针数组,将所述待存储数据存储到所述缓冲数组中,并按照假定将所述待存储数据存储在所述第一数组时所述第一数组中存储的各数据在存储位置上的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中;

29、第二存储模块,用于在创建完所述第二数组后,按照所述数据指针数组中存储的各指针对应的先后顺序,将所述缓冲数组中的各数据与已存储在所述第一数组中的数据存储到所述第二数组中。

30、可选地,所述第一存储模块具体用于,通过所述学习型索引模型,预测出将所述待存储数据存储到所述第一数组中的存储位置,作为目标位置;根据所述目标位置,确定所述待存储数据与所述第一数组中已经存储的各数据在存储位置上的先后顺序;按照所述先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中。

31、可选地,所述第一存储模块具体用于,在开始创建用于替换所述第一数组的第二数组后,判断用于执行创建所述第二数组的进程是否处于空闲状态;若否,在等待所述进程的状态变为空闲状态的过程中,创建缓冲数组以及数据指针数组,将所述待存储数据存储到所述缓冲数组中,并按照假定将所述待存储数据存储在所述第一数组时所述第一数组中存储的各数据在存储位置上的先后顺序,将已存储在所述第一数组中的数据对应的指针和所述待存储数据在所述缓冲数组中对应的指针,存储到所述数据指针数组中。

32、可选地,所述第一存储模块具体用于,在所述进程的状态变为空闲状态后,通过所述进程,创建所述第二数组。

33、可选地,所述第一存储模块具体用于,若所述第一数组中的存储空间的占用率未超过设定占用率,则通过所述学习型索引模型,判断预测出的所述待存储数据在所述第一数组中的存储位置是否为空位;若是,则将所述待存储数据存储到所述第一数组的所述存储位置中。

34、可选地,所述第一存储模块具体用于,若确定预测出的所述待存储数据在所述第一数组中的存储位置不为空位,则通过将所述第一数组中在预测出的存储位置的数据以及在预测出的存储位置之后的各数据依次后移,以将预测出的存储位置调整为空位,并将所述待存储数据存储到预测出的存储位置中。

35、可选地,所述第二数组是通过对所述第一数组进行扩容、对所述第一数组进行分裂得到的。

36、本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据存储方法。

37、本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据存储方法。

38、本说明书采用的上述至少一个技术方案能够达到以下有益效果:

39、在本说明书提供的数据存储方法,首先接收数据存储指令,通过预设的学习型索引模型,预测存储数据存储指令对应的待存储数据的节点数组,作为第一数组,判断第一数组中的存储空间的占用率是否超过设定占用率,若是,则开始创建用于替换第一数组的第二数组,并在等待创建完第二数组的过程中,创建缓冲数组以及数据指针数组,将待存储数据存储到缓冲数组中,并按照假定将待存储数据存储在第一数组时第一数组中存储的各数据在存储位置上的先后顺序,将已存储在第一数组中的数据对应的指针和待存储数据在缓冲数组中对应的指针,存储到数据指针数组中,在创建完第二数组后,按照数据指针数组中存储的各指针对应的先后顺序,将缓冲数组中的各数据与已存储在第一数组中的数据存储到第二数组中。

40、从上述方法中可以看出,当数据库处于高并发状态时,服务器不仅可以通过先创建缓冲数组,并将数据存储指令对应的待存储数据存储到缓冲数组中,从而可以等到数据库未处于高并发状态时,再慢慢地将缓冲数组中的数据融合到节点数组中的方式,来避免进程阻塞,还可以通过将数据的指针保存到数据指针数组中,并根据数据指针数组将缓冲数组中的数据融合到节点数组中,从而使得即使在缓冲数组中的数据融合到节点数组的过程中,出现新的对缓冲数组中的数据和/或对节点数组中的数据进行修改的操作,也能保证数据的一致性(即可以保证融合后的节点数组中的数据是修改后的数据,而不是修改前的数据),进而可以在缓冲数组和节点数组的融合过程中也可以进行数据插入操作,以避免进程的阻塞。

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