发明内容
本发明实施例提供了一种实时内存数据库系统中数据处理方法及装置,以至少解决相关技术中采用系统所有版本全部升级的方法从而造成的任何小的数据改动都需要波及全系统的问题。
本发明实施例提供了一种实时内存数据库系统中数据处理方法,包括:确定业务模块的表结构与实时内存数据库系统中的主数据库的表结构不一致;根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据;向业务模块发送转换后的数据。
优选地,根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据包括:判断数据字典信息中的字段数据属性是否发生变化;如果判断结果为是,则根据变化的字段数据属性,将主数据库的表记录视图数据转换为业务模块可识别的数据。
优选地,根据变化的字段数据属性,将主数据库的表记录视图数据转换为业务模块可识别的数据包括:在业务模块的字段数据属性是WORD16并且主数据库的字段数据属性是BYTE的情况下,如果主数据库的表记录视图数据是0x01,则转换后的业务模块可识别的数据0x0001。
优选地,在根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据之前,还包括:根据业务模块的数据字典信息与主数据库的数据字典信息,对业务模块与主数据库之间的数据库访问接口的接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数;根据数据库视图参数获取主数据库中的表记录视图数据。
优选地,如果业务模块的数据字典信息在主数据库的数据字典信息中不存在,则不生成对应于该业务模块的数据字典信息的数据库视图参数。
本发明实施例提供了一种实时内存数据库系统中数据处理装置,包括:确定模块,用于确定业务模块的表结构与实时内存数据库系统中的主数据库的表结构不一致;第一转换模块,用于根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据;发送模块,用于向业务模块发送转换后的数据。
优选地,第一转换模块包括:判断子模块,用于判断数据字典信息中的字段数据属性是否发生变化;转换子模块,用于在判断结果为是的情况下,根据变化的字段数据属性,将主数据库的表记录视图数据转换为业务模块可识别的数据。
优选地,上述装置还包括:第二转换模块,用于根据业务模块的数据字典信息与主数据库的数据字典信息,对业务模块与主数据库之间的数据库访问接口的接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数;获取模块,用于根据数据库视图参数获取主数据库中的表记录视图数据。
本发明实施例提供了一种实时内存数据库系统中数据处理装置,包括:确定模块,用于确定业务模块的表结构与实时内存数据库系统中的主数据库的表结构不一致;第一数据库适配模块,用于根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据;发送模块,用于向业务模块发送转换后的数据。
优选地,上述装置还包括:第二数据库适配模块,用于根据业务模块的数据字典信息与主数据库的数据字典信息,对业务模块与主数据库之间的数据库访问接口的接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数;数据库裁剪模块,用于根据数据库视图参数获取主数据库中的表记录视图数据。
本发明实施例采用基于数据字典信息的数据转换,不必对系统所有版本全部升级,从而可以避免相关技术中的问题,同时,让业务模块只关注数据的使用,而不用关系数据的转换,同时屏蔽了不同模块间的数据差异。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下实施例中的重复数据处理方法可以应用在服务器上,该服务器可以专用于进行重复数据的处理,当然也可以应用于一组服务器上。或者也可以作为服务器中的一个模块与执行其他功能的服务器公用。
本发明提供了一种实时内存数据库系统中数据处理装置,图1是根据本发明实施例的实时内存数据库系统中数据处理装置的示意图,如图1所示,实时内存数据库系统中数据处理装置由数据库初始化管理模块、数据库访问模块、数据库适配模块和数据库裁剪模块组成。下面分别介绍一下各模块的作用。
数据库初始化模块:用于根据数据字典,完成数据库、数据库表、数据索引的创建与内存分配。
数据访问模块:用于为业务模块提供数据库访问服务,其中包含数据库操作的表与字段检查以及数据的合法性检查等,并将操作结果返回给访问业务模块。
数据适配模块:用于完成各个业务模块的裁剪或适配数据字典注册、初始化,适配数据库业务模块访问接口,生成数据库裁剪视图,适配视图返回数据等。
数据裁剪模块:用于依据主数据库的视图参数,对主数据库进行裁剪。
基于上述实时内存数据库系统中数据处理装置,本发明提供了一种实时内存数据库系统中数据处理方法,图2是根据本发明实施例的实时内存数据库系统中数据处理方法的流程图,如图2所示,包括如下的步骤S202至步骤S206。
步骤S202,确定业务模块的表结构与实时内存数据库系统中的主数据库的表结构不一致。
步骤S204,根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据。
步骤S206,向业务模块发送转换后的数据。
相关技术中,采用系统所有版本全部升级的方法,因此,任何小的数据改动都需要波及全系统,版本不稳定、版本维护成本大、版本升级时间长。本发明实施例中,采用基于数据字典信息的数据转换,不必对系统所有版本全部升级,从而可以避免相关技术中的问题,同时,让业务模块只关注数据的使用,而不用关系数据的转换,同时屏蔽了不同模块间的数据差异。
考虑到上述数据字典信息中的字段数据属性可能发生变化,本优选实施例可以先判断该变化的字段数据属性,然后根据该变化的字段数据属性,将主数据库的表记录视图数据转换为业务模块可识别的数据。例如,在业务模块的字段数据属性是WORD16并且主数据库的字段数据属性是BYTE的情况下,如果主数据库的表记录视图数据是0x01,则转换后的业务模块可识别的数据0x0001。这样,数据转换地实现准确、快捷。
另外,在根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据之前,本优选实施例还可以根据业务模块的数据字典信息与主数据库的数据字典信息,对业务模块与主数据库之间的数据库访问接口的接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数;根据数据库视图参数获取主数据库中的表记录视图数据。需要说明的是,如果业务模块的数据字典信息在主数据库的数据字典信息中不存在,则不生成对应于该业务模块的数据字典信息的数据库视图参数。
下面分别从数据库数据字典裁剪适配功能启动和业务模块通过数据适配模块访问数据库两个部分说明本方法的处理流程。
数据库数据字典裁剪适配功能启动流程:
第一步:实时内存数据库依据整个系统的数据字典的表信息、字段信息、索引信息和外键信息完成数据库系统的初始化,并根据数据字典对磁盘数据库存盘文件数据进行的合法性、完整性检查并装载到数据库,此步骤保证了整个系统中数据完整性、可靠性。
第二步:各个系统或模块(后续描述中简称业务模块),根据功能需要提取出裁剪或适配的数据字典,包含表信息(完成表的裁剪与转换)、字段信息(表句柄、表字段名称、表字段类型、表字段长度、取值范围、默认值、字段间转换等信息,完成字段裁剪与转换)、索引信息。在业务模块初始化时,其注册到数据库适配模块。
第三步:数据库适配模块根据模块裁剪或适配数据字典进行初始化,主要是根据裁剪或适配数据字典信息,建立模块与主数据库表映射关系,实际上是为每个业务模块提供了主数据库的扩展视图(即从数据库),其特点是业务模块感觉使用的是自己独立的数据库。
上述步骤的主要目的为屏蔽表、表字段变化给业务模块带来的影响做准备。
业务模块通过数据库的适配与裁剪模块访问数据库流程:
第一步:业务模块调用数据库访问接口访问数据,如果发现模块表结构与主数据库不一致,则调用数据库适配模块接口,否则直接获取主数据库数据返回。
第二步:数据库适配模块对比主数据库的数据字典与裁剪或适配数据字典信息(包括:表句柄、表字段名称、表字段类型、表字段长度、取值范围、默认值、字段间转换等),对接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数,从而保证了数据库访问接口、参数的不变,做到数据库访问功能内部处理的一致性。
第三步:视图裁剪模块,根据适配模块传入数据库视图参数获取主数据库中的表记录视图数据,完成对主数据库数据裁剪,此步骤特点是在数据库内部完成视图裁剪,完全屏蔽了业务模块不关心的字段和字段值。
第四步,数据适配,对比裁剪或适配数据字典与主数据库字典,将主数据库的表视图记录数据转换为业务模块识别数据。此方法让业务模块只关注数据的使用,不用关心数据的转换,同时屏蔽了不同模块间的数据差异。
第五步:将转换后的数据返回给业务模块,业务模块根据业务需要对获取表记录进行业务逻辑处理。
下面将结合实例对本发明实施例的实现过程进行详细描述。
为了能够实现屏蔽不同系统或模块带来数据组织的差异,本发明的基本思想如下:
首先在主数据库上有一组针对数据库表相关的数据字典描述与定义,其中包含表信息、字段信息、索引信息,为突出数据字典的裁剪与适配方法,只列出表字段描述信息,其中以实体表1为例,其数据字典字段信息描述如表1:
表1数据字典信息中各字段的描述表
表句柄 |
字段名称 |
数据类型 |
取值范围 |
默认值 |
0x0000001 |
Field 1 |
BYTE |
1-255 |
1 |
0x0000001 |
Field 2 |
WORD32 |
|
0 |
0x0000001 |
Field 3 |
BYTE |
1,2,3,4,5,6,7 |
‘2’ |
0x0000001 |
Field 6 |
WORD32 |
|
0 |
为说明方便,表1只有一条记录,各个字段值都为1,其内存值如下:
Field1=0x01 Field2=0x0001 Field3=0x01 Field6=0x0001(采用一字节对齐)。
在各个系统或模块中会根据自己功能特性会对主数据库进行裁减或扩充,因此各个系统或模块有一套裁剪与适配的数据字典信息(为简述方便称为模块数据字典)。以模块B为例,其对应表1数据字典字段的适配裁剪信息如表2。
表2数据字典信息中各字段的适配裁剪表
表句柄 |
字段名称 |
数据类型 |
取值范围 |
默认值 |
字段转换 |
0x0000001 |
Field 1 |
WORD16 |
|
1 |
|
0x0000001 |
Field 3 |
BYTE |
1,2,3,4,5,6,7 |
‘2’ |
|
0x0000001 |
Field 4 |
WORD32 |
|
0 |
“A.Feild2” |
0x0000001 |
Field 5 |
WORD32 |
|
0 |
|
各个系统或模块在初始化阶段,将模块数据字典信息注册到数据库适配模块,数据库内部完成相应的初始化。
下面是B模块向主数据库获取表1数据时,使用该方法的一个实施例的处理流程。
第一步:B模块调用数据库接口获取表1中全部数据,发现本模块数据与主数据库格式不一致,数据库接口调用数据库适配模块。
第二步:数据库适配模块对比主数据库数据字典与模块数据字典信息,生成获取主数据库的视图。具体步骤如下:
1、判断在模块数据字典字段信息是否有字段转换信息,如果存在则字段信息转换,如表1中Field4存在字段转换信息,说明是从主数据库表1的Field2转换而来(此处也可从另外一个表中字段转换而来),因此将Field4信息转换为主数据库的Field2信息,否则进入流程2。
2、判断模块B获取表1的字段,在主数据库中是否存在,如果不存在则不生成视图信息,如模块B中表1的模块数据字典中字段Feild5在主数据库不存在,如果存在则进入3。
3、判断模块与主数据库两个数据字典信息中字段信息是否相同,如果不同进行字段信息转换(此处主要是根据字段类型调整字段长度),否则不做处理。
本次B模块对表1产生的主数据库的视图为:Field1 Field3 Field2
第三步:数据库裁剪模块根据主数据库视图信息获取视图记录数据,本例中是获取表1中每条记录的Field1、Field3、Field2字段信息;此步骤过滤可主数据库中Field6字段,记录信息为:
Field1=0x01 Field3=0x01 Field2=0x0001
第四步:数据库适配模块将主数据库视图数据转换为模块B识别表数据。具体步骤如下;
1、根据模块B数据字典信息申请记录缓冲区。
2、判断字段在模块B数据字典存在,在主数据库字典是否存在,不存在则将默认值回填入记录缓冲区。如模块B数据字典中的字段Field5,就是回填0,否则进入3;
3、判断字段数据属性是否发生变化,如果变化则将视图数据按照模块数据字典格式转换后,回填至记录缓冲区。如字段Feild1其在模块B中其类型是WORD32,在主数据库中是BYTE,回填时值变为0x0001。
4、判断是否存在字段转换,如果存在则按照模块数据字典字段属性,进行类型转换后回填至记录缓冲区。模块数据字典中Field4就是使用视图中Field2的值回填。
经过上述流程,其适配后的记录为:
Field1=0x0001 Field3=0x01 Field4=0x0001 Field5=0x0000
第五步:将适配后的数据返回给模块B,B根据返回数据进行相关处理。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种实时内存数据库系统中数据处理装置,该实时内存数据库系统中数据处理装置可以用于实现上述实时内存数据库系统中数据处理方法。图3是根据本发明实施例的实时内存数据库系统中数据处理装置的结构框图,如图3所示,包括确定模块32、第一转换模块34和发送模块36。下面对其进行详细描述。
确定模块32,用于确定业务模块的表结构与实时内存数据库系统中的主数据库的表结构不一致;第一转换模块34,连接至确定模块32,用于根据业务模块的数据字典信息与主数据库的数据字典信息,将主数据库的表记录视图数据转换为业务模块可识别的数据;发送模块36,连接至第一转换模块34,用于向业务模块发送第一转换模块34转换后的数据。
图4是根据本发明优选实施例的实时内存数据库系统中数据处理装置的结构框图一,如图4所示,第一转换模块34包括判断子模块342和转换子模块344,下面对其结构进行详细描述。
判断子模块342,用于判断数据字典信息中的字段数据属性是否发生变化;转换子模块344,连接至判断子模块342,用于在判断子模块342判断结果为是的情况下,根据变化的字段数据属性,将主数据库的表记录视图数据转换为业务模块可识别的数据。
图5是根据本发明优选实施例的实时内存数据库系统中数据处理装置的结构框图二,如图5所示,上述装置还包括第二转换模块38和获取模块39。下面对其结构进行详细描述。
第二转换模块38,用于根据业务模块的数据字典信息与主数据库的数据字典信息,对业务模块与主数据库之间的数据库访问接口的接口参数进行数据格式的转换,转换成主数据库可识别的数据库视图参数;获取模块39,连接至第二转换模块38,用于根据第二转换模块38转换成的主数据库可识别的数据库视图参数获取主数据库中的表记录视图数据。
需要说明的是,装置实施例中描述的实时内存数据库系统中数据处理装置对应于上述的方法实施例,其具体的实现过程在方法实施例中已经进行过详细说明,在此不再赘述。
综上所述,根据本发明的上述实施例,提供了一种实时内存数据库系统中数据处理方法及装置。本发明实施例采用基于数据字典信息的数据转换,不必对系统所有版本全部升级,从而可以避免相关技术中的问题,同时,让业务模块只关注数据的使用,而不用关系数据的转换,同时屏蔽了不同模块间的数据差异。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。