CN105260485B - 一种数据加载的方法和装置 - Google Patents
一种数据加载的方法和装置 Download PDFInfo
- Publication number
- CN105260485B CN105260485B CN201510811703.7A CN201510811703A CN105260485B CN 105260485 B CN105260485 B CN 105260485B CN 201510811703 A CN201510811703 A CN 201510811703A CN 105260485 B CN105260485 B CN 105260485B
- Authority
- CN
- China
- Prior art keywords
- data
- loaded
- interim table
- subtask
- target database
- 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.)
- Active
Links
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据加载的方法和装置,该方法包括:处理节点获得待处理的子任务,并确定所述子任务对应的待加载数据;所述处理节点从源数据库中抽取所述子任务对应的待加载数据;所述处理节点将抽取的待加载数据加载到目标数据库的临时表中;所述处理节点在所述子任务对应的所有待加载数据均加载到所述临时表后,将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。通过本发明的技术方案,使得目标数据库的目的表中不会加载到重复的数据,解决了ETL调度集群系统在故障恢复时,造成目的表的数据重复的问题,提高了ETL调度集群系统的Failover能力。
Description
技术领域
本发明涉及网络管理技术领域,尤其涉及一种数据加载的方法和装置。
背景技术
随着大数据时代的到来,不同数据库之间的数据交换需求越来越多,而ETL(Extract Transform Load,抽取转换加载)用于从源数据库中抽取数据,并将抽取的数据加载到目标数据库中。例如,从RDBMS(Relational Database Management System,关系数据库管理系统)数据库(例如,Oracle、MySQL等)中抽取数据,并将抽取的数据加载到Hadoop(分布式)数据库中。或者,从Hadoop数据库中抽取数据,并将抽取的数据加载到RDBMS数据库中。
在大数据时代,面对大量的数据抽取和数据加载工作,单个处理节点已经无法满足用户需求,通常需要多个处理节点共同完成大量的数据抽取和数据加载工作,即将数据抽取和数据加载工作分配到多个处理节点进行处理。
在处理节点进行数据抽取和数据加载的过程中,如果该处理节点发生故障,则会选择一个新的处理节点,由新的处理节点代替发生故障的处理节点完成数据抽取和数据加载过程,从而保证数据抽取和数据加载的可靠性。
但是,在故障处理节点发生故障之前,可能已经从源数据库中抽取部分数据,并将该部分数据加载到目标数据库中。而新的处理节点并不清楚之前是否已经有数据加载,也不清楚加载了多少数据,因此,仍然从源数据库中抽取所有数据,并将所有数据加载到目标数据库中。因此,目标数据库中会加载重复的数据,而这部分重复的数据对于目标数据库来说是脏数据。
发明内容
本发明提供一种数据加载的方法,所述方法包括以下步骤:
处理节点获得待处理的子任务,并确定所述子任务对应的待加载数据;
所述处理节点从源数据库中抽取所述子任务对应的待加载数据;
所述处理节点将抽取的待加载数据加载到目标数据库的临时表中;
所述处理节点在所述子任务对应的所有待加载数据均加载到所述临时表后,将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。
所述处理节点将抽取的待加载数据加载到目标数据库的临时表中之前,所述方法还包括:
所述处理节点与目标数据库建立连接,并在所述目标数据库中创建所述处理节点的临时表,且所述处理节点的临时表与其它处理节点的临时表不同;
在所述处理节点将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,所述处理节点删除所述临时表中的所有待加载数据。
所述临时表具体为会话临时表或者普通临时表;其中,所述会话临时表是指只在当前会话内有效的临时表,在当前会话结束时,所述会话临时表被所述目标数据库删除;所述普通临时表是指持久存在的临时表,所述普通临时表需要由处理节点删除。
所述处理节点从源数据库中抽取所述子任务对应的待加载数据之前,所述方法还包括:
所述处理节点在获得待处理的子任务之后,如果所述子任务之前已经被分配给其它处理节点,则所述处理节点判断所述目标数据库中是否存在所述子任务对应的普通临时表;如果是,则所述处理节点删除所述子任务对应的普通临时表,并执行从源数据库中抽取所述子任务对应的待加载数据的过程;
所述处理节点在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,如果所述处理节点在预设时间内未获得新的待处理的子任务,则当所述处理节点在所述目标数据库中创建的是普通临时表时,则所述处理节点在断开与所述目标数据库的连接之前,删除所述普通临时表。
所述方法应用在包括多个处理节点的抽取转换加载ETL调度集群系统。
本发明提供一种数据加载的装置,所述数据加载的装置应用在处理节点上,且所述数据加载的装置具体包括:
获得模块,用于获得待处理的子任务,并确定子任务对应的待加载数据;
抽取模块,用于从源数据库中抽取所述子任务对应的待加载数据;
加载模块,用于将抽取的待加载数据加载到目标数据库的临时表中;
在所述子任务对应的所有待加载数据均加载到所述临时表之后,则将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。
还包括:处理模块,用于在将抽取的待加载数据加载到目标数据库的临时表中之前,与所述目标数据库建立连接,并在所述目标数据库中创建所述处理节点的临时表,且所述处理节点的临时表与其它处理节点的临时表不同;
所述处理模块,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,则删除所述临时表中的所有待加载数据。
所述临时表具体为会话临时表或者普通临时表;其中,所述会话临时表是指只在当前会话内有效的临时表,在当前会话结束时,所述会话临时表被所述目标数据库删除;所述普通临时表是指持久存在的临时表,所述普通临时表需要由处理节点删除。
所述处理模块,还用于在从源数据库中抽取所述子任务对应的待加载数据之前,在获得待处理的子任务之后,如果所述子任务之前已经被分配给其它处理节点,则判断所述目标数据库中是否存在所述子任务对应的普通临时表;如果是,则删除所述子任务对应的普通临时表,并由所述抽取模块执行从源数据库中抽取所述子任务对应的待加载数据的过程;
所述处理模块,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,如果所述处理节点在预设时间内未获得新的待处理的子任务,则当所述处理节点在所述目标数据库中创建的是普通临时表时,则在断开与所述目标数据库的连接之前,删除所述普通临时表。
所述装置应用在包括多个处理节点的抽取转换加载ETL调度集群系统。
基于上述技术方案,本发明实施例中,处理节点在处理子任务时,从源数据库中抽取该子任务对应的待加载数据,并先将抽取的待加载数据加载到目标数据库的临时表中,而不是直接将抽取的待加载数据加载到目标数据库的目的表中,只有在子任务对应的所有待加载数据均加载到临时表之后,才会将临时表中的所有待加载数据复制到目标数据库的目的表中。当处理节点发生故障时,如果该处理节点还未将该子任务对应的所有待加载数据均加载到临时表中,则说明该子任务对应的所有待加载数据均未加载到目的表中,通过删除目标数据库的临时表,可以使得该子任务对应的所有待加载数据均未加载到目的表中。当新的处理节点处理该子任务时,可以将该子任务对应的所有待加载数据加载到目的表中,从而使得目标数据库的目的表中不会加载到重复的数据,解决了ETL调度集群系统在故障恢复时,造成目的表的数据重复的问题,提高了ETL调度集群系统的Failover(故障转移)能力。
附图说明
图1是本发明一种实施方式中的应用场景示意图;
图2是本发明一种实施方式中的数据加载的方法的流程图;
图3是本发明一种实施方式中的处理节点的硬件结构图;
图4是本发明一种实施方式中的数据加载的装置的结构图。
具体实施方式
针对现有技术中存在的问题,本发明实施例中提出一种数据加载的方法,该方法可以应用在包括多个处理节点(如处理服务器)的ETL调度集群系统中,各处理节点用于完成数据的抽取、转换、加载等过程。以图1为本发明实施例的应用场景示意图,ETL调度集群系统中可以包括处理节点1、处理节点2、处理节点3和处理节点4。在图1中,源数据库可以为RDBMS数据库(如Oracle、MySQL等),目标数据库可以为Hadoop数据库,或者,源数据库可以为Hadoop数据库,目标数据库可以为RDBMS数据库。
当用户在ETL调度集群系统上下发ETL请求时,ETL调度集群系统可以为该ETL请求创建一个任务,并将该任务划分成多个待处理的子任务,每个子任务对应部分待加载数据。例如,ETL请求用于请求将源数据库中的数据1-数据3000000000加载到目标数据库时,ETL调度集群系统创建的任务为将源数据库中的数据1-数据3000000000加载到目标数据库。ETL调度集群系统可以将该任务划分成30000个子任务,每个子任务用于将100000个数据加载到目标数据库中,如子任务1用于将数据1-数据100000加载到目标数据库,子任务2用于将数据100001-数据200000加载到目标数据库,子任务3用于将数据200001-数据300000加载到目标数据库,以此类推。
本发明实施例中,ETL调度集群系统在划分多个子任务之后,可以将多个子任务分发到处理节点上。其中,在将多个子任务分发到处理节点时,ETL调度集群系统可以每次只向一个处理节点下发一个子任务,在该处理节点完成该子任务之前,不再向该处理节点下发新的子任务,在该处理节点完成该子任务之后,才向该处理节点下发新的子任务。例如,ETL调度集群系统分别将子任务1、子任务2和子任务3下发给处理节点1、处理节点2和处理节点3,在处理节点1完成子任务1之后,将子任务4下发给处理节点1。
为了实现上述过程,处理节点可以将子任务的处理进展实时通知给ETL调度集群系统,由ETL调度集群系统基于子任务的处理进展确定处理节点是否已经完成子任务。而且,ETL调度集群系统也可以实时监测处理节点的健康状态,当处理节点发生故障时,则将分配给该处理节点的子任务分配给新的处理节点(即当前空闲的处理节点),由新的处理节点继续处理该子任务。
本发明实施例中,ETL调度集群系统中还可以包含一个控制节点(如控制服务器),并由控制节点完成上述ETL调度集群系统的功能。
在此基础上,如图2所示,该数据加载的方法具体可以包括以下步骤:
步骤201,处理节点获得待处理的子任务(用于将源数据库中的数据加载到目标数据库中),并确定该子任务对应的待加载数据。
步骤202,处理节点从源数据库中抽取该子任务对应的待加载数据。
步骤203,处理节点将抽取的待加载数据加载到目标数据库的临时表中。
步骤204,处理节点在该子任务对应的所有待加载数据均加载到临时表后,将临时表中的所有待加载数据复制到目标数据库的目的表中。
本发明实施例中,处理节点在获得待处理的子任务之后,如果当前没有与源数据库建立连接,没有与目标数据库建立连接,则处理节点与源数据库建立连接,与目标数据库建立连接,并在目标数据库中创建本处理节点对应的临时表,之后执行从源数据库中抽取子任务对应的待加载数据等后续步骤。处理节点在获得待处理的子任务之后,如果当前已经与源数据库建立连接,与目标数据库建立连接,但是当前在目标数据库中不存在本处理节点对应的临时表,则处理节点直接在目标数据库中创建本处理节点对应的临时表,之后执行从源数据库中抽取子任务对应的待加载数据等后续步骤。处理节点在获得待处理的子任务之后,如果当前已经与源数据库建立连接,与目标数据库建立连接,且当前在目标数据库中存在本处理节点对应的临时表,则处理节点直接执行从源数据库中抽取子任务对应的待加载数据等后续步骤。
其中,不同的处理节点在目标数据库中创建的临时表不同,即每个处理节点在目标数据库中均会创建本处理节点对应的独立的临时表。
例如,处理节点1在获得子任务1后,确定子任务1对应的待加载数据为数据1-数据100000,并在目标数据库中创建临时表1。在处理节点1从源数据库中抽取子任务1对应的待加载数据时,由于待抽取的数据量大,因此每次只能抽取部分待加载数据,无法一次性抽取所有待加载数据。基于此,处理节点1先从源数据库中抽取数据1-数据1000,将抽取的数据1-数据1000加载到目标数据库的临时表1中,并从源数据库中抽取数据1001-数据2000,将抽取的数据1001-数据2000加载到目标数据库的临时表1中,以此类推,一直到从源数据库中抽取数据99000-数据100000,将抽取的数据99000-数据100000加载到目标数据库的临时表1中。之后,由于子任务1对应的所有待加载数据(数据1-数据100000)均加载到临时表中,因此处理节点1将临时表中的所有待加载数据(数据1-数据100000)复制到目标数据库的目的表中。
在上述处理过程中,处理节点在目标数据库的目的表中加载数据的过程中,处理节点是先将待加载数据加载到目标数据库的临时表中,只有在所有待加载数据均加载到临时表后,处理节点才将临时表中的所有待加载数据复制到目标数据库的目的表(即真实的用于加载数据的目的表)中。
本发明实施例中,在处理节点将临时表中的所有待加载数据复制到目的表中之后,则当前的子任务处理完成,此时处理节点可以处理新的子任务,而在处理新的子任务之前,处理节点可以删除临时表中的所有待加载数据。
其中,在当前的子任务处理完成之后,ETL调度集群系统可以为处理节点分配新的子任务,由处理节点按照步骤201-步骤204继续处理新的子任务。
本发明实施例中,在目标数据库中创建的临时表具体可以包括但不限于会话临时表或者普通临时表。其中,该会话临时表是指:只在当前会话内有效的临时表,在当前会话结束时,则该会话临时表会被目标数据库删除;普通临时表是指:持久存在的临时表,普通临时表需要由处理节点删除。
其中,目标数据库可以提供会话临时表的功能,当会话结束时,则目标数据库会自动删除会话临时表,并删除会话临时表中的数据,该过程无需用户干预。具体的,会话临时表是指只在当前会话内有效的临时表,在会话有效期间,该会话临时表是一直存在的,此时,使用SELECT(选择)语句进行查询时,可以查询到插入的数据;而当会话结束(如会话关闭、或者连接重建、或者连接断开等)时,则会话临时表会被目标数据库自动删除。
其中,普通临时表是指临时创建的普通表,普通临时表是一个持久存在的关系型表,除非用户将普通临时表删除,否则,普通临时表内存储的数据不受连接断开、目标数据库重启等影响,普通临时表是一直存在的。
本发明实施例中,在处理节点处理子任务的过程中,如果该处理节点发生故障,则ETL调度集群系统会将分配给该处理节点的子任务分配给新的处理节点(即当前空闲的处理节点),由新的处理节点继续处理该子任务。
基于此,假设目标数据库中创建的临时表是会话临时表,则处理节点(即新的处理节点)在获得待处理的子任务之后,如果该子任务之前已经被分配给其它处理节点(即发生故障的处理节点),则由于该其它处理节点在目标数据库中创建的会话临时表会被目标数据库删除(该其它处理节点发生故障时会断开与目标数据库的连接,目标数据库会自动删除该其它处理节点创建的会话临时表),因此,处理节点相当于执行一个新的子任务,不需要关注之前的数据加载过程,直接按照步骤201-步骤204的流程执行子任务即可。
假设目标数据库中创建的临时表是普通临时表,则处理节点(即新的处理节点)在获得待处理的子任务之后,如果该子任务之前已经被分配给其它处理节点(即发生故障的处理节点),则由于该其它处理节点在目标数据库中创建的普通临时表不会被目标数据库删除(该其它处理节点发生故障时会断开与目标数据库的连接,但目标数据库不会自动删除该其它处理节点创建的普通临时表),因此,处理节点还需要判断目标数据库中是否存在该子任务对应的普通临时表,如果是,则处理节点删除该子任务对应的普通临时表,之后相当于执行一个新的子任务,直接按照步骤201-步骤204的流程执行子任务即可,如果否,则直接按照步骤201-步骤204的流程执行子任务即可。
例如,处理节点1在处理子任务1的过程中,如果该处理节点1发生故障,则ETL调度集群系统会将分配给该处理节点1的子任务1分配给新的处理节点,假设分配给处理节点4,则由处理节点4继续处理该子任务1。
处理节点4在获得子任务1后,确定子任务1对应的待加载数据为数据1-数据100000,与源数据库建立连接,并与目标数据库建立连接。如果目标数据库中创建的临时表是会话临时表,则处理节点4直接在目标数据库中创建临时表4;如果目标数据库中创建的临时表是普通临时表,则处理节点4从目标数据库中删除子任务1对应的临时表(即处理节点1在目标数据库中创建的临时表1),并在目标数据库中创建临时表4。之后,处理节点4先从源数据库中抽取数据1-数据1000,将抽取的数据1-数据1000加载到目标数据库的临时表4中,并从源数据库中抽取数据1001-数据2000,将抽取的数据1001-数据2000加载到目标数据库的临时表4中,以此类推,一直到从源数据库中抽取数据99000-数据100000,将抽取的数据99000-数据100000加载到目标数据库的临时表4中。之后,由于子任务1对应的所有待加载数据(数据1-数据100000)均加载到临时表中,因此处理节点4将临时表中的所有待加载数据(数据1-数据100000)均复制到目标数据库的目的表中。
本发明实施例中,处理节点在将临时表中的所有待加载数据复制到目标数据库的目的表中之后,如果处理节点在预设时间(可以根据实际经验设置)内未获得新的待处理的子任务,则说明没有新的子任务需要处理,此时可以断开处理节点与源数据库的连接,并断开处理节点与目标数据库的连接。
基于此,假设目标数据库中创建的临时表是会话临时表,则处理节点可以直接断开本处理节点与目标数据库的连接,而本处理节点在目标数据库上创建的会话临时表会被目标数据库自动删除;或者,处理节点也可以在断开本处理节点与目标数据库的连接之前,先删除本处理节点在目标数据库上创建的会话临时表,之后才断开本处理节点与目标数据库的连接。
假设目标数据库中创建的临时表是普通临时表,则处理节点在断开本处理节点与目标数据库的连接之前,先删除本处理节点在目标数据库上创建的普通临时表,之后才断开本处理节点与目标数据库的连接。
基于上述技术方案,本发明实施例中,处理节点在处理子任务时,从源数据库中抽取该子任务对应的待加载数据,并先将抽取的待加载数据加载到目标数据库的临时表中,而不是直接将抽取的待加载数据加载到目标数据库的目的表中,只有在子任务对应的所有待加载数据均加载到临时表之后,才会将临时表中的所有待加载数据复制到目标数据库的目的表中。当处理节点发生故障时,如果该处理节点还未将该子任务对应的所有待加载数据均加载到临时表中,则说明该子任务对应的所有待加载数据均未加载到目的表中,通过删除目标数据库的临时表,可以使得该子任务对应的所有待加载数据均未加载到目的表中。当新的处理节点处理该子任务时,可以将该子任务对应的所有待加载数据加载到目的表中,从而使得目标数据库的目的表中不会加载到重复的数据,解决了ETL调度集群系统在故障恢复时,造成目的表的数据重复的问题,提高了ETL调度集群系统的Failover(故障转移)能力。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种数据加载的装置,该数据加载的装置可以应用在处理节点(如处理服务器)上。其中,该数据加载的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理节点的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图3所示,为本发明提出的数据加载的装置所在的处理节点的一种硬件结构图,除了图3所示的处理器、非易失性存储器外,处理节点还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该处理节点还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图4所示,为本发明提出的数据加载的装置的结构图,所述数据加载的装置应用在处理节点上,且所述数据加载的装置具体包括:
获得模块11,用于获得待处理的子任务,并确定子任务对应的待加载数据;抽取模块12,用于从源数据库中抽取所述子任务对应的待加载数据;加载模块13,用于将抽取的待加载数据加载到目标数据库的临时表中;在所述子任务对应的所有待加载数据均加载到所述临时表之后,则将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。
本发明实施例中,所述数据加载的装置还可以包括:
处理模块14,用于在将抽取的待加载数据加载到目标数据库的临时表中之前,与所述目标数据库建立连接,并在所述目标数据库中创建所述处理节点的临时表,且所述处理节点的临时表与其它处理节点的临时表不同;
所述处理模块14,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,则删除所述临时表中的所有待加载数据。
本发明实施例中,所述临时表具体为会话临时表或者普通临时表;其中,所述会话临时表是指只在当前会话内有效的临时表,在当前会话结束时,所述会话临时表被所述目标数据库删除;所述普通临时表是指持久存在的临时表,所述普通临时表需要由处理节点删除。
所述处理模块14,还用于在从源数据库中抽取所述子任务对应的待加载数据之前,在获得待处理的子任务之后,如果所述子任务之前已经被分配给其它处理节点,则判断所述目标数据库中是否存在所述子任务对应的普通临时表;如果是,则删除所述子任务对应的普通临时表,并由所述抽取模块执行从源数据库中抽取所述子任务对应的待加载数据的过程;
所述处理模块14,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,如果所述处理节点在预设时间内未获得新的待处理的子任务,则当所述处理节点在所述目标数据库中创建的是普通临时表时,则在断开与所述目标数据库的连接之前,删除所述普通临时表。
本发明实施例中,所述装置应用在包括多个处理节点的抽取转换加载ETL调度集群系统中。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于上述技术方案,本发明实施例中,处理节点在处理子任务时,从源数据库中抽取该子任务对应的待加载数据,并先将抽取的待加载数据加载到目标数据库的临时表中,而不是直接将抽取的待加载数据加载到目标数据库的目的表中,只有在子任务对应的所有待加载数据均加载到临时表之后,才会将临时表中的所有待加载数据复制到目标数据库的目的表中。当处理节点发生故障时,如果该处理节点还未将该子任务对应的所有待加载数据均加载到临时表中,则说明该子任务对应的所有待加载数据均未加载到目的表中,通过删除目标数据库的临时表,可以使得该子任务对应的所有待加载数据均未加载到目的表中。当新的处理节点处理该子任务时,可以将该子任务对应的所有待加载数据加载到目的表中,从而使得目标数据库的目的表中不会加载到重复的数据,解决了ETL调度集群系统在故障恢复时,造成目的表的数据重复的问题,提高了ETL调度集群系统的Failover(故障转移)能力。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种数据加载的方法,其特征在于,所述方法包括以下步骤:
处理节点获得待处理的子任务,并确定所述子任务对应的待加载数据;
所述处理节点在获得待处理的子任务之后,如果所述子任务之前已经被分配给其它处理节点,则所述处理节点判断目标数据库中是否存在所述子任务对应的普通临时表;如果是,则所述处理节点删除所述子任务对应的普通临时表,并从源数据库中抽取所述子任务对应的待加载数据;其中,所述目标数据库的临时表包括普通临时表,所述普通临时表是指持久存在的临时表,所述普通临时表需要由处理节点删除;
所述处理节点将抽取的待加载数据加载到目标数据库的临时表中;其中,不同的处理节点在目标数据库中创建的临时表不同;
所述处理节点在所述子任务对应的所有待加载数据均加载到所述临时表后,将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。
2.根据权利要求1所述的方法,其特征在于,所述处理节点将抽取的待加载数据加载到目标数据库的临时表中之前,所述方法还包括:
所述处理节点与目标数据库建立连接,并在所述目标数据库中创建所述处理节点的临时表,且所述处理节点的临时表与其它处理节点的临时表不同;
在所述处理节点将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,所述处理节点删除所述临时表中的所有待加载数据。
3.根据权利要求1或2所述的方法,其特征在于,所述临时表还包括会话临时表;其中,所述会话临时表是指只在当前会话内有效的临时表,在当前会话结束时,所述会话临时表被所述目标数据库删除。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述处理节点在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,如果所述处理节点在预设时间内未获得新的待处理的子任务,则当所述处理节点在所述目标数据库中创建的是普通临时表时,则所述处理节点在断开与所述目标数据库的连接之前,删除所述普通临时表。
5.根据权利要求1或2所述的方法,其特征在于,所述方法应用在包括多个处理节点的抽取转换加载ETL调度集群系统中。
6.一种数据加载的装置,其特征在于,所述数据加载的装置应用在处理节点上,且所述数据加载的装置具体包括:
获得模块,用于获得待处理的子任务,并确定子任务对应的待加载数据;
处理模块,用于在获得待处理的子任务之后,如果所述子任务之前已经被分配给其它处理节点,则判断目标数据库中是否存在所述子任务对应的普通临时表;如果是,则删除所述子任务对应的普通临时表;其中,所述目标数据库的临时表包括普通临时表,所述普通临时表是指持久存在的临时表,所述普通临时表需要由处理节点删除;
抽取模块,用于从源数据库中抽取所述子任务对应的待加载数据;
加载模块,用于将抽取的待加载数据加载到目标数据库的临时表中;其中,不同的处理节点在目标数据库中创建的临时表不同;
在所述子任务对应的所有待加载数据均加载到所述临时表之后,则将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中。
7.根据权利要求6所述的装置,其特征在于,所述处理模块,还用于在将抽取的待加载数据加载到目标数据库的临时表中之前,与所述目标数据库建立连接,并在所述目标数据库中创建所述处理节点的临时表,且所述处理节点的临时表与其它处理节点的临时表不同;
所述处理模块,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,则删除所述临时表中的所有待加载数据。
8.根据权利要求6或7所述的装置,其特征在于,所述临时表还包括会话临时表;其中,所述会话临时表是指只在当前会话内有效的临时表,在当前会话结束时,所述会话临时表被所述目标数据库删除。
9.根据权利要求6所述的装置,其特征在于,
所述处理模块,还用于在将所述临时表中的所有待加载数据复制到所述目标数据库的目的表中之后,如果所述处理节点在预设时间内未获得新的待处理的子任务,则当所述处理节点在所述目标数据库中创建的是普通临时表时,则在断开与所述目标数据库的连接之前,删除所述普通临时表。
10.根据权利要求6或7所述的装置,其特征在于,所述装置应用在包括多个处理节点的抽取转换加载ETL调度集群系统中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910343828.XA CN110083651B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
CN201510811703.7A CN105260485B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510811703.7A CN105260485B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910343828.XA Division CN110083651B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260485A CN105260485A (zh) | 2016-01-20 |
CN105260485B true CN105260485B (zh) | 2019-05-31 |
Family
ID=55100175
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910343828.XA Active CN110083651B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
CN201510811703.7A Active CN105260485B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910343828.XA Active CN110083651B (zh) | 2015-11-20 | 2015-11-20 | 一种数据加载的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN110083651B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701218B (zh) * | 2016-01-14 | 2019-05-07 | 四川长虹电器股份有限公司 | 实现不同终端在数据库上进行数据同步的方法 |
CN107391508B (zh) * | 2016-05-16 | 2020-07-17 | 顺丰科技有限公司 | 数据加载方法和系统 |
CN106934037A (zh) * | 2017-03-15 | 2017-07-07 | 郑州云海信息技术有限公司 | 一种高并发实现数据库快速加载数据的方法 |
CN109388644B (zh) * | 2017-08-09 | 2021-10-15 | 北京国双科技有限公司 | 一种数据更新方法及装置 |
CN108304473B (zh) * | 2017-12-28 | 2020-09-04 | 石化盈科信息技术有限责任公司 | 数据源之间的数据传输方法和系统 |
CN110209662A (zh) * | 2018-02-13 | 2019-09-06 | 北京京东尚科信息技术有限公司 | 一种自动化加载数据的方法和装置 |
CN111581269B (zh) * | 2020-04-24 | 2023-06-20 | 贵州力创科技发展有限公司 | 一种数据抽取方法和装置 |
CN112052136A (zh) * | 2020-08-18 | 2020-12-08 | 深圳市欢太科技有限公司 | 数据校验方法及装置、设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
CN101706779A (zh) * | 2009-10-12 | 2010-05-12 | 南京联创科技集团股份有限公司 | 基于oracle的伞状数据导入导出方法 |
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026199A1 (en) * | 2004-07-15 | 2006-02-02 | Mariano Crea | Method and system to load information in a general purpose data warehouse database |
CN100359482C (zh) * | 2004-08-04 | 2008-01-02 | 上海宝信软件股份有限公司 | 数据库表更新的动态监控系统及方法 |
CN102693324B (zh) * | 2012-01-09 | 2015-03-18 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN103902585A (zh) * | 2012-12-27 | 2014-07-02 | 中国移动通信集团公司 | 一种数据加载方法和系统 |
US9483482B2 (en) * | 2014-02-17 | 2016-11-01 | Netapp, Inc. | Partitioning file system namespace |
-
2015
- 2015-11-20 CN CN201910343828.XA patent/CN110083651B/zh active Active
- 2015-11-20 CN CN201510811703.7A patent/CN105260485B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
CN101706779A (zh) * | 2009-10-12 | 2010-05-12 | 南京联创科技集团股份有限公司 | 基于oracle的伞状数据导入导出方法 |
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110083651A (zh) | 2019-08-02 |
CN110083651B (zh) | 2021-06-29 |
CN105260485A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260485B (zh) | 一种数据加载的方法和装置 | |
WO2018076759A1 (zh) | 基于区块链的多链管理方法、系统、电子装置及存储介质 | |
CN105653630B (zh) | 分布式数据库的数据迁移方法与装置 | |
CN103780679B (zh) | 基于http协议的长延时远程调用方法 | |
WO2017088705A1 (zh) | 数据处理方法和装置 | |
CN107943841A (zh) | 流式数据处理方法、系统和计算机可读存储介质 | |
WO2020220535A1 (zh) | 一种数据存储方法及相关装置 | |
CN105867837A (zh) | 一种分布式高速缓存系统中的客户端配置更新方法、设备及系统 | |
CN105653401A (zh) | 应用系统灾备、运维、监控和应急启停调度方法及装置 | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN110930003A (zh) | 工单的处理方法及装置 | |
CN110147273A (zh) | 一种任务执行方法及装置 | |
CN110990415A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN107203429A (zh) | 一种基于分布式锁加载分布式任务的方法以及装置 | |
CN110532021A (zh) | 分布式控制系统的组态文件的处理方法及装置 | |
CN108197222A (zh) | 一种异常流数据的修复方法、系统及相关装置 | |
CN109361625A (zh) | 核查转发表项的方法、装置和控制器 | |
CN107656796B (zh) | 一种虚拟机冷迁移方法、系统及设备 | |
TW201600975A (zh) | 分散式系統中的任務處理方法和裝置 | |
CN104298761A (zh) | 一种异构软件系统间主数据匹配的实现方法 | |
US10678749B2 (en) | Method and device for dispatching replication tasks in network storage device | |
CN110445580A (zh) | 数据发送方法及装置、存储介质、电子装置 | |
CN111200525A (zh) | 网络靶场场景复刻方法、系统、电子设备及存储介质 | |
CN104410511A (zh) | 一种服务器管理方法及系统 | |
CN114780177B (zh) | 事务执行方法及装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |