一种Flink关于CDC数据维表延迟关联实现方法、系统、装置及存储介质制造方法及图纸

技术编号:39166055 阅读:9 留言:0更新日期:2023-10-23 15:04
本发明专利技术公开了一种Flink关于CDC数据维表延迟关联实现方法、系统、装置及存储介质,事实表和维表数据均从数据库同步,并实现维表数据更新;在维表同步速度晚于事实表的情况下,在一定时间范围内能够成功实现数据关联;能够解决通过CDC方式同步的事实表,当同一主键的多条数据维表关联,如果第一条关联失败,后边关联成功,导致数据乱序的问题。本发明专利技术主要对使用数据库做数据存储并使用CDC技术采集数据做关联的业务场景,在维度表数据更新延迟从小时级变为秒级;能够保证在特定时间范围内当维度表数据晚于事实表数据的情况下,数据关联的准确性;当数据在特定时间范围内关联失败,能够收集异常数据,保证数据的完整性。保证数据的完整性。保证数据的完整性。

【技术实现步骤摘要】
一种Flink关于CDC数据维表延迟关联实现方法、系统、装置及存储介质


[0001]本专利技术涉及实时计算领域,尤其涉及一种Flink关于CDC数据维表延迟关联实现方法、系统、装置及存储介质。

技术介绍

[0002]CDC:变化数据捕获,是指识别和捕获对数据库中的数据所做的更改(包括数据或数据表的插入、更新、删除等),然后将这些更改按发生的顺序完整记录下来,并实时通过消息中间件传送到下游流程或系统的过程。通过这种方式,CDC能够向数据仓库提供高效、低延迟的数据传输,以便信息被及时转换并交付给专供分析的应用程序。其中顺序非常重要,相同主键的顺序错乱,会影响最终数据的正确性。
[0003]事实表:事实表用于记录和组织数据,以便进行分析和报告。主要包含数值数据,用于回答业务问题,例如销售额、数量、利润等。通常是大型表,因为它们包含大量的数值数据。
[0004]维度表:维度表是数据仓库中的一种表,用于存储与业务相关的维度信息。维度表通常比较小,因为它们包含的是描述性数据。用于对事实表中的数据进行分析和过滤,例如时间、地点、产品等。
[0005]数据宽表:事实表通常与多个维度表相关联,因为业务问题往往需要从不同的角度进行分析。根据事实表中记录的维度表主键信息关联出其他分析的维度内容一起冗余到数据中,方便后期直接分析数据,减少关联时间。
[0006]目前通用的维表关联场景,事实表数据主要针对日志类型仅支持追加模式存放入kafka消息队列,维表信息根据数据量选型,数据量小放入数据库中,大数据量采用Hbase存储。想要数据加工成宽表,需要消费Kafka数据,然后根据关联主键查询维表信息,并添加到当前数据中,并向下游传递。但是,该方案的维表数据一般通过离线定时更新,主要应用在维度更新频率低的场景。
[0007]中国专利申请号202211457131.3公开了一种FlinkSQL维表join实现方法、设备、介质,该方法主要监听中间件是否有新数据,若是,从所述中间件获取SQL来源表;根据所述SQL来源表,生成企业服务总线Esb接口信息;根据所述企业服务总线Esb接口信息,查询并获取维表数据;针对所述维表数据,通过预设的运算处理,获取处理结果并存储至预设位置,实现维表的join。该方法,虽然对于通用维表关联场景提高维表数据的时效性。但是,如果针对事实表和维表数据都产生于数据库中并通过CDC方式同步后关联的场景仍不能满足,同时同步过程中维表数据可能落后事实表数据,当事实表关联时,维表数据仍然没有准备完成的现象,对于关联不上的数据统计问题,目前仍然没有好的实现方案。

技术实现思路

[0008]本专利技术目的在于针对现有技术的不足,提出一种Flink关于CDC数据维表延迟关联
实现方法、系统、装置及存储介质,解决事实表和维表数据都从数据库同步,并满足维表数据更新慢问题;解决在维表同步速度晚于事实表的情况下,在一定时间范围内数据关联失败问题;解决通过CDC方式同步的事实表,当同一主键的多条数据维表关联,如果第一条关联失败,后边关联成功,导致数据乱序的问题;解决对于非常规类型数据的关联失败统计问题。
[0009]本专利技术的目的是通过以下技术方案来实现的:一种Flink关于CDC数据维表延迟关联实现方法,该方法包括以下步骤:
[0010](1)将事实表和维度表数据产生存储在业务数据库中;
[0011](2)业务数据同步到Kafka队列:通过Flink框架和CDC技术实现流式数据同步,分别采集维表和事实表变更日志到Kafka的不同Topic中;
[0012](3)维度表数据同步:通过配置Flink作业消费Kafka中维表数据输出到维表数据库中。
[0013](4)消费实时表数据:通过配置Flink作业,分别从事实表的Topic和延迟队列的Topic中消费数据;
[0014](5)根据条件关联维度表:在步骤4接收到数据后,根据维表主键从维表数据库关联维度信息,并把关联条件处理后当做关联主键添加到数据中;
[0015](6)关联维度表成功判断:根据查询结果判断是否关联成功,如果关联成功,数据继续执行后续处理,如果关联失败,需要执行重试操作,把数据存放到缓存系统。
[0016](7)关联缓存标记存在:当关联维度表成功后,根据关联主键查看缓存系统,缓存主键是否存在,如果不存在,表示数据都正常关联成功,直接输出到宽表队列;如果存在,说明存在关联失败数据,为了保证相同主键的数据顺序一致,需要进一步做判断处理,当数据中没有缓存系统序号时,表示该条数据顺序晚于缓存系统中数据,输出到缓存系统;如果数据中存在缓存系统序号,判断序号是否小于缓存系统当前序列号,如果小于,说明顺序早于缓存系统数据,直接输出数据到宽表队列,如果大于,需要继续输出到缓存系统,保障前边数据都关联成功并输出。
[0017](8)宽表Kafka队列:事实表数据关联维表信息后的最终数据,输出到kafka的Topic中。
[0018]进一步地,步骤(3)中,Flink作业一直运行,只要业务表中维表数据有变更,变更数据就能实时同步到分析系统的维表数据库中。
[0019]进一步地,步骤(6)中,缓存系统数据结构由主键列表和排序队列组成,其中主键信息包括相同主键队列中的最小时间,每个主键对应一个有序队列,顺序按照时间排序;当最小时间数据移除后,主键中的时间也重新刷新取队列中最小值。
[0020]进一步地,步骤(6)中,通过定时程序,从缓存系统获取到期主键,并根据主键获取到期数据,结合数据中的重试次数和配置中的最大重试次数做比较,如果数据没有达到最大重试次数,根据配置重试时间间隔,需要更新数据中下次到期时间,并把数据输出到延迟队列中;如果判断数据已经达到最大重试次数,则把数据输出到超时队列中。
[0021]第二方面,本专利技术还提供了一种Flink关于CDC数据维表延迟关联实现系统,该系统包括业务数据同步模块、维度表数据同步模块、消费实时表数据模块、根据条件关联维度表模块、关联维度表成功判断模块、判断关联缓存标记是否存在模块和宽表Kafka队列模
块;
[0022]所述业务数据同步模块用于将事实表和维度表数据产生存储在业务数据库中,通过Flink框架和CDC技术实现流式数据同步,分别采集维表和事实表变更日志到Kafka的不同Topic中;
[0023]所述维度表数据同步模块用于通过配置Flink作业消费Kafka中维表数据输出到维表数据库中。
[0024]所述消费实时表数据模块用于通过配置Flink作业,分别从事实表的Topic和延迟队列的Topic中消费数据;
[0025]所述根据条件关联维度表模块用于接收到消费实时表数据模块的数据后,根据维表主键从维表数据库关联维度信息,并把关联条件处理后当做关联主键添加到数据中;
[0026]所述关联维度表成功判断模块用于根据查询结果判断是否关联成功,如果关联成功,数据继续执行后续处理,如果关联失败,需要执行重本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Flink关于CDC数据维表延迟关联实现方法,其特征在于,该方法包括以下步骤:(1)将事实表和维度表数据产生存储在业务数据库中;(2)业务数据同步到Kafka队列:通过Flink框架和CDC技术实现流式数据同步,分别采集维表和事实表变更日志到Kafka的不同Topic中;(3)维度表数据同步:通过配置Flink作业消费Kafka中维表数据输出到维表数据库中;(4)消费实时表数据:通过配置Flink作业,分别从事实表的Topic和延迟队列的Topic中消费数据;(5)根据条件关联维度表:在步骤(4)接收到数据后,根据维表主键从维表数据库关联维度信息,并把关联条件处理后当做关联主键添加到数据中;(6)关联维度表成功判断:根据查询结果判断是否关联成功,如果关联成功,数据继续执行后续处理,如果关联失败,需要执行重试操作,把数据存放到缓存系统;(7)关联缓存标记存在:当关联维度表成功后,根据关联主键查看缓存系统,缓存主键是否存在,如果不存在,表示数据都正常关联成功,直接输出到宽表队列;如果存在,说明存在关联失败数据,为了保证相同主键的数据顺序一致,需要进一步做判断处理,当数据中没有缓存系统序号时,表示该条数据顺序晚于缓存系统中数据,输出到缓存系统;如果数据中存在缓存系统序号,判断序号是否小于缓存系统当前序列号,如果小于,说明顺序早于缓存系统数据,直接输出数据到宽表队列,如果大于,需要继续输出到缓存系统,保障前边数据都关联成功并输出;(8)宽表Kafka队列:事实表数据关联维表信息后的最终数据,输出到kafka的Topic中。2.根据权利要求1所述的一种Flink关于CDC数据维表延迟关联实现方法,其特征在于,步骤(3)中,Flink作业一直运行,只要业务表中维表数据有变更,变更数据就能实时同步到分析系统的维表数据库中。3.根据权利要求1所述的一种Flink关于CDC数据维表延迟关联实现方法,其特征在于,步骤(6)中,缓存系统数据结构由主键列表和排序队列组成,其中主键信息包括相同主键队列中的最小时间,每个主键对应一个有序队列,顺序按照时间排序;当最小时间数据移除后,主键中的时间也重新刷新取队列中最小值。4.根据权利要求3所述的一种Flink关于CDC数据维表延迟关联实现方法,其特征在于,步骤(6)中,通过定时程序,从缓存系统获取到期主键,并根据主键获取到期数据,结合数据中的重试次数和配置中的最大重试次数做比较,如果数据没有达到最大重试次数,根据配置重试时间间隔,需要更新数据中...

【专利技术属性】
技术研发人员:战亚楠王刚王新根汪陈笑马顺华
申请(专利权)人:杭州邦睿科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1