数据增量更新方法与流程

文档序号:24821820发布日期:2021-04-27 14:50阅读:1079来源:国知局
数据增量更新方法与流程

1.本发明涉及软件技术领域,更具体地说,涉及以数据库和数据仓库技术。


背景技术:

2.数据正在成为一种重要的资源,越来越多的应用都会调用或者存储大量的数据用于应用服务,或者对保存的数据进行分析运算来提升自身的功能。海量数据的存储和管理正在成为一个重要的问题。
3.目前的数据平台大多采用数据库(db)+操作数据存储器(ods)+数据仓库(dw)的架构。图1揭示了数据平台的架构的示意图,包括数据库db 101、操作数据存储器ods 102和数据仓库dw 103。数据库(database)层多为关系型数据库,用于保存底层数据以及数据之间的关联关系。操作数据存储器(operational data store)介于数据库db和数据仓库(data warehouse)之间,ods可以按照主题提供集成的、可变的当前数据的集合,ods的数据源可以来自数据库db,也可以接入其他的数据接收系统接收外来数据。ods可以根据数据仓库dw的要求为数据仓库提供指定数据,可以认为是数据仓库的数据过渡区。数据仓库dw更多地是面向运用,数据仓库(data warehouse)是一个面向主题的(subject oriented)、集成的(integrated)、相对稳定的(non

volatile)、反映历史变化(time variant)的数据集合。
4.在这个架构体系中,数据库db负责数据的维护和更新,所有的数据更改或者更新都需要在数据库中进行维护。数据仓库dw内的数据会随时间变化,但是不进行更改或者更新操作。由于数据库db在底层,其性能受到硬件设备的限制,而数据仓库dw的计算能力可以通过各种手段扩充,因此数据仓库具有强大的计算能力。
5.于是,在存在大量高频变化数据的应用场景,比如外卖平台、电子商务平台等的应用中。由于应用需求的特点存在海量高强度变化的数据,数据仓库dw为了满足应用需求也会被配置强大的计算能力。但是在这种应用中,数据库db对于数据的同步更新就存在很大的压力。目前的做法中,数据更新都是在数据库db中完成,受限于关系型数据库的性能瓶颈,如果要对数据进行更新并且同步进行大量计算时,会超出数据库的能力负荷。所以只能进行相对简单的数据落库操作。这在一定程度上影响了数据平台整体的性能,在平台性能、实现成本和运行稳定性方面存在矛盾。


技术实现要素:

6.本发明提出一种数据增量更新方法,在利用数据仓库的计算能力进行更新判定,挑选出发生变化的数据给数据库进行增量更新。
7.根据本发明的一实施例,提出一种数据增量更新方法,用于在由数据库、操作数据存储器(ods)和数据仓库(dw)构成的存储架构中对数据进行增量更新,该数据增量更新方法包括:
8.数据配置步骤,对来自消息队列的数据进行配置,包括以数据本身日期为分区进行配置的第一flume和以数据采集日期为分区进行配置的第二flume,经第一flume写入dw
的数据为第一ods数据,经第二flume写入dw的数据为第二ods数据;
9.数据初始化步骤,对dw数据进行初始化,从经第一flume写入dw的第一ods数据中选取满足筛选条件的分区作为dw最新分区;
10.数据合并步骤,将截止到当前的经第二flume写入dw的第二ods数据作为最新写入数据,将dw最新分区和最新写入数据进行合并,合并过程中对dw最新分区和最新写入数据进行标记;
11.数据替换步骤,将合并数据写回dw最新分区覆盖原数据;
12.更新判定步骤,在包含所述合并数据的dw中执行更新判定操作,判断是否存在更新,所述标记参与所述更新判定操作;
13.数据更新步骤,如果在更新判定步骤中判断存在更新,则将带有所述标记的数据同步至数据库进行增量更新。
14.在一个实施例中,数据配置步骤中,第一flume或者第二flume的分区粒度与计算粒度相关。
15.在一个实施例中,数据合并步骤中,筛选条件是可能的更新所对应的最远日期与当前日期的时间间隔。
16.在一个实施例中,数据合并步骤中,将dw最新分区和最新写入数据进行合并包括进行去重计算,剔除不满足筛选条件的数据。
17.在一个实施例中,合并过程中设置标志tag对dw最新分区和最新写入数据进行标记,其中最新写入数据tag为1,dw最新分区tag为0。
18.在一个实施例中,更新判定步骤中执行的更新判定操作包括聚合操作,所述标志tag参与聚合操作。
19.在一个实施例中,数据更新步骤中,经聚合后tag>0的数据被同步至数据库进行增量更新。
20.在一个实施例中,该数据增量更新方法还包括数据恢复步骤,如果该数据增量更新方法出现错误或中途终止,则进行数据恢复。
21.在一个实施例中,数据恢复步骤包括:
22.以满足筛选条件的全量第一ods数据对dw数据进行恢复;
23.将dw数据全量同步至数据库对数据库数据进行恢复。
24.本发明的数据增量更新方法利用数据仓库的运算能力来判定是否存在数据更新,并且标记出发生改变的数据,这些带标记的数据被提供给数据库,数据库仅对带标记的数据进行更新,大大节省数据更新所占用的资源。
附图说明
25.图1揭示了数据平台的架构的示意图。
26.图2揭示了根据本发明的一实施例的数据增量更新方法的流程图。
27.图3揭示了根据本发明的一实施例的数据增量更新方法的执行过程示意图。
具体实施方式
28.图2揭示了根据本发明的一实施例的数据增量更新方法的流程图。参考图2所示,
该数据增量更新方法用于在由数据库、操作数据存储器和数据仓库构成的存储架构中对数据进行增量更新,该数据增量更新方法包括:
29.s1、数据配置步骤。在数据配置步骤中对来自消息队列,比如kafka队列的数据进行配置。在一个实施例中,数据按照两种方式进行配置,分别是以数据本身日期为分区进行配置的第一flume和以数据采集日期为分区进行配置的第二flume。经第一flume写入dw的数据为第一ods数据,经第二flume写入dw的数据为第二ods数据。第一flume或者第二flume的分区粒度与计算粒度相关。计算粒度可以是“日”、“小时”等。
30.s2、数据初始化步骤。数据初始化步骤中对dw数据进行初始化,从经第一flume写入dw的第一ods数据中选取满足筛选条件的分区作为dw最新分区。筛选条件是可能的更新所对应的最远日期与当前日期的时间间隔。比如,可以将筛选条件设置为最近90天,则会从经第一flume写入dw的第一ods数据中选取数据日期为最近90天的数据。
31.s3、数据合并步骤。数据合并步骤中将截止到当前的经第二flume写入dw的第二ods数据作为最新写入数据,将dw最新分区和最新写入数据进行合并,合并过程中对dw最新分区和最新写入数据进行标记。在一个实施例中,将dw最新分区和最新写入数据进行合并包括进行去重计算,剔除不满足筛选条件的数据。因为最新写入数据是直接选取截止当前的第二ods数据,其中可能包括不满足筛选条件的数据,因此去重计算主要是将筛选条件应用到经第二flume写入dw的第二ods数据中。在合并操作完成后,将已经参与运算的第二ods数据删除。在一个实施例中,在合并过程中设置标志tag对dw最新分区和最新写入数据进行标记,其中最新写入数据tag为1,dw最新分区tag为0。
32.s4、数据替换步骤。将前一步骤中计算得到的合并数据写回dw最新分区覆盖原数据。
33.s5、更新判定步骤。更新判定步骤中在包含合并数据的dw中执行更新判定操作,判断是否存在更新,标记参与更新判定操作。在一个实施例中,更新判定步骤中执行的更新判定操作包括聚合操作,标志tag参与聚合操作以标记出发生改变的增量数据。
34.s6、数据更新步骤。如果在更新判定步骤中判断存在更新,则将带有所述标记的数据同步至数据库进行增量更新。在一个实施例中,数据更新步骤中,经聚合操作后tag>0的数据被同步至数据库进行增量更新。
35.在数据同步的过程中,可能会由于各种原因出现中断或者发生错误,这是就需要恢复数据。在一个实施例中,该数据增量更新方法还包括数据恢复步骤,如果该数据增量更新方法出现错误或中途终止,则进行数据恢复。数据恢复步骤包括两个部分,对dw数据的恢复和对数据库db数据的恢复。对dw数据的恢复是以满足筛选条件的全量第一ods数据对dw数据进行恢复,对db数据的恢复是将dw数据全量同步至数据库对数据库数据进行恢复。
36.下面结合一个具体的示例来说明本发明的数据增量更新方法执行过程。下面的描述结合图3进行,图3揭示了根据本发明的一实施例的数据增量更新方法的执行过程示意图。应用本发明的数据增量更新方法的数据平台的架构和现有技术相同,包括数据库db 101、操作数据存储器ods 102和数据仓库dw 103。其数据流向是:操作数据存储器ods 102接收数据(这些数据可能来自各个终端或者其他平台),ods处理后将数据提供给数据仓库dw。数据仓库dw进行各种操作以服务于具体应用。数据库db用于保存数据的变化和更新。
37.在数据配置步骤s1中对来自消息队列,比如kafka队列的数据进行配置。数据按照
两种方式进行配置,分别是以数据本身日期为分区进行配置的第一flume(图中标记为flume 1)和以数据采集日期为分区进行配置的第二flume(图中标记为flume 2)。flume 1的sink配置方式以数据本身的日期为分区(比如对于外卖订单数据以订单下单日期为分区)。flume 2的sink配置方式是以数据采集的日期,即数据写入的日期为分区(比如对于外卖订单数据以订单拉取日期为分区)。此处的“日期”的概念是操作日志中的日期概念,是一个时间单位。日期可以是年、月、日、也可以是小时、分秒或者更小的时间单位。数据的分区粒度与计算粒度相对应。如果计算是以“日”为单位,数据也以“日”为单位进行分区。如果计算是以“小时”为单位,数据也以“小时”为单位进行分区。最常用的计算粒度是“日”。来自kafka队列的数据经flume 1写入dw的数据为第一ods数据,第一ods数据被存入hdfs的第一目录中,在图中标记为hdfs dir 1。来自kafka队列的数据经flume 2写入dw的数据为第二ods数据,第二ods数据被存入hdfs的第二目录中,在图中标记为hdfs dir 2。
38.在数据初始化步骤s2中对dw数据进行初始化。在一个实施例中,dw数据初始化从经第一flume写入dw的第一ods数据中选取满足筛选条件的分区作为dw最新分区。筛选条件是可能的更新所对应的最远日期与当前日期的时间间隔。比如对于外卖订单来说,可能会每天拉取近90天的订单,所以可能更新的最大日期是90天前,换句话说,可能的更新所对应的最远日期与当前日期的时间间隔是90天。以这个时间间隔作为一个筛选条件,设置时间间隔interval=90天。然后从经第一flume写入dw的第一ods数据中选取数据日期满足时间间隔interval≤90天的数据作为dw最新分区。
39.数据合并步骤s3中首先将截止到当前的经第二flume写入dw的第二ods数据作为最新写入数据。初步选取最新写入数据是会选取截止当前时间的全部第二ods数据,也就是截止目前所有新写入的数据。然后将dw最新分区和最新写入数据进行合并,并且在合并过程中对dw最新分区和最新写入数据进行标记。将dw最新分区和最新写入数据进行合并时会根据筛选条件进行去重计算,剔除不满足筛选条件的数据。因为最新写入数据是直接选取截止当前的第二ods数据,其中可能包括不满足筛选条件的数据,而所需要的第二ods数据仅仅是同样满足时间间隔interval≤90天这个筛选条件的第二ods数据。因此去重计算主要是将筛选条件应用到经第二flume写入dw的第二ods数据中将不满足筛选条件的数据剔除。在合并操作完成后,将已经参与运算的第二ods数据删除,以避免今后的重复计算。在一个实施例中,在合并过程中设置标志tag对dw最新分区和最新写入数据进行标记,其中最新写入数据tag为1(第二ods数据的tag为1),dw最新分区tag为0(dw数据tag为0)。
40.数据替换步骤s4中将前一步骤s3中计算得到的合并数据写回dw最新分区覆盖原数据。在操作时,dw最新分区被设置成当前分区pt=current,然后将合并数据写回current分区。在一个实施例中,为了确保数据的完整性,数据替换步骤还可以包括保护性覆盖步骤,对current分区附近的分区进行数据更新以保证数据的完整性。比如,interval=90天时,对附近分区,比如interval+1,即pt=91天的数据也进行更新,以确保数据的完整性。
41.更新判定步骤s5中,在包含合并数据的dw中执行更新判定操作,判断是否存在更新,标记参与更新判定操作。更新判定操作可以包括基于dw的诸如聚合操作的各类操作,比如订单数据计算门店营业额等。在进行更新判定操作是,标志tag也参与操作,比如在聚合时的同时也聚合tag。根据判定结果确定是否存在更新,如果存在更新的话,通过tag标志可以找到哪些数据需要更新,这些被tag标志标记的数据就是发生改变的增量数据。
42.如果在更新判定步骤中判断存在更新,则在数据更新步骤s6中将带有标记的数据同步至数据库db进行增量更新。在一个实施例中,数据更新步骤中将tag>0的数据同步至数据库db进行增量更新。因为源自第二ods(新采集数据)的数据tag为1而源自dw的数据(原数据)tag为0,并且聚合的过程中tag也参与聚合,如果有源自第二ods的数据参与聚合,则tag>0,因此筛选tag>0的数据进行增量更新。
43.在数据同步的过程中,可能会由于各种原因出现中断或者发生错误,这是就需要恢复数据。在一个实施例中,该数据增量更新方法还包括数据恢复步骤,如果该数据增量更新方法出现错误或中途终止,则进行数据恢复。数据恢复步骤包括两个部分,对dw数据的恢复和对数据库db数据的恢复。对dw数据的恢复是以满足筛选条件的全量第一ods数据对dw数据进行恢复,比如以90天内的全量第一ods(经flume 1写入的ods数据)对dw数据进行恢复。对db数据的恢复是将dw数据全量同步至数据库对数据库数据进行恢复。
44.本发明的数据增量更新方法的优势在于:
45.实现功能增量计算,在正常情况下保证ods数据只算一次,降低资源浪费。
46.数据携带tag,聚合计算中也不会丢失增量的信息。
47.数据携带tag,针对业务层,可实现增量精准更新,在不过多占用业务性资源的同时保证业务端数据的完整性。
48.该方法针对不同数据具有通用性,可进行自动化。
49.本发明的数据增量更新方法利用数据仓库的运算能力来判定是否存在数据更新,并且标记出发生改变的数据,这些带标记的数据被提供给数据库,数据库仅对带标记的数据进行更新,大大节省数据更新所占用的资源。
50.还需要注意的是,以上所列举的实施例仅为本发明的具体实施例。显然本发明不局限于以上实施例,随之做出的类似变化或变形是本领域技术人员能从本发明公开的内容直接得出或者很容易便联想到的,均应属于本发明的保护范围。上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1