首页> 中国专利> 数据处理方法、装置、计算机可读存储介质及处理器

数据处理方法、装置、计算机可读存储介质及处理器

摘要

本发明公开了一种数据处理方法、装置、计算机可读存储介质及处理器。其中,该方法包括:获取数据配置信息;将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;从至少一个分库数据库抽取数据,并写入到数据分片文件中。本发明解决了相关技术中采用应用程序直连接数据库方式抽取数据,容易对应用性能和数据库性能产生不利影响的技术问题。

著录项

说明书

技术领域

本发明涉及数据处理技术领域,具体而言,涉及一种数据处理方法、装置、计算机可读存储介质及处理器。

背景技术

针对业务水平分库的数据有合并汇总分析需求时,通常采用的处理方式有两种:一种是在应用程序中利用分库中间件(例如,mycat)直接操作分库进行数据合并汇总分析;一种是采用程序将分库数据离线抽取到大数据平台进行离线计算分析。此两种方法均采用应用程序直连接数据库方法抽取数据,对应用性能和数据库性能均有一定要求和影响,并且抽取的数据库表发生变更时需要改动应用程序重新发布。

另外,现有技术通常采用Java语言开发批量程序,通过JDBC连接方式查询数据库数据,再将数据写入到数据文件中。此种方法对Java应用的内存使用损耗较高,会间接影响其他批量程序执行。并且,一般情况Java批量应用是与数据库主库连接,抽取业务数据过程中,会对数据库主库产生一定性能压力,压力过大可能会影响正常业务处理。另外,使用Java应用频繁读写数据文件,I/O读写效率不高。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种数据处理方法、装置、计算机可读存储介质及处理器,以至少解决相关技术中采用应用程序直连接数据库方式抽取数据,容易对应用性能和数据库性能产生不利影响的技术问题。

根据本发明实施例的一个方面,提供了一种数据处理方法,包括:获取数据配置信息;将所述数据配置信息加载至Shell脚本,并执行所述Shell脚本的第一预设指令,以连接至少一个分库数据库;从所述至少一个分库数据库抽取数据,并写入到数据分片文件中。

可选地,在获取数据配置信息之前,还包括:接收查询配置指令;依据所述查询配置指令,从抽数配置库中加载出所述数据配置信息,其中,所述数据配置信息包括以下至少之一:数据库名、数据表名、指定抽取sql、数据抽取时间、每个文件允许数据量。

可选地,从所述至少一个分库数据库抽取数据,并写入到数据分片文件中,包括:调用所述Shell脚本;执行所述Shell脚本的第二预设指令,将所述至少一个分库数据库抽取的数据写入到所述数据分片文件中。

可选地,在从所述至少一个分库数据库抽取数据,并写入到数据分片文件中之后,还包括:对所述数据分片文件进行预设处理操作,其中,所述预设处理操作至少包括:汇总、格式化、切割。

可选地,对所述数据分片文件进行预设处理操作,包括:执行所述Shell脚本的第三预设指令,将所述数据分片文件进行汇总,得到原始数据文件;执行所述Shell脚本的第四预设指令,将所述原始数据文件进行格式化处理,得到格式化文件;执行所述Shell脚本的第五预设指令,将所述格式化文件进行切割处理,得到目标文件,其中,所述目标文件为经切割后达到预设配置大小的文件。

可选地,在执行所述Shell脚本的第五预设指令,将所述格式化文件进行切割处理,得到目标文件的同时,还包括:生成所述目标文件的附属校验文件和检查文件。

可选地,在对所述数据分片文件进行预设处理操作之后,还包括:获取所述目标文件的文件目录;依据所述目标文件的文件目录,并调用应用程序接口,将所述目标文件上传至文件存储系统。

根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:第一获取模块,用于获取数据配置信息;执行模块,用于将所述数据配置信息加载至Shell脚本,并执行所述Shell脚本的第一预设指令,以连接至少一个分库数据库;抽取模块,用于从所述至少一个分库数据库抽取数据,并写入到数据分片文件中。

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行上述中任意一项所述的数据处理方法。

根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的数据处理方法。

在本发明实施例中,采用获取数据配置信息;将所述数据配置信息加载至Shell脚本,并执行所述Shell脚本的第一预设指令,以连接至少一个分库数据库;从所述至少一个分库数据库抽取数据,并写入到数据分片文件中,通过将获取数据配置信息加载至Shell脚本,并执行该Shell脚本对应的指令以连接至少一个分库数据库,进而从至少一个分库数据库抽取数据,并写入到数据分片文件中,达到了灵活配置数据配置信息进行数据抽取的目的,从而实现了提升数据抽取性能和效率的技术效果,进而解决了相关技术中采用应用程序直连接数据库方式抽取数据,容易对应用性能和数据库性能产生不利影响的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的数据处理方法的流程图;

图2是根据本发明可选实施例的数据处理方法的流程图;

图3是根据本发明实施例的数据处理装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于描述,下面对本发明中出现的部分名词或术语进行详细说明。

Shell:Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。将一些Shell的语法与指令写在Shell脚本里面,然后用正规表示法,管道命令以及数据流重导向等功能,可以达到我们所想要的处理目的。

实施例1

根据本发明实施例,提供了一种数据处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的数据处理方法的流程图,如图1所示,该数据处理方法包括如下步骤:

步骤S102,获取数据配置信息;

在一种可选的实施方式中,上述数据配置信息包括但不限于数据库名、数据表名、指定抽取sql、数据抽取时间、每个文件允许数据量等。

需要说明的是,上述数据配置信息是可配置的,使得抽取方式灵活性高,定制化改造简单。可选地,支持数据配置信息配置化,一次开发多次使用,例如,支持抽取Postgresql数据库数据;支持自定义库名、表名、数据库地址、数据文件大小限制、抽取sql规则等;输出的格式为xml文件。可根据实际情况扩展支持如Mysql、Oracle等数据库,格式化输出自定义文件格式,例如txt、csv等。

步骤S104,将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;

在一种可选的实施方式中,在获取数据配置信息之前,可以采用水平分库的方式将业务数据分散到多个分库数据库。

在一种可选的实施方式中,可以利用Java程序预先加载配置好的数据配置信息,并将数据配置信息传给Shell脚本,Shell再直连至少一个分库数据库抽数数据。

需要说明的是,上述第一预设指令用指示连接分库数据库,由于Shell脚本可以直接操作底层文件系统,处理文件效率会比Java应用高,并且对应用性能影响较小。另外,Shell脚本无需像Java程序需要预先编译再运行,非常适合参数化,其简洁便捷的运行方式使得程序容错性更高。利用Shell脚本的灵活性、便捷性,支持快速开发调整。

步骤S106,从至少一个分库数据库抽取数据,并写入到数据分片文件中。

上述实施例中的数据处理方法,可以应用于业务分库场景,即多个分库数据库的场景,能够灵活配置抽取规则,提升数据抽取性能和效率等。另外,该实施方式不限于单库单表数据抽取操作,扩展支持分库数据抽取汇总处理,还可以采用并发处理,可同时支持多库表数据同时抽取,极大提高批处理效率。

通过上述步骤,可以通过将获取数据配置信息加载至Shell脚本,并执行该Shell脚本对应的指令以连接至少一个分库数据库,进而从至少一个分库数据库抽取数据,并写入到数据分片文件中,达到了灵活配置数据配置信息进行数据抽取的目的,从而实现了提升数据抽取性能和效率的技术效果,进而解决了相关技术中采用应用程序直连接数据库方式抽取数据,容易对应用性能和数据库性能产生不利影响的技术问题。

可选地,在获取数据配置信息之前,还包括:接收查询配置指令;依据查询配置指令,从抽数配置库中加载出数据配置信息,其中,数据配置信息包括以下至少之一:数据库名、数据表名、指定抽取sql、数据抽取时间、每个文件允许数据量。

上述查询配置指令用于指示加载出数据配置信息,其中,可以将预先配置好的数据配置信息存储在抽数配置库中。通过查询配置指令可以从抽数配置库中加载出不同的数据配置信息,在库表发生变化时,通过上述实施方式可以实现参数化配置扩展,便于后续灵活抽取数据。

可选地,从至少一个分库数据库抽取数据,并写入到数据分片文件中,包括:调用Shell脚本;执行Shell脚本的第二预设指令,将至少一个分库数据库抽取的数据写入到数据分片文件中。

在一种可选的实施方式中,上述第二预设指令为Postgres COPY命令;批量程序先调用Shell脚本方式,执行该指令可以将从分库数据库抽取的数据写入到数据分片文件中。这样不会损耗批量程序的性能,保证其他批量程序正常运行。

需要说明的是,在抽取数据过程中配置为使用数据库备库进行抽取,对主库基本无压力,从而避免影响业务场景频繁使用主库。

可选地,在从至少一个分库数据库抽取数据,并写入到数据分片文件中之后,还包括:对数据分片文件进行预设处理操作,其中,预设处理操作至少包括:汇总、格式化、切割。

在一种可选的实施方式中,Shell脚本中可以使用一些linux提供的一些文件批处理的预设处理操作,例如,汇总、格式化、切割等操作非常简洁有效。

可选地,对数据分片文件进行预设处理操作,包括:执行Shell脚本的第三预设指令,将数据分片文件进行汇总,得到原始数据文件;执行Shell脚本的第四预设指令,将原始数据文件进行格式化处理,得到格式化文件;执行Shell脚本的第五预设指令,将格式化文件进行切割处理,得到目标文件,其中,目标文件为经切割后达到预设配置大小的文件。

在一种可选的实施方式中,上述第三预设指令为cat命令,执行该指令可以实现汇总数据分片文件;上述第四预设指令为awk命令,执行该指令可以实现原始数据文件的格式化;上述第五预设指令为split命令,执行该指令可以实现将格式化文件切割成预设配置大小的文件以得到目标文件。

可选地,在执行Shell脚本的第五预设指令,将格式化文件进行切割处理,得到目标文件的同时,还包括:生成目标文件的附属校验文件和检查文件。

在一种可选的实施方式中,在执行Shell脚本的第五预设指令,将格式化文件进行切割处理,得到目标文件的同时,还可以生成目标文件的附属校验文件和检查文件。通过上述方式,可以有效实现后续对目标文件的校验和检查,避免丢失目标文件或者恢复目标文件。

可选地,在对数据分片文件进行预设处理操作之后,还包括:获取目标文件的文件目录;依据目标文件的文件目录,并调用应用程序接口,将目标文件上传至文件存储系统。

在一种可选的实施方式中,在对数据分片文件进行预设处理操作之后,还可以获取目标文件的文件目录,再依据目标文件的文件目录以及调用应用程序接口,从而将目标文件上传至文件存储系统。通过该实施方式可以有序的将目标文件传输至文件存储系统,便于后续应用目标文件。

下面对本发明一种可选的实施方式进行详细说明。

图2是根据本发明可选实施例的数据处理方法的流程图,如图2所示,该数据处理方法具体如下:利用统一的调度任务定时调用批处理程序,批处理程序收到指令后,从配置库中加载需要导出的数据配置信息,包括数据库名,数据表名,指定抽取sql,数据抽取时间,每个文件允许数据量等。Shell处理程序装载配置信息,根据指定的数据库相关信息执行Postgres COPY命令导出数据到分段文件中,再使用cat命令汇总分段文本。由于大数据要求的文件格式不是普通的txt文本格式,并且每个文件的数据量不允许过大,在此使用awk命令格式化文件,再使用split命令切割文件为配置大小,同时会生成当前数据文件的附属校验文件和检查文件。Shell处理结束后,会将生成的文件目录反馈给批处理程序,批处理程序调用行内公共的应用程序接口将文件上传到文件存储系统。

此处理方法不仅可以适用不同的复用,只需要将Shell脚本迁移,修改部分配置即可。另外,也可以支持单库数据源抽数,在涉及抽取数据表比较多的情况下,也可以配置Java多线程并发调用Shell脚本进行并行处理来提高处理效率。

实施例2

根据本发明实施例的另一方面,还提供了一种数据处理装置,图3是根据本发明实施例的数据处理装置的示意图,如图3所示,该数据处理装置包括:第一获取模块32、执行模块34和抽取模块36。下面对该数据处理装置进行详细说明。

第一获取模块32,用于获取数据配置信息;执行模块34,连接至上述第一获取模块32,用于将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;抽取模块36,连接至上述执行模块34,用于从至少一个分库数据库抽取数据,并写入到数据分片文件中。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;和/或,上述各个模块以任意组合的方式位于不同的处理器中。

在上述实施例中,该数据处理装置可以通过将获取数据配置信息加载至Shell脚本,并执行该Shell脚本对应的指令以连接至少一个分库数据库,进而从至少一个分库数据库抽取数据,并写入到数据分片文件中,达到了灵活配置数据配置信息进行数据抽取的目的,从而实现了提升数据抽取性能和效率的技术效果,进而解决了相关技术中采用应用程序直连接数据库方式抽取数据,容易对应用性能和数据库性能产生不利影响的技术问题。

此处需要说明的是,上述第一获取模块32、执行模块34和抽取模块36对应于实施例1中的步骤S102至S106,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。

可选地,上述装置还包括:接收模块和加载模块,其中,接收模块,用于在获取数据配置信息之前,接收查询配置指令;加载模块,用于依据查询配置指令,从抽数配置库中加载出数据配置信息,其中,数据配置信息包括以下至少之一:数据库名、数据表名、指定抽取sql、数据抽取时间、每个文件允许数据量。

可选地,上述抽取模块36包括:调用单元和第一执行单元,其中,第一调用单元,用于调用Shell脚本;第一执行单元,用于执行Shell脚本的第二预设指令,将至少一个分库数据库抽取的数据写入到数据分片文件中。

可选地,上述装置还包括:预设处理操作模块,其中,预设处理操作模块,用于在从至少一个分库数据库抽取数据,并写入到数据分片文件中之后,对数据分片文件进行预设处理操作,其中,预设处理操作至少包括:汇总、格式化、切割。

可选地,上述预设处理操作模块包括:第二执行单元,用于执行Shell脚本的第三预设指令,将数据分片文件进行汇总,得到原始数据文件;第三执行单元,用于执行Shell脚本的第四预设指令,将原始数据文件进行格式化处理,得到格式化文件;第四执行单元,用于执行Shell脚本的第五预设指令,将格式化文件进行切割处理,得到目标文件,其中,目标文件为经切割后达到预设配置大小的文件。

可选地,上述预设处理操作模块还包括:生成单元,用于在执行Shell脚本的第五预设指令,将格式化文件进行切割处理,得到目标文件的同时,生成目标文件的附属校验文件和检查文件。

可选地,上述装置还包括:第二获取模块和上传模块,其中,第二获取模块,用于在对数据分片文件进行预设处理操作之后,获取目标文件的文件目录;上传模块,用于依据目标文件的文件目录,并调用应用程序接口,将目标文件上传至文件存储系统。

实施例3

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述中任意一项的数据处理方法。

可选地,在本实施例中,上述计算机可读存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,和/或位于移动终端群中的任意一个移动终端中,上述计算机可读存储介质包括存储的程序。

可选地,在程序运行时控制计算机可读存储介质所在设备执行以下功能:获取数据配置信息;将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;从至少一个分库数据库抽取数据,并写入到数据分片文件中。

实施例4

根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述中任意一项的数据处理方法。

本发明实施例提供了一种设备,该设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:获取数据配置信息;将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;从至少一个分库数据库抽取数据,并写入到数据分片文件中。

本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取数据配置信息;将数据配置信息加载至Shell脚本,并执行Shell脚本的第一预设指令,以连接至少一个分库数据库;从至少一个分库数据库抽取数据,并写入到数据分片文件中。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号