CN115587118A - 任务数据的维表关联处理方法及装置、电子设备 - Google Patents
任务数据的维表关联处理方法及装置、电子设备 Download PDFInfo
- Publication number
- CN115587118A CN115587118A CN202211173590.9A CN202211173590A CN115587118A CN 115587118 A CN115587118 A CN 115587118A CN 202211173590 A CN202211173590 A CN 202211173590A CN 115587118 A CN115587118 A CN 115587118A
- Authority
- CN
- China
- Prior art keywords
- target
- dimension table
- dimension
- sub
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种任务数据的维表关联处理方法及装置、电子设备。该方法包括:根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,每个子维表与需要进行关联的目标作业对应,目标作业为目标任务包括的多个作业之一;将多个子维表加载至目标作业对应的缓存,缓存为多个;在目标作业运行的情况下,从目标作业对应的缓存中,将存储的子维表与目标作业进行关联;通过运行目标任务的多个作业,将目标维表与目标任务进行关联。解决了相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
Description
技术领域
本申请涉及数据流处理领域,具体而言,涉及一种任务数据的维表关联处理方法及装置、电子设备。
背景技术
随着大数据技术的发展和用户需求的提高,如何快速有效地找出蕴藏在海量数据中的信息成为大数据时代面临的热点。通常在处理大数据量的分析计算均会采用分布式引擎如Apache Flink,兼备了低延时和高吞吐的优点。以下将以Apache Flink为例简单说明数据处理的流程,Flink引擎支持用户编写SQL或Java代码等形式定义数据计算的逻辑,然后会提交给任务管理器JobManager(以下简称JM)管理节点,JM将数据和任务切分后分配给作业管理器TaskManager(以下简称TM)作业节点,TM中将执行具体的作业Task,所有的作业执行完成后结果会汇总至JM。分布式的核心思想是将数据任务切分为具体的作业,由一个个作业处理不同的数据任务片段,最终汇总形成数据任务的计算结果。
在实际生产中,经常会有这样的需求,需要以主数据流作为基础,然后关联大量的维度表(Dimension Table,维表)来补充一些属性。例如,客户端上报的用户行为日志只包含了城市Id,可是下游处理数据需要城市名字。这是一个典型的数据流与维表关联Join的问题。这里所说的维表与数据仓库中的概念类似,是维度属性的集合,比如商品维,地点维,用户维等。
主流的处理方式是每当系统启动时,就将维表的数据全部加载到缓存中,然后数据在缓存中进行关联,不需要直接访问外部数据库。这种方式的优势是只需要一次性地访问外部数据库,大大提高了效率。但问题在于,一旦维表数据发生更新,那么Flink引擎是无法感知的,可能会出现维表数据不一致,针对这种情况通常采取周期全量拉取维表数据的改进方案。
现有技术中存在一种周期全量拉取维表数据的改进方案,通过周期性的清空缓存并重新加载维表数据,达到维表更新数据被感知的目的。但是缺陷也明显,系统启动时加载维表,短期数据库的压力很大,数据处理过程中也会对数据库造成周期性短暂的压力,可能影响业务稳定性。而且维表数据不能及时更新:维度信息在一段时间内可能已经产生变化如新增数据或修改数据,但是只能在固定周期才会被同步和感知。
针对相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种任务数据的维表关联处理方法及装置、电子设备,以解决相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种任务数据的维表关联处理方法,应用于电子设备,对消息队列中的任务数据,与数据库中的目标维表进行关联,所述方法包括:根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个所述子维表与需要进行关联的目标作业对应,所述目标作业为所述目标任务包括的多个作业之一;将多个子维表加载至所述目标作业对应的缓存,其中,所述缓存为多个;在所述目标作业运行的情况下,从所述目标作业对应的缓存中,将存储的子维表与所述目标作业进行关联;通过运行所述目标任务的多个作业,将所述目标维表与所述目标任务进行关联。
作为一种可选的方案,所述缓存为所述目标作业对应的队列分区的状态缓存,所述队列分区用于运行对应的目标作业,并产生对应作业的作业数据,所述方法还包括:监听到所述目标维表发生变更的情况下,将维表变更数据发送至所述目标作业对应的队列分区的状态缓存中,其中,所述维表变更数据与所述状态缓存中的至少一个子维表对应;在所述状态缓存中更新所述维表变更数据对应的子维表。
作为一种可选的方案,监听到所述目标维表发生变更的情况下,将所述维表变更数据发送至所述目标作业对应的队列分区的状态缓存中包括:监听到数据库发送的维表变更数据流中包含维表变更数据的情况下,确定所述目标维表发生变更,其中,所述数据库用于存储所述目标维表,在所述目标维表发生变更的情况下,生成对应的维表变更数据;在所述目标维表发生变更的情况下,通过所述队列分区的状态缓存,从所述维表变更数据流中获取所述维表变更数据。
作为一种可选的方案,根据预设分区规则对需要与目标任务数据关联的目标维表进行分区,得到多个子维表包括:确定消息队列的多个队列分区的分区规则,其中,所述消息队列包括多个队列分区,所述消息队列用于按照所述分区规则将所述目标任务划分为多个作业,将多个作业分配至不同的队列分区运行;将所述分区规则作为所述预设分区规则,按照所述预设分区规则,将所述目标维表划分为多个子维表,其中,每个队列分区与所述队列分区运行的目标作业对应的子维表相对应。
作为一种可选的方案,所述分区规则为按照用户标识对所述目标任务进行划分,所述按照所述预设分区规则,将所述维表划分为多个队列分区分别对应的多个子维表的步骤包括:将所述目标维表的维数据按照不同队列分区对应的用户标识,划分为不同队列对应的子维表,其中,所述目标维表中的每个维数据包括用户标识。
作为一种可选的方案,将多个子维表加载至所述目标作业对应的缓存包括:在所述目标任务中的所述目标作业启动的情况下,将所述目标作业对应的子维表加载到所述目标作业对应的缓存中,其中,所述缓存为所述目标作业对应的队列分区的状态缓存。
作为一种可选的方案,在所述目标作业运行的情况下,从所述目标作业对应的缓存中,获取存储的子维表与所述目标作业进行关联包括:在所述目标作业运行的情况下,从所述缓存中获取所述缓存中存储的唯一一个子维表,或者存储的多个版本的子维表中版本最新的子维表;将所述获取的子维表与所述目标作业进行关联。
为了实现上述目的,根据本申请的另一方面,提供了一种任务数据的维表关联处理装置,包括:分区模块,用于根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个所述子维表与需要进行关联的目标作业对应,所述目标作业为所述目标任务包括的多个作业之一;加载模块,用于将多个子维表加载至所述目标作业对应的缓存,其中,所述缓存为多个;关联模块,用于在所述目标作业运行的情况下,从所述目标作业对应的缓存中,获取存储的子维表与所述目标作业进行关联;运行模块,用于通过运行所述目标任务的多个作业,将所述目标维表与所述目标任务进行关联。
根据本申请的另一方面,还提供了一种计算机可读存储介质,所述处存储介质用于存储程序,其中,所述程序执行上述中任意一项所述的任务数据的维表关联处理方法。
根据本申请的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述中任意一项所述的任务数据的维表关联处理方法。
通过本申请,通过按照预设分区规则对目标维表进行分区,然后将分区得到的多个子维表分别缓存到各个作业对应的缓存中,在某一个目标作业运行的情况下,从缓存中将存储的子维表与目标作业关联,通过将目标任务的多个作业进行运行,实现目标任务与目标维表的关联。也即是相对于每个作业都不用缓存全量的维表,只需要每个作业缓存自己对应的子维表,不仅提高关联速度和效率,而且占用资源比原来大大降低。进而解决了相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的一种任务数据的维表关联处理方法的流程图;
图2是根据本申请实施例提供的维表分区加载方法的示意图;
图3是根据本申请实施例提供的维表关联处理的整体流程的示意图;
图4是根据本申请实施例提供的分区数据流的作业的子维表关联流程的示意图;
图5是根据本申请实施例提供的根据维表更新日志更新缓存的子维表的示意图;
图6是根据本申请实施例提供的一种任务数据的维表关联处理装置的示意图;
图7是根据本申请实施例提供的一种电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的一种任务数据的维表关联处理方法的流程图,如图1所示,应用于电子设备,该电子设备可以为数据流处理器,对消息队列中的任务数据,与数据库中的目标维表进行关联,该方法包括如下步骤:
步骤S101,根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个子维表与需要进行关联的目标作业对应,目标作业为目标任务包括的多个作业之一;
步骤S102,将多个子维表加载至目标作业对应的缓存,其中,缓存为多个;
步骤S103,在目标作业运行的情况下,从目标作业对应的缓存中,将存储的子维表与目标作业进行关联;
步骤S104,通过运行目标任务的多个作业,将目标维表与目标任务进行关联。
上述步骤的执行主体可以为数据流处理器,可以与消息队列Kafka和关系型数据库Datebase在一个物理硬件上,在模块功能上,与消息队列和关系型数据库是独立的。如图1所示,现有技术中,消息队列输出的数据流在进行关系型数据库中维表的关联时,需要从缓存中拉取全量维表与整个数据流进行关联,而对于缓存cache全量拉取和存储维表,存在占用资源,效率较低。而且缓存是定期重新全量加载关系型数据库中的维表,在维表更新时,无法及时获知和获取,导致部分关联的维表是存在错误的。
本实施例通过上述步骤,通过按照预设分区规则对目标维表进行分区,然后将分区得到的多个子维表分别缓存到各个作业对应的缓存中,在目标作业运行的情况下,从缓存中将存储的子维表与目标作业关联,通过将目标任务的多个作业进行运行,实现目标任务与目标维表的关联。也即是相对于每个作业都不用缓存全量的维表,只需要每个作业缓存自己对应的子维表,不仅提高关联速度和效率,而且占用资源比原来大大降低。进而解决了相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
上述预设分区规则可以为消息队列的队列分区规则,队列分区是消息队列创建的,作业系统为了提高目标任务的处理效率,将目标任务分成多个作业,并行进行处理。具体可以通过消息队列将不同的作业分给不同的队列分区,由不同的队列分区进行处理。对应的,消息队列接收的目标任务的主数据流,也会划分成多个分区数据流,分别流向对应的队列分区进行处理。
这种情况下,如果要对目标任务的数据流进行维表关联,就可以分别在每个队列分区的分区数据流中进行关联,每个队列分区都设置有对应的缓存,来缓存分区数据流的子维表。例如,Kafka消息队列的队列分区,设置有state状态缓存,就可以作为上述缓存使用,来存储对应的子维表。也即是将目标维表按照与队列分区相同的分区规则进行分区,得到多个子维表。使得子维表与队列分区对应,与队列分区的分区数据流对应,方便后续进行关联,避免了不同分区规则导致的不同的队列分区重复缓存不同的子维表,造成资源浪费的问题。
每个子维表包括与对应的目标作业进行关联的维数据,目标作业为目标任务包括的多个作业之一。此处是从单个作业的角度出发,描述单个作业在与子维表进行关联过程中的步骤,该目标作业可以为目标任务的任意一个作业。在实际的实施过程中,多个不同的作业与子维表关联的过程可以是并行的,因为,队列分区的数据处理是并行的,这样可以极大的提高维表关联效率和速度。
在一种可选的实施方式中,以大数据处理引擎Flink的数据流的目标维表关联方式为例进行说明。需要说明的是,大数据的处理通常可以分为离线处理和实时处理,在离线处理方面分布式计算平台Hadoop提供了很好的解决方案,分布式计算平台不仅可以用来存储海量数据,还以用来计算海量数据。但随着科技的进步和人类生活方式的改变,无论是传统企业还是互联网公司都已经不再满足于离线处理,实时处理的需求和重要性日益增长;同时,对这些数据的消费需求也越来越复杂,比如说要进行毫秒级处理、按事件时间窗口计算等。这时针对流式数据处理的框架也逐渐涌现,首先说分布式实时计算系统Storm,以其分布式、高可靠、低延时的特性,迅速成为了流式计算的首选框架;其次是数据流处理网络Spark Streaming,主要将流式数据根据一定的时间间隔拆分成一批批数据,相对于Storm提高了吞吐量;最后说一下当下的主流实时处理引擎Apache Flink,是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算,可以同时针对流和批的分布式处理引擎,其全新的设计兼备了低延时和高吞吐的优点。
在数据处理引擎Flink中,目标维表的数据一般存储在关系型数据库Datebase中,具体可以通过预定的方式进行存储,例如Mysql、PostgreSQL等。同时目标维表一般是动态表,数据有可能不变,但实际情况下,目标维表通常表现为变化缓慢的数据,而且绝大部分情况下是新增数据记录,修改数据记录的频率非常低。随着时间的推移和数据的积累,目标维表的体量也会越来越大,这也给数据流与维表关联带来了很多新的难题。
实时查询维表是目前一种常见的方案,是指用户在数据处理引擎Flink的算子中直接访问外部数据库,比如用MySQL来进行关联,这种方式是同步方式,数据保证是最新的。但是,当数据流计算数据过大,会对外部系统带来巨大的访问压力,一旦出现比如连接失败、线程池满等情况,由于是同步调用,所以一般会导致线程阻塞、作业Task等待数据返回,影响整体任务的吞吐量。而且这种方案对外部系统的QPS(Queries Per Second,每秒查询率)要求较高,在大数据实时计算场景下,QPS远远高于普通的后台系统,峰值高达十万到几十万,整体作业瓶颈转移到外部系统。显然是满足不了维表实时更新的要求。
而全量加载作为另一种方案,在启动时完成一次加载,也就是作业初始化时会首先读取目标维表的数据放在内存中;同时在后续周期性加载维表到缓存从而实现目标维表更新的方案实现简单,但是有三个很直观的缺陷:启动时加载目标维表,短期数据库的压力很大;数据处理过程中也会对数据库造成周期性短暂的压力,可能影响业务稳定性;目标维表的数据不能及时更新:维度信息在一段时间内可能已经产生变化如新增数据或修改数据,但是只能在固定周期才会被同步和感知。
本实施方式针对维表数据量大、维表数据存在不定期更新的场景下,利用启动时预加载分区维表,能够承载的目标维表的数据量更大,降低单个作业占用的内存和维表数据库的读取压力;采用维表变更日志流的方式,能够实时感知到维表数据的变化,将维表关联转变为两个数据流的关联,有效解决对于维表数据变更导致关联不上的问题。
通常的维表缓存方案都是启动时全量加载至各个实际执行数据处理的作业的内存中,会对数据库造成很大压力,同时导致各个作业的内存占用非常高。因此,本实施方式提前按照业务数据的特点自定义分区策略(此处需要对数据处理引擎Flink等计算引擎进行扩展),使得每个作业仅需加载对应的分区维表数据即可;这样显著降低启动是对数据库访问的压力,同时有效降低各个作业的内存占用;即使当维表数据很大时,也具备很好的扩展性。此处通常不会直接采用现有的KeyBy算子采用哈希分区(Hash)的方式分区,而是根据业务数据的特征使用自定义分区。
图3是根据本申请实施例提供的维表关联处理的整体流程的示意图,如图3所示,利用每个作业预加载分区维表的方式,有效解决每个作业都加载全量维表数据导致内存耗费的不足,降低初始化时多个作业对数据库的访问压力,避免了运行时为了感知维表变更对数据库的持续链接或周期监听动作;采用维表变更日志流的方式,做到对维表数据变更的实时感知,并实时同步更新至状态缓存的维表分区数据;实现数据流与维表关联的实时、准确的结果数据。
具体如下:按照业务自身的需求以及所需关联的维表特征制定一个自定义的分区规则;作业启动时按照上述分区规则预加载对应分区的维表数据;当维表有数据变更时,维表变更日志流会及时流向维表对应分区的状态缓存,保证其中存储的为最新的维表数据;当主数据流的记录到来时,每个作业仅需要直接去关联状态缓存中的缓存数据即可,主数据流到来后总会和最新的维表数据进行关联。
可选的,上述步骤S101根据预设分区规则对需要与目标任务数据关联的目标维表进行分区,得到多个子维表包括:确定消息队列的多个队列分区的分区规则,其中,消息队列包括多个队列分区,消息队列用于按照分区规则将目标任务划分为多个作业,将多个作业分配至不同的队列分区运行;将分区规则作为预设分区规则,按照预设分区规则,将目标维表划分为多个子维表,其中,每个队列分区与队列分区运行的目标作业对应的子维表相对应。
图2是根据本申请实施例提供的维表分区加载方法的示意图,如图2所示,此处将详细阐述作业如何与维度表分区进行关联。一个任务Job会生成n个作业Task,每个作业会有一个序号,如Id;预加载分区维表整体的思路是结合业务特征将维表数据进行切分,按照一定规则如Key的取值范围或时间段等,将维表进行N分区,然后依次分给对应的作业,举例如下,任务划分为3个作业,将维度表的业务数据按照用户ID(user_id)划分为Task1(0-999)、Task2(1000-1999)、Task3(2000-2999),那么在预加载时根据作业的ID和并行度来计算当前作业应该加载的维表分区数据。
可选的,将多个子维表加载至目标作业对应的缓存包括:在目标任务中的目标作业启动的情况下,将目标作业对应的子维表加载到目标作业对应的缓存中,其中,缓存为目标作业对应的队列分区的状态缓存。
以便后续作业运行时,直接从状态缓存中拉取对应的子维表进行关联,避免作业运行已经开始,状态缓存中仍然没有缓存好子维表,就需要作业运行暂停,等候子维表缓存完毕才能继续运行的问题。也避免了作业未启动,就缓存子维表,等待作业启动运行,可能需要子维表长期存储,在状态缓存中不变进行存储的问题。
图4是根据本申请实施例提供的分区数据流的作业的子维表关联流程的示意图,如图4所示,为作业Task启动时按照上述分区规则预加载对应分区的维表数据,主要有以下步骤:获取当前任务中数据处理的作业数量假设为N,通常在任务初始化完成后即确定;根据业务场景将维度表划分为N分区,还是按照用户ID(user_id)举例,取值为0-999的数据将会被预加载至作业Task1所在的状态缓存中,其他依次类推;按照上述维表划分同样的规则,主数据流中也根据用户ID(user_id)进行分发,取值为0-999的数据将会被分配给作业Task1进行处理,其他以此类推;假如此时主数据流需要关联维度表信息,每个作业仅需关联其自身的状态缓存已经加载的维表分区数据,即可完成关联。
可选的,分区规则为按照用户标识对目标任务进行划分,按照预设分区规则,将维表划分为多个队列分区分别对应的多个子维表的步骤包括:将目标维表的维数据按照不同队列分区对应的用户标识,划分为不同队列对应的子维表,其中,目标维表中的每个维数据包括用户标识。
也即是将目标维表按照与队列分区相同的分区规则进行分区,得到多个子维表。使得子维表与队列分区对应,与队列分区的分区数据流对应,方便后续进行关联,避免了不同分区规则导致的不同的队列分区重复缓存不同的子维表,造成资源浪费的问题。
可选的,缓存为目标作业对应的队列分区的状态缓存,队列分区用于运行对应的目标作业,并产生对应作业的作业数据,上述方法还包括:监听到目标维表发生变更的情况下,将维表变更数据发送至目标作业对应的队列分区的状态缓存中,其中,维表变更数据与状态缓存中的至少一个子维表对应;在状态缓存中更新维表变更数据对应的子维表。
目标维表存储在关系型数据库中,理论上,也可以存储在其他的数据库中,本实施例采用关系型数据库,具有更好的存储和读写性能。关系型数据库通过维表变更数据流向队列分区的状态缓存发送维表变更数据,维表变更数据流是持续存在的,只不过目标维表不发生变更情况下,维表变更数据流没有数据传输,在发生变更的情况下,即时产生维表变更数据,并通过维表变更数据流发送维表变更数据。
作为一种可选的方案,监听到目标维表发生变更的情况下,将维表变更数据发送至目标作业对应的队列分区的状态缓存中包括:监听到数据库发送的维表变更数据流中包含维表变更数据的情况下,确定目标维表发生变更,其中,数据库用于存储目标维表,在目标维表发生变更的情况下,生成对应的维表变更数据;在目标维表发生变更的情况下,通过队列分区的状态缓存,从维表变更数据流中获取维表变更数据。此处的数据库可以为上述关系型数据库Datebase。
现有技术中以往在应对维表数据新增等情况时,往往采用周期性重载的方式,清空现有缓存,然后全量加载一份最新的维表数据;实际情况下,维表通常表现为变化缓慢的数据,数据变更的频率比较低。图5是根据本申请实施例提供的根据维表更新日志更新缓存的子维表的示意图,如图5所示,本实施例提出采用维表变更日志流的方式,能够实时感知到维表数据的变化,有效解决对于维表数据变更不能及时感知并同步,进而导致关联不上的问题。主要关注维表数据量较大且存在不定期变更的场景,包含数据的修改、新增、删除等操作,使用预加载分区维表以及维表变更日志流的方式,能够支持更大数据量的维表,同时做的实时感知维表数据的变更,提升维表关联的实时性和准确性。
可选的,在所述目标作业运行的情况下,从所述目标作业对应的缓存中,获取存储的子维表与所述目标作业进行关联包括:在所述目标作业运行的情况下,从所述缓存中获取所述缓存中存储的唯一一个子维表,或者存储的多个版本的子维表中版本最新的子维表;将所述获取的子维表与所述目标作业进行关联。
由于目标维表的变更,可以通过维表变更数据流实时将维表变更数据发送至状态缓存中,在关联时状态缓存中可能存在多个版本的子维表。如图4所示,目标作业在运行时,若缓存中只有唯一一个子维表,则说明,子维表未更新,或者采用了删除机制,将最新版本之外的子维表都删除了,只保留了一个可以直接使用的子维表,则直接对该子维表获取,若缓存中存储多个子维表,则说明存在多个版本的子维表,获取子维表时,需要从缓存中拉取版本最新的子维表,不用考虑状态缓存中是否存在其他的旧版本的子维表。避免了比较和判断,提高了关联的效率。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种任务数据的维表关联处理装置,需要说明的是,本申请实施例的任务数据的维表关联处理装置可以用于执行本申请实施例所提供的用于任务数据的维表关联处理方法。以下对本申请实施例提供的任务数据的维表关联处理装置进行介绍。
图6是根据本申请实施例提供的一种任务数据的维表关联处理装置的示意图,如图6所示,该装置包括:分区模块62,加载模块64,关联模块66,运行模块68,下面对该装置进行详细说明。
分区模块62,用于根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个子维表与需要进行关联的目标作业对应,目标作业为目标任务包括的多个作业之一;加载模块64,与上述分区模块62相连,用于将多个子维表加载至目标作业对应的缓存,其中,缓存为多个;关联模块66,与上述加载模块64相连,用于在目标作业运行的情况下,从目标作业对应的缓存中,获取存储的子维表与目标作业进行关联;运行模块68,与上述关联模块66相连,用于通过运行目标任务的多个作业,将目标维表与目标任务进行关联。
本申请实施例提供的任务数据的维表关联处理装置,通过按照预设分区规则对目标维表进行分区,然后将分区得到的多个子维表分别缓存到各个作业对应的缓存中,在目标作业运行的情况下,从缓存中将对应的子维表与目标作业关联,通过将目标任务的多个作业进行运行,实现目标任务与目标维表的关联。也即是相对于每个作业都不用缓存全量的维表,只需要每个作业缓存自己对应的子维表,不仅提高关联速度和效率,而且占用资源比原来大大降低。进而解决了相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
上述任务数据的维表关联处理装置包括处理器和存储器,上述分区模块62,加载模块64,关联模块66,运行模块68等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决了相关技术中对分布式数据流在于维表进行关联时,需要将全量维表进行预加载,不仅占用资源,而且维表更新效率低的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述任务数据的维表关联处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述任务数据的维表关联处理方法。
图7是根据本申请实施例提供的一种电子设备的示意图,如图7所示,本申请实施例提供了一种电子设备70,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述任一方法的步骤。
本文中的设备可以是服务器、PC等。
本申请还提供了一种计算机程序产品,当在任务数据的维表关联处理设备上执行时,适于执行初始化有上述任一方法步骤的程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程任务数据的维表关联处理设备的处理器以产生一个机器,使得通过计算机或其他可编程任务数据的维表关联处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程任务数据的维表关联处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程任务数据的维表关联处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种任务数据的维表关联处理方法,其特征在于,应用于电子设备,对消息队列中的任务数据,与数据库中的目标维表进行关联,所述方法包括:
根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个所述子维表与需要进行关联的目标作业对应,所述目标作业为所述目标任务包括的多个作业之一;
将多个子维表加载至所述目标作业对应的缓存,其中,所述缓存为多个;
在所述目标作业运行的情况下,从所述目标作业对应的缓存中,将存储的子维表与所述目标作业进行关联;
通过运行所述目标任务的多个作业,将所述目标维表与所述目标任务进行关联。
2.根据权利要求1所述的方法,其特征在于,所述缓存为所述目标作业对应的队列分区的状态缓存,所述队列分区用于运行对应的目标作业,并产生对应作业的作业数据,所述方法还包括:
监听到所述目标维表发生变更的情况下,将维表变更数据发送至所述目标作业对应的队列分区的状态缓存中,其中,所述维表变更数据与所述状态缓存中的至少一个子维表对应;
在所述状态缓存中更新所述维表变更数据对应的子维表。
3.根据权利要求2所述的方法,其特征在于,监听到所述目标维表发生变更的情况下,将所述维表变更数据发送至所述目标作业对应的队列分区的状态缓存中包括:
监听到数据库发送的维表变更数据流中包含维表变更数据的情况下,确定所述目标维表发生变更,其中,所述数据库用于存储所述目标维表,在所述目标维表发生变更的情况下,生成对应的维表变更数据;
在所述目标维表发生变更的情况下,通过所述队列分区的状态缓存,从所述维表变更数据流中获取所述维表变更数据。
4.根据权利要求1所述的方法,其特征在于,根据预设分区规则对需要与目标任务数据关联的目标维表进行分区,得到多个子维表包括:
确定消息队列的多个队列分区的分区规则,其中,所述消息队列包括多个队列分区,所述消息队列用于按照所述分区规则将所述目标任务划分为多个作业,将多个作业分配至不同的队列分区运行;
将所述分区规则作为所述预设分区规则,按照所述预设分区规则,将所述目标维表划分为多个子维表,其中,每个队列分区与所述队列分区运行的目标作业对应的子维表相对应。
5.根据权利要求4述的方法,其特征在于,所述分区规则为按照用户标识对所述目标任务进行划分,所述按照所述预设分区规则,将所述维表划分为多个队列分区分别对应的多个子维表的步骤包括:
将所述目标维表的维数据按照不同队列分区对应的用户标识,划分为不同队列对应的子维表,其中,所述目标维表中的每个维数据包括用户标识。
6.根据权利要求1述的方法,其特征在于,将多个子维表加载至所述目标作业对应的缓存包括:
在所述目标任务中的所述目标作业启动的情况下,将所述目标作业对应的子维表加载到所述目标作业对应的缓存中,其中,所述缓存为所述目标作业对应的队列分区的状态缓存。
7.根据权利要求1所述的方法,其特征在于,在所述目标作业运行的情况下,从所述目标作业对应的缓存中,获取存储的子维表与所述目标作业进行关联包括:
在所述目标作业运行的情况下,从所述缓存中获取所述缓存中存储的唯一一个子维表,或者存储的多个版本的子维表中版本最新的子维表;
将所述获取的子维表与所述目标作业进行关联。
8.一种任务数据的维表关联处理装置,其特征在于,包括:
分区模块,用于根据预设分区规则对需要与目标任务关联的目标维表进行分区,得到多个子维表,其中,每个所述子维表与需要进行关联的目标作业对应,所述目标作业为所述目标任务包括的多个作业之一;
加载模块,用于将多个子维表加载至所述目标作业对应的缓存,其中,所述缓存为多个;
关联模块,用于在所述目标作业运行的情况下,从所述目标作业对应的缓存中,获取存储的子维表与所述目标作业进行关联;
运行模块,用于通过运行所述目标任务的多个作业,将所述目标维表与所述目标任务进行关联。
9.一种计算机可读存储介质,其特征在于,所述存储介质用于存储程序,其中,所述程序执行权利要求1至7中任意一项所述的任务数据的维表关联处理方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的任务数据的维表关联处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211173590.9A CN115587118A (zh) | 2022-09-26 | 2022-09-26 | 任务数据的维表关联处理方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211173590.9A CN115587118A (zh) | 2022-09-26 | 2022-09-26 | 任务数据的维表关联处理方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115587118A true CN115587118A (zh) | 2023-01-10 |
Family
ID=84778732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211173590.9A Pending CN115587118A (zh) | 2022-09-26 | 2022-09-26 | 任务数据的维表关联处理方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115587118A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126872A (zh) * | 2023-04-18 | 2023-05-16 | 紫金诚征信有限公司 | 一种针对实时维表的关联方法、装置及计算机可读介质 |
CN116501715A (zh) * | 2023-04-28 | 2023-07-28 | 成都赛力斯科技有限公司 | 一种多表全量数据的实时关联更新方法及装置 |
CN116842223A (zh) * | 2023-08-29 | 2023-10-03 | 天津鑫宝龙电梯集团有限公司 | 一种工况数据管理方法、装置、设备和介质 |
-
2022
- 2022-09-26 CN CN202211173590.9A patent/CN115587118A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126872A (zh) * | 2023-04-18 | 2023-05-16 | 紫金诚征信有限公司 | 一种针对实时维表的关联方法、装置及计算机可读介质 |
CN116126872B (zh) * | 2023-04-18 | 2023-06-23 | 紫金诚征信有限公司 | 一种针对实时维表的关联方法、装置及计算机可读介质 |
CN116501715A (zh) * | 2023-04-28 | 2023-07-28 | 成都赛力斯科技有限公司 | 一种多表全量数据的实时关联更新方法及装置 |
CN116501715B (zh) * | 2023-04-28 | 2024-03-12 | 重庆赛力斯凤凰智创科技有限公司 | 一种多表全量数据的实时关联更新方法及装置 |
CN116842223A (zh) * | 2023-08-29 | 2023-10-03 | 天津鑫宝龙电梯集团有限公司 | 一种工况数据管理方法、装置、设备和介质 |
CN116842223B (zh) * | 2023-08-29 | 2023-11-10 | 天津鑫宝龙电梯集团有限公司 | 一种工况数据管理方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11882054B2 (en) | Terminating data server nodes | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
EP3069495B1 (en) | Client-configurable security options for data streams | |
EP3069274B1 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
EP3069228B1 (en) | Partition-based data stream processing framework | |
US9858322B2 (en) | Data stream ingestion and persistence techniques | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN109614241B (zh) | 基于Yarn队列实现多集群多租户资源隔离的方法及系统 | |
CN109460345B (zh) | 实时数据的计算方法及系统 | |
CN111125248A (zh) | 一种大数据存储解析查询系统 | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
CN112019362B (zh) | 数据传输方法、装置、服务器、终端、系统及存储介质 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
CN115587147A (zh) | 一种数据处理方法及系统 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN114116790A (zh) | 数据处理的方法及装置 | |
CN112100283B (zh) | 一种基于Linux平台的安卓虚拟机的分时复用方法 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN115604290B (zh) | Kafka消息执行方法、装置、设备及存储介质 | |
CN115408148A (zh) | 一种分布式数据并行处理的方法及装置 | |
CN115550458A (zh) | 一种日志处理方法和相关装置 | |
CN115687525A (zh) | 客户名单的同步方法以及装置、处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |