数据处理方法及装置与流程

文档序号:11830222阅读:189来源:国知局
数据处理方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种数据处理方法及装置。



背景技术:

随着科技的发展,数据库在人们的生活中起着越来越重要的作用。在当前的信息化社会中,充分有效地管理和利用各类资源,是进行科学研究和决策管理的前提条件,数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。

传统的数据库系统一般是通过高端设备,例如小型机或者高端存储来保证数据库完整性,或者通过增加内存中央处理器(Central Processing Unit,简称为CPU)来提高数据库处理能力。但是这种集中式的数据库架构越来越不适合海量数据库处理,数据导入效率低,而且也得付出高额的费用。

针对相关技术中存在的数据导入效率低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明提供了一种数据处理方法及装置,以至少解决相关技术中存在的数据导入效率低的问题。

根据本发明的一个方面,提供了一种数据处理方法,包括:接收用于指示将数据导入数据库的数据导入指令;根据所述数据导入指令对所述数据进行拆分处理;将拆分处理后的数据分块导入至所述数据库中不同的存储空间中。

进一步地,根据所述数据导入指令对所述数据进行拆分处理包括:根据所述数据导入指令确定表的表结构和所述数据在所述表上的数据分布信息;根据所述表结构、所述数据分布信息和所述数据导入指令中携带的所述数据的描述符信息识别所述数据中每个数据行字段;根据识别的所述数据中每个数据行字段对所述数据进行拆分处理。

进一步地,根据所述数据导入指令对所述数据进行拆分处理包括:判断所述数据是否满足拆分规则;在判断结果为是的情况下,对所述数据进行拆分处理;在判断结果为否的情况下,对所述数据进行修正处理;对修正处理后的数据进行拆分处理。

进一步地,将拆分处理后的数据分块导入至所述数据库中不同的存储空间中包括:下载拆分处理后的数据;将下载的所述拆分处理后的数据分块导入至所述数据库中不同的存储空间中。

进一步地,在将拆分处理后的数据分块导入至所述数据库中不同的存储空间中之后,还包括:删除下载的所述拆分处理后的数据。

进一步地,在将拆分处理后的数据分块导入至所述数据库中不同的存储空间中之后,还包括:汇总对拆分处理后的数据进行导入处理后的导入结果;反馈所述导入结果。

根据本发明的另一方面,提供了一种数据处理装置,包括:接收模块,用于接收用于指示将数据导入数据库的数据导入指令;处理模块,用于根据所述数据导入指令对所述数据进行拆分处理;导入模块,用于将拆分处理后的数据分块导入至所述数据库中不同的存储空间中。

进一步地,所述处理模块包括:确定单元,用于根据所述数据导入指令确定表的表结构和所述数据在所述表上的数据分布信息;识别单元,用于根据所述表结构、所述数据分布信息和所述数据导入指令中携带的所述数据的描述符信息识别所述数据中每个数据行字段;第一处理单元,用于根据识别的所述数据中每个数据行字段对所述数据进行拆分处理。

进一步地,所述处理模块包括:判断单元,用于判断所述数据是否满足拆分规则;第二处理单元,用于在所述判断单元的判断结果为是的情况下,对所述数据进行拆分处理;修正单元,用于在所述判断单元的判断结果为否的情况下,对所述数据进行修正处理;第三处理单元,用于对修正处理后的数据进行拆分处理。

进一步地,所述导入模块包括:下载单元,用于下载拆分处理后的数据;导入单元,用于将下载的所述拆分处理后的数据分块导入至所述数据库中不同的存储空间中。

进一步地,所述装置还包括:删除模块,用于删除下载的所述拆分处理后的数据。

进一步地,所述装置还包括:汇总模块,用于汇总对拆分处理后的数据进行导入处理后的导入结果;反馈模块,用于反馈所述导入结果。

通过本发明,采用接收用于指示将数据导入数据库的数据导入指令;根据所述数据导入指令对所述数据进行拆分处理;将拆分处理后的数据分块导入至所述数据库中不同的存储空间中,解决了相关技术中存在的数据导入效率低的问题,进而达到了提高数据导入效率的效果。

附图说明

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

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

图2是根据本发明实施例的数据处理装置的结构框图;

图3是根据本发明实施例的数据处理装置中处理模块24的第一种结构框图;

图4是根据本发明实施例的数据处理装置中处理模块24的第二种结构框图;

图5是根据本发明实施例的数据处理装置中导入模块26的结构框图;

图6是根据本发明实施例的数据处理装置的第一种优选结构框图;

图7是根据本发明实施例的数据处理装置的第二种优选结构框图;

图8是根据本发明实施例的导入系统结构框图;

图9是根据本发明实施例的数据导入处理流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

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

步骤S102,接收用于指示将数据导入数据库的数据导入指令;

步骤S104,根据数据导入指令对上述数据进行拆分处理;

步骤S106,将拆分处理后的数据分块导入至上述数据库中不同的存储空间中。

通过上述步骤,在执行将数据导入到数据库中的处理时,首先对数据进行拆分处理,然后将拆分处理后的数据分块导入到数据库不同的存储空间中,并且对数据分块导入时,可以并行执行,提高导入效率。从而解决了相关技术中存在的数据导入效率低的问题,进而达到了提高数据导入效率的效果。上述的数据库可以称之为分布式数据库系统,该中数据库系统通过采用普通廉价的设备构建出高可用性和高扩展的集群,从而摆脱了大型设备的依赖。一个好的分布式数据库架构可以比较方便达到高可用性,可以达到向外扩展的能力。其中大数据量的导入导出功能是分布式数据库中较为关键的技术。

在对数据执行拆分处理时,可以有多种拆分方式,在一个可选的实施例中,可以依据用于拆分的表对上述数据进行拆分,其中,根据上述数据导入指令对数据进行拆分处理包括:根据上述数据导入指令确定表的表结构和数据在该表上的数据分布信息;根据上述表结构、数据分布信息和数据导入指令中携带的数据的描述符信息识别数据中每个数据行字段;根据识别的数据中每个数据行字段对数据进行拆分处理。其中,接收到数据导入指令后也可以首先去确定该数据导入指令的合法性,然后获取导入的目的库表的 表结构信息和分布策略信息,进而读取数据文件,根据表结构信息和分布策略对待导入数据文件进行拆分,拆分成多个底层数据库(即,上述的存储空间)存储相对应的多个小文件并传送到各目的底层数据库的指定目录下,然后通过集群管理模块下发指令到各底层数据库执行对应文件的导入。

能对数据进行拆分的前提是,该数据需要满足预定的拆分规则,但是也会存在数据不满足拆分规则的情况,该情况下,就需要对数据进行修正,以使该数据满足拆分规则。在一个可选的实施例中,根据上述数据导入指令对数据进行拆分处理包括:判断上述数据是否满足拆分规则;在判断结果为是的情况下,对数据进行拆分处理;在判断结果为否的情况下,对上述数据进行修正处理;对修正处理后的数据进行拆分处理。其中,在对数据进行修正处理时,可以有多种修正方式,可以是由管理员,即人为地去进行修正;也可以在无需人工干预的情况下,由执行拆分处理的模块获取其他模块根据某些修正规则去进行修正;当然可以由人工和相应地模块相互配合去进行修正,等等。采用该方法可以及时获知需要导入数据库的数据是否能够拆分,从而进一步提高拆分效率。并且,对于需要导入的数据存在错误的情况,可以将错误行数据提取出来,保证导入数据的正确性。

在一个可选的实施例中,在将拆分处理后的数据分块导入至数据库中不同的存储空间中时,可以先下载拆分处理后的数据;再将下载的拆分处理后的数据分块导入至数据库中不同的存储空间中。

当将数据导入到数据库中之后,下载的数据可以不用继续保留,在一个可选的实施例中,在将拆分处理后的数据分块导入至数据库中不同的存储空间中之后,还包括:删除下载的拆分处理后的数据。从而实现清楚垃圾数据文件的目的,减少内存的占用。从而可以使得数据库存储更多的数据。

在将拆分处理后的数据分块导入至数据库中不同的存储空间中之后,还可以反馈导入结果,在一个可选的实施例中,还包括:汇总对拆分处理后的数据进行导入处理后的导入结果;反馈上述导入结果。从而可以使得用户清楚的确定导入结果。

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

在本实施例中还提供了一种数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬 件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的数据处理装置的结构框图,如图2所示,该装置包括接收模块22、处理模块24和导入模块26,下面对该装置进行说明。

接收模块22,用于接收用于指示将数据导入数据库的数据导入指令;处理模块24,连接至上述接收模块22,用于根据上述数据导入指令对数据进行拆分处理;导入模块26,连接至上述处理模块24,用于将拆分处理后的数据分块导入至数据库中不同的存储空间中。

图3是根据本发明实施例的数据处理装置中处理模块24的第一种结构框图,如图3所示,该处理模块24包括确定单元32、识别模块34和第一处理单元36,下面对该装置进行说明。

确定单元32,用于根据数据导入指令确定表的表结构和数据在表上的数据分布信息;识别单元34,连接至上述确定单元32,用于根据表结构、数据分布信息和数据导入指令中携带的数据的描述符信息识别数据中每个数据行字段;第一处理单元36,连接至上述识别单元34,用于根据识别的数据中每个数据行字段对数据进行拆分处理。

图4是根据本发明实施例的数据处理装置中处理模块24的第二种结构框图,如图4所示,该处理模块24包括判断单元42、第二处理单元44、修正单元46和第三处理单元48,下面对该处理模块24进行说明。

判断单元42,用于判断上述数据是否满足拆分规则;第二处理单元44,连接至上述判断单元,用于在判断单元42的判断结果为是的情况下,对上述数据进行拆分处理;修正单元46,连接至上述判断单元42,用于在判断单元42的判断结果为否的情况下,对上述数据进行修正处理;第三处理单元48,连接至上述修正单元46,用于对修正处理后的数据进行拆分处理。

图5是根据本发明实施例的数据处理装置中导入模块26的结构框图,如图5所示,该导入模块26包括下载单元52和导入单元54,下面对该装置进行说明。

下载单元52,用于下载拆分处理后的数据;导入单元54,连接至上述下载单元52,用于将下载的拆分处理后的数据分块导入至数据库中不同的存储空间中。

图6是根据本发明实施例的数据处理装置的第一种优选结构框图,如图6所示,该装置除包括图5所示的所有模块外,还包括删除模块62,下面对该装置进行说明。

删除模块62,连接至上述导入模块26,用于删除下载的拆分处理后的数据。

图7是根据本发明实施例的数据处理装置的第二种优选结构框图,如图7所示,该装置除包括图2所示的所有模块外,还包括汇总模块72和反馈模块74,下面对该装置进行说明。

汇总模块72,连接至上述导入模块26,用于汇总对拆分处理后的数据进行导入处理后的导入结果;反馈模块74,连接至上述汇总模块72,用于反馈上述导入结果。

下面结合具体的实施例对本发明继续进行说明。

从前述可以看出,相关技术中已有的方案都是针对传统的单个数据库进行,无需考虑表的分布结构以及系统架构,效率较低。而发明实施例中的方案是基于分布式数据库系统,满足数据库的原子性/一致性/隔离性/耐久性(Atomicity/Consistency/Isolation/Durability,简称为ACID)特性,且可以并发执行。采用shell脚本进行导入导出,具有高度实时性,移植性和可行性,极高的用户体验,是对现有技术的一次重大革新。

图8是根据本发明实施例的导入系统结构框图,如图8所示,包括数据导入客户端模块82(该模块可以位于外部系统和数据导入服务端模块之间,也可以位于外部系统中,该模块未在图8中画出)、数据导入服务端模块84(同上述的接收模块22、处理模块24和导入模块26)、元数据中心模块86、集群管理中心模块88(同上述的汇总模块72和反馈模块74)、数据库代理模块810(同上述的删除模块62)和数据库模块812,下面对各模块进行说明。

数据导入客户端模块82(LoadClient)主要面向用户,用户通过该模块发起导入导出命令。

数据导入服务端模块84(LoadServer)用于接受客户端发送的导入导出命令,根据数据分布策略对数据文件进行拆分和合并,和其他模块进行交互,协调整个导入导出流程。

元数据中心模块86用于保存和管理整个分布式数据库系统所有元数据信息。

集群管理中心模块88主要负责各个数据库集群(DBCluster)的监控、管理和维护。

数据库代理模块810,该模块为数据库节点管理监控模块,它负责实时监控其所管辖的DB节点的运行状态是否正常,定期收集运行统计信息。

数据库模块812为底层模块,保存所有数据。

利用图8中所示的导入系统结构框图可以实现的核心算法如下:

对于导入流程:

数据导入导出服务端模块84根据集群ID、数据库名和表名去元数据中心模块86查询该表的元数据信息,用于获取表结构定义和数据分布信息;

数据导入服务端模块84使用获取的上述信息(加上数据文件描述符信息)来识别数据文件(datafilename)中的每个数据行字段,进行数据文件拆分;

数据导入服务端模块84请求集群管理中心模块88去通知各个数据库代理模块810去下载所管辖DBGroup的拆分文件;

数据导入服务端模块84在各个数据库代理模块810下载成功之后再请求集群管理中心模块88去通知各个数据库代理模块810执行真正的加载数据文件LOAD DATA INFILE命令;

LOAD DATA INFILE命令执行成功后,数据导入导出服务端模块84再请求集群管理中心88去通知各个数据库代理模块810删除垃圾数据文件(这里的垃圾数据文件可以是已经加载之后的下载的数据);

数据导入服务端模块84汇总结果并通知数据导入导出客户端模块82。

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

步骤S902,数据导入客户端模块82向数据导入服务端模块84发送导入数据请求;

步骤S904,数据导入服务端模块84根据集群ID、数据库名和表名向元数据中心模块86发送查询数据库元数据请求,该请求用于查询该表的元数据信息;

步骤S906,元数据中心模块86返回表结构定义和数据分布信息,包括该表各个字段类型和长度,以及分发键和分布在哪些DBGroup上;

步骤S908,数据导入服务端模块84使用元数据中心模块88返回的信息(此外,再加上数据文件描述符信息)来识别数据文件(datafilename)中的每个数据行字段,进行数据文件拆分,拆分过程中若发现数据错误,如类型不符合表定义,将错误数据挑选出来,放入错误文件中;

步骤S910,数据导入服务端模块84请求集群管理中心模块88去通知各个数据库代理模块810去下载所管辖DBGroup的拆分文件;

步骤S912,集群管理中心模块88通知各个数据库代理模块810去下载所管辖DBGroup的拆分文件;

步骤S914,各个数据库代理模块810通知ftp服务连接数据导入服务端模块84所在服务器,下载对应的拆分文件,各个数据库代理模块810下载对应的拆分文件成功后,向集群管理中心模块88返回成功响应;

步骤S916,集群管理中心模块88汇总下载结果;

步骤S918,集群管理中心模块88收到所有数据库代理模块810成功响应后,向数据导入服务端模块84返回成功响应;

步骤S920,数据导入服务端模块84下载成功之后再请求集群管理中心模块88去 通知各个数据库代理模块810执行真正的LOAD DATA INFILE命令;

步骤S922,集群管理中心模块88通知数据库代理模块810去执行真正的LOAD DATA INFILE命令;

步骤S924,各个数据库代理模块810连接管理的数据库模块,执行真正的LOAD DATA INFILE命令;各个数据库代理模块810执行真正的LOAD DATA INFILE命令成功后,向集群管理中心模块88返回成功响应;

步骤S926,集群管理中心模块88收到所有数据库代理模块810成功响应后,向数据导入服务端模块84返回成功响应;LOAD DATA INFILE命令执行成功后,数据导入服务端模块84再请求集群管理中心模块88去通知各个数据库代理模块删除垃圾数据文件;数据导入服务端模块84汇总结果并通知数据导入客户端模块82。

上述实施例中的方案是基于分布式数据库系统提出的,可以导入Mysql数据库支持的所有数据类型,当然也可以支持其他类型的数量。在分布式数据库系统上应用本发明实施例中的方案,可以提高2到3倍的并发量,均衡负载,且保证导入导出数据的正确性,系统强壮性较好。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

S1,接收用于指示将数据导入数据库的数据导入指令;

S2,根据数据导入指令对上述数据进行拆分处理;

S3,将拆分处理后的数据分块导入至上述数据库中不同的存储空间中。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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