一种数据处理方法及服务器与流程

文档序号:14504777阅读:187来源:国知局

本发明涉及通信领域,尤其涉及一种数据处理方法及服务器。



背景技术:

有些业务中的数据量是一个慢慢积累的过程。服务器会周期性的将一批数据从客户数据库拉取过来,或者用户一段时间上传一批数据到服务器。

这些批次的数据在业务上需要满足如下需求:存储格式统一,相同业务的所有批次数据在数据库中的列名称和列的类型都是一致的;每个批次的数据有相关的信息记录(如导入时间、导入方式等);可以单独删除或修改某个批次的数据,并且不影响其他数据;可以选择某几个批次为一个集合,针对这个集合进行条件查询或导出。

服务器端数据库针对每个业务建立一个数据表,每个业务的所有批次都存放在各自的数据表里。当向服务器导入一批数据的时候,首先建立一张和数据表结构一样的临时表,将数据先导入临时表内,当所有数据导入临时表完毕,再把临时表的数据复制到正式的数据表中,成功后再删除临时表。最后更新元数据表相关操作结果信息。

但是,在导入数据时需要先导入临时表,再导入正式表,且导入正式表会后需要删除临时表,这样会降低效率和增加服务器的性能开销。



技术实现要素:

本发明实施例提供了一种数据处理方法及服务器,用于增加服务器的效率以及减少服务器的性能开销。

本发明实施例第一方面提供了一种数据处理方法,具体包括:

服务器获取目标数据,所述目标数据为需要导入所述服务器的数据库的数据;

所述服务器判断所述目标数据是否是首次导入所述数据库;

若所述服务器确定所述目标数据为首次导入所述数据库,则所述服务器为所述目标数据构建目标数据结构父表;

所述服务器根据所述目标数据结构父表创建目标子表;

所述服务器将所述目标数据写入所述目标子表;

所述服务器判断所述目标数据是否正确完全写入所述目标子表;

若所述服务器确定所述目标数据正确完全写入所述目标子表,则所述服务器更新元数据表的批次信息,所述元数据表为所述数据库中所有数据结构父表的索引。

本发明实施例第二方面提供了一种服务器,具体包括:

获取模块,用于获取目标数据,所述目标数据为需要导入所述服务器的数据库的数据;

第一判断模块,用于判断所述目标数据是否是首次导入所述数据库;

构建模块,用于在确定所述目标数据为首次导入所述数据库,为所述目标数据构建目标数据结构父表;

第一创建模块,用于根据所述目标数据结构父表创建目标子表;

第一写入模块,用于将所述目标数据写入所述目标子表;

第二判断模块,用于判断所述目标数据是否正确完全写入所述目标子表;

更新模块,用于在确定所述目标数据正确完全写入所述目标子表,更新元数据表的批次信息,所述元数据表为所述数据库中所有数据结构父表的索引。

本发明实施例第三方面提供了一种服务器,具体包括:

中央处理器、存储器、存储介质、电源、无线网络接口以及输入输出接口;

通过调用所述存储器或存储介质上存储的操作指令,所述中央处理器,用于执行如下步骤:

获取目标数据,所述目标数据为需要导入所述服务器的数据库的数据;

判断所述目标数据是否是首次导入所述数据库;

确定所述目标数据为首次导入所述数据库时,为所述目标数据构建目标数据结构父表;

根据所述目标数据结构父表创建目标子表;

将所述目标数据写入所述目标子表;

判断所述目标数据是否正确完全写入所述目标子表;

确定所述目标数据正确完全写入所述目标子表时,更新元数据表的批次信息,所述元数据表为所述数据库中所有数据结构父表的索引。

从以上技术方案可以看出,本发明实施例具有以下优点:当有数据需要导入服务器数据库时,服务器会判断该数据是否是首次导入服务器数据库,若是,则服务器为该数据创建父表,并根据父表创建子表,将该数据导入到该子表中,当服务器判断该数据正确完整写入子表后,则服务器更改元数据表的批次信息。综上所述,服务器在需要导入数据时,无需重新建立临时表,导入数据完成时,也不需要删除临时表,这样可以增加服务器的效率以及减少服务器的性能开销。

附图说明

图1为本发明实施例中数据处理方法的一个实施例示意图;

图2为本发明实施例中数据处理方法的另一实施例示意图;

图3为本发明实施例中服务器的一个结构示意图;

图4为本发明实施例中服务器的另一结构示意图;

图5为本发明实施例中服务器的结构示意图。

具体实施方式

本发明实施例提供了一种数据处理方法及服务器,用于增加服务器的效率以及减少服务器的性能开销。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

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

事务性:指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

数据导入:将客户端的不同存储格式或文件类型的数据按格式统一存储到服务器。

请参阅图1,本发明实施例中数据处理方法的一个实施例包括:

101、服务器获取目标数据。

本实施例中,当有目标数据需要进行处理的时候,服务器会先获取该目标数据,该目标数据是需要导入服务器的数据库的数据。

102、服务器判断目标数据是否是首次导入数据库,若是,则执行步骤104,若否,则执行步骤103。

本实施例中,服务器在收到目标数据之后,可以判断该目标数据是否是首次导入数据库,若是,则执行步骤104,若否,则执行步骤103。

103、执行其他操作。

本实施例中,当服务器判断目标数据不是首次导入数据库时,可以执行其他操作。

104、服务器为目标数据构建目标数据结构父表。

本实施例中,服务器在确定目标数据是首次导入数据库时,服务器可以为该目标数据构建目标数据结构父表,该目标数据结构父表与该目标数据相对应。

105、服务器根据目标数据结构父表创建目标子表。

本实施例中,当服务器创建目标数据结构父表之后,可以根据该目标数据结构父表创建与其对应的目标子表。

106、服务器将目标数据写入目标子表。

本实施例中,服务器在创建目标子表之后,可以将目标数据写入目标子表。

107、服务器判断目标数据是否正确完全写入目标子表,若是,则执行步骤109,若否,则执行步骤108。

本实施例中,服务器在将目标数据写入目标子表后,可以判断该目标数据是否正确完全写入目标子表,若是,则执行步骤109,若否,则执行步骤108。

108、执行其他步骤。

本实施例中,当服务器判断该目标数据没有正确完全写入目标子表,则执行其他步骤。

109、服务器更新元数据表的批次信息。

本实施例中,当服务器确定该目标数据完全正确写入目标子表之后,服务器会更新元数据表的批次信息,该元数据表为数据库中所有数据结构父表的索引。

综上所述,当有数据需要更新至服务器的数据库时,服务器可以获取该数据,并判断该数据是否是首次导入,若该数据是首次导入,则服务器为该数据构建与其对应的数据结构父表,根据该数据结构父表创建目标子表,且将该数据写入到目标子表里,服务器判断是否完全正确写入该目标子表,若该数据正确完成写入该目标子表,则服务器更新元数据表的批次信息。由此可以看出,服务器在导入数据前,不需要创建临时表,将数据导入该临时表,然后再从临时表中将数据导入正式表,这样可以增加服务器的效率以及减少服务器的性能开销。

请参阅图2,本发明实施例中数据处理方法的另一实施例包括:

201、服务器获取目标数据。

本实施例中,当有目标数据需要进行处理的时候,服务器会先获取该目标数据,该目标数据是需要导入服务器的数据库的数据。

202、服务器判断数据库中是否存在有与目标数据对应的数据结构父表,若存在,则执行步骤203,若不存在,则执行步骤204。

本实施例中,当服务器获取到目标数据之后,服务器可以判断数据库中是否存在有与目标数据对应的数据结构父表,若存在,则执行步骤203,若不存在,则执行步骤204。

203、确定目标数据不是首次导入数据库。

本实施例中,服务器确定数据库中存在有与目标数据对应的数据结构父表,则确定目标数据不是首次导入数据库,服务器可以为该目标数据对应的数据结构父表创建第一子表,且将该目标数据写入第一子表。

需要说明的是,创建子表可以使用结构化查询语言(structuredquerylanguage,sql)语句创建,由程序自动执行,具体sql为:

也可以使用其他方式创建,具体此处不作限定。

204、确定目标数据为首次导入数据库。

本实施例中,服务器确定数据库中不存在有与目标数据对应的数据结构父表时,则确定目标数据为首次导入数据。

205、服务器为目标数据构建目标数据结构父表。

本实施例中,当服务器确定目标数据为首次导入数据库时,则服务器为该目标数据创建与其对应的目标数据结构父表。

需要说明的是,导入的数据可能是不同的数据结构,例如一个文本文件,有3列数据a、b、c,需要为这个数据创建一个统一的数据结构(父表),规定有namea、nameb、namec三列,在第二次导入的数据中可能这个文本文件存储的数据为b、a、c这种顺序,由于之前已经有父表的存在于是可以参照父表结构以统一的结构导入。

206、服务器根据目标数据结构父表创建目标子表。

本实施例中,服务器在建立目标数据结构父表之后,可以根据该目标数据结构父表创建目标子表,具体创建方式如上述所示,此处不再赘述。

207、服务器将目标数据写入目标子表。

本实施例中,当服务器完成目标子表的创建之后,可以将该目标数据写入目标子表。

208、服务器判断目标数据是否正确完全写入目标子表,若正确完全写入,则执行步骤210,若未正确完全写入,则执行步骤209。

本实施例中,服务器可以判断目标数据是否正确完全的写入目标子表,若正确完全写入,则执行步骤210,若未正确完全写入,则执行步骤209。

其中,服务器可以通过如下方式来进行判断目标数据是否正确完全的写入目标子表:

服务器判断目标数据的数据结构是否能够成功转换成与目标结构父表对应的数据结构,若能够转换成功(数据有四类基本结构:集合结构、线性结构、树形结构、图状结构,假如目标数据的为集合结构,而目标结构父表对应的数据结构为线性结构,则如果该目标数据的集合结构能够完全转换为目标结构父表对应的线性结构,则确定转换成功),则服务器确定将目标数据写入目标子表。服务器获取目标数据写入目标子表之前的第一数据量以及写入目标子表之后的第二数据量,判断第一数据量与第二数据量是否匹配,若匹配(即写入前的数据总和与写入后的数据总和相同则认为匹配或第一数据量与第二数据量相差在预设阈值内,比如0.1%,也可以是其他数值,具体此处不做限定),则确定该目标数据正确完全写入目标子表,若不匹配,则确定该目标数据未正确完全写入目标子表。

需要说明的是,若目标数据的数据结构转换成目标结构父表对应的数据结构失败(比如数据里某列定义的结构是数字型,但是实际无法对数据转换成数字型会导致失败),则服务器删除目标子表。

209、删除目标子表。

本实施例中,当服务器确定目标数据没有正确完全的写入目标子表,则删除目标子表。

210、服务器更新元数据表的批次信息。

本实施例中,当服务器确定目标数据正确完全写入目标子表后,可以更新元数据表的批次信息,该批次信息包括执行时间、导入数量和操作结果等。

综上所述,当有数据需要更新至服务器的数据库时,服务器可以获取该数据,并判断该数据是否是首次导入,若该数据是首次导入,则服务器为该数据构建与其对应的数据结构父表,根据该数据结构父表创建目标子表,且将该数据写入到目标子表里,服务器判断是否完全正确写入该目标子表,若该数据正确完成写入该目标子表,则服务器更新元数据表的批次信息。由此可以看出,服务器在导入数据前,不需要创建临时表,将数据导入该临时表,然后再从临时表中将数据导入正式表,这样可以增加服务器的效率以及减少服务器的性能开销。

上面从数据处理方法的角度对本发明进行详细描述,下面从服务器的角度,对本发明进行详细描述,请参阅图3,本发明实施例中服务器的一个实施例包括:

获取模块301,用于获取目标数据,目标数据为需要导入服务器的数据库的数据;

第一判断模块302,用于判断目标数据是否是首次导入数据库;

构建模块303,用于在确定目标数据为首次导入所述数据库,为目标数据构建目标数据结构父表;

第一创建模块304,用于根据目标数据结构父表创建目标子表;

第一写入模块305,用于将目标数据写入目标子表;

第二判断模块306,用于判断目标数据是否正确完全写入目标子表;

更新模块307,用于在确定目标数据正确完全写入目标子表,更新元数据表的批次信息,元数据表为数据库中所有数据结构父表的索引。

为了便于理解,下面结合图4进行说明,本发明实施例的一种服务器,包括:

获取模块401,用于获取目标数据,目标数据为需要导入服务器的数据库的数据;

第一判断模块402,用于判断目标数据是否是首次导入数据库;

第二创建模块403,用于确定目标数据不是首次导入所述数据库时,为目标数据对应的数据结构父表创建第一子表;

第二写入模块404,用于将目标数据写入所述第一子表。

构建模块405,用于在确定目标数据为首次导入数据库,为目标数据构建目标数据结构父表;

第一创建模块406,用于根据目标数据结构父表创建目标子表;

第一写入模块407,用于将目标数据写入目标子表;

第二判断模块408,用于判断目标数据是否正确完全写入目标子表;

删除模块409,用于在确定目标数据未正确完全写入目标子表时,删除目标子表。

更新模块410,用于在确定目标数据正确完全写入目标子表,更新元数据表的批次信息,元数据表为数据库中所有数据结构父表的索引。

其中,第一判断模块402可以进一步包括:

第一判断单元4021,用于判断数据库中是否存在有与目标数据对应的数据结构父表;

第一确定单元4022,用于在数据库中存在有与目标数据对应的数据结构父表时,确定目标数据不是首次导入数据库;

第二确定单元4023,用于在数据库中不存在有与目标数据对应的数据结构父表时,确定目标数据为首次导入数据库。

其中,第二判断模块408可以进一步包括:

第二判断单元4081,用于判断目标数据的数据结构是否能够成功转换成与目标结构父表对应的数据结构;

写入单元4082,用于在第二判断单元确定目标数据结构成功转换成与目标结构父表对应的数据结构时,将目标数据写入目标子表;

第一获取单元4083,用于获取目标数据的第一数据量;

第二获取单元4084,用于获取目标数据导入目标子表后的第二数据量;

第三判断单元4085,用于判断第一数据量与第二数据量是否匹配;

第三确定单元4086,用于在第一数据量与第二数据量匹配时,确定目标数据正确完全写入目标子表;

第四确定单元4087,用于在第一数据量与第二数据量不匹配时,确定目标数据未正确完全写入目标子表。

本实施例中的服务器的各模块与单元之间的交互方式如前述图3所示数据处理方法实施例中的描述类似,具体此处不再赘述。

本实施例中,服务器通过获取模块401可以获取到目标数据,通过第一判断模块402可以判断目标数据是否是首次导入数据库,通过构建模块405在确定目标数据为首次导入数据库时,为目标数据构建目标数据结构父表,通过第一创建模块406根据目标数据结构父表创建子表,通过第一写入模块407将目标数据写入目标子表,通过第二判断模块408判断目标数据是否正确完全写入目标子表,通过删除模块409在确定目标数据未正确完全写入目标子表时,删除目标子表,通过更新模块410在确定目标数据正确完成写入目标子表时,更新元数据表的批次信息。可以看出,服务器在导入数据前,不需要创建临时表,将数据导入该临时表,然后再从临时表中将数据导入正式表,这样可以增加服务器的效率以及减少服务器的性能开销。另外,在确定目标数据未正确完全导入目标子表的时候,删除目标子表,保证了数据的事务性。

请参阅图5,图5是本发明实施例提供的一种服务器的结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)522(例如,一个或一个以上处理器)和存储器32,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。

服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

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

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

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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