一种数据加载方法、装置、电子设备和存储介质与流程
未命名
07-14
阅读:94
评论:0
1.本公开涉及数据处理技术领域,尤其涉及大数据技术领域。
背景技术:
2.内存型数据库的主要存储介质为内存,内存具有数据访问速度快等特点,因此,为提高响应用户请求的速度,各种服务纷纷基于内存型数据库工作。
3.然而在各种服务运行异常,出现问题的情况下,可能需要重启内存型数据库,进而重新加载内存型数据库中存储的数据。由于内存型数据库中存储的数据往往较多,因此,加载内存型数据库一般耗时较长,加载效率较低。
技术实现要素:
4.本公开提供了一种数据加载方法、装置、电子设备以及存储介质。
5.根据本公开的一方面,提供了一种数据加载方法,包括:
6.确定内存型数据库的最新基础文件和目标合并文件,其中,所述目标合并文件为:对在所述最新基础文件之后生成的增量文件进行增量数据合并得到的文件;
7.若所述目标合并文件对应的增量数据最晚产生时间早于当前时间,从在所述最新基础文件后生成的增量文件中,确定存储有在所述最晚产生时间至当前时间内产生的增量数据的目标增量文件;
8.加载确定出的文件。
9.根据本公开的另一方面,提供了一种数据加载装置,包括:
10.文件确定模块,用于确定内存型数据库的最新基础文件和目标合并文件,其中,所述目标合并文件为:对在所述最新基础文件之后生成的增量文件进行增量数据合并得到的文件;
11.目标增量文件确定模块,用于在所述目标合并文件对应的增量数据最晚产生时间早于当前时间的情况下,从在所述最新基础文件后生成的增量文件中,确定存储有在所述最晚产生时间至当前时间内产生的增量数据的目标增量文件;
12.文件加载模块,用于加载确定出的文件。
13.根据本公开的再一方面,提供了一种电子设备,包括:
14.至少一个处理器;以及
15.与所述至少一个处理器通信连接的存储器;其中,
16.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述数据加载方法。
17.根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述数据加载方法。
18.根据本公开的又一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述数据加载方法。
19.由以上可见,本公开实施例提供的方案中,被确定的用于被内存型数据库加载的文件中包括目标合并文件,目标合并文件是对在最新基础文件之后生成的增量文件进行增量数据合并得到的文件,由于对目标合并文件中的增量数据进行了合并,所以目标合并文件的数据量较小,这样用于被内存型数据库加载的文件的数据量减少,提高数据加载效率。
20.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
21.附图用于更好地理解本方案,不构成对本公开的限定。其中:
22.图1是本公开实施例提供的一种数据加载方法的流程示意图;
23.图2是本公开实施例提供的另一种数据加载方法的流程示意图;
24.图3是本公开实施例提供的再一种数据加载方法的流程示意图;
25.图4是本公开实施例提供的一种内存型数据库的数据的结构示意图;
26.图5是本公开实施例提供的一种内存型数据库加载数据的流程示意图;
27.图6是本公开实施例提供的一种数据加载装置的结构示意图;
28.图7是用来实现本公开实施例的数据加载方法的电子设备的框图。
具体实施方式
29.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
30.下面对本公开实施例所提供方案的应用场景进行说明。
31.内存型数据库的主要存储介质为内存,各种服务基于内存型数据库工作。若内存型数据库出现异常,或者各种服务出现异常,可能需要重启内存型数据库,进而需要重新加载内存型数据库中存储的数据。那么在内存型数据库正常工作的过程中,需要实时保存内存型数据库中的数据。
32.当内存型数据库中的数据发生更新,会记录该内存型数据库数据更新产生的增量数据,并基于增量数据生成增量文件。若生成的增量文件中的数据达到指定时间长度或者增量文件占用的空间大小达到指定大小又或者人员主动发出指令,可以基于已生成的增量文件中的增量数据,生成新的基础文件。若当前已存储的文件中包括曾经的基础文件,还可以基于曾经的基础文件和该基础文件时间之后的增量文件生成新的基础文件。基础文件的生成还可以直接基于当前的内存型数据库中的数据进行生成,例如,可以每间隔预设时长,基于当前时间的内存型数据库中的数据,生成当前时间的基础文件。也可以每当内存型数据库中的数据占用的空间增大到指定空间大小时,生成内存型数据库在当前时间的基础文件。其中,基础文件的时间可以标记为生成该基础文件所使用的增量文件中增量数据的最晚产生时间。这样,相对于存储一段时间的增量数据的增量文件,生成的基础文件占用的空间更小。对于同一时间段的数据,加载基础文件比加载增量文件需要的时间更短。而且,以适当的时间间隔存储基础文件,可以尽可能的使得最新的基础文件与当前内存型数据库中
的数据更接近。
33.但是,按照上述方式,如果只存储基础文件,当内存型数据库发生异常后,已存储的基础文件中的数据大概率与异常时的内存型数据库中的数据存在较大的偏差,导致重启后的内存型数据库中的数据损失较多。所以,在内存型数据库工作的过程中,可以实时的获得增量数据,生成增量文件并存储下来。其中,记录的增量数据可以包括:对内存型数据库中的数据进行更新的操作信息以及更新的数据内容,因为对于各次更新操作,记录各次更新操作产生增量数据中的操作信息和更新的数据内容的数据量较小,所以可以在更新内存型数据的过程中,实时的获得增量数据,并基于获得的增量数据生成增量文件。这样,若最新的基础文件中的数据与内存型数据库中的数据存在的数据偏差,内存型数据库可以通过加载增量文件中的增量数据补充上述数据的偏差。
34.本公开实施例中,在生成增量文件之后,对生成的增量文件中的增量数据进行合并,得到合并文件。其中,合并增量数据的过程可以是将用于合并的多个增量数据合并为数据量更小的数据,例如,用于合并的增量数据中包括一段数据记录:增加内容a,在上述一段数据记录的产生时间之后又记录了另一段数据记录:删除内容a,由于记录的两段数据所进行的操作对数据库产生的更新是互相抵消的,那么增量数据合并的过程中则会删除上述两段数据,又例如,用于合并的增量数据中的一段数据记录:增加内容b,另一段数据记录:增加内容c,那么增量数据合并的过程中则会合并得到一段数据记录:增加内容b和内容c。这样,当需要重新加载内存型数据库中存储的数据时,可以从基础文件、合并文件和增量文件中确定加载的文件。
35.下面通过具体实施例对本公开实施例提供的数据加载方法进行详细说明。
36.本公开的一个实施例中,参见图1,图1提供了一种数据加载方法的流程示意图。上述方法包括以下步骤s101-s103。
37.步骤s101:确定内存型数据库的最新基础文件和目标合并文件。
38.其中,目标合并文件为:对在最新基础文件之后生成的增量文件进行增量数据合并得到的文件。
39.最新基础文件可以是当前生成的基础文件中,所属时间与当前时间最接近的基础文件。如上述应用场景中提到的,基础文件的时间可以标记为生成该基础文件所使用的增量文件中增量数据的最晚产生时间。这种情况下,基础文件的时间可以表征该基础文件已经记录了在该时间点之前的内存型数据库中的数据。那么目标合并文件可以包括对在上述基础文件的时间之后生成的增量文件进行增量数据合并得到的文件。这样,最新基础文件和目标合并文件中的数据相结合,可以表征内存型数据库中截止在目标合并文件对应的增量数据最晚产生时间的数据。
40.下面对确定最新基础文件的实现方式进行说明。
41.一种实现方式中,遍历各个基础文件所使用的增量文件中增量数据的最晚产生时间,作为基础文件的时间,确定所属时间最晚的基础文件为最新基础文件。
42.另一种实现方式中,可以在存储基础文件的过程中,为各个已存储的基础文件标记存储时间,作为基础文件的时间,确定所属时间最晚的基础文件为最新基础文件。
43.下面对确定目标合并文件的实现方式进行说明。
44.根据上述最新基础文件的时间,查找在上述时间之后的生成的增量文件。
45.步骤s102:若目标合并文件对应的增量数据最晚产生时间早于当前时间,从在最新基础文件后生成的增量文件中,确定存储有在上述最晚产生时间至当前时间内产生的增量数据的目标增量文件。
46.其中,目标合并文件记录了在上述最晚产生时间之前到基础文件的时间之间的增量数据,若内存型数据库加载上述目标合并文件与上述最新的基础文件中的数据,则可以将内存型数据库中的数据恢复到上述目标合并文件对应的增量数据最晚产生时间点的数据状态。
47.一种情况下,最晚产生时间与当前时间相等,这说明加载最新的基础文件和目标合并文件可以将内存型数据库中的数据恢复到当前时间,恢复得到的数据较为准确。这情况下,确定的文件包括:最新的基础文件和目标合并文件。
48.另一种情况下,目标合并文件对应的增量数据最晚产生时间早于当前时间,由于对增量文件进行数据合并并不是实时进行的,需要累积一定的增量文件后,再进行增量数据合并,所以确定得到的目标合并文件的最晚产生时间可能是当前时间之前的一个时间点。若加载最新的基础文件和目标合并文件,可以将内存型数据库中的数据状态恢复到目标合并文件对应的增量数据最晚产生的时间点,该时间点早于当前时间,那么内存型数据库有可能存在该时间点到当前时间点这段时间内的数据空缺。那么为了补充内存型数据库在该段时间内的数据空缺,内存型数据库可以加载属于该段时间内的增量文件。确定在上述目标合并文件对应的增量数据最晚产生时间至当前时间内产生的增量数据的目标增量文件。这情况下,确定的文件包括:最新的基础文件、目标合并文件和目标增量文件。
49.步骤s103:加载确定出的文件。
50.一种实现方式中,若确定出的文件包括:最新的基础文件和目标合并文件。则先加载最新的基础文件,再加载目标合并文件。
51.另一种实现方式中,若确定出的文件包括:最新的基础文件、目标合并文件和目标增量文件。则先加载最新的基础文件,再加载目标合并文件,再加载目标增量文件。
52.由以上可见,本公开实施例提供的方案中,被确定的用于被内存型数据库加载的文件中包括目标合并文件,目标合并文件是对在最新基础文件之后生成的增量文件进行增量数据合并得到的文件,由于对目标合并文件中的增量数据进行了合并,所以目标合并文件的数据量较小,这样用于被内存型数据库加载的文件的数据量减少,提高数据加载效率。
53.另外,提高了数据加载效率可以提高内存型数据库的启动速度,减少内存型数据库的启动时间,提高利用内存型数据库进行迭代的效率,重启的时间减少,也就减少了在启动时间内丢失的数据,加快了内存型数据库的止损能力,减少了内存型数据库启动时relay log(中继日志)的数据量。
54.本公开的一个实施例中,上述增量文件,用于存储在最新基础文件之后、每间隔的第一划分单元内产生的增量数据;上述目标合并文件为:对存储有每间隔第二划分单元内产生的增量数据的增量文件进行数据合并得到的文件;第一划分单元和第二划分单元为:依据预设的划分维度确定的增量数据划分单元,第二划分单元的长度大于第一划分单元的长度。
55.其中,因为每间隔第二划分单元进行合并的增量数据的最小长度为第一划分单元,难以将第一划分单元内的数据拆分开,而且合并是为了减小增量文件中数据量的大小,
将较长的第二划分单元内的增量文件进行合并,可以减少数据量的大小,所以第二划分单元的长度大于第一划分单元的长度。
56.一种实现方式中,上述预设的划分维度可以是操作指令的数量。
57.例如,第一划分单元可以是一条指令,每当内存型数据库收到一条指令,就会将其作为一个增量文件存储下来。
58.第二划分单元可以是一百条指令,将每一百条指令产生的增量数据的增量文件合并为目标合并文件。
59.另一种实现方式中,上述预设的划分维度为:时间维度或者空间维度。
60.下面对预设的划分维度为时间维度的实现方式进行说明。
61.一种方式中,基于时间维度进行划分的情况下,可以设定生成增量文件的时间间隔,例如,可以设定每隔一秒保存一次增量文件,基于这一秒内产生的增量数据,生成增量文件。这时,第一划分单元为一秒。也可以设定每隔十秒保存一次增量文件,基于十秒内产生的增量数据,生成增量文件。这时,第一划分单元为十秒。
62.相对应的,可以将三十分钟、一小时或者六小时等大于第一划分单元的时间之内产生的增量数据的增量文件进行合并,得到目标合并文件。这时,第二划分单元可以为三十分钟、一小时或者六小时等。
63.下面对预设的划分维度为空间维度的实现方式进行说明。
64.另一种方式中,基于空间维度进行划分的情况下,可以设定生成增量文件的占用空间大小,例如,可以设定,每当增量数据达到1mb的大小时,基于这1mb内大小的数据,生成增量文件。这时,第一划分单元可以为1mb。
65.相对应的,可以将64mb之内产生的增量数据的增量文件进行数据合并,得到目标合并文件。
66.可见,将时间维度或空间维度作为划分维度,可以适应用户对数据不同的需求,可以适应多种业务场景,提高数据加载方法的适用性。
67.另外,若增量数据的总长度远大于第二划分单元,比如,增量数据的总长度为第二划分单元的长度的两倍及以上,这时,则可以生成多个目标合并文件,并不对满足第二划分单元的长度的增量数据进行合并处理。例如,第二划分单元为一小时,增量数据的总长度为两小时三十分钟,则分别将第一小时的增量数据合并为第一小时的目标合并文件,将第二小时的增量数据合并为第二小时的目标合并文件,并且,不对第二小时后的三十分钟内的增量数据进行合并处理。
68.对第一划分单元和第二划分单元进行设置,可以调整数据的可接受损失程度,相对的,也会影响整体的运行效率。比如,若在得到增量文件之后,在间隔达到第一划分单元之前,内存型数据库在此期间发送异常,需要重启,那么,上一次得到增量文件之后到当前时间内内存型数据库产生的数据会丢失。例如,将第一划分单元设置为十秒,那么在上次得到增量文件之后的十秒内的数据是有可能丢失的。所以,将第一划分单元的长度设置的越长,那么丢失的数据有可能越多。但是,如果把第一划分单元的长度设置的太短,则需要不停的对内存型数据库的数据进行读取,并写入硬盘等存储介质中,降低了整体工作的效率,但是,内存型数据库发生异常时,损失的数据会减少。这样,对第一划分单元进行不同的设置,可以适用多种业务场景对数据安全程度的需求,当用户对数据安全度要求较高时,可以
将第一划分单元的长度设置的较短,当用户对运行效率较高时,可以将第一划分单元的长度设置的较长,提高了对不同业务场景的适用性。
69.对第二划分单元进行设置,也就是设置用于进行数据合并的增量数据的多少,这样,对第二划分单元进行设置可以调整生成的目标合并文件的大小,用户可以根据自己的需求进行调整,提高了对不同业务场景的适用性。
70.本公开的一个实施例中,所述最新基础文件和/或目标合并文件被划分为数据单元。这种情况下,参见图2,图2提供了另一种数据加载方法的流程示意图。上述方法包括s201-s203。
71.步骤s201:确定内存型数据库的最新基础文件和目标合并文件。
72.步骤s201与步骤s101相似,这里不再详述。
73.步骤s202:若目标合并文件对应的增量数据最晚产生时间早于当前时间,从在最新基础文件后生成的增量文件中,确定存储有在上述最晚产生时间至当前时间内产生的增量数据的目标增量文件。
74.步骤s202与步骤s102相似,这里不再详述。
75.步骤s203:按照生成时间顺序串行加载所确定的各个文件,并对于所确定的文件中存在数据单元的文件,按照并行加载的方式加载文件中的数据单元。
76.上述步骤s103可以通过步骤s203实现。
77.其中,基础文件和/或目标合并文件中的数据单元可以是对文件内的数据进行更细致的划分,例如,对于表数据,划分出的数据单元可以是对以各文件中的表数据为单元,也可以是各文件内的表数据中的各个字段。
78.一种实现方式中,串行加载所确定的各个文件可以是:内存型数据库先加载最新的基础文件,当上述基础文件加载完成后,再开始加载时间顺序上在基础文件中数据最晚产生时间之后的第一个目标合并文件,若存在多个目标合并文件,则按照时间顺序加载下一个目标合并文件。内存型数据库在每次单独对一个基础文件或目标合并文件进行加载的过程,并行加载文件中的数据单元。
79.另一种实现方式中,在上述实现方式的基础上,在之前的步骤中确定得到目标增量文件的情况下,内存型数据库在加载完成各个确定出目标合并文件后,再开始按照生成时间顺序串行加载所确定的目标增量文件,直至所有确定出的目标增量文件被加载完成。
80.由以上可见,将最新基础文件和/或目标合并文件被划分为数据单元,针对各个文件,按照生成时间顺序串行进行加载,针对各个文件内的数据单元,按照并行加载的方式进行加载,这样在保证数据被内存型数据库正确加载的前提下,又通过并行加载数据单元提高加载的速度,提高文件加载效率。
81.本公开的一个实施例中,参见图3,图3提供了再一种数据加载方法的流程示意图。上述方法包括s301-s305。
82.步骤s301:确定内存型数据库的最新基础文件和目标合并文件。
83.步骤s301与步骤s201相似,这里不再详述。
84.步骤s302:若目标合并文件对应的增量数据最晚产生时间早于当前时间,从在最新基础文件后生成的增量文件中,确定存储有在上述最晚产生时间至当前时间内产生的增量数据的目标增量文件。
85.步骤s302与步骤s202相似,这里不再详述。
86.步骤s303:按照生成时间顺序串行加载所确定的各个文件,并对于所确定的文件中存在数据单元的文件,按照并行加载的方式加载文件中的数据单元。
87.步骤s303与步骤s203相似,这里不再详述。
88.步骤s304:确定包含数据单元的所确定文件中存在依赖关系的目标数据单元。
89.一种实现方式中,内存型数据库在加载文件的过程中,读取文件中各个数据单元的依赖关系,并将涉及的数据单元的信息和其依赖关系的信息记录下来,以确定存在依赖关系的目标数据单元。例如,对于表数据,可以记录各个表的信息和其之间的依赖关系,如:部分依赖、完全依赖和传递依赖等等。
90.其中,可以在存储各个基础文件、合并文件、增量文件和增量数据的过程中,记录上述文件中各个数据单元的依赖关系。
91.步骤s305:基于目标数据单元之间的依赖关系,对目标数据单元进行增量数据修正。
92.一种实现方式中,可以在内存型数据库加载完成各个确定的文件后,对目标数据单元进行增量数据修正。
93.另一种实现方式中,也可以在内存型数据库加载各个确定的文件的中增量数据的过程中,并行对目标数据单元进行增量数据修正。具体的,可以在完成加载数据单元后,与确定的目标数据单元的信息进行比对,若确定完成加载的数据单元为目标数据单元,则基于上述确定依赖关系以及涉及的目标数据单元,对目标数据单元进行增量数据修正。
94.另外,在对目标数据单元进行增量数据修正的过程中,还可以对与目标数据单元存在级联更新需求的数据单元进行对应的更新和修正。
95.由以上可见,通过对数据单元的依赖关系进行修正,可以使得更多的文件被划分为数据单元,更多的文件可以进行并行加载,提高内存型数据的加载效率,并提高加载数据的准确度。
96.本公开的一个实施例中,在上述步骤s305后,还可以遍历已加载的数据,生成所加载数据对应的索引数据。
97.内存型数据库通常用于检索,所以还可以生成数据对应的索引数据。
98.一种实现方式中,还可以直接遍历已加载的数据,在内存型数据库中生成所加载数据对应的索引数据。
99.另一种实现方式中,可以先将索引数据先加载入内存型数据库,再遍历已加载的数据,修正已加载的数据对应的索引数据,完成索引数据的生成。
100.由以上可见,对已加载的数据,生成索引数据,这样不用在加载的过程中考虑索引数据和与其相关的数据的先后关系,更多的数据可以并行加载,提高数据加载效率。
101.本公开的一个实施例中,本实施例提供的数据加载方法可以使用在提供广告业务服务的业务场景中。
102.下面对广告业务场景下内存型数据库中的数据进行说明。
103.参见图4,图4提供了一种内存型数据库的数据的结构示意图。图4所示的内存型数据库在工作的过程中实时产生增量数据,并间隔预设时长记录基础文件。每间隔第一划分单元生成增量文件。每间隔第二划分单元,再对增量文件进行数据合并得到合并文件,并存
储各个合并文件。
104.在内存型数据库中,数据包括:索引数据和数据表。当用户在检索指定搜索词后,可以基于搜索词,通过索引数据检索搜索词对应的数据表,并将数据表中的数据展示给用户。
105.下面对广告业务场景下启动过程中的内存型数据库进行说明。
106.参见图5,图5提供了一种内存型数据库加载数据的流程示意图。
107.如图5所示,在内存型数据库加载具有依赖关系的数据单元后,可以在加载数据后对数据的依赖关系进行修正并建立数据对应的索引数据。例如,加载的数据单元为存在关联关系的数据表a和数据表b。针对数据表a和数据表b可以使用并行加载的方式进行加载,对于数据表a和数据表b内的数据也可以使用并行加载的方式进行加载,在数据表a和数据表b的数据插入内存型数据库后,再对两数据表之间的依赖关系进行修正,最后再生成数据表a对应的索引数据a和数据表b对应的索引数据b。
108.这样,可以将加载数据表的流程分为三个阶段:插入数据表、延迟修正和生成索引。其中,三个阶段的数据处理方式可以是pipeline chaining(流水线链接,一种数据处理方法)加shuffle(分发,一种数据处理方法)。具体的,可以通过创建哈希桶的方式加载数据表:在插入数据表的过程中,对于数据表内数据,可以按照主键分发确保数据无锁安全插入哈希桶;在延迟修正的过程中,可以哈希桶之间可以并行降低竞争,在生成索引的过程中,可以先插入哈希桶再竞争排序。
109.根据本公开的另一方面,提供了一种数据加载装置,参见图6,图6提供了一种数据加载装置的结构示意图。上述装置包括:
110.文件确定模块601,用于确定内存型数据库的最新基础文件和目标合并文件,其中,所述目标合并文件为:对在所述最新基础文件之后生成的增量文件进行增量数据合并得到的文件;
111.目标增量文件确定模块602,用于在所述目标合并文件对应的增量数据最晚产生时间早于当前时间的情况下,从在所述最新基础文件后生成的增量文件中,确定存储有在所述最晚产生时间至当前时间内产生的增量数据的目标增量文件;
112.文件加载模块603,用于加载确定出的文件。
113.由以上可见,本公开实施例提供的方案中,被确定的用于被内存型数据库加载的文件中包括目标合并文件,目标合并文件是对在最新基础文件之后生成的增量文件进行增量数据合并得到的文件,由于对目标合并文件中的增量数据进行了合并,所以目标合并文件的数据量较小,这样用于被内存型数据库加载的文件的数据量减少,提高数据加载效率。
114.本公开的一个实施例中,所述增量文件,用于存储在所述最新基础文件之后、每间隔的第一划分单元内产生的增量数据;
115.所述目标合并文件为:对存储有每间隔第二划分单元内产生的增量数据的增量文件进行数据合并得到的文件;
116.其中,所述第一划分单元和第二划分单元为:依据预设的划分维度确定的增量数据划分单元,所述第二划分单元的长度大于所述第一划分单元的长度。
117.对第一划分单元进行不同的设置,可以适用多种业务场景对数据安全程度的需求,当用户对数据安全度要求较高时,可以将第一划分单元的长度设置的较短,当用户对运
行效率较高时,可以将第一划分单元的长度设置的较长,提高了对不同业务场景的适用性。对第二划分单元进行设置可以调整生成的目标合并文件的大小,用户可以根据自己的需求进行调整,提高了对不同业务场景的适用性。
118.本公开的一个实施例中,所述预设的划分维度为:时间维度或者空间维度。
119.可见,将时间维度或空间维度作为划分维度,可以适应用户对数据不同的需求,可以适应多种业务场景,提高数据加载方法的适用性。
120.本公开的一个实施例中,所述最新基础文件和/或目标合并文件被划分为数据单元;
121.所述文件加载模块603,具体用于按照生成时间顺序串行加载所确定的各个文件,并对于所确定的文件中存在数据单元的文件,按照并行加载的方式加载文件中的数据单元。
122.由以上可见,将最新基础文件和/或目标合并文件被划分为数据单元,针对各个文件,按照生成时间顺序串行进行加载,针对各个文件内的数据单元,按照并行加载的方式进行加载,这样在保证数据被内存型数据库正确加载的前提下,又通过并行加载数据单元提高加载的速度,提高文件加载效率。
123.本公开的一个实施例中,目标数据单元确定模块,用于确定包含数据单元的所确定文件中存在依赖关系的目标数据单元;
124.增量数据修正模块,用于基于目标数据单元之间的依赖关系,对目标数据单元进行增量数据修正。
125.由以上可见,通过对数据单元的依赖关系进行修正,可以使得更多的文件被划分为数据单元,更多的文件可以进行并行加载,提高内存型数据的加载效率,并提高加载数据的准确度。
126.本公开的一个实施例中,索引数据生成模块,用于遍历已加载的数据,生成所加载数据对应的索引数据。
127.由以上可见,对已加载的数据,生成索引数据,这样不用在加载的过程中考虑索引数据和与其相关的数据的先后关系,更多的数据可以并行加载,提高数据加载效率。
128.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
129.图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
130.如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
131.设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
132.计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如方法数据加载。例如,在一些实施例中,方法数据加载可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的方法数据加载的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法数据加载。
133.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
134.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
135.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
136.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的
反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
137.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
138.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
139.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
140.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
技术特征:
1.一种数据加载方法,包括:确定内存型数据库的最新基础文件和目标合并文件,其中,所述目标合并文件为:对在所述最新基础文件之后生成的增量文件进行增量数据合并得到的文件;若所述目标合并文件对应的增量数据最晚产生时间早于当前时间,从在所述最新基础文件后生成的增量文件中,确定存储有在所述最晚产生时间至当前时间内产生的增量数据的目标增量文件;加载确定出的文件。2.根据权利要求1所述的方法,其中,所述增量文件,用于存储在所述最新基础文件之后、每间隔的第一划分单元内产生的增量数据;所述目标合并文件为:对存储有每间隔第二划分单元内产生的增量数据的增量文件进行数据合并得到的文件;其中,所述第一划分单元和第二划分单元为:依据预设的划分维度确定的增量数据划分单元,所述第二划分单元的长度大于所述第一划分单元的长度。3.根据权利要求2所述的方法,其中,所述预设的划分维度为:时间维度或者空间维度。4.根据权利要求1-3中任一项所述的方法,其中,所述最新基础文件和/或目标合并文件被划分为数据单元;所述加载确定出文件,包括:按照生成时间顺序串行加载所确定的各个文件,并对于所确定的文件中存在数据单元的文件,按照并行加载的方式加载文件中的数据单元。5.根据权利要求4所述的方法,在成功加载所确定的文件之后,还包括:确定包含数据单元的所确定文件中存在依赖关系的目标数据单元;基于目标数据单元之间的依赖关系,对目标数据单元进行增量数据修正。6.根据权利要求5所述的方法,对目标数据单元进行增量数据修正后,还包括:遍历已加载的数据,生成所加载数据对应的索引数据。7.一种数据加载装置,包括:文件确定模块,用于确定内存型数据库的最新基础文件和目标合并文件,其中,所述目标合并文件为:对在所述最新基础文件之后生成的增量文件进行增量数据合并得到的文件;目标增量文件确定模块,用于在所述目标合并文件对应的增量数据最晚产生时间早于当前时间的情况下,从在所述最新基础文件后生成的增量文件中,确定存储有在所述最晚产生时间至当前时间内产生的增量数据的目标增量文件;文件加载模块,用于加载确定出的文件。8.根据权利要求7所述的装置,其中,所述增量文件,用于存储在所述最新基础文件之后、每间隔的第一划分单元内产生的增量数据;所述目标合并文件为:对存储有每间隔第二划分单元内产生的增量数据的增量文件进行数据合并得到的文件;
其中,所述第一划分单元和第二划分单元为:依据预设的划分维度确定的增量数据划分单元,所述第二划分单元的长度大于所述第一划分单元的长度。9.根据权利要求8所述的装置,其中,所述预设的划分维度为:时间维度或者空间维度。10.根据权利要求7-9中任一项所述的装置,其中,所述最新基础文件和/或目标合并文件被划分为数据单元;所述文件加载模块,具体用于按照生成时间顺序串行加载所确定的各个文件,并对于所确定的文件中存在数据单元的文件,按照并行加载的方式加载文件中的数据单元。11.根据权利要求10所述的装置,还包括:目标数据单元确定模块,用于确定包含数据单元的所确定文件中存在依赖关系的目标数据单元;增量数据修正模块,用于基于目标数据单元之间的依赖关系,对目标数据单元进行增量数据修正。12.根据权利要求11所述的装置,还包括:索引数据生成模块,用于遍历已加载的数据,生成所加载数据对应的索引数据。13.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6中任一项所述的方法。15.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-6中任一项所述的方法。
技术总结
本公开提供了一种数据加载方法、装置、电子设备和存储介质,涉及数据处理技术领域,尤其涉及大数据技术领域。具体实现方案为:确定内存型数据库的最新基础文件和目标合并文件,其中,目标合并文件为:对在最新基础文件之后生成的增量文件进行增量数据合并得到的文件;若目标合并文件对应的增量数据最晚产生时间早于当前时间,从在最新基础文件后生成的增量文件中,确定存储有在最晚产生时间至当前时间内产生的增量数据的目标增量文件;加载确定出的文件。应用本公开实施例提供的方案可以提高数据加载效率。数据加载效率。数据加载效率。
技术研发人员:谢维柱 杨阳 杨深圳 张璐 邢越
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2022.12.23
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
