发明内容
本申请所要解决的技术问题是提供一种数据传输方法,用以解决数据处理系统在数据传输过程中,在保证数据完整性、一致性、同步性的基础上,实现数据并发传输的技术问题。
本发明提供了一种数据传输方法,所述方法应用于数据处理系统,所述数据处理系统中设置有快照表集合,所述快照表集合包括至少两个按次序排列的快照表,所述方法包括:
判断在所述快照表集合的快照表中是否含有与源库数据表中的当前准备写入快照表的数据记录关键值相对应的写入记录,如果是,将所述当前准备写入快照表的数据记录写入所述含有与所述当前准备写入快照表的数据记录关键值相对应的写入记录的快照表中,否则,将所述当前准备写入快照表的数据记录按轮询方式写入所述快照表集合的快照表中;
当所述源库数据表中的数据记录全部写入所述快照表集合的快照表中后,启动与所述快照表集合中写入所述源库数据表中的数据记录的快照表相同数量的数据处理任务分别对所述快照表中的数据记录同时进行数据抽取、转换、加载处理;
将所述经过处理的数据记录放入目的库。
上述方法,优选地,所述将所述数据记录按照轮询方式写入所述快照表集合的快照表中包括:
查找上一次被写入记录数据记录的且在写入数据记录前没有与所述写入的数据记录相对应的写入记录的快照表,并判断所述快照表在所述快照表集合中的位置;
当所述快照表位置为所述快照表集合中的最后一个快照表时,将所述当前准备写入的数据记录写入所述快照表集合中的第一个快照表中,否则,将所述当前准备写入的数据记录写入所述快照表集合中的所述快照表位置的下一个快照表中。
上述方法,优选地,所述源库数据表中的数据记录包括数据记录的增量数据记录。
上述方法,优选地,所述启动与所述快照表集合中写入所述源库数据表中的数据记录的快照表相同数量的数据处理任务分别对所述快照表中的数据记录同时进行数据抽取、转换、加载处理包括:
启动与所述快照表集合中写入所述源库数据表中的数据记录的的快照表相同数量的数据处理任务分别读取所述快照表集合的快照表中的数据记录,再对所述读取的数据记录同时进行数据抽取、转换、加载处理。
上述方法,优选地,所述方法还包括:
将由所述数据处理任务处理过的数据记录的数据处理结果进行存储。
上述方法,优选地,所述方法还包括:
依据所述数据记录的关键值将由所述数据处理任务处理数据记录的处理结果写入与所述数据记录的关键值相对应的快照表中。
综上可知,本发明提供的一种数据传输方法,通过对含有同一数据记录关键值的数据记录放入同一快照表中,再通过启动多个数据处理任务实现数据的并发传输,在保证数据正确性、一致性、同步性的基础上,大幅提高传输速率,从而提高了数据处理系统的性能。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
参考图2所示为本发明提供的一种数据传输方法实施例一的方法流程图,所述方法应用于数据处理系统,所述数据处理系统中设置有快照表集合,所述快照表集合包括至少两个按次序排列的快照表,所述方法包括:
步骤201:判断在所述快照表集合的快照表中是否含有与源库数据表中的当前准备写入快照表的数据记录关键值相对应的写入记录,如果是,将所述当前准备写入快照表的数据记录写入所述含有与所述当前准备写入快照表的数据记录关键值相对应的写入记录的快照表中,否则,将所述当前准备写入快照表的数据记录按轮询方式写入所述快照表集合的快照表中。
步骤202:当所述源库数据表中的数据记录全部写入所述快照表集合的快照表中后,启动与所述快照表集合中写入所述源库数据表中的数据记录的快照表相同数量的数据处理任务分别对所述快照表中的数据记录同时进行数据抽取、转换、加载处理;
步骤203:将所述经过处理的数据记录放入目的库。
通过上述实施例方法,通过对含有同一数据记录关键值的数据记录放入同一快照表中,再启动多个数据处理任务对所有快照表同时进行数据抽取、转换、加载处理,由此在保证了数据正确性、一致性、同步性的基础上,实现数据的并发传输,大幅提高传输速率,从而提高了数据处理系统的性能。
实施例二
参考图3所示为本发明提供的一种数据传输方法实施例二的方法流程图,所述方法应用于数据处理系统,所述数据处理系统中设置有快照表集合,所述快照表集合包括至少两个按次序排列的快照表,所述方法包括:
步骤301:判断在所述快照表集合的快照表中是否含有与源库数据表中的当前准备写入快照表的数据记录关键值相对应的写入记录;如果是,进入步骤302,如果否,进入步骤303。
步骤302:将所述当前准备写入快照表的数据记录写入所述含有与所述当前准备写入快照表的数据记录关键值相对应的写入记录的快照表中。
步骤303:将所述当前准备写入快照表的数据记录按轮询方式写入所述快照表集合的快照表中。
其中,所述轮询方式在数据通信领域为一种分配机制,例如:假设现有多条数据记录准备写入10个有序排列的快照表中,按照轮询方式将所述数据记录写入所述快照表中过程如下:
将所述第一条数据记录写入所述第一个快照表中,将所述第二条数据记录写入所述第二个快照表中,依次写入,直到将所述第十条数据记录写入所述第十个快照表中,然后将第十一条数据记录写入第一个快照表中,将所述第十二条数据记录写入第二个快照表中,依据该写入规则将所述多条数据记录全部写入所述快照表中,上述即为将所述数据记录按照轮询方式写入所述快照表中。
在本发明中,步骤303包括:
查找上一次被写入记录数据记录的且在写入数据记录前没有与所述写入的数据记录相对应的写入记录的快照表,并判断所述快照表在所述快照表集合中的位置;
当所述快照表位置为所述快照表集合中的最后一个快照表时,将所述当前准备写入的数据记录写入所述快照表集合中的第一个快照表中,否则,将所述当前准备写入的数据记录写入所述快照表集合中的所述快照表位置的下一个快照表中。
步骤304:当所述源库数据表中的数据记录全部写入所述快照表集合的快照表中后,启动与所述快照表集合中写入所述源库数据表中的数据记录的快照表相同数量的数据处理任务分别对所述快照表中的数据记录同时进行数据抽取、转换、加载处理。
其中,步骤304中启动与所述快照表集合中写入所述源库数据表中的数据记录的快照表相同数量的数据处理任务分别对所述快照表中的数据记录同时进行数据抽取、转换、加载处理包括:
启动与所述快照表集合中写入所述源库数据表中的数据记录的的快照表相同数量的数据处理任务分别读取所述快照表集合的快照表中的数据记录,再对所述读取的数据记录同时进行数据抽取、转换、加载处理。
其中,读取所述快照表集合的快照表中的数据记录后,还包括可以先写入数据处理系统的内存中,在对内存中的数据记录同时进行数据抽取、转换、加载处理。
步骤305:将所述经过处理的数据记录放入目的库。
其中,将所述处理的数据放入目的库后,所述方法还包括将处理数据后的处理结果进行存储至目的库中,还可以依据所述数据记录的关键值将所述处理数据后的处理结果写入与所述被处理数据记录关键值相对应的快照表中。
通过上述实施例方法,通过对含有同一数据记录关键值的数据记录放入同一快照表中,再启动多个数据处理任务对所有快照表同时进行数据抽取、转换、加载处理,由此在保证了数据正确性、一致性、同步性的基础上,实现数据的并发传输,并把传输处理结果进行存储或写入与其相对应的快照表中,大幅提高传输速率的同时监测数据处理任务的处理结果,从而提高了数据处理系统的性能。
实施例三
参考图4所示为本发明提供的一种数据传输方法实施例三的方法流程图,所述方法应用于基于触发器模式的数据处理系统,所述基于触发器的数据处理系统中设置有快照表集合,所述快照表集合包括至少两个按次序排列的快照表,在源库数据表中的数据记录发生增量变化时,所述方法包括:
步骤401:感知所述源库数据表中的数据记录的增量变化,获取发生变化的数据记录的感知信息;
其中,由触发器对所述源库数据表中的数据记录的增量变化信息进行感知,并获取发生变化的数据记录的感知信息,即由触发器将多条数据记录的增量变化信息进行获取。
步骤402:判断在所述快照表集合的快照表中是否含有与所述当前准备写入快照表的感知信息关键值相对应的写入记录,如果是,进入步骤403,如果否,进入步骤404。
步骤403:将所述当前准备写入快照表的感知信息写入所述含有与所述当前准备写入的感知信息相对应的写入记录的快照表中。
步骤404:将所述当前准备写入快照表的感知信息按照轮询方式写入所述快照表集合的快照表中。
其中,当触发器获取所述感知信息后准备将所述感知信息写入所述快照表集合的快照表时,需要保证对同一数据记录的感知信息的操作在同一快照表中完成,由此,触发器在将所述感知信息写入快照表前,判断所述快照表集合的快照表中是否被写入过与所述当前准备写入的感知信息关键值相对应的数据记录,如果是,将所述当前感知信息写入所述与其对应的快照表中,如果否,将所述当前感知信息按照轮询方式写入所述快照表集合的快照表中。
其中,所述轮询方式在数据通信领域为一种分配机制,例如:假设现有多条数据记录准备写入10个有序排列的快照表中,按照轮询方式将所述数据记录写入所述快照表中过程如下:
将所述第一条数据记录写入所述第一个快照表中,将所述第二条数据记录写入所述第二个快照表中,依次写入,直到将所述第十条数据记录写入所述第十个快照表中,然后将第十一条数据记录写入第一个快照表中,将所述第十二条数据记录写入第二个快照表中,依据该写入规则将所述多条数据记录全部写入所述快照表中,上述即为将所述数据记录按照轮询方式写入所述快照表中。
在本发明中,步骤404中的将所述当前准备写入快照表的感知信息按照轮询方式写入所述快照表集合的快照表中的过程具体包括:
查找上一次被写入记感知信息的且在写入感知信息前没有与所述写入的感知信息相对应的写入记录的快照表,并判断所述快照表在所述快照表集合中的位置;
当所述快照表位置为所述快照表集合中的最后一个快照表时,将所述当前准备写入的感知信息写入所述快照表集合中的第一个快照表中,否则,将所述当前准备写入的感知信息写入所述快照表集合中的所述快照表位置的下一个快照表中。
步骤405:当所述感知信息全部写入所述快照表集合的快照表中后,启动与所述快照表集合中写入所述感知信息的快照表相同数量的数据处理任务分别对所述快照表中的感知信息同时进行数据抽取、转换、加载处理。
其中,步骤405中启动与所述快照表集合中写入所述感知信息的快照表相同数量的数据处理任务分别对所述快照表中的感知信息同时进行数据抽取、转换、加载处理包括:
启动与所述快照表集合中写入所述感知信息的快照表相同数量的数据处理任务分别读取所述快照表集合的快照表中的感知信息,再对所述读取的感知信息同时进行数据抽取、转换、加载处理。
其中,读取所述快照表集合的快照表中的感知信息后,还包括可以先写入数据处理系统的内存中,在对内存中的感知信息同时进行数据抽取、转换、加载处理。
步骤406:将所述经过处理的数据记录放入目的库。
其中,将所述处理的数据放入目的库后,所述方法还包括将处理数据后的处理结果进行存储至目的库中,还可以依据所述感知信息的关键值将所述处理数据后的处理结果写入与所述被处理感知信息关键值相对应的快照表中。
通过上述实施例方法,通过对含有同一数据记录关键值的感知信息放入同一快照表中,再启动多个数据处理任务对所有快照表同时进行数据抽取、转换、加载处理,由此在保证了数据正确性、一致性、同步性的基础上,实现增量数据的并发传输,并把传输处理结果进行存储或写入与其相对应的快照表中,大幅提高传输速率的同时监测数据处理任务的处理结果,同时对现有的ETL工具的影响较小,在其工作过程中,只需将其初始化触发器及快照表的开关关闭,使用ETL工具对数据处理的过程即可,本发明方法实施例使得数据处理系统有良好的扩展性,可以随着其设置的快照表及数据处理任务的增加而加快数据处理系统的传输速率,从而提高了数据处理系统的性能。
与此同时,本发明实施例由于触发器的脚本设计合理,使触发器对源库数据表的操作影响没有较大增加,从而对数据库系统的影响较小。
以上对本申请所提供的一种数据传输方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。