数据表更新方法、装置、设备及存储介质与流程



1.本技术涉及数据存储技术领域,具体而言,涉及一种数据表更新方法、装置、设备及存储介质。


背景技术:



2.随着科技的快速发展,越来越多的企业向数字化转型,企业拥有着海量的数据和越来越复杂的业务,并且这些数据对企业的运作是非常有效的,常常需要更加准确的战略决策信息以及对某些业务的拓展,需要建立企业的数据仓库。数据是数据仓库的核心,有一些的数据业务相较于普通业务比较复杂,有需要知道一段时间内用户的使用情况、以及用户的历史信息来分析数据,如用户的地址,产品的描述信息,订单的状态等。
3.目前,现有的数据更新方案包括:现有方案1:每天只留最新的一份,比如每天用sqoop工具抽取最新的一份全量数据到数据仓库中和现有方案2:每天保留一份全量的切片数据,类似于针对每天固定时间点的全量备份。但现有方案1存在没有历史数据,不方便翻旧账等缺陷。现有方案2存在浪费存储空间的缺陷。


技术实现要素:



4.有鉴于此,本技术实施例的目的在于提供一种数据表更新方法、装置、设备及存储介质,通过使用拉链表将昨天历史数据与当前最新数据合并成一张数据表,使得既能获取最新的数据,也能添加筛选条件获取历史的数据,节省了存储空间,提高数据表数据更新效率,从而解决上述两种技术问题。
5.第一方面,本技术实施例提供一种数据表更新方法,所述方法包括:根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。
6.在上述实现过程中,通过对历史拉链表和最新的数据快照表的对比来判断当前数据与历史数据是否发生变化,如果发生变化或者新增则进行相应拉链表的开链、闭链操作,使用拉链表将昨天历史数据与当前最新数据合并成一张数据表,使得既能获取最新的数据,也能添加筛选条件获取历史的数据,节省了存储空间,提高数据表数据更新效率。
7.可选地,所述根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表,包括:获取数据仓库中存储存在数据更新的历史拉链表和记录最新状态数据的快照表;在所述快照表中查询所述历史拉链表中存在的初始待删除数据;将所述快照表与剔除所述初始待删除数据的历史拉链表合并,获得所述变化数据临时表。
8.在上述实现过程中,通过查询对比历史拉链表和最新的数据快照表的数据,判断当前数据与历史数据是否发生变化,例如每日产生的新数据表的id字段在昨天的历史数据
表不存在的,就是当日新增和变化的数据,也就是当天的增量用户,这种方式可以很快地确定变化的数据,提高数据表数据更新效率。
9.可选地,所述记录时间包括:结束日期;所述根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据,包括:获取所述历史拉链表中被剔除的初始待删除数据;将所述历史拉链表中的所述初始待删除数据的结束日期修改为当前日期,获得修改后历史拉链表中的待删除数据;将所述修改后历史拉链表中的待删除数据合并至所述变化数据临时表中,获得所述同步拉链表中的待删除数据。
10.在上述实现过程中,通过上述确定待删除数据的方式,抽取最新快照表的当日变化数据,删除历史拉链表中的变化影响数据,制造出差异增量,进行差异增量数据同步,解决了拉链表同步时耗时较长,占用空间较大的问题,实现了提高拉链表同步效率并提高存储空间利用率的技术效果。
11.可选地,所述将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表,包括:将所述同步拉链表和所述快照表合并去重,获得去重拉链表;根据所述同步拉链表和所述去重拉链表进行更新判断,获得更新判断结果;根据所述更新判断结果,将所述变化数据临时表中各数据添加至同步拉链表中,获得所述更新后的目标拉链表。
12.在上述实现过程中,通过对合并后的同步拉链表和快照表去重,可以得到没有多条一样数据的表,合并去重能够节约资源,从而提高拉链表同步效率和存储空间利用率。
13.可选地,其中,所述记录时间包括:开始日期,结束日期;所述根据所述同步拉链表和所述去重拉链表进行更新判断,获得更新判断结果,包括:关联所述同步拉链表和所述去重拉链表,并判断同步拉链表中各数据的开始日期是否为空;若同步拉链表中各数据的开始日期为空,则将所述同步拉链表中为空的有变化数据的结束日期修改为有效标识;若同步拉链表中各数据的开始日期不为空,则将所述同步拉链表中不为空的无变化数据与修改为有效标识的有变化数据合并,获得再同步拉链表;判断所述再同步拉链表各数据是否存在相同的主键值;其中,所述主键值包括:所述各数据的唯一标识;若所述再同步拉链表各数据存在相同的主键值,将更新判断结果确定为所述同步拉链表中存在更新数据;若所述再同步拉链表各数据不存在相同的主键值,将更新判断结果确定为所述同步拉链表中存在无变化数据。
14.在上述实现过程中,通过开始日期和主键值判断同步拉链表是否有更新,可快速确定多种数据是否存在更新,对历史数据表和最新的数据表的对比来判断当前数据与历史数据是否发生变化,如果发生变化或者新增则进行相应的开链、闭链操作,提高了数据表更新效率。
15.可选地,所述根据所述更新判断结果,将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表,包括:若所述同步拉链表中存在更新数据,则将所述同步拉链表中开始日期不是当前日期的数据的结束日期修改为结束标识;若所述同步拉链表中存在无变化数据,则将变化数据临时表中无变化数据添加至修改为结束标识的同步拉链表中,获得所述更新后的目标拉链表。
16.在上述实现过程中,相比于每天快照存储数据和每天分区存储全量的数据,将昨
天历史数据与当前最新的数据合并成一张数据表来节省存储空间,提高了数据表数据更新的效率,以及对于复杂业务数据的历史维度的显示,解决了拉链表同步时耗时较长,占用空间较大的问题。
17.可选地,其中,所述数据包括:数据产生的日期、用户编号、手机号码、用户记录生命周期开始日期、以及记录的生命周期结束日期中的至少一者。
18.在上述实现过程中,该数据可以记录一个事物从开始一直到当前状态所有的变化信息,存储用户的最基本信息以及每条记录的生命周期,可以很方便地还原出拉链时点的客户记录,提高了实时性。
19.第二方面,本技术实施例提供了一种数据表更新装置,其特征在于,所述装置包括:临时表模块,用于根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;待删除模块,用于根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;更新模块,用于将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。
20.第三方面,本技术实施例还提供一种电子设备,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行上述的方法的步骤。
21.第四方面,本技术实施例提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
22.为使本技术的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
23.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
24.图1为本技术实施例提供的一种数据表更新方法的流程图;
25.图2为本技术实施例提供的一种数据表更新方法的示例图;
26.图3为本技术实施例提供的一种确定同步拉链表待删除数据的示例图;
27.图4为本技术实施例提供的一种目标拉链表的示例图;
28.图5为本技术实施例提供的数据表更新装置的功能模块示意图;
29.图6为本技术实施例提供数据表更新装置的电子设备的方框示意图。
30.图标:210-临时表模块;220-待删除模块;230-更新模块;300-电子设备;311-存储器;312-存储控制器;313-处理器;314-外设接口;315-输入输出单元;316-显示单元。
具体实施方式
31.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在
此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
33.在介绍本技术实施例前,对可能涉及的几个技术概念进行简单介绍:
34.数据仓库,英文名称为data warehouse,可简写为dw或dwh,为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。数据仓库的数据存储是分层级的数据表形式,这个架构一方面跟数据拉取方式有关,一方面也是为了对数据进行层级的抽象处理。数据仓库的数据所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到当前各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
35.全量表:记录每天所有的最新状态的数据,有无变化都要上报,每次往全量表里面写数据都会覆盖之前的数据;缺点:不能记录数据的历史变化,只能截止到当前最新、全量的数据。
36.增量表:记录每天的新增的数据和改变的数据。
37.快照表:按日分区,记录截止数据日期的全量数据(每个分区都是记录截止当前分区日期的全量数据)。优点:可以反映历史的变化;缺点:在数据量大的情况下,每个分区存储的都是全量数据,数据冗余和浪费存储空间。
38.切片表:切片表根据基础表,往往只反映某一个维度的相应数据。其表结构与基础表结构相同,但数据往往只有某一维度,或者某一个事实条件的数据。
39.拉链表:记录一个事物从开始,一直到当前状态的所有变化的信息。优点:能够解决快照表数据冗余问题,还能维护数据历史状态和最新状态,记录截止数据日期的全量数据。
40.本技术发明人注意到,当我们在采集到用户的信息后,将数据拉取到数据仓库。在存储数据的过程中,现有方案1是每天去定时的拉取覆盖历史数据,实现起来很简单,每天删除掉前一天的数据,重新抽一份最新的,优点很明显,节省空间,在存储的时候也非常方便,不用在选择表的时候加一个时间分区,缺点同样明显,没有历史数据,对于企业的复杂的业务没法满足,翻旧账只能通过其它方式,比如从流水表里面抽;现有方案2是每天一份全量的切片,而且历史数据也在,缺点就是存储空间占用量会随着时间越来越大,如果对这
边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费。有鉴于此,本技术实施例如下提供一种数据表更新方法。
41.请参阅图1,图1为本技术实施例提供的一种数据表更新方法的流程图,该方法包括:步骤100、步骤120和步骤140。
42.步骤100:根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;
43.步骤120:根据变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;
44.步骤140:将同步拉链表中的待删除数据删除,并将变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。
45.示例性地,拉链表是数据仓库中的一种数据模型,用来存储一个对象从起始到当前状态的所有变化的信息,是处理变化数据的一种方式,当业务数据变化时,拉链表会进行相应地变化,既保留了历史数据的变化信息,又不浪费存储空间。历史拉链表可以是拉链表同步更新的最原始的基准拉链表。快照表可以是按日分区记录当前日期截止前的全量数据,其包括当前日期前每天所有的最新状态数据。变化数据临时表可以是通过对历史拉链表和最新数据的快照表的对比来判断当前数据与历史数据是否发生变化,记录历史拉链表中在当前日期内发生变化的数据的数据表。同步拉链表可以是拉链表在同步过程中被同步的拉链表。待删除数据可以是历史拉链表中某id标识的数据在快照表中不存在被删除的数据。目标拉链表可以是拉链表保留了历史数据、删除待删除数据,并将昨天历史数据与当前最新数据合并更新后的数据表。上述几种不同状态的拉链表均记录了每一个用户的基本信息,可以具体包括数据产生的日期(date_creat)、用户的编号(id)、用户姓名(name)、手机号码(number)、用户记录生命周期开始时间(t_start)、用户记录生命周期结束时间(t_end)、以及用户记录更新时间(date_update)等。
46.可选地,若快照表的某条数据当前日期为2021-03-01,若历史拉链表中的某条数据为“用户编号:1;姓名:张三;手机号码:xxx;开始日期(t_start):2021-01-03;结束日期(t_end):2021-02-28”,则根据该条数据中的结束日期可以确定在当前日期内该条数据的信息发生变化,可以将该条数据添加至变化数据临时表中。若历史拉链表中的某条数据为“用户编号:2;姓名:李四;手机号码:xxx;开始日期(t_start):2021-03-01;结束日期(t_end):2028-12-31”,则根据该条数据中的开始日期可以确定在当前日期内该条数据对应的信息发生变化,可以将该条数据添加至变化数据临时表中。若用户编号1的数据存在历史拉链表中,但用户编号1的数据不存在快照表中,则根据该条数据的id可以确定在当前日期内该条数据对应的信息发生变化,可以将该条数据添加至变化数据临时表中。
47.通过对历史拉链表和最新的数据快照表的对比来判断当前数据与历史数据是否发生变化,如果发生变化或者新增则进行相应拉链表的开链、闭链操作,使用拉链表将昨天历史数据与当前最新数据合并成一张数据表,使得既能获取最新的数据,也能添加筛选条件获取历史的数据,节省了存储空间,提高数据表数据更新效率。
48.在一个实施例中,步骤100可以包括:步骤101、步骤102和步骤103。
49.步骤101:获取数据仓库中存储存在数据更新的历史拉链表和记录最新状态数据的快照表;
50.步骤102:在快照表中查询历史拉链表中存在的初始待删除数据;
51.步骤103:将快照表与剔除初始待删除数据的历史拉链表合并,获得变化数据临时表。
52.示例性地,如图2所示的序号1至序号4的流程,其中,t_start表示对应数据录入数据库的时间,t_end表示对应数据从数据库中移除的时间(数据更新的时间),id指的是数据的编号。历史拉链表相当于记录昨天数据的拉链表,其可以是同时维护历史状态和最新状态数据的一种表。快照表相当于记录今天数据的全量同步表(源表),其记录了每天所有的最新状态的数据表。初始待删除数据可以是在快照表中查询到历史拉链表中的数据发生变化的数据,具体可以是通过比对两个数据表中的id字段,在历史拉链表中存在而不存在快照表中的数据,如图3所示的“老六”和“何七”这两条数据。
53.数据仓库里存储需要更新的数据的历史拉链表,通过软件和/或硬件的形式抽取每天所有的最新状态的数据表,查询历史拉链表中的数据在最新的数据快照表中哪些被删除了,将这些查询到的数据确定为初始待删除数据,并将快照表与剔除初始待删除数据的历史拉链表合并,从而获得变化数据临时表(如图3所示的序号4拉链表),该变化临时表更新了历史拉链表的数据,可具体包含快照表和历史拉链表中都存在的数据和待删除的变化数据。
54.通过查询对比历史拉链表和最新的数据快照表的数据,判断当前数据与历史数据是否发生变化,例如每日产生的新数据表的id字段在昨天的历史数据表不存在的,就是当日新增和变化的数据,也就是当天的增量用户,这种方式可以很快地确定变化的数据,提高数据表数据更新效率。
55.在一个实施例中,该记录时间包括:结束日期;步骤120可以包括:步骤121、步骤122和步骤123。
56.步骤121:获取历史拉链表中被剔除的初始待删除数据;
57.步骤122:将历史拉链表中的初始待删除数据的结束日期修改为当前日期,获得修改后历史拉链表中的待删除数据;
58.步骤123:将修改后历史拉链表中的待删除数据合并至变化数据临时表中,获得同步拉链表中的待删除数据。
59.示例性地,如图2所示的序号1至序号5的流程,其中,t_start表示对应数据录入数据库的时间,t_end表示对应数据从数据库中移除的时间(数据更新的时间),id指的是数据的编号。查询历史拉链表中的数据在最新的数据快照表中哪些被删除了,将这些查询到的数据确定为初始待删除数据,如图3所示的“老六”和“何七”这两条数据;并将历史拉链表中这些待删除数据的结束日期t_end都修改为当前日期(当天、今天),即将“老六”和“何七”这两条数据的t_end时间“9999-12-31”修改为“2022-10-24”(如图3所示的序号3拉链表),以方便后续步骤中更新记录数据结束的时间。最后将修改日期后的历史拉链表合并至上述步骤103的变化数据临时表中,得到同步拉链表(如图3所示的序号5拉链表),同步拉链表中被剔除删除的数据包含历史拉链表也已经删除的数据,在合并后已经将删除的数据t_end时间改为当天的数据临时表。其中,这些修改日期后的初始待删除数据可以确定为同步拉链表中的待删除数据。
60.通过上述确定待删除数据的方式,抽取最新快照表的当日变化数据,删除历史拉
链表中的变化影响数据,制造出差异增量,进行差异增量数据同步,解决了拉链表同步时耗时较长,占用空间较大的问题,实现了提高拉链表同步效率并提高存储空间利用率的技术效果。
61.在一个实施例中,该记录时间包括:结束日期;步骤140可以包括:步骤141、步骤142和步骤143。
62.步骤141:将同步拉链表和快照表合并去重,获得去重拉链表;
63.步骤142:根据同步拉链表和去重拉链表进行更新判断,获得更新判断结果;
64.步骤143:根据更新判断结果,将变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。
65.示例性地,如图2所示的序号6至序号12的流程,在合并步骤123中的同步拉链表和最新的数据快照表后,由于有些数据仅开始时间(t_start)和结束时间(t_end)不同,其他(例如主键值、id)相同,是被视为相同数据的,因此合并后需要去除这些重复相同的数据,进而变成一张新的数据临时表,即去重拉链表,并根据同步拉链表和去重拉链表判断是否存在更新,并进行对应更新操作。整个流程相当于抽取快照表的当日变化数据得到变化数据临时表,然后,删除历史拉链表中快照表变化影响到的数据得到同步拉链表,再将变化数据临时表插入同步拉链表中,得到最终同步更新完成的目标拉链表,具体可如图4所示的目标拉链表,不仅包括历史拉链表中无变化的数据(如张三、李四、王五等三条数据),还包括同步拉链表中的待删除数据(如老六、何七等两条数据)和快照表中的更新数据(如刘八、陈九等两条数据)。通过对合并后的同步拉链表和快照表去重,可以得到没有多条一样数据的表,合并去重能够节约资源,从而提高拉链表同步效率和存储空间利用率。
66.在一个实施例中,该记录时间包括:开始日期,结束日期;步骤142可以包括:步骤142a、步骤142b、步骤142c、步骤142d、步骤142e和步骤142f。
67.步骤142a:关联同步拉链表和去重拉链表,并判断同步拉链表中各数据的开始日期是否为空;
68.步骤142b:若同步拉链表中各数据的开始日期为空,则将同步拉链表中为空的有变化数据的结束日期修改为有效标识;
69.步骤142c:若同步拉链表中各数据的开始日期不为空,则将同步拉链表中不为空的无变化数据与修改为有效标识的有变化数据合并,获得再同步拉链表;
70.步骤142d:判断再同步拉链表各数据是否存在相同的主键值;其中,主键值包括:各数据的唯一标识;
71.步骤142e:若再同步拉链表各数据存在相同的主键值,将更新判断结果确定为同步拉链表中存在更新数据;
72.142f:若再同步拉链表各数据不存在相同的主键值,将更新判断结果确定为同步拉链表中存在无变化数据。
73.示例性地,请继续参看如图2所示的序号6至序号10的流程,上述拉链表中的每条记录(数据)均可包含开始时间(开始日期,t_start)和结束时间(结束日期,t_end),其代表该条记录的生命周期。当数据记录的结束时间小于当天时间(当前日期)时,说明该条记录不再有效,仅代表记录在开始时间和结束时间的历史状态。当数据记录的结束时间大于当天时间时,说明该条记录处于有效状态(有效标识),结束时间一般为较大的时间点,如
8999-12-31、9999-12-31等。因此,t_start可表示该条记录的生命周期开始时间,t_end可表示该条记录的生命周期结束时间,t_end等于“9999-12-31”可表示该条记录目前处于有效状态。主键值可以是能唯一地标识数据表中的每一行数据的项,例如:编号、id。
74.可选地,对步骤141的去重后的数据临时拉链表查询步骤123中的同步拉链表数据的t_start,由于t_start不为空表示该数据在历史拉链表中出现,在最新的快照表中没有出现,因此如果不为空就为每天没有变化的数据;如果t_start为空就为每天有变化的数据,并将有变化的数据的t_end改为9999-12-31。将没有变化的数据与这些修改后的有变化数据合并,得到再同步拉链表。由于可能存在一个id编号对应多条数据,一方面一个id的多条数据对应于数据有多个状态,可更新为最新状态,另一方面一个id只有一条数据对应于无变化或新增的数据,因此需要判断再同步拉链表中的数据是否存在相同的id,若再同步拉链表各数据存在相同的id,则是更新的数据,若再同步拉链表各数据不存在相同的id,则是没变化、新增、和删除的数据。
75.通过开始日期和主键值判断同步拉链表是否有更新,可快速确定多种数据是否存在更新,对历史数据表和最新的数据表的对比来判断当前数据与历史数据是否发生变化,如果发生变化或者新增则进行相应的开链、闭链操作,提高了数据表更新效率。
76.在一个实施例中,该记录时间包括:开始日期,结束日期;步骤143可以包括:步骤143a、和步骤143b。
77.步骤143a:若同步拉链表中存在更新数据,则将同步拉链表中开始日期不是当前日期的数据的结束日期修改为结束标识;
78.步骤143b:若同步拉链表中存在无变化数据,则将变化数据临时表中无变化数据添加至修改为结束标识的同步拉链表中,获得更新后的目标拉链表。
79.示例性地,请继续参看如图2所示的序号10至序号12的流程,t_start可表示该条记录的生命周期开始时间(开始日期),t_end可表示该条记录的生命周期结束时间(结束日期)。结束标识类似于上述的有效标识,即将该数据的t_end修改为具体的更新时间(例如当天),表示数据生命周期已经结束了。在步骤142的基础上,若同步拉链表中存在更新数据,在过滤t_start不是为当天的数据,则修改t_end为当天;若同步拉链表中存在更新数据,将没有变化、新增、删除的数据与修改完t_end为当天的数据合并生成新的拉链表,即目标拉链表。其中,步骤143a是一个闭环操作,也就是说设置记录的生命周期结束时间;步骤143b则是将变化数据临时表中的各临时数据添加至目标拉链表中。
80.相比于每天快照存储数据和每天分区存储全量的数据,将昨天历史数据与当前最新的数据合并成一张数据表来节省存储空间,提高了数据表数据更新的效率,以及对于复杂业务数据的历史维度的显示,解决了拉链表同步时耗时较长,占用空间较大的问题。
81.在一个实施例中,该数据包括:数据产生的日期、用户编号、手机号码、用户记录生命周期开始日期、以及记录的生命周期结束日期中的至少一者。
82.示例性地,历史拉链表、变化数据临时表、同步拉链表和目标拉链表等几种不同状态的拉链表均记录了每一个用户的基本信息,可以具体包括数据产生的日期(data_update)、用户的编号(id)、手机号码、用户记录生命周期开始时间(t_start)、以及用户记录生命周期结束时间(t_end)其中的一种。其中,每条记录(数据)均可包含开始时间(开始日期,t_start)和结束时间(结束日期,t_end),其代表该条记录的生命周期,从而使得上述
几种不同状态的拉链表可以记录历史数据,记录一个事物从开始一直到当前状态的所有变化的信息,存储用户的最基本信息以及每条记录的生命周期,可以很方便地还原出拉链时点的客户记录,提高了实时性。
83.请参阅图5,图5为本技术实施例提供的一种数据表更新方法的装置模块图,该装置包括:临时表模块210、待删除模块220和更新模块230。
84.临时表模块210,用于根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;
85.待删除模块220,用于根据变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;
86.更新模块230,用于将同步拉链表中的待删除数据删除,并将变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。
87.可选地,临时表模块210可以用于:
88.获取数据仓库中存储存在数据更新的历史拉链表和记录最新状态数据的快照表;
89.在所述快照表中查询所述历史拉链表中存在的初始待删除数据;
90.将所述快照表与剔除所述初始待删除数据的历史拉链表合并,获得所述变化数据临时表。
91.可选地,所述记录时间包括:结束日期;待删除模块220可以用于:
92.获取所述历史拉链表中被剔除的初始待删除数据;
93.将所述历史拉链表中的所述初始待删除数据的结束日期修改为当前日期,获得修改后历史拉链表中的待删除数据;
94.将所述修改后历史拉链表中的待删除数据合并至所述变化数据临时表中,获得所述同步拉链表中的待删除数据。
95.可选地,更新模块230可以用于:
96.将所述同步拉链表和所述快照表合并去重,获得去重拉链表;
97.根据所述同步拉链表和所述去重拉链表进行更新判断,获得更新判断结果;
98.根据所述更新判断结果,将所述变化数据临时表中各数据添加至同步拉链表中,获得所述更新后的目标拉链表。
99.可选地,所述记录时间包括:开始日期,结束日期;更新模块230可以用于:
100.关联所述同步拉链表和所述去重拉链表,并判断同步拉链表中各数据的开始日期是否为空;
101.若同步拉链表中各数据的开始日期为空,则将所述同步拉链表中为空的有变化数据的结束日期修改为有效标识;
102.若同步拉链表中各数据的开始日期不为空,则将所述同步拉链表中不为空的无变化数据与修改为有效标识的有变化数据合并,获得再同步拉链表;
103.判断所述再同步拉链表各数据是否存在相同的主键值;其中,所述主键值包括:所述各数据的唯一标识;
104.若所述再同步拉链表各数据存在相同的主键值,将更新判断结果确定为所述同步拉链表中存在更新数据;
105.若所述再同步拉链表各数据不存在相同的主键值,将更新判断结果确定为所述同
步拉链表中存在无变化数据。
106.可选地,更新模块230可以用于:
107.若所述同步拉链表中存在更新数据,则将所述同步拉链表中开始日期不是当前日期的数据的结束日期修改为结束标识;
108.若所述同步拉链表中存在无变化数据,则将变化数据临时表中无变化数据添加至修改为结束标识的同步拉链表中,获得所述更新后的目标拉链表。
109.可选地,所述数据包括:数据产生的日期、用户编号、手机号码、用户记录生命周期开始日期、以及记录的生命周期结束日期中的至少一者。
110.请参阅图6,图6是电子设备的方框示意图。电子设备300可以包括存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对电子设备300的结构造成限定。例如,电子设备300还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。
111.上述的存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器313用于执行存储器中存储的可执行模块。
112.其中,存储器311可以是,但不限于,随机存取存储器(random access memory,简称ram),只读存储器(read only memory,简称rom),可编程只读存储器(programmable read-only memory,简称prom),可擦除只读存储器(erasable programmable read-only memory,简称eprom),电可擦除只读存储器(electric erasable programmable read-only memory,简称eeprom)等。其中,存储器311用于存储程序,所述处理器313在接收到执行指令后,执行所述程序,本技术实施例任一实施例揭示的过程定义的电子设备300所执行的方法可以应用于处理器313中,或者由处理器313实现。
113.上述的处理器313可能是一种集成电路芯片,具有信号的处理能力。上述的处理器313可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
114.上述的外设接口314将各种输入/输出装置耦合至处理器313以及存储器311。在一些实施例中,外设接口314,处理器313以及存储控制器312可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
115.上述的输入输出单元315用于提供给用户输入数据。所述输入输出单元315可以是,但不限于,鼠标和键盘等。
116.上述的显示单元316在电子设备300与用户之间提供一个交互界面(例如用户操作界面)给用户参考。在本实施例中,所述显示单元316可以是液晶显示器或触控显示器。液晶显示器或触控显示器可以对处理器执行所述程序的过程进行显示。
117.本实施例中的电子设备300可以用于执行本技术实施例提供的各个方法中的各个
步骤。
118.此外,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的步骤。
119.本技术实施例所提供的上述方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中的步骤,具体可参见上述方法实施例,在此不再赘述。
120.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。在本技术实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
121.需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
122.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
123.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:


1.一种数据表更新方法,其特征在于,所述方法包括:根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。2.根据权利要求1所述的方法,其特征在于,所述根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表,包括:获取数据仓库中存储存在数据更新的历史拉链表和记录最新状态数据的快照表;在所述快照表中查询所述历史拉链表中存在的初始待删除数据;将所述快照表与剔除所述初始待删除数据的历史拉链表合并,获得所述变化数据临时表。3.根据权利要求1所述的方法,其特征在于,其中,所述记录时间包括:结束日期;所述根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据,包括:获取所述历史拉链表中被剔除的初始待删除数据;将所述历史拉链表中的所述初始待删除数据的结束日期修改为当前日期,获得修改后历史拉链表中的待删除数据;将所述修改后历史拉链表中的待删除数据合并至所述变化数据临时表中,获得所述同步拉链表中的待删除数据。4.根据权利要求1所述的方法,其特征在于,所述将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表,包括:将所述同步拉链表和所述快照表合并去重,获得去重拉链表;根据所述同步拉链表和所述去重拉链表进行更新判断,获得更新判断结果;根据所述更新判断结果,将所述变化数据临时表中各数据添加至同步拉链表中,获得所述更新后的目标拉链表。5.根据权利要求4所述的方法,其特征在于,其中,所述记录时间包括:开始日期,结束日期;所述根据所述同步拉链表和所述去重拉链表进行更新判断,获得更新判断结果,包括:关联所述同步拉链表和所述去重拉链表,并判断同步拉链表中各数据的开始日期是否为空;若同步拉链表中各数据的开始日期为空,则将所述同步拉链表中为空的有变化数据的结束日期修改为有效标识;若同步拉链表中各数据的开始日期不为空,则将所述同步拉链表中不为空的无变化数据与修改为有效标识的有变化数据合并,获得再同步拉链表;判断所述再同步拉链表各数据是否存在相同的主键值;其中,所述主键值包括:所述各数据的唯一标识;
若所述再同步拉链表各数据存在相同的主键值,将更新判断结果确定为所述同步拉链表中存在更新数据;若所述再同步拉链表各数据不存在相同的主键值,将更新判断结果确定为所述同步拉链表中存在无变化数据。6.根据权利要求5所述的方法,其特征在于,所述根据所述更新判断结果,将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表,包括:若所述同步拉链表中存在更新数据,则将所述同步拉链表中开始日期不是当前日期的数据的结束日期修改为结束标识;若所述同步拉链表中存在无变化数据,则将变化数据临时表中无变化数据添加至修改为结束标识的同步拉链表中,获得所述更新后的目标拉链表。7.根据权利要求1-6任一所述的方法,其特征在于,其中,所述数据包括:数据产生的日期、用户编号、手机号码、用户记录生命周期开始日期、以及记录的生命周期结束日期中的至少一者。8.一种数据表更新装置,其特征在于,所述装置包括:临时表模块,用于根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;待删除模块,用于根据所述变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;更新模块,用于将所述同步拉链表中的待删除数据删除,并将所述变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。9.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述的方法的步骤。

技术总结


本申请提供一种数据表更新方法、装置、设备及存储介质,涉及数据存储领域,该方法包括:根据历史拉链表中各数据对应的记录时间与快照表中各数据对应的记录时间,确定变化数据临时表;根据变化数据临时表中各数据对应的记录时间与同步拉链表中各数据对应的记录时间,确定同步拉链表中的待删除数据;将同步拉链表中的待删除数据删除,并将变化数据临时表中各数据添加至同步拉链表中,获得更新后的目标拉链表。使用拉链表将昨天历史数据与当前最新数据合并成一张数据表,使得既能获取最新的数据,也能添加筛选条件获取历史的数据,节省了存储空间,提高数据表数据更新效率。提高数据表数据更新效率。提高数据表数据更新效率。


技术研发人员:

孔佑记 范坤

受保护的技术使用者:

上海极豆科技有限公司

技术研发日:

2022.10.28

技术公布日:

2022/12/16

本文发布于:2024-09-20 22:55:49,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/42726.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   链表   所述   日期
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议