一种数据文件组装方法、装置、设备及储存介质与流程

文档序号:19418661发布日期:2019-12-14 01:11阅读:192来源:国知局
一种数据文件组装方法、装置、设备及储存介质与流程

本发明实施例涉及数据处理技术,尤其涉及一种数据文件组装方法、装置、设备及储存介质。



背景技术:

两个业务系统之间的大型数据交互都先把数据组装成文件,以文件的形式进行传输,以保证数据的完整性。

现有技术中,业务系统每天会生成多个数据文件,处理方式是先批次去读数据库里面的数据,再进行处理,最后再把这一批的数据写到文件中,然后按照以上方式对数据库里面的数据逐批处理,直到最后一批数据。

但是这种数据文件的组装方法存在如下的缺陷:首先,用单线程去读数据,再写入数据文件,而单线程处理比较耗时,导致时效性差。其次,单线程分批次的执行写文件,每执行一次写文件就会有一次打开数据流和关闭数据流的开销,导致性能低。



技术实现要素:

本发明实施例提供一种数据文件组装方法、装置、设备及储存介质,实现了高效地组装数据文件并且减少了数据流开销。

第一方面,本发明实施例提供了一种数据文件组装方法,包括:

通过第一线程从数据库中读取预设数据;

通过所述第一线程将读取到的所述预设数据写入到预设阻塞队列中;

通过第二线程从所述预设阻塞队列中读取队列数据;

通过所述第二线程将读取到的所述队列数据写入数据文件。

第二方面,本发明实施例还提供了一种数据文件组装装置,包括:

预设数据读取模块,用于通过第一线程从数据库中读取预设数据;

阻塞队列数据写入模块,用于通过所述第一线程将读取到的所述预设数据写入到预设阻塞队列中;

队列数据读取模块,用于通过第二线程从所述预设阻塞队列中读取队列数据;

数据写入模块,用于通过所述第二线程将读取到的所述队列数据写入数据文件。

第三方面,本发明实施例还提供了一种设备,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的数据文件组装方法。

第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所提供的数据文件组装方法。

本发明实施例通过第一线程从数据库中读取预设数据,并将第一线程读取到的预设数据写入到预设阻塞队列中;然后通过第二线程从预设阻塞队列中读取数据,并将第二线程读取带的队列数据写入数据文件中。通过分线程处理,实现了高效地组装数据文件并且减少了单线程处理中不断打开数据流和关闭数据流的数据流开销。

附图说明

图1是本发明实施例一中的一种数据文件组装方法的流程图;

图2是本发明实施例二中的一种数据文件组装方法的流程图;

图3是本发明实施例二中的第一线程和第二线程的具体流程图;

图4是本发明实施例三中的一种数据文件组装装置的结构示意图;

图5是本发明实施例四中的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一中的一种数据文件组装方法的流程图,本实施例可适用于系统中数据处理的情况,该方法可以由数据文件组装装置来执行,该装置可以通过软件和/或硬件的方式实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是计算机、平板电脑和/或手机等任意一种智能终端。具体的,参考图1,该方法具体包括如下步骤:

s110、通过第一线程从数据库中读取预设数据。

具体的,线程是一个任务的处理者,一个线程代表一个处理者,其中,线程处理的任务可以是数据的读取操作、数据的写入操作或者数据的运算操作等。数据库是用来存储数据的仓库,例如,mysql、sqlserver、oracle、sybase、db2等。预设数据为存储在数据库中需要读取的数据,即为了完成某一任务而需要的保存在数据库内的数据,例如,为了调查某地男性平均身高,则预设数据为数据库中存储的与男性身高相关的数据;或者为了统计某地区肺癌的人员的年龄以及性别分布,则预设数据为该地区患肺癌人员的数据。

可选的,在通过第一线程从数据库中读取预设数据之前,还包括建立预设阻塞队列。需要说明的是,预设阻塞队列是存放预设数据的容器,预设阻塞队列是一种有序的容器,预设数据在其内部需要遵循先进先出的原则,即先进入预设阻塞队列内的数据需要先出预设阻塞队列。

s120、通过第一线程将读取到的预设数据写入到预设阻塞队列中。

具体的,第一线程将从数据库中读取到的预设数据写入到预设阻塞队列中去,以实现更快速的读取预设数据。

可选的,在第一线程将所有预设数据写入到预设阻塞队列中之后,通过第一线程将预设结束标识写入到预设阻塞队列中,其中,预设结束标识用来标识预设数据已写入完毕。可选的,预设结束标识是一个区别于预设数据的常量,可以用户自己定义,例如,预设数据为当地一年的温度,则可以将预设结束标识设定为100,因为自然天气温度不可能超过100摄氏度,因此将预设结束标识设定为100可以明显的和预设数据区分开,当第一线程将100写入到预设阻塞队列后,第一线程将结束将数据写入到预设阻塞队列的操作。

s130、通过第二线程从预设阻塞队列中读取队列数据。

具体的,第一线程将预设数据和预设结束标识写入到预设阻塞队列中之后,通过第二线程从预设阻塞队列中读取队列数据,其中,队列数据包括第一线程写入到预设阻塞队列中的全部预设数据和预设结束标识。

s140、通过第二线程将读取到的队列数据写入数据文件。

具体的,第二线程将读取到的队列数据先转换成数据流,再将数据流写入到数据文件中,其中,数据文件可以实现两个系统之间的大型数据交换,以数据文件的形式进行数据传输,可以保证数据的完整性,不会存在丢失数据的现象。

可选的,当从预设阻塞队列中读取到预设结束标识时,关闭将队列数据写入数据文件的数据流。

需要说明的是,本发明实施例中的第二线程并不是将预设阻塞队列中的所有队列数据读取完毕后再讲队列数据写入到数据文件中,而是一边读取队列数据一边将队列数据写入到数据文件中,当读取到预设结束标识时,停止将队列数据转换成数据流,即停止将队列数据写入到数据文件。由于预设阻塞队列遵循先进先出的原则,而预设结束标识是最后写入到预设阻塞队列中的,因此不会出现预设数据写入数据文件不完整的情况。

本实施例的技术方案,通过第一线程从数据库中读取预设数据,并将第一线程读取到的预设数据写入到预设阻塞队列中;然后通过第二线程从预设阻塞队列中读取数据,并将第二线程读取带的队列数据写入数据文件中。通过分线程处理,实现了高效地将预设数据写入到数据文件中并且减少了单线程处理中不断打开数据流和关闭数据流的数据流开销。

实施例二

图2是本发明实施例二中的一种数据文件组装方法的流程图,本实施例对上述实施例进行优化,在本实施例中,在通过第二线程从预设阻塞队列中读取队列数据之前,还包括:

通过第三线程对预设阻塞队列中的队列数据进行预设处理。

相应的,如图2所示,具体包括如下步骤:

s210、通过第一线程从数据库中读取预设数据。

s220、通过第一线程将读取到的预设数据写入到预设阻塞队列中。

s230、通过第三线程对预设阻塞队列中的队列数据进行预设处理。

在通过第二线程从预设阻塞队列中读取队列数据之前,通过第三线程对预设阻塞队列中的队列数据进行预设处理。具体的,第三线程对预设阻塞队列中的预设数据进行加工,其中,加工的方式可以是对预设数据进行数据运算或者对预设数据进行格式转换等。

通过第三线程对队列数据进行预设处理,可以使接收数据文件的系统能够准确的识别出数据文件中的数据,不会出现数据文件无法解析的错误。

s240、通过第二线程从预设阻塞队列中读取队列数据。

s250、通过第二线程将读取到的队列数据写入数据文件。

为了更好的理解本发明实施例,图3是本实施例中的第一线程和第二线程的具体流程图,具体的,首先第一线程从数据库中读取预设数据并判断是否有预设数据,如果有预设数据则把预设数据写入到预设阻塞队列,如果没有预设数据即全部预设数据已读取完毕,则把预设结束标识写入到预设阻塞队列。第二线程从预设阻塞队列中读取队列数据,并判断所读取的队列数据是不是预设结束标识,如果是预设结束标识,则关闭数据流;如果不是预设结束标识,则把队列数据写入到数据文件中。

本实施例在上述各实施例的基础上,通过增加第三线程对队列数据进行预设处理,在预设数据写入到数据文件中的基础上,可以使接收数据文件的系统能够准确的识别出数据文件中的数据,不会出现数据文件无法解析的问题。

实施例三

图4是本发明实施例三中的一种数据文件组装装置的结构示意图,该装置可以采用软件和/或硬件的方式实现。如图4所示,该装置包括:预设数据读取模块410、阻塞队列数据写入模块420、队列数据读取模块430和数据写入模块440。

其中,预设数据读取模块410,用于通过第一线程从数据库中读取预设数据;

阻塞队列数据写入模块420,用于通过第一线程将读取到的预设数据写入到预设阻塞队列中;

队列数据读取模块430,用于通过第二线程从预设阻塞队列中读取队列数据;

数据写入模块440,用于通过第二线程将读取到的队列数据写入数据文件。

可选的,该装置还包括:预设阻塞队列建立模块,用于建立预设阻塞队列。

预设结束标识写入模块,用于在通过第一线程将读取到的预设数据写入到预设阻塞队列中之后,当第一线程将预设数据写入到预设阻塞队列完毕时,通过第一线程将预设结束标识写入到预设阻塞队列中。

数据流关闭模块,用于在通过第二线程从预设阻塞队列中读取队列数据之后,当从预设阻塞队列中读取到预设结束标识时,关闭将队列数据写入数据文件的数据流。

可选的,该装置在队列数据读取模块430之前还包括:队列数据预设处理模块,用于通过第三线程对预设阻塞队列中的队列数据进行预设处理。

本发明实施例所提供的数据文件组装装置可执行本发明任意实施例所提供的数据文件组装方法,具备执行方法相应的功能模块和有益效果。

实施例四

图5为本发明实施例四提供的一种设备的结构示意图,如图5所示,该设备包括处理器510、存储器520、输入装置530和输出装置540;设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据文件组装方法对应的程序指令/模块(例如,预设数据读取模块410、阻塞队列数据写入模块420、队列数据读取模块430和数据写入模块440)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据文件组装方法。

存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置530可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据文件组装方法,该方法包括:

通过第一线程从数据库中读取预设数据;

通过第一线程将读取到的预设数据写入到预设阻塞队列中;

通过第二线程从预设阻塞队列中读取队列数据;

通过第二线程将读取到的队列数据写入数据文件。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据文件组装方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述数据文件组装装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1