CN112000456A - 一种任务调度方法、装置、设备及存储介质 - Google Patents
一种任务调度方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112000456A CN112000456A CN202010946286.8A CN202010946286A CN112000456A CN 112000456 A CN112000456 A CN 112000456A CN 202010946286 A CN202010946286 A CN 202010946286A CN 112000456 A CN112000456 A CN 112000456A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- value
- metadata
- data source
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种任务调度方法、装置、设备及存储介质,属于数据仓库技术领域,所述方法包括:针对读取的每个任务,获取所述任务的各个数据源;根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;若所述任务所涉及的数据已发生变化,则触发执行所述任务。实施本申请可以提高任务执行的时效性以及运算资源的使用效率。
Description
技术领域
本申请涉及数据仓库技术领域,尤其涉及一种任务调度方法、装置、设备及存储介质。
背景技术
数据仓库是用于为企业的决策提供多种类型的支持数据的数据集合,对数据仓库中的数据进行数据挖掘或数据分析等数据处理是由各种任务完成的,因而有效地调度和管理这些任务是数据仓库管理中非常重要的工作。
现有的任务调度方法主要包括手动触发调度、时间周期调度以及事件触发调度。其中,手动触发调度需要人为手动触发任务作业的执行,时效性较低;时间周期调度在任务达到时间周期后自动启动任务作业,这种调度方式在数据发生变化时不能及时响应,而在数据未发生变化时也会执行,存在重复作业的问题;事件触发调度通过引入工作流的方式,在工作流的各节点中配置事件触发条件,任务的执行是一种被动执行,健壮性较低,且工作流配置繁琐,复杂度较高。
发明内容
本申请提供了一种任务调度方法、装置、设备及存储介质,以解决现有技术在任务调度时存在重复作业及时效性低的技术问题。
为了达到所述目的,本申请采用的技术方案是:
一方面,本申请提供了一种任务调度方法,所述方法包括:
针对读取的每个任务,获取所述任务的各个数据源;
根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;
获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;
将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;
若所述任务所涉及的数据已发生变化,则触发执行所述任务。
另一方面提供了一种任务调度装置,所述装置包括:
数据源获取模块,用于针对读取的每个任务,获取所述任务的各个数据源;
第一标记值获取模块,用于根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;
第二标记值获取模块,用于获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;
数据变化确定模块,用于将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;
任务触发模块,用于在所述任务所涉及的数据已发生变化的情况下,触发执行所述任务。
另一方面提供了一种任务调度设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行如上所述的任务调度方法。
另一方面提供了一种计算机存储介质,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上所述的任务调度方法。
本申请提供的任务调度方法、装置、设备及存储介质,具有如下有益效果:
通过对各个数据源的数据更新进行记录,用以在确定任务所涉及的数据有变化的情况下,才触发任务作业执行,提高了任务执行的时效性;在数据没有变化时不会触发任务作业执行,避免占用运算资源重复作业,提高了运算资源的使用效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图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是本申请实施例提供的一种用于实现本申请实施例所提供的任务调度方法的设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先对本申请实施例中所涉及的相关术语做以下解释:
数据仓库(Data Warehouse,DW):是一个面向主题的、集成的、非易失的、随时间变化的、但信息本身相对稳定的数据集合,主要用于数据挖掘和数据分析,常见的如Hive。
元数据(Metadata):又称为解释性数据或者数据字典,用于描述数据仓库中数据库、业务数据表以及业务数据表的分区中的数据,例如数据库的名称、业务数据表的名称、业务数据表的分区名称、数据更新时间以及其他自定义的描述信息等。
OLAP(Online Analytical Processing,联机分析处理):通过制定数据的维度和指标,提交任务作业进行运算,得到多维指标分析结果。
任务:是基于数据仓库中的数据,进行数据挖掘或数据分析等数据应用时所配置的一个操作,运行任务会产生一个作业,作业的执行需要一定的运算资源,例如CPU、内存等。
任务调度:对数据仓库中成千上万个任务作业运行的一种机制。
ETL(Extract-Transform-Load,抽取-清洗转换-加载):将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中分散、凌乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。从业务系统获取数据存入数据仓库,以及在数据仓库内的数据转换和流动都可以认为是ETL的过程。
Unix时间戳:是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
在大数据领域,现有对数据仓库的数据进行任务调度时,常见的方式有手动触发调度、时间周期调度、事件触发调度等。
手动触发调度即任务作业每次执行都人为触发,数据有更新时,需要任务负责人感知并触发任务作业执行,时效性低,操作繁琐。
时间周期调度为任务设置时间周期调度规则,任务扫描模块判断到该类型调度方式的任务到达了时间触发条件,自动启动一个任务作业。例如每小时触发一次、每天固定时间(如凌晨00:00)触发一次等,任务作业在满足时间触发条件时自动执行。任务作业的执行是一个固定时间,如果时间设置得太长,当数据发生变化时,不能及时执行任务作业,时效性较低;如果时间设置得太短,当数据未发生变化时,任务作业在满足时间触发条件时还是会执行,存在重复作业的问题,降低了运算资源有效使用率。
事件触发调度通过引入工作流的方式,配置一系列的串行/并行任务,定义好各节点事件触发条件,当启动工作流后,各节点通过接收事件来触发任务执行。任务作为工作流中的一个节点,任务的执行由前一个节点执行完成后生成的事件来触发,通过前后依赖的方式触发各环节任务作业的执行,配置较繁琐。事件触发式是一种被动执行方式,任务作业的执行依赖于事件的发生,如果事件本身丢失了,则任务不会被执行。此外,如果任务运行出错了,若没有重试等逻辑,则任务作业就不会再次被触发执行,健壮性不高。
不同于现有任务调度方式,本申请实施例提供了一种基于数据变化的任务调度方法,在任务所涉及的数据有变化时,才触发任务作业的执行。
请参阅图1,其为本申请实施例提供的一种任务调度系统的结构示意图。如图1所示,该任务调度系统包括数据采集模块11、数据存储模块12、任务扫描模块13和任务执行模块14。
数据采集模块11用于通过ETL将业务系统的源数据加载至数据存储模块12的数据库122中,同时在元数据库121中对数据库122对应的元数据进行更新。所更新的元数据包括表征最近一次数据更新的目标值,该目标值的类型为任意可用于比较大小的类型,包括但不限于毫秒、秒等Unix时间戳。任务扫描模块13用于扫描预先建立的任务序列,读取任务序列中的每个任务,从数据存储模块12中获取与该任务匹配的目标值,以确定该任务所涉及的数据是否发生变化,在该任务所涉及的数据发生变化的情况下,向任务执行模块14发送任务执行请求。任务执行模块14接收到任务执行请求后,触发该任务的执行,并在任务执行完成后对该任务的数据时间进行更新。其中,任务的数据时间的类型与目标值的类型一致。
具体地,数据采集模块11包括数据采集单元111和元数据更新单元112。数据采集单元111用于采集业务系统的源数据,对源数据进行抽取和清洗转换后得到目标数据,并将目标数据保存至数据库122中对应的业务数据表或业务数据表的分区中。元数据更新单元112用于将业务数据表对应的元数据或业务数据表的分区对应的元数据存储在元数据库121中。可以理解的,在一些实施例中,数据库122和元数据库121可以是同一个数据库,数据存储模块12也可包括多个数据库122。每个数据库122包括至少一个业务数据表,每个业务数据表用于存储实际业务数据,通常数据库122可以是如Hive等数据库。元数据库121中可包括多个元数据表,每个元数据表包括多个元数据,通常使用额外的事实关系型数据库作为元数据库121,如MySQL。
具体地,任务扫描模块13包括任务读取单元131、元数据读取单元132和数据变化判断单元133。数据采集进入数据仓库的数据库122后,基于数据库122中所存储的数据进行数据分析或数据应用时会创建一系列任务即任务序列,并将任务序列存储在数据库122中。任务序列会被任务读取单元131轮询读取,将读取到的任务送入至数据变化判断单元133,或者在检测读取到任务处于就绪状态后送入至数据变化判断单元133。数据变化判断单元133在接收到任务后,从元数据读取单元132读取任务的数据源对应的目标值;根据读取到的目标值确定数据源的最近一次数据更新时间,将最近一次数据更新时间与任务的数据时间进行对比,确定任务所涉及的数据是否发生变化。在任务所涉及的数据发生变化的情况下,向任务执行模块14发送任务执行请求。
具体地,任务执行模块14包括作业执行单元141和任务更新单元142。作业执行单元141接收到数据变化判断单元133的任务执行请求后,读取该任务所涉及数据源中的数据,执行具体的数据作业。在数据作业完结后,通过任务更新单元142将对该任务所涉及数据源对应的元数据进行更新。在实际应用中,常采用OLAP对复杂的数据进行分析,以得到直观易懂的查询结果。
通过对数据仓库中的业务数据表进行ETL采集时,记录数据源对应的目标值。然后,针对每个扫描的任务,可以根据所记录的目标值确定该任务所涉及的数据是否有变化,在数据有变化的情况下,才触发任务作业的执行。相比于现有的手动触发调度、时间周期调度、事件触发调度方式,任务作业触发更及时,同时在数据未发生变化时也能避免重复作业(无用功作业),可提升数据计算效率,提高运算资源的使用效率,任务执行更健壮。
以下介绍本申请的一种任务调度方法,图2是本申请实施例提供的一种任务调度方法的流程示意图。本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2中所示,所述方法可以包括:
S201,针对读取的每个任务,获取所述任务的各个数据源。
本申请实施例中,每个数据源至少包括一个数据库,每个数据库至少包括一个业务数据表,每个业务数据表可以是分区业务数据表或非分区业务数据表。其中,非分区业务数据表是指对应业务数据表以非分区的模式建立的,分区业务数据表是指对应业务数据表是以分区的模式建立的。若业务数据表是分区业务数据表,则该业务数据表包括至少一个分区。
通常而言,在数据仓库建立业务数据表时,为了提高数据的查询速度,会使用分区的模式。在分区的模式下,通过分区的方式对业务数据表进行管理。分区的方法一般采用时间分区,例如按天分区、按天/小时分区等。以采用按天/小时分区为例,若取值如2020060120,可表示2020年6月1日20时的数据分区,若分区业务数据表中包括N个分区,则每个分区分别对应不同的天/小时。
目标数据进入数据仓库中的数据库后,基于数据库中的目标数据进行数据分析或数据应用时会创建任务序列。在创建任务序列时,会为任务序列中的每个任务配置该任务的任务信息,任务信息可以包括任务ID、任务名称、任务状态、数据源、数据源标识、任务的数据时间等。在具体实施时,任务信息的配置可参考下表所示进行设置,任务信息的内容不限于下表所示的内容,可根据任务需要自行定义。
对于任务序列中的每个任务,为了避免重复执行,可以通过任务信息中的任务状态对该任务就绪状态进行判断,只有处于就绪状态的任务才可以被执行,就绪状态为该任务的上一次作业处于已完结的状态。因而,在所述获取所述任务的各个数据源之前,还包括检测所述任务是否处于就绪状态的步骤。
具体地,所述检测所述任务是否处于就绪状态,包括:获取所述任务的任务状态;若所述任务状态不是结束状态,则所述任务不处于就绪状态;若所述任务状态是所述结束状态,则所述任务处于就绪状态。
S202,根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值。
目标值的类型可以为任意可用于大小比较的类型,例如可以是数据更新时间(如秒、毫秒等时间戳),也可以是以递增方式存储的阿拉伯数值等等。在一些实施例中,目标值还可以是日期等可表示数据更新早晚的类型。
数据仓库本身是一个数据集合,是出于分析性报告和决策支持目的而创建的,为了快速的支撑分析性报告和决策支持相关的任务,通常会将用于描述数据仓库中目标数据的元数据存储下来。为了实现对元数据的存储,可以有多种方式,例如使用XML、excel等配置文件存储或者直接存储在对应业务数据表的某个字段。可以理解地,当数据仓库所存储的数据容量较大时,配置文件所要存储的元数据的量也会随之增加。那么,在获取元数据时,需要从大量数据中进行筛选,将会严重影响获取效率,且配置文件存储的方式对于元数据的管理灵活性也较低。而将元数据直接存储在对应业务数据表中,将使得业务与应用不分离,对于数据的管理也是一种弊端。
为了提高获取效率、增强数据管理的灵活性以及实现业务与应用的分离,本申请实施例通过建立单独的元数据表对数据库对应元数据、业务数据表对应元数据以及业务数据表的分区对应元数据进行存储。
基于不同的存储方式,参照图3中所示,所述根据各个数据源对应的目标值,确定所述任务的第一标记值,包括:
S2021,根据各个数据源确定其对应的目标值的存储方式。
S2022,若所述目标值的存储方式为元数据表存储,则通过查询所述数据源对应的元数据表得到所述数据源对应的目标值。
S2023,若所述目标值的存储方式为非元数据表存储,则通过查询所述数据源对应的非元数据表得到所述数据源对应的目标值。
S2024,将查询得到的各个数据源对应的目标值中的最大值确定为所述第一标记值。
目标值的存储方式亦即元数据的存储方式,若元数据的存储方式为元数据表存储,则在一个优选的实施例中,在所述通过查询所述数据源对应的元数据表得到所述数据源对应的目标值之前,还包括构建所述数据源对应的元数据表的步骤。具体参照图4中所示,所述构建所述数据源对应的元数据表,包括:
S401,构建所述数据源中每个数据库对应的依赖关系树。
一个任务所涉及的数据源,可以是同一个数据库,也可以是不同数据库,每个数据库至少包括一个业务数据表。为了构建数据源对应的元数据表,需要基于数据源中业务数据表与数据库的从属关系,确定依赖关系树,基于依赖关系树构建数据源对应的元数据表。如图5所示,步骤401可以包括:
S4011,根据所述数据库确定所述依赖关系树的根节点。
S4012,根据所述数据库中每个业务数据表确定所述每个业务数据表对应的第一子节点,所述第一子节点从属于所述根节点。
S4013,对于所述数据库中的任意一个业务数据表,若所述业务数据表为分区业务数据表,则根据所述业务数据表中的分区确定所述分区对应的第二子节点,所述第二子节点从属于所述业务数据表对应的第一子节点。
由于业务数据表可以是以分区的模式构建即分区业务数据表,也可以是以非分区的模式构建即非分区业务数据表。相应的,数据库对应的依赖关系树包括第一种类和第二种类,第一种类对应于全部业务数据表为分区业务数据表,第二种类对应于至少一个业务数据表为非分区业务数据表。那么,第一种类对应的依赖关系树包括根节点和第一子节点,第二种类对应的依赖关系树包括根节点、第一子节点和第二子节点。其中根节点为数据库,第一子节点为业务数据表,第二子节点为分区。
举例说明,数据库1包括业务数据表a和业务数据表b,且业务数据表a和业务数据表b都是非分区业务数据表,则数据库1对应的依赖关系树包括一个根节点、第一子节点a和第一子节点b。其中,根节点为数据库1,第一子节点a为业务数据表a,第一子节点b为业务数据表b,第一子节点a和第一子节点b均从属于根节点。若如上所述的业务数据表a为分区业务数据表,且业务数据表a包括分区a1和分区a2,则数据库1对应的依赖关系树中,还包括第二子节点a1和第二子节点a2;第二子节点a1为分区a1,第二子节点a2为分区a2,第二子节点a1和第二子节点a2从属于第一子节点a。
依赖关系树的结构可参考图6中所示。在图6中,依赖关系树1为第一种类,依赖关系树2和依赖关系树3为第二种类,依赖关系树1对应于数据库中每个业务数据表均为非分区业务数据表,依赖关系树2对应于数据库中只有一个业务数据表为分区业务数据表,依赖关系树3对应于数据库中所有业务数据表均为分区业务数据表。
S402,根据各个所述依赖关系树构建所述数据源对应的元数据表。
在依赖关系树为第一种类的情况下,各个依赖关系树中均只包括根节点和第一子节点,则元数据库中包括数据库元数据表、第一元数据表和第一元数据描述表。
具体地,如图7所示,所述根据各个所述依赖关系树构建所述数据源对应的元数据表,包括:
S4021,根据所述各个依赖关系树中所有的根节点构建数据库元数据表,所述数据库元数据表以所述根节点的唯一标识为主键。
数据库元数据表(DATABASES)用于存储数据库的元数据信息,例如数据库的名称(DB_NAME)等。DATABASES中的各行对应不同的数据库,根节点的唯一标识为数据库的唯一标识(DB_ID),通过DB_ID标识不同的数据库。
S4022,根据所述各个依赖关系树中所有的第一子节点构建第一元数据表,所述第一元数据表以所述第一子节点对应的根节点的唯一标识和所述第一子节点的唯一标识为联合主键。
第一元数据表(TABLES)用于存储业务数据表的元数据信息,例如业务数据表的名称(TABLE_NAME)等。TABLES中的各行对应不同的业务数据表,第一子节点的唯一标识为业务数据表的唯一标识(TABLE_ID),与DATABASES通过DB_ID关联。DATABASES与TABLES之间是1:N的关系,即1个DB_ID在TABLES中可对应N条记录,N取决于业务数据表的个数。TABLES中包括来自不同数据库的业务数据表的记录,可通过DB_ID和TABLE_ID对TABLES中的每行记录进行唯一标识。
S4023,基于所述第一元数据表构建第一元数据描述表,所述第一元数据描述表以所述第一子节点的唯一标识和第一目标值的唯一标识为联合主键,所述第一目标值为所述第一子节点对应的业务数据表对应的目标值。
第一元数据描述表(TABLE_PARAMS)用于存储业务数据表自定义描述信息,例如业务数据表的数据条数、数据更新时间等等。TABLE_PARAMS与TABLES通过TABLE_ID关联,每一项描述信息以键-值的形式存储。可通过TABLE_ID来获取对应业务数据表的所有自定义描述信息,然后通过第一目标值的唯一标识(PARAM_KEY)得到对应的目标值(PARAM_VALUE)。为了便于描述,将TABLE_PARAMS中用于描述目标值的元数据定义为数据表元数据,各元数据表之间的关联关系可参考图8中所示。
在依赖关系树为第二种类的情况下,各个依赖关系树中除包括根节点和第一子节点外,还包括第二子节点,则元数据库中除包括数据库元数据表、第一元数据表和第一元数据描述表外,还包括第二元数据表和第二元数据描述表。
相应的,参照图9中所示,所述根据各个所述依赖关系树构建所述数据源对应的元数据表,还包括:
S4024,根据所述各个依赖关系树中所有的第二子节点构建第二元数据表,所述第二元数据表以所述第二子节点对应的第一子节点的唯一标识和所述第二子节点的唯一标识为联合主键。
第二元数据表(PARTITIONS)用于存储业务数据表的分区元数据信息,例如分区的名称(PART_NAME)。PARTITIONS中的各行对应不同的分区,第二子节点的唯一标识为分区的唯一标识(PART_ID),通过PART_ID标识不同的分区,与TABLES通过TABLE_ID关联。TABLES与PARTITIONS之间是1:N的关系,即1个TABLE_ID在PARTITIONS中对应N条记录,N取决于分区的个数。PARTITIONS中包括来自不同业务数据表的分区的记录,可通过TABLE_ID和PART_ID对第二元数据表中的每行记录进行唯一标识。
S4025,基于所述第二元数据表构建第二元数据描述表,所述第二元数据描述表以所述第二子节点的唯一标识和第一目标值的唯一标识为联合主键。
第二元数据描述表(PARTITION_PARAMS)用于存储业务数据表的分区自定义描述信息,例如分区的数据更新时间。每一项描述信息以键-值的形式存储。可通过PART_ID来获取对应分区的所有自定义描述信息,然后通过第一目标值的唯一标识(PARAM_KEY)得到对应的目标值(PARAM_VALUE)。为了便于描述,将PARTITION_PARAMS中用于描述目标值的元数据定义为分区元数据,各元数据表之间的关联关系可参考图10中所示。
需要说明的是,图8和图10仅仅是一种示例,在一些实施例中,可以根据数据描述的需要在元数据表中定义其他字段,以及定义字段的类型和字段的长度等,在本申请实施例中均不做具体的限定。
在构建数据源对应的元数据表后,若目标值的存储方式为元数据表存储,则可以获取数据源对应的数据源标识,构建元数据表查询语句,得到该数据源对应的目标值。其中,数据源标识至少包括数据库名称(DB_NAME)和业务数据表名称(TABLE_NAME)。若数据源还包括多个分区,则数据源标识还应包括每个分区的名称(PART_NAME)。每个任务所涉及的分区可以是连续的,也可不是连续的。对于连续的分区,为了减小参数配置的复杂性,在任务信息中可只设置开始分区的名称(START_PART_NAME)和结束分区的名称(END_PART_NAME)。
为了便于描述,以下以数据更新时间为目标值对目标值的查询方式进行举例说明,且数据更新时间是以毫秒为单位的Unix时间戳。
第一步,先根据数据库名称(DB_NAME)和业务数据表名称
(TABLE_NAME)从DATABASES和TABLES中获取业务数据表的唯一标识(TABLE_ID),参考SQL(Structured Query Language,结构化查询语句)如下:
SELECT TABLES.TABLE_ID AS TABLE_ID
FROM DATABASES
INNER JOIN TABLES
ON DATABASES.DB_ID=TABLES.DB_ID
WHERE DATABASES.NAME=${DB_NAME}
AND TABLES.TABLE_NAME=${TABLE_NAME}.
第二步,根据获取到的TABLE_ID,获取第一标记值。
在获取第一标记值时,需要区分该任务是全量任务还是增量任务,全量任务是每次读取业务数据表所有分区的数据,增量任务是每次只读取1个或多个分区的数据。如果是全量任务,由于业务数据表有其对应的数据表元数据(存储数据更新时间的元数据),可以直接将数据表元数据的值作为第一标记值;如果是增量任务,需要将这1个或多个分区对应的分区元数据(存储数据更新时间的元数据)中的最大值作为第一标记值。
若将存储数据表元数据和分区元数据的PARAM_KEY定义为LastDdlTime,则对于全量任务,如图11所示,从第一元数据描述表(TABLE_PARAMS)中获取PARAM_KEY为LastDdlTime对应的PARAM_VALUE即为第一标记值,参考SQL如下:
SELECT PARAM_KEY,PARAM_VALUE
FROM TABLE_PARAMS
WHERE TABLE_ID=${TABLE_ID}
AND PARAM_KEY='LastDdlTime'.
对于增量任务,如图12所示,若多个分区是连续的分区,则根据开始分区的名称(START_PART_NAME)和结束分区的名称(END_PART_NAME),从第二元数据表(PARTITIONS)和第二元数据描述表(PARTITION_PARAMS)中使用MAX聚合函数计算出业务数据表涉及分区的自定义参数聚合值,取PARAM_KEY为LastDdlTime的AGG_VALUE即为第一标记值,参考SQL如下:
SELECT PARTITION_PARAMS.PARAM_KEY AS PARAM_KEY,MAX(PARTITION_PARAMS.PARAM_VALUE)AS AGG_VALUE
FROM PARTITIONS
INNER JOIN PARTITION_PARAMS
ON PARTITIONS.PART_ID=PARTITION_PARAMS.PART_ID
WHERE PARTITIONS.TABLE_ID=${TABLE_ID}
AND PARTITIONS.PART_NAME>=${START_PART_NAME}
AND PARTITIONS.PART_NAME<=${END_PART_NAME}
GROUP BY PARTITION_PARAMS.PARAM_KEY.
需要说明的是,若多个分区不是连续的分区,其获取第一标记值的思路与上述连续分区获取的思路相同,在此不再赘述。
S203,获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值。
每个任务在执行完成后会用本次执行时所确定的第一标记值,对该任务的数据时间进行更新。
S204,将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化。
具体地,判断第二标记值是否大于第一标记值;若第二标记值大于第一标记值,则该任务所涉及的数据已发生变化;若第二标记值小于或等于第一标记值,则该任务所涉及的数据未发生变化。
S205,若所述任务所涉及的数据已发生变化,则触发执行所述任务。
作业执行单元接收到数据变化判断单元的作业执行请求后,读取涉及的数据源中的数据,执行具体的数据作业。作业开始后直到作业完结期间,任务处于“运行中”的状态,处于该状态的任务不被任务扫描模块进行调度判断,避免重复作业;作业完结后则处于“已完结”的状态,该状态下的任务可以被任务扫描模块进行调度判断。数据作业完结后,通过任务更新单元对任务的数据时间进行更新,该数据时间即为本次任务执行时所确定的第一标记值。如果任务作业未成功执行,比如在执行期间抛出异常,不对任务的数据时间进行更新,该任务会再次被扫描,以提高任务执行的健壮性。
数据仓库中数据库所存储的数据是通过ETL方式从业务系统中采集得到的,每个任务也是基于数据库所存储的数据进行创建的,因而,参照图13所示,在一些实施例中,在所述针对读取的每个任务,获取所述任务的各个数据源之前,所述方法还包括:
S1301,响应于业务采集请求,采集业务系统的源数据,所述业务采集请求包括采集模式。
S1302,对所述源数据进行抽取和清洗转换后,得到目标数据。
S1303,基于所述采集模式,将所述目标数据写入至所述业务采集请求所涉及的各个数据源中。
S1304,对所述各个数据源对应的目标值进行更新。
数据采集单元在采集数据时,一般分为两种模式:全量采集模式和增量采集模式。在全量采集模式下,从业务系统全量采集数据,先将业务数据表或业务数据表所有分区的旧数据删除,再将新采集的目标数据写入到业务数据表或业务数据表对应分区。在增量采集模式下,从业务系统增量采集数据,然后将目标数据追加写入到业务数据表或业务数据表对应分区。
在对各个数据源对应的目标值进行更新时,若目标值的存储方式为非元数据表存储,例如excel、xml等非元数据表,可直接对各个数据源对应的非元数据表中的目标值进行更新操作,对excel、xml等非元数据表的数据更新方式在现有技术中有较多的方案,在此不再赘述。
若目标值的存储方式为元数据表存储,则需要区分数据源中的业务数据表是分区业务数据表还是非分区业务数据表。若业务数据表是非分区业务数据表,则直接对该业务数据表对应的目标值进行更新。若业务数据表是分区业务数据表,则先对业务数据表中各个分区(或者所涉及分区)对应的目标值进行更新,然后使用业务数据表中所有分区(或者所有所涉及分区)对应的目标值中的最大值,对业务数据表对应的目标值进行更新。
举例说明,如图14所示,若ETL涉及的数据源为业务数据表的从分区M至分区N(N大于M)中连续的N-M+1个分区,在对每个分区数据写入后,对每个分区对应的目标值进行更新,在完成N-M+1个分区的数据写入后,取这N-M+1个分区对应的目标值中的最大值作为业务数据表对应的目标值。在图14中,目标值是以键-值对的方式存储,键定义LastDdlTime,值定义为以毫秒为单位的Unix时间戳。如图14所示,分区M对应的目标值为1591782610000,分区M+1对应的目标值为1591782620000,分区N对应的目标值为1591782630000,其他分区对应的目标值(图中未示出)小于1591782630000,则使用1591782630000作为业务数据表对应的目标值。
以下以目标值为数据更新时间,且各业务数据表均为分区业务数据表为例,对本申请实施例的任务调度方法的关键步骤进行进一步说明。如图15所示,所述方法包括:
S1501,对数据仓库中各业务数据表各分区进行ETL采集,并在元数据表中记录业务数据表各分区的数据更新时间,以及业务数据表的数据更新时间。
如图14所示,在ETL采集后,可以将数据更新时间写入或更新到TABLE_PARAMS和PARTITION_PARAMS中。PARAM_KEY定义为LastDdlTime,PARAM_VALUE取值以毫秒为单位的Unix时间戳。
S1502,扫描任务,读取任务的数据时间,以及任务所涉及业务数据表各分区的数据更新时间。
继续参考图14中所示,若该任务涉及业务数据表从分区M到分区N中连续N-M+1个分区,则得到N-M+1个数据更新时间。
S1503,根据各分区的数据更新时间和任务的数据时间,判断任务所涉及数据是否有更新。
取N-M+1个数据更新时间中的最大值,如图14中所示,数据更新时间的最大值为1591782630000。如果任务所存储的数据时间小于1591782630000,则表示任务所涉及数据有更新,执行则执行步骤S1504触发任务作业执行。如果任务所存储的数据时间大于或等于1591782630000,则表示任务所涉及数据未更新,则不触发执行该业务,返回执行步骤S1502。在下一个扫描周期,该任务将会被重新扫描。
S1504,触发任务作业执行,执行完毕后更新任务的数据时间。
数据仓库的业务数据表进行ETL采集时,在元数据表记录业务数据表以及分区的数据更新时间。任务扫描模块对预先建立的任务序列进行轮询扫描,根据已就绪任务的数据时间与该任务所涉及业务数据表各分区的数据更新时间进行对比。若业务数据表各分区的数据更新时间均小于任务的数据时间,则表明该任务所涉及数据未发生更新;否则,任务所涉及数据已发生更新,触发任务作业执行。在任务作业执行完结后,取所涉及的业务数据表各分区的数据更新时间的最大值,对任务的数据时间进行更新。
由以上本申请实施例提供的技术方案可见,本申请实施例通过对各个数据源的数据更新进行记录,用以在确定任务所涉及的数据有变化的情况下,才触发任务作业执行,提高了任务执行的时效性;数据没有变化时不会触发任务作业执行,避免占用运算资源重复作业,提高了运算资源的使用效率;使用单独的元数据表对元数据进行存储,使分析与业务分离,可提高数据查询速率和数据分析效率;只有任务作业成功执行才会更新任务的数据时间,任务执行期间出错的话,任务会再次被扫描触发,提高了任务执行的健壮性。
本申请实施例还提供了一种任务调度装置,如图16所示,所述装置可以包括:
数据源获取模块161,用于针对读取的每个任务,获取所述任务的各个数据源;
第一标记值获取模块162,用于根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;
第二标记值获取模块163,用于获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;
数据变化确定模块164,用于将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;
任务触发模块165,用于在所述任务所涉及的数据已发生变化的情况下,触发执行所述任务。
在一些实施例中,参照图17中所示,第一标记值获取模块162可以包括:
存储方式获取单元1621,用于根据各个数据源确定其对应的目标值的存储方式;
元数据表查询单元1622,用于在所述目标值的存储方式为元数据表存储的情况下,通过查询所述数据源对应的元数据表得到所述数据源对应的目标值;
非元数据表查询单元1623,用于在所述目标值的存储方式为非元数据表存储的情况下,通过查询所述数据源对应的非元数据表得到所述数据源对应的目标值;
第一标记值确定单元1624,用于将查询得到的各个数据源对应的目标值中的最大值确定为所述第一标记值。
在一些实施例中,参照图18中所示,第一标记值获取模块162还可以包括:
元数据表构建单元1625,用于构建所述数据源对应的元数据表。
具体地,如图19所示,所述元数据表构建单元1625可以包括:
第一构建单元16251,用于构建所述数据源中每个数据库对应的依赖关系树;
第二构建单元16252,用于根据各个所述依赖关系树构建所述数据源对应的元数据表。
具体地,如图20所示,第一构建单元16251可以包括:
根节点构建单元162511,用于根据所述数据库确定所述依赖关系树的根节点;
第一子节点构建单元162512,用于根据所述数据库中每个业务数据表确定所述每个业务数据表对应的第一子节点,所述第一子节点从属于所述根节点;
第二子节点构建单元162513,用于对于所述数据库中的任意一个业务数据表,若所述业务数据表为分区业务数据表,则根据所述业务数据表中的分区确定所述分区对应的第二子节点,所述第二子节点从属于所述业务数据表对应的第一子节点。
具体地,如图21所示,第二构建单元16252可以包括:
数据库元数据表构建单元162521,用于根据所述各个依赖关系树中所有的根节点构建数据库元数据表,所述数据库元数据表以所述根节点的唯一标识为主键;
第一元数据表构建单元162522,用于根据所述各个依赖关系树中所有的第一子节点构建第一元数据表,所述第一元数据表以所述第一子节点对应的根节点的唯一标识和所述第一子节点的唯一标识为联合主键;
第一元数据描述表构建单元162523,用于基于所述第一元数据表构建第一元数据描述表,所述第一元数据描述表以所述第一子节点的唯一标识和第一目标值的唯一标识为联合主键,所述第一目标值为所述第一子节点对应的业务数据表对应的目标值。
在一些实施例中,如图22所示,所述第二构建单元16252还可以包括:
第二元数据表构建单元162524,用于根据所述各个依赖关系树中所有的第二子节点构建第二元数据表,所述第二元数据表以所述第二子节点对应的第一子节点的唯一标识和所述第二子节点的唯一标识为联合主键;
第二元数据描述表构建单元162525,用于基于所述第二元数据表构建第二元数据描述表,所述第二元数据描述表以所述第二子节点的唯一标识和第一目标值的唯一标识为联合主键。
在一些实施例中,如图23所示,所述装置还可以包括:
数据采集模块166,用于从业务系统采集数据,并根据所采集的数据对数据仓库中数据库或元数据库进行更新。
具体的,如图24所示,所述数据采集模块166可以包括:
源数据采集单元1661,用于响应于业务采集请求,采集业务系统的源数据,所述业务采集请求包括采集模式;
源数据处理单元1662,用于对所述源数据进行抽取和清洗转换后,得到目标数据;
数据存储单元1663,用于基于所述采集模式,将所述目标数据写入至所述业务采集请求所涉及的各个数据源中;
元数据更新单元1664,用于对所述各个数据源对应的目标值进行更新。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种任务调度设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现上述方法实施例提供的任务调度方法。
进一步地,图25示出了一种用于实现本申请实施例所提供的任务调度方法的设备的硬件结构示意图,该设备可以参与构成或包含本申请实施例所提供的任务调度装置。如图25所示,设备250可以包括一个或多个(图中采用2502a、2502b,……,2502n来示出)处理器2502(处理器2502可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器2504、以及用于通信功能的传输装置2506。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图25所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备250还可包括比图25中所示更多或者更少的组件,或者具有与图25所示不同的配置。
应当注意到的是上述一个或多个处理器2502和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备250(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器2504可用于存储应用软件的软件程序以及模块,如本申请实施例中所述的方法对应的程序指令/数据存储装置,处理器2502通过运行存储在存储器2504内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的任务调度方法。存储器2504可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器2504可进一步包括相对于处理器2502远程设置的存储器,这些远程存储器可以通过网络连接至设备250。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置2506用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备250的通信供应商提供的无线网络。在一个示例中,传输装置2506包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实施例中,传输装置2506可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与2设备50(或移动设备)的用户界面进行交互。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质可设置于设备之中以保存用于实现方法实施例中一种任务调度方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的任务调度方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本申请提供的任务调度方法、装置、设备及存储介质的实施例可见,本申请实施例通过在数据采集时所记录的最近一次数据更新的目标值,针对读取到的每个任务,根据所记录的目标值确定任务所涉及的数据是否有变化,只有在数据有变化的情况下,才触发任务作业执行,提高了任务执行的时效性;而数据没有变化时不会触发任务作业执行,避免占用运算资源重复作业,提高了运算资源的使用效率;使用单独的元数据表对元数据进行存储,使分析与业务分离,可提高数据查询速率和数据分析效率;只有任务作业成功执行才会更新任务的数据时间,任务执行期间出错的话,任务会再次被扫描触发,提高了任务执行的健壮性。
需要说明的是,上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述说明已经充分揭露了本申请的具体实施方式。需要指出的是,熟悉该领域的技术人员对本申请的具体实施方式所做的任何改动均不脱离本申请的权利要求书的范围。相应地,本申请的权利要求的范围也并不仅仅局限于前述具体实施方式。
Claims (10)
1.一种任务调度方法,其特征在于,所述方法包括:
针对读取的每个任务,获取所述任务的各个数据源;
根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;
获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;
将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;
若所述任务所涉及的数据已发生变化,则触发执行所述任务。
2.根据权利要求1所述的方法,其特征在于,所述根据各个数据源对应的目标值,确定所述任务的第一标记值,包括:
根据各个数据源确定其对应的目标值的存储方式;
若所述目标值的存储方式为元数据表存储,则通过查询所述数据源对应的元数据表得到所述数据源对应的目标值;
若所述目标值的存储方式为非元数据表存储,则通过查询所述数据源对应的非元数据表得到所述数据源对应的目标值;
将查询得到的各个数据源对应的目标值中的最大值确定为所述第一标记值。
3.根据权利要求2所述的方法,其特征在于,每个数据源至少包括一个数据库,所述数据库至少包括一个业务数据表,若所述目标值的存储方式为所述元数据表存储,则在所述通过查询所述数据源对应的元数据表得到所述数据源对应的目标值之前,还包括构建所述数据源对应的元数据表的步骤;
所述构建所述数据源对应的元数据表,包括:
构建所述数据源中每个数据库对应的依赖关系树;
根据各个所述依赖关系树构建所述数据源对应的元数据表。
4.根据权利要求3所述的方法,其特征在于,所述构建所述数据源中每个数据库对应的依赖关系树,包括:
根据所述数据库确定所述依赖关系树的根节点;
根据所述数据库中每个业务数据表确定所述每个业务数据表对应的第一子节点,所述第一子节点从属于所述根节点;
对于所述数据库中的任意一个业务数据表,若所述业务数据表为分区业务数据表,则根据所述业务数据表中的分区确定所述分区对应的第二子节点,所述第二子节点从属于所述业务数据表对应的第一子节点。
5.根据权利要求4所述的方法,其特征在于,所述根据各个所述依赖关系树构建所述数据源对应的元数据表,包括:
根据所述各个依赖关系树中所有的根节点构建数据库元数据表,所述数据库元数据表以所述根节点的唯一标识为主键;
根据所述各个依赖关系树中所有的第一子节点构建第一元数据表,所述第一元数据表以所述第一子节点对应的根节点的唯一标识和所述第一子节点的唯一标识为联合主键;
基于所述第一元数据表构建第一元数据描述表,所述第一元数据描述表以所述第一子节点的唯一标识和第一目标值的唯一标识为联合主键,所述第一目标值为所述第一子节点对应的业务数据表对应的目标值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述各个依赖关系树中所有的第二子节点构建第二元数据表,所述第二元数据表以所述第二子节点对应的第一子节点的唯一标识和所述第二子节点的唯一标识为联合主键;
基于所述第二元数据表构建第二元数据描述表,所述第二元数据描述表以所述第二子节点的唯一标识和第一目标值的唯一标识为联合主键。
7.根据权利要求1所述的方法,其特征在于,在所述针对读取的每个任务,获取所述任务的各个数据源之前,所述方法还包括:
响应于业务采集请求,采集业务系统的源数据,所述业务采集请求包括采集模式;
对所述源数据进行抽取和清洗转换后,得到目标数据;
基于所述采集模式,将所述目标数据写入至所述业务采集请求所涉及的各个数据源中;
对所述各个数据源对应的目标值进行更新。
8.一种任务调度装置,其特征在于,所述装置包括:
数据源获取模块,用于针对读取的每个任务,获取所述任务的各个数据源;
第一标记值获取模块,用于根据各个数据源对应的目标值,确定所述任务的第一标记值,所述目标值表征最近一次所述数据源的数据更新的值;
第二标记值获取模块,用于获取所述任务的第二标记值,所述第二标记值是所述任务在上一次执行时所确定的第一标记值;
数据变化确定模块,用于将所述第一标记值和所述第二标记值进行对比,确定所述任务所涉及的数据是否已发生变化;
任务触发模块,用于在所述任务所涉及的数据已发生变化的情况下,触发执行所述任务。
9.一种任务调度设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行如权利要求1-7任一所述的任务调度方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-7任一所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010946286.8A CN112000456A (zh) | 2020-09-10 | 2020-09-10 | 一种任务调度方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010946286.8A CN112000456A (zh) | 2020-09-10 | 2020-09-10 | 一种任务调度方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112000456A true CN112000456A (zh) | 2020-11-27 |
Family
ID=73468514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010946286.8A Pending CN112000456A (zh) | 2020-09-10 | 2020-09-10 | 一种任务调度方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000456A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157436A (zh) * | 2021-03-02 | 2021-07-23 | 重庆度小满优扬科技有限公司 | 资源请求分发方法、装置、服务器和存储介质 |
-
2020
- 2020-09-10 CN CN202010946286.8A patent/CN112000456A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157436A (zh) * | 2021-03-02 | 2021-07-23 | 重庆度小满优扬科技有限公司 | 资源请求分发方法、装置、服务器和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409764B2 (en) | System for data management in a large scale data repository | |
CN101971165B (zh) | 数据关系的图形表示 | |
EP3513313A1 (en) | System for importing data into a data repository | |
EP3513314A1 (en) | System for analysing data relationships to support query execution | |
CN109656963B (zh) | 元数据获取方法、装置、设备及计算机可读存储介质 | |
US20140082013A1 (en) | Query templates for queries in data stream management systems | |
WO2022143045A1 (zh) | 数据血缘关系的确定方法及装置、存储介质、电子装置 | |
WO2008121862A1 (en) | Data merging in distributed computing | |
US10133779B2 (en) | Query hint management for a database management system | |
US9235608B2 (en) | Database performance analysis | |
CN113468019A (zh) | 基于Hbase的指标监控方法、装置、设备及存储介质 | |
CN111400288A (zh) | 数据质量检查方法及系统 | |
CN115269515A (zh) | 一种检索指定目标文档数据处理方法 | |
CN103248511B (zh) | 一种单点业务性能的分析方法、装置和系统 | |
CN112000456A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN111125226B (zh) | 一种配置数据采集方法及装置 | |
CN110716938A (zh) | 数据的汇聚方法及装置、存储介质和电子装置 | |
CN114925054A (zh) | 一种基于元模型的元数据管理系统及方法 | |
CN114817226A (zh) | 政府数据的处理方法及装置 | |
CN113553320B (zh) | 数据质量监控方法及装置 | |
CN116501726B (zh) | 基于GraphX图计算的信创云平台数据化运营系统 | |
CN113485693B (zh) | 接口配置方法、装置、设备及存储介质 | |
CN115357657B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN111311329B (zh) | 标签数据获取方法、装置、设备及可读存储介质 | |
CN110209645A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230913 Address after: 100190 Beijing Haidian District Zhichun Road 49 No. 3 West 309 Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TA01 | Transfer of patent application right |