本技术涉及大数据,尤其涉及一种基于数据湖的数据存储方法、装置、设备和介质。
背景技术:
1、时间拉链表是维护历史状态以及最新状态的表,通过数据生效起始时间和终止生效时间来记录历史和当前状态,作用等同于不同时间的快照,相对于不同时刻的快照,拉链表去除了一部分不变的记录。当前时间拉链表的是日终批处理进行加工的,不支持高性能的数据更新和查询。
2、现有技术提出一种流式数据湖的数据存储方法,为了应对局部少量数据的修改需要重写整个分区数据的问题,把分区划分成了多个文件组,每个文件组由文件id进行标识,这样当局部少量数据修改时,只需要生成对应文件组的新版本数据文件,由于数据湖平台存储了历史版本数据,因此实现了查询时间历史数据的功能。
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、所述处理模块,还用于将所述多个历史变更数据写入所述第二分区内新建的子文件组中,并根据所述多个历史变更数据对应的起始生效时间,对所述多个子文件组进行排序处理,得到第一子文件组序列;
41、所述处理模块,还用于按照第一预设时长对所述子文件组序列进行分组处理,得到多个第一子文件组集合,并将所述多个第一子文件组集合批量写入所述第二分区内对应的第一文件组。
42、可选的,所述处理模块,还用于根据多个第一文件组中对应的多个历史变更数据,得到每个第一文件组对应的首位起始生效时间和末位起始生效时间;
43、所述处理模块,还用于在所述多个第一文件组中查询目标历史变更数据时,根据所述目标历史变更数据的起始生效时间,对所述多个第一文件组进行筛选处理,确定目标第一文件组;
44、所述处理模块,还用于在所述目标第一文件组中,根据所述目标历史变更数据的主键和起始生效时间,确定所述目标历史变更数据。
45、可选的,所述处理模块,还用于将所述多个变更时间作为所述多个变更数据对应的起始生效时间,将所述预设终止生效时间作为所述多个变更数据的终止生效时间;
46、所述处理模块,还用于将所述多个变更数据批量存储至所述时间拉链表的第一分区内。
47、可选的,所述处理模块,还用于将所述多个变更数据写入所述第一分区内新建的子文件组中,并根据所述多个变更数据对应的起始生效时间,对所述多个子文件组进行排序处理,得到第二子文件组序列;
48、所述处理模块,还用于按照第二预设时长对所述第二子文件组序列进行分组处理,得到多个第二子文件组集合,并将所述多个第二子文件组集合批量写入所述第一分区内对应的第二文件组;
49、所述处理模块,还用于在所述第二文件组内的第二子文件组集合的数量达到预设数量时,将所述第二子文件组集合写入所述第一分区内的新建文件组。
50、可选的,所述处理模块,还用于根据多个第二文件组和多个新建文件组中对应的多个变更数据,得到每个第二文件组的首位起始生效时间和末位起始生效时间和每个新建文件组的首位起始生效时间和末位起始生效时间;
51、所述处理模块,还用于在所述多个第二文件组和多个新建文件组中查询目标变更数据时,根据所述目标变更数据的起始生效时间,对所述多个第二文件组和多个新建文件组进行筛选处理,确定目标第二文件组;
52、所述处理模块,还用于在所述目标第二文件组中,根据所述目标变更数据的主键和起始生效时间,确定所述目标变更数据。
53、第三方面,本技术提供一种基于数据湖的数据存储设备,包括:
54、存储器;
55、处理器;
56、其中,所述存储器存储计算机执行指令;
57、所述处理器执行所述存储器存储的计算机执行指令,以实现如上述第一方面和第一方面各种可能的实现方式所述的基于数据湖的数据存储方法。
58、第四方面,本技术提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面及第一方面各种可能的实现方式所述的基于数据湖的数据存储方法。
59、本技术提供的基于数据湖的数据存储方法,通过获取数据源系统的多个变更数据,并根据所述多个变更数据对应的主键,从时间拉链表的第一分区中确定所述多个变更数据对应的待变更数据,根据多个变更时间,将多个待变更数据修改为多个历史变更数据,并将所述多个历史变更数据批量存储至对应的第二分区内,将所述第一分区内的多个待变更数据进行删除处理,并将所述多个变更数据批量存储至所述第一分区内;该方法解决了数据湖中的历史数据的时间不是数据的变更时间的问题,并且解决了各个时间版本的历史数据中存在大量未修改的冗余数据的问题。
1.一种基于数据湖的数据存储方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取数据源系统的多个变更数据之前,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述根据多个变更时间,将多个待变更数据修改为多个历史变更数据,并将所述多个历史变更数据批量存储至对应的第二分区内,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述将所述多个变更数据批量存储至所述第一分区内,包括:
6.根据权利要求5所述的方法,其特征在于,所述将所述多个变更数据批量存储至所述时间拉链表的第一分区内,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种基于数据湖的数据存储装置,其特征在于,所述装置包括:
9.一种基于数据湖的数据存储设备,其特征在于,包括:
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的基于数据湖的数据存储方法。