数据处理方法及相关设备与流程

文档序号:14923569发布日期:2018-07-13 08:04阅读:164来源:国知局
本申请涉及数据库
技术领域
,更具体地,是数据处理方法及相关设备。
背景技术
:数据库,是建立在计算机存储设备上的仓库,用来按照数据结构来组织、存储和管理数据。数据库管理的一个非常重要的对象是数据表,数据表存储在磁盘等非易失性存储介质中。数据表中包含有若干条数据记录,当业务处理程序(也可称为主程序)需要读取数据表中的数据记录时,会向数据库发送读取指令,数据库可以将非易失性存储介质中的数据记录读取至内存中,在内存中对数据记录进行处理。业务处理程序需要的数据可能存储在多张数据表的字段中,其中包含的字段与业务处理程序所处理的流程最为相关的数据表称为主表,其他数据表称为次表。在区分主表及次表的情况下,业务处理程序在内存中处理数据记录时是以主表为主,即按照内存中主表数据记录的存储顺序,依次对数据记录进行处理,且当读取到一条数据记录时,需要在次表中读取该条数据记录相关的其他字段。但是,次表中的其他字段若并未保存在内存中,数据库需要从磁盘中读取这些字段至内存中。可见,目前的数据处理效率需要多次访问磁盘,处理效率较低。技术实现要素:有鉴于此,本申请提供了一种数据处理方法,用于解决数据处理过程中主表与次表数据不同步导致的数据处理效率较低的技术问题。为实现所述目的,本申请提供的技术方案如下:第一方面,本申请提供了一种数据处理方法,包括:确定目标处理业务;确定与所述目标处理业务关联的主数据表,并确定所述主数据表中用于指示数据记录排序的键值字段;确定与所述目标处理业务关联的次数据表,并将所述次数据表中的数据记录提取到文件中;其中所述数据记录中包含主数据表中的键值字段;按照所述键值字段对所述文件中的数据记录进行排序;将所述排序后的数据记录存储至目标数据表中。第二方面,本申请提供了一种数据处理装置,包括:处理业务确定模块,用于确定目标处理业务;主表键值确定模块,用于确定与所述目标处理业务关联的主数据表,并确定所述主数据表中用于指示数据记录排序的键值字段;次表数据提取模块,用于确定与所述目标处理业务关联的次数据表,并将所述次数据表中的数据记录提取到文件中;其中所述数据记录中包含主数据表中的键值字段;次表数据排序模块,用于按照所述键值字段对所述文件中的数据记录进行排序;次表数据保存模块,用于将所述排序后的数据记录存储至目标数据表中。本申请提供了一种数据处理方法,该方法确定目标处理业务后,确定与该目标处理业务相关的主表及次表,将次表中的数据记录提取到文件中,并按照主表的键值字段对文件中的数据记录进行排序,排序后的数据记录再存储至临时数据表中,这样临时数据表中的数据记录便与主数据表中数据记录的排序方式相同,即均按照主表的键值字段排序。数据库的预读缓存机制可以按照主表的键值字段读取主表中的数据记录到内存后,也可以将临时数据表中相同键值字段的数据记录读取到内存中,从而提高了在内存中同时访问到两个数据表中数据记录的概率,进而提高了数据访问效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请提供的数据处理方法的一种流程图;图2为本申请提供的数据处理方法的又一种流程图;图3为本申请提供的对文件中的数据记录进行笛卡尔积处理的一种示意图;图4为本申请提供的对文件中的数据记录进行排序的一种示意图;图5为本申请提供的数据处理装置的一种结构示意图;图6为本申请提供的数据处理装置的另一种结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。数据库中一个重要的处理对象为数据表,数据表存储在磁盘等非易失性存储介质中。业务处理程序可以处理业务,在处理业务时需要使用到数据表中的数据记录。当业务处理程序需要使用数据表中的数据记录时,会向数据库发送指令,以使数据库将数据记录从非易失性存储介质读取至内存中。业务处理程序需要的数据可能存储在多个数据表中,这些数据表中某个数据表与业务处理程序最为相关,该数据表可以称为主数据表(可以简称为主表),其余数据表可以称为次数据表(可以简称为次表)。次数据表中会包含与主数据表中的数据相关的详细数据。需要说明的是,通常地数据表具有多个字段,其中某个字段用于指示数据记录的排序,该字段可以称为键值字段。数据表存储数据时可以按照键值字段的值的某种变化顺序存储。例如,数据表为客户信息表,键值字段为客户编号,数据表存储数据记录时可以按照客户编号由小到大的顺序依次存储。数据库具有预读缓存机制,即当需要读取某条数据记录到内存时,会将包含该条数据记录的前和/或后多条数据记录同时读取到内存中,这样若业务处理程序恰好需要读取的是该条数据记录的下一条数据记录,便可以直接在内存中获得,而无需再访问非易失性存储介质,从而可以提高数据读取效率。主数据表与次数据表之间具有关联关系,即次数据表中包含主数据表中的键值字段。业务处理程序对主数据表及次数据表的关联处理是,按照主数据表中键值字段的顺序,依次访问主数据表中的各个数据记录,当访问到主数据表中的某条数据记录时,需要依据该条数据记录中的键值字段,从次数据表中提取该键值字段对应的数据记录。然而,次数据表自身也具有键值字段,且次数据表的键值字段与主数据表的键值字段通常不同。例如,主数据表为银行系统中的账户信息表,账户信息表主要包含账号、利率、利息增量、应付利息等字段,其中账号为键值字段,也就是说账户信息表中的数据记录是按照账号由小到大的顺序依次排序的;次数据表包括客户信息表,客户信息表主要包含客户编号、客户名称、客户类别、客户地址、客户税码、账号等字段,其中客户编号为键值字段,也就是说客户信息表中的数据记录是按照客户编号由小到大的顺序依次排序的。在这种情况下,数据库的预读缓存机制便不能起到有效的作用。例如,业务处理程序需要访问主数据表中的某条数据记录,该条数据记录可以称为第一数据记录,数据库可以将第一数据记录及其之后的10条数据记录全部读取至内存中,业务处理程序直接从内存中得到第一数据记录。得到主数据表中的第一数据记录后,还需要得到该条数据记录在次数据表中关联的数据记录,次数据表中的该条数据记录可以称为第二数据记录。业务处理程序首先在内存的次数据表中,查找包含第一数据记录的键值字段的第二数据记录,若未查找到,则需要数据库从非易失性存储介质中读取第二数据记录到内存中。需要说明的是,基于预读缓存机制,数据库不仅读取第二数据记录,还可以将第二数据记录之后的10条数据记录。但是,由于主数据表与次数据表的键值字段不同,则预先读取至内存中的主数据表数据记录与次数据表数据记录可能并不对应,也就是说,内存中的主数据表数据记录的键值字段极有可能并不包含在内存中的次数据表数据记录中。这样,业务处理程序按照主数据表中的键值字段读取下一条数据记录时,便不会在内存中的次数据表数据记录中,查找到包含该下一条数据记录的键值字段的数据记录。为了方便理解上述技术问题,结合具体的示例进行解释说明。例如,业务处理程序为银行系统中的某种处理程序,其需要执行的业务处理内容为,累计账户利息增量。由于累计的是账户利息增量,是需要首先确定有哪些账号,再对这些账号对应的账户利息进行处理。账号保存在账户信息表中,因此账户信息表作为主数据表。在计算账户利息增量时,基于计算方式的要求还需要访问到与账号对应的账户利息相关的其他信息,将保存该其他信息的数据表称为从表。例如,其他信息可以包括客户信息,客户信息保存在客户信息表中,因此客户信息表即为一张从数据表。如上述示例说明,账户信息表中的键值字段为账号,业务处理程序需要从头遍历账户信息表中的各个账号。假设业务处理程序当前需要读取账号为a1的数据记录,内存中并不存在该数据记录,则数据库会从磁盘中读取账号a1,并将账号a1至账号a5的5条数据记录一同读取到内存中。假设账户信息表如下表1所示包含100条账户信息,则读取至内存中的账户信息如表2所示。表1账号利率利息增量a1a11a12a2a21a22a3a31a32………………a100a1001a1002表2账号利率利息增量a1a11a12a2a21a22a3a31a32a4a41a42a5a51a52这样,业务处理程序可以从内存中直接读取到账号为a1的数据记录,且需要从客户信息表中读取包含账号a1的数据记录,该条数据记录中包含有账号a1对应的客户的相关信息。若客户信息表中的键值字段为客户编号,则客户信息表中的数据记录会按照客户编号的排列顺序排序。假设如下表3所示,客户信息表中包含200条客户信息,且200条客户信息是按照客户编号由小到大的顺序排列的。表3客户编号利率利息增量账号b1b11b12a27b2b21b22a1b3b31b32a73b4b41b42a6b5b51b52a23……………………b200b2001b2002a55数据库需要查找账号为a1的数据记录,假设数据库会预读5条数据记录,则读取至内存中的数据记录如下表4所示。可见,预先读取至内存中的客户信息中包含有账号a1对应的数据记录,因此业务处理程序直接从内存中读取表4中的第二条数据记录即可。表4客户编号利率利息增量账号b1b11b12a27b2b21b22a1b3b31b32a73b4b41b42a6b5b51b52a23但是需要说明的是,业务处理程序会按照账户信息表中账号的存储顺序,读取账号为a2的数据记录,内存中的表3中包含有该条数据记录但是内存中的表4并不包含账号为a2的数据记录,因此数据库预读缓存至内存中的表4并没有起到作用,反而表4占据了一部分内存空间造成资源浪费。数据库还需要再次从磁盘中的客户信息中查找账号a2对应的数据记录,数据读取效率较低。造成上述技术问题的主要原因在于,主数据表与次数据表中的数据记录并没有按照相同的键值字段排序,因此本申请提供了一种数据处理方法。见图1,其示出了本申请提供的数据处理方法的一种流程,具体包括步骤s101~s105。s101:确定目标处理业务。其中,可以直接将业务处理程序所处理的业务作为目标处理业务,如上述一种举例说明,目标处理业务可以是银行系统中的累计账户利息增量。s102:确定与目标处理业务关联的主数据表,并确定主数据表中用于指示数据记录排序的键值字段。其中,主数据表是与目标处理业务关联的,能够提供目标处理业务中需要的基本数据的数据表为主数据表。例如,目标处理业务为累计账户利息增量,则需要明确有多少账号,然后再依次将各个账号对应的利息增量进行累计,因此将记录账号信息的账户信息表作为主数据表。又如,目标处理业务为计算班级化学成绩的平均分,则首先需要确定班级中包含有多少学生,然后再将各个学生的化学成绩求和后进行平均,因此将记录有学生学号的班级信息表作为主数据表。需要说明的是,主数据表是依据目标处理业务的处理逻辑确定出来的,某张数据表在某个目标处理业务中为主数据表,但在另一个目标处理业务中可能为次数据表。前已述及,在数据表中均会设置某个键值字段,该键值字段可以为数据记录的排序提供依据。例如,在账户信息表中包含有账号,账号是一种唯一性标识,且可以按照大小顺序排序,账户信息表可以将账号这个字段作为键值字段,账户信息表中的数据记录按照账号的某种顺序进行排序。其中键值字段可以是数据表中的主键也可以是其他字段。s103:确定与目标处理业务关联的次数据表,并将次数据表中的数据记录提取到文件中。本申请的应用场景中会涉及到多张数据表,除了主数据表外还包含有次数据表。次数据表为包含目标处理业务所需字段且与主数据表具有关联关系的数据表。其中,主数据表与次数据表之间的关联关系体现在,次数据表中直接或者间接关联主数据表的键值字段。例如,目标处理业务为累计账户利息增量,则需要获取利息增量及利率等字段,这些字段包含在客户信息表中,且客户信息表中包含有账户信息表中的键值字段账号。需要说明的是,次数据表可能为多个,例如某个目标处理业务在主数据表中查询到账号后,需要进一步确定各个账号对应的客户编号,假设客户编号存储在客户信息表中,则客户信息表为其中一个次数据表,假设目标处理业务还需要进一步确定客户的资产情况,资产情况存储在资产信息表中,则资产信息表为另一个次数据表。在次数据表为多个的情况下,次数据表与主数据表之间的关联关系可以表现为两种:一种是某些次数据表中可以直接包含主数据表中的键值字段,如上述客户信息包含有账户信息表中的账号;又一种是某些次数据表中可以包含其他次数据表中的字段,这些次数据表通过间接或直接与主数据表中的键值字段具有关系,如上述资产信息中虽然可能并不包含有账号这个字段,但其包含有客户信息表中的客户编号,且客户信息表中包含有主数据表的键值字段即账号。需要说明的是,次数据表为多个的情况下,并不一定所有的次数据表均包含有主数据表中的键值字段,只要有至少一个包含即可,但是各个次数据表之间需要具有关联关系。提取数据记录的方式是,按照次数据表的键值字段将各个数据记录提取至文件中。例如,次数据表为客户信息表,则按照客户编号将客户信息表中的所有数据记录提取至文件中。次数据表中可能包含多个字段,某些字段可能与目标处理业务之间没有关系,例如目标处理业务为累计账户利息增量,客户信息表中除了包含利息增量等与该业务相关的字段外,还包括客户地址、客户名称等与该业务无关的字段。因此,在提取数据记录时,可以首先在在次数据表包含的字段中,确定目标处理业务所需的字段,为了便于描述,这些字段可以称为业务字段。然后,将次数据表中包含业务字段的数据记录提取到文件中。这样,便可以减少数据的读取量,提高业务处理效率。需要说明的是,除了提取业务字段外,每个次数据表中还必须提取的是与主数据表的键值字段具有关联关系的字段,为了便于描述,这些字段可以称为关联字段。例如,次数据表包括客户信息表,关联字段为账号,因为账号就是主数据表的键值字段。若次数据表在包含客户信息表的基础上还包括资产信息表,关联字段为客户编号,因为客户编号是资产信息表与客户信息表之间共同的字段。需要说明的是,提取关联字段的目的是,关联字段中包含主数据表的键值字段,则可以执行步骤s104按照主数据表的键值字段对文件中的数据记录进行排序。另外,提取到文件中的原因是,相较于将数据写入数据表,向文件中写入数据的效率较高。s104:按照键值字段对文件中的数据记录进行排序。基于上述说明可知,文件中的数据记录必然包括主数据表的键值字段,则可以按照主数据表的键值字段对文件中的数据记录进行排序。例如,文件中的数据记录包括{(b1,b11,b12,a2);(b2,b21,b22,a1);(b3,b31,b32,a3)},其中a1、a2及a3为键值字段,按照主数据表的键值字段排序后的结果为{(b2,b21,b22,a1);(b1,b11,b12,a2);(b3,b31,b32,a3)},或者可以进一步将主数据表的键值字段调向首位,即{(a1,b2,b21,b22);(a2,b1,b11,b12);(a3,b3,b31,b32)}。s105:将排序后的数据记录存储至目标数据表中。其中,由于数据表的读取效率较高,因此可以将文件中排序后的数据记录存储在数据表中,以方便后续与主数据表中的数据记录配合执行目标处理业务。为了便于描述,可以将该数据表称为目标数据表或者临时数据表。由以上技术方案可知,本申请提供了一种数据处理方法,该方法确定目标处理业务后,确定与该目标处理业务相关的主数据表及次数据表,将次数据表中的数据记录提取到文件中,并按照主数据表的键值字段对文件中的数据记录进行排序,排序后的数据记录再存储至临时数据表中,这样临时数据表中的数据记录便与主数据表中数据记录的排序方式相同,即均按照主数据表的键值字段排序。数据库的预读缓存机制可以按照主数据表的键值字段读取主数据表中的数据记录到内存后,也可以将临时数据表中相同键值字段的数据记录读取到内存中,从而提高了在内存中同时访问到两个数据表中数据记录的概率,进而提高了数据访问效率。前已述及,次数据表可能为多个,在这种情况下可以对次数据表进行关联操作,因此本申请提供了数据处理方法的另一种流程。如图2所示,该数据处理方法的流程具体包括如下步骤s201~s206。s201:确定目标处理业务。s202:确定与目标处理业务关联的主数据表,并确定主数据表中用于指示数据记录排序的键值字段。s203:确定与目标处理业务关联的次数据表,并将次数据表中的数据记录提取到文件中;其中数据记录中包含主数据表中的键值字段。其中,若次数据表为多个,则每个次数据表均会得到一个文件,从而可以得到多个文件。s204:若次数据表为多个,则将多个次数据表对应的文件中的数据记录进行关联操作,并将关联操作后的数据记录保存在目标文件中。其中,每个次数据表均对应得到一个文件,将多个文件中的数据记录进行关联操作如笛卡尔积操作。例如,次数据表1得到的文件中包含有三条数据记录:{(b1,b11,b12,a2);(b2,b21,b22,a1);(b3,b31,b32,a3)},次数据表2得到的文件中包含有两条数据记录:{(c1,b2);(c2,b1)}。如图3所示,将该两条数据记录进行笛卡尔积操作后,得到的数据记录为:{(c2,b1,b11,b12,a2);(c1,b2,b21,b22,a1)}。s205:按照键值字段对目标文件中的数据记录进行排序。其中,可以首先将目标文件中的数据记录中的键值字段调序,将其换位至数据记录的首位,然后再按照键值字段进行排序。如图4所示,首先将图3得到的两条数据记录中的键值字段a2及a1换位至首个字段,然后按照a1到a2的顺序,将两条数据记录进行排序,得到最终的目标文件。s206:将排序后的数据记录存储至目标数据表中。需要说明的是,有关步骤s201~s203、s205~s206的说明可以参见上述图1中的说明,此处并不赘述。由以上技术方案可知,本申请提供的数据处理方法,可以将多个次数据表得到的数据记录进行关联操作,并将关联操作得到的数据记录保存在临时数据表中。在实际应用中,在将次数据表中的数据记录提取到文件之后,可能按照目标处理业务的要求,对多个字段进行预处理。具体地,若目标处理业务需要次数据表中多个字段的处理结果,则将多个字段对应的数据记录进行综合处理,得到目标字段及目标字段对应的数据记录,并将目标字段及目标字段对应的数据记录保存在文件中。例如,目标处理业务为计算学生理综的平均分数,次数据表为成绩信息表,其中包括生物、物理、化学三门课程的成绩,则次数据表提取到文件中的数据记录也包括该三个字段,由于目标处理业务为计算理综的平均分数,则可以先计算每个学生理综的总分,再计算所有学生理综的平均分。因此,可以将文件中的生物、物理及化学三门成绩进行求和,得到总分这个目标字段,将这个目标字段保存在文件中。以上可以得到数据记录按照主数据表键值字段排序的临时数据表,目标处理业务的完成需要依赖主数据表及临时数据表。因此在上述各个实施例的基础上,还可以包括如下步骤:接收到对目标处理业务的处理指令后,按照键值字段将主数据表中的数据记录及目标数据表中的数据记录读取至内存中;以及依据目标处理业务对应的处理方式,对主数据表中的数据记录及目标数据表中的数据记录进行处理操作。具体地,经过上述处理后可以得到临时数据表(即目标数据表),则当接收到目标业务的处理指令后,便可以在按照主数据表的键值字段将主数据表中的数据记录读取至内存后,也可以按照主数据表的键值字段将临时数据表中的数据记录读取至内存中。然后,直接在内存中获得所需的数据记录,并按照目标处理业务对应的处理方式,对这些数据记录进行处理即可。例如目标处理业务为计算理综成绩的平均分,则可以获得所有学生的理综总分数,然后进行求和平均计算。需要说明的是,不同的处理业务对应的处理方式不同,此处并不进行限定。相较于现有技术中直接访问主数据表及次数据表中的数据记录的方式而言,该方法可以较大可能地同时在内存的缓存数据找到主数据表及次数据表所需的数据,从而提高业务处理效率。见图5,其示出了本申请提供了一种数据处理装置的结构示意。如图5所示,该装置的结构具体包括:处理业务确定模块501、主表键值确定模块502、次表数据提取模块503、次表数据排序模块504、以及次表数据保存模块505。处理业务确定模块501,用于确定目标处理业务;主表键值确定模块502,用于确定与所述目标处理业务关联的主数据表,并确定所述主数据表中用于指示数据记录排序的键值字段;次表数据提取模块503,用于确定与所述目标处理业务关联的次数据表,并将所述次数据表中的数据记录提取到文件中;其中所述数据记录中包含主数据表中的键值字段;次表数据排序模块504,用于按照所述键值字段对所述文件中的数据记录进行排序;次表数据保存模块505,用于将所述排序后的数据记录存储至目标数据表中。见图6,其示出了本申请提供的另一种数据处理装置的结构示意。该装置在图5所示的装置结构基础上,还可以包括:数据记录关联模块506。数据记录关联模块506,用于在所述将所述次数据表中的数据记录提取到文件中之后,所述按照所述键值字段对所述文件中的数据记录进行排序之前,若所述次数据表为多个,则将多个所述次数据表对应的文件中的数据记录进行关联操作,并将关联操作后的数据记录保存在目标文件中;相应地,所述次表数据排序模块504可以具体包括:次表数据排序子模块507。次表数据排序子模块,用于按照所述键值字段对所述目标文件中的数据记录进行排序。在一种实现方式中,所述次表数据提取模块504可以具体包括:次表确定子模块、以及字段提取子模块。次表确定子模块,用于确定与所述目标处理业务关联的次数据表;字段提取子模块,用于在所述次数据表包含的字段中,确定所述目标处理业务所需的业务字段以及与所述键值字段具有关联关系的关联字段;以及将所述次数据表中包含所述关联字段及所述业务字段的数据记录提取到文件中。在一种实现方式中,该数据处理装置还可以包括:中间处理模块。中间处理模块,用于在将所述次数据表中的数据记录提取到文件中之后,且按照所述键值字段对所述文件中的数据记录进行排序之前,若所述目标处理业务需要所述次数据表中多个字段的处理结果,则将所述多个字段对应的数据记录进行综合处理,得到目标字段及目标字段对应的数据记录,并将所述目标字段及目标字段对应的数据记录保存在文件中。在一种实现方式中,该数据处理装置还可以包括:业务处理模块。业务处理模块,用于接收到对目标处理业务的处理指令后,按照所述键值字段将所述主数据表中的数据记录及所述目标数据表中的数据记录读取至内存中;以及依据所述目标处理业务对应的处理方式,对所述主数据表中的数据记录及所述目标数据表中的数据记录进行处理操作。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1