一种数据库差异的识别方法及装置与流程

文档序号:16263589发布日期:2018-12-14 21:46阅读:158来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种数据库差异的校验方法及装置、电子设备、计算机可读存储介质。
背景技术
:为了保证不同环境(例如生产环境、测试环境、预发布环境、开发环境)下数据库的一致性,在发版生产前,需要对数据库结构进行比对。在云环境中,一般采用对数据库字段逐个进行比对来找出不同环境下数据库之间的差异性。但是,这种方式效率较低,需要采用轮询的方式,针对数据库的每个字段,需要查找每个字段在另一环境数据库中的存在性,全部比对结束,才能判断数据库表结构是否一致,时间复杂度极高。而且,当数据库需要校验的表较多时,这种方式工作周期长,过程不够智能化。另外,在比对过程中,通常都是直接连接数据库实时获取数据库信息,也会耗费一定的时间。技术实现要素:为了解决相关技术中存在的数据库差异比对效率较低、耗费时间长的问题,本发明提供了一种数据库差异的识别方法。一方面,本发明提供了一种数据库差异的识别方法,所述方法包括:将不同环境下系统库中存储的业务数据库信息配置成独立文件;获取不同环境下所述独立文件中记载的业务数据库信息;采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值;根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。在一种示例性实施例中,在根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录之后,所述方法还包括:对所述存在差异的记录进行字段逐个比对,定位存在差异的字段。在一种示例性实施例中,所述采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值,包括:采用md5加密算法计算不同环境下业务数据库信息中每条记录的md5值,得到每条记录的信息摘要值。在一种示例性实施例中,所述采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值,包括:针对不同环境下所述业务数据库信息中的每条记录,剔除所述记录中的动态更新字段;采用信息摘要算法对每条记录的剩余字段进行散列处理,生成每条记录对应的信息摘要值。在一种示例性实施例中,所述根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录,包括:将每条记录的标识信息与所述记录对应的信息摘要值进行对应存储,得到所述标识信息所对应记录在不同环境下的信息摘要值;比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。另一方面,本发明还提供了一种数据库差异的识别装置,所述装置包括:文件配置模块,用于将不同环境下系统库中存储的业务数据库信息配置成独立文件;信息读取模块,用于获取不同环境下所述独立文件中记载的业务数据库信息;摘要生成模块,用于采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值;差异比对模块,用于根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。在一种示例性实施例中,所述装置还包括:字段定位模块,用于对所述存在差异的记录进行字段逐个比对,定位存在差异的字段。在一种示例性实施例中,所述摘要生成模块包括:加密计算单元,用于采用md5加密算法计算不同环境下业务数据库信息中每条记录的md5值,得到每条记录的信息摘要值。另一方面,本发明还提供了一种电子设备,所述电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述任意一种数据库差异的识别方法。另一方面,本发明还提供了一种计算机可读存储介质所述计算机可读存储介质存储有计算机程序,所述计算机程序可由处理器执行上述任意一种数据库差异的识别方法。本发明的实施例提供的技术方案可以包括以下有益效果:本发明提供的技术方案,将不同环境下系统库中记载的业数据库信息配置成文件,从而可以直接从文件中读取每条记录进行比对,由此在记录比对过程中无需逐条记录再去访问系统库,节省了数据获取时间,提高了差异识别效率。进一步的,通过计算每条记录的新信息摘要值,比较每条记录在不同环境下的信息摘要值,从而可以快速找出不一致的记录,进一步提高了数据库差异的识别效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。图1是根据本发明所涉及的实施环境的示意图;图2是根据一示例性实施例示出的一种服务器的框图;图3是根据一示例性实施例示出的一种数据库差异的识别方法的流程图;图4是图3对应实施例中步骤330的细节流程图;图5是图3对应实施例中步骤340的细节流程图;图6是根据一示例性实施例示出的一种数据库差异的识别装置的框图;图7是图6对应实施例中摘要生成模块的细节框图。具体实施方式这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。图1是根据本发明所涉及的实施环境的示意图。该实施环境包括:多个服务器110,多个服务器110分别进行数据库的开发、测试、生产、预发布。进行数据库开发的服务器110可以认为是开发环境、进行数据库测试的服务器110可以认为是测试环境、正式对外提供数据库服务的服务器110可以认为是生产环境,不对外提供服务但配置与生产环境一致的服务器110可以认为是预发布环境。因为不同环境下服务器110的配置(例如操作系统、存储系统)不同,因此在开发环境下设计的数据库可能在其他环境中存在差异,为了验证所设计的数据库在不同环境下是否存在差异。服务器110可以根据不同环境(开发环境、测试环境、生产环境、预发布环境)下系统库中存储的业务数据库信息,采用本发明提供的数据库差异对比方法,判断所开发的数据库在不同环境下是否会存在差异,找出存在差异的信息。参见图2,图2是本发明实施例提供的一种服务器110结构示意图。该服务器110可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)222(例如,一个或一个以上处理器)和存储器232,一个或一个以上存储应用程序242或数据244的存储介质230(例如一个或一个以上海量存储设备)。其中,存储器232和存储介质230可以是短暂存储或持久存储。存储在存储介质230的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对服务器110中的一系列指令操作。更进一步地,中央处理器222可以设置为与存储介质230通信,在服务器110上执行存储介质230中的一系列指令操作。服务器110还可以包括一个或一个以上电源226,一个或一个以上有线或无线网络接口250,一个或一个以上输入输出接口258,和/或,一个或一个以上操作系统241,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。下述图3、图4、图5所示实施例中所述的由服务器110所执行的步骤可以基于该图2所示的服务器结构。本领域普通技术人员可以理解实现下述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。图3是根据一示例性实施例示出的一种数据库差异的识别方法的流程图。该数据库差异的识别方法的适用范围和执行主体(例如,该方法用于图1所示实施环境的服务器110)。如图3所示,该方法可以由服务器端110执行,可以包括以下步骤。在步骤310中,将不同环境下系统库中存储的业务数据库信息配置成独立文件。其中,不同环境是指生产环境、测试环境、预发布环境、开发环境。各个环境下的服务器由于配置不同因而所运行的数据库可能存在差异。不同环境下的业务数据库信息可以提前从当前环境下的information_schema(信息概要)库中读取。information_schema是一个系统库,存储当前环境下的业务数据库信息,直接从系统库获取业务数据库信息,可以节省去每个业务数据库读取信息的时间。在mysql(关系型数据库管理系统)中,把information_schema看作是一个数据库,确切说是信息数据库。其中保存着关于mysql所维护的所有其他数据库(即业务数据库)的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。本发明从业务数据库所在环境的系统库中读取业务数据库信息,并单独存储成一个文件,即独立文件,从而后续在差异比对过程中无需再访问系统库去读取业务数据库信息,可以直接从文件中读取每条记录进行比对,节省了数据获取时间,提高了差异识别效率。在步骤320中,获取不同环境下所述独立文件中记载的业务数据库信息。在差异比对过程中,某一服务器可以通过网络传输方式获取其他环境下服务器配置而成的独立文件,进而读取不同环境下独立文件中记载的业务数据数据库信息。在步骤330中,采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值。需要说明的是,系统库中存在多个只读表,记载着业务数据库信息,包括tables表(提供表信息)、columns表(提供列信息)、views表(提供视图信息)、triggers表(提供触发程序信息)等。通过比较不同环境下这些表的记录是否存在差异,就可以判断出不同环境下的业务数据库是否存在一致。具体的,服务器读取不同环境下独立文件中记载的业务数据库信息,也就是得到了不同环境下系统库中上述表的记录。服务器采用信息摘要算法对每条记录的内容进行计算,将每条记录转换成一个字符串。信息摘要算法可以是md5算法、sha-1算法等。在一种实施例中,上述步骤330具体包括:采用md5加密算法计算不同环境下业务数据库信息中每条记录的md5值,得到每条记录的信息摘要值。由此,在进行数据库差异比对时,比较每条记录在不同环境下的md5值,从而可以快速找出不一致的记录,而无需对所有字段一一进行比对。在步骤340中,根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。标识信息可以是一个索引,可以是一个字段,也可以是多个字段组合,主要是为了能唯一识别出这条记录。标识信息可以是该条记录的序号、名称等。对每条记录采用信息摘要算法进行计算后,会将信息摘要值和该记录的标识信息组成一个键值对。其中,不同环境下对应记录的标识信息是一样的。举例来说,第一条记录在不同环境下都叫记录aa,但是记录aa在不同环境下可能存在差异,从而不同环境下的记录aa可能计算得到不同的信息摘要值。通过比较不同环境下同一标识信息对应的记录的信息摘要值是否一致,就可以判断出该标识信息对应的记录在不同环境下是否存在差异。如果在信息摘要值不一致时即可认为该标识信息对应的记录在不同环境下存在差异。举例来说,记录aa在生产环境中计算得到md5值为512345,在测试环境中计算得到md5为123456,由此可以得到记录aa在不同环境下存在差异。本发明上述示例性实施例提供的技术方案,将不同环境下系统库中记载的业数据库信息配置成文件,从而可以直接从文件中读取每条记录进行比对,由此在记录比对过程中无需逐条记录再去访问系统库,节省了数据获取时间,提高了差异识别效率。进一步的,通过计算每条记录的md5值,比较每条记录在不同环境下的md5值,从而可以快速找出不一致的记录,进一步提高了数据库差异的识别效率。在一种示例性实施例中,在上述步骤340之后,本发明提供的技术方案还包括以下步骤:对所述存在差异的记录进行字段逐个比对,定位存在差异的字段。在上述步骤340找出存在差异的记录后,可以进一步对差异记录中的字段进行逐个比对,从而准确定位业务数据库信息在不同环境下存在差异的字段。本发明通过先筛选出存在差异的记录,再进一步对差异记录中的字段进行逐个比对,从而快速定位存在差异的字段,克服了现有对所有记录中的字段进行逐个比对耗费时间长的缺陷。在找出不同环境下存在差异的字段后,开发人员就根据找出的差异字段,调整开发的业务数据库,提高业务数据库在不同环境下的兼容性。在一种示例性实施例中,如图4所示,在上述步骤330具体包括:在步骤331中,针对不同环境下所述业务数据库信息中的每条记录,剔除所述记录中的动态更新字段;需要说明的是,每条记录都包含很多字段,把需要保持一致的字段提取出来,像创建时间、更新时间这些就没必要保持一致,就可以剔除掉。动态更新字段就是指记录中不需要保持一致的字段,例如创建时间、更新时间等。在步骤332中,采用信息摘要算法对每条记录的剩余字段进行散列处理,生成每条记录对应的信息摘要值。其中,剩余字段是指记录中剔除了动态更新字段后剩余的字段。对每条记录剔除无需保持一致的字段后,对剩余字段采用信息摘要算法进行散列处理,生成每条记录的信息摘要值。进而比较不同环境下同一标识信息对应的记录的信息摘要值是否一致,以此确定存在差异的记录。在一种示例性实施例中,如图5所示,在上述步骤340具体包括:在步骤341中,将每条记录的标识信息与所述记录对应的信息摘要值进行对应存储,得到所述标识信息所对应记录在不同环境下的信息摘要值;具体的,在计算得到每条记录的信息摘要值之后,将该记录的标识信息和信息摘要值以键值对的形式进行对应存储,举例来说,标识信息aa在生产环境下对应的信息摘要值为123678,标识信息aa在测试环境下对应的信息摘要值为234545,标识信息aa在开发环境下的信息摘要值为127898,从而可以得到在不同环境下同一标识信息所对应记录的信息摘要值。在步骤342中,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。举例来说,标识信息aa在生产环境下对应的信息摘要值为123678,标识信息aa在测试环境下对应的信息摘要值为234545,标识信息aa在开发环境下的信息摘要值为127898,针对标识信息aa,比对标识信息aa在不同环境(开发环境、测试环境、生产环境)下的信息摘要值(123678、234545、127898)。经过比对发现,标识信息aa在不同环境下的信息摘要值不一致,由此得到标识信息aa对应的记录在不同环境下存在差异。相反的,如果标识信息aa在不同环境下的信息摘要值一致,可以认为标识信息aa对应的记录在不同环境下不存在差异。下述为本发明装置实施例,可以用于执行本发明上述服务器110执行的数据库差异的识别方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明数据库差异的识别方法实施例。图6是根据一示例性实施例示出的一种数据库差异的识别装置的框图,该数据库差异的识别装置可以用于图1所示实施环境的服务器110中,执行图3-图5任一所示的数据库差异的识别方法的全部或者部分步骤。如图6所示,该装置包括但不限于:文件配置模块610、信息读取模块620、摘要生成模块630以及差异比对模块640。文件配置模块610,用于将不同环境下系统库中存储的业务数据库信息配置成独立文件信息读取模块620,用于获取不同环境下所述独立文件中记载的业务数据库信息;摘要生成模块630,用于采用信息摘要算法对所述业务数据库信息中的每条记录进行散列处理,生成每条记录对应的信息摘要值;差异比对模块640,用于根据每条记录的标识信息,比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。上述装置中各个模块的功能和作用的实现过程具体详见上述数据库差异的识别方法中对应步骤的实现过程,在此不再赘述。文件配置模块610、信息读取模块620、摘要生成模块630以及差异比对模块640可以是功能模块,用于执行上述数据库差异的识别方法中的对应步骤。可以理解,这些模块可以通过硬件、软件、或二者结合来实现。当以硬件方式实现时,这些模块可以实施为一个或多个硬件模块,例如一个或多个专用集成电路。当以软件方式实现时,这些模块可以实施为在一个或多个处理器上执行的一个或多个计算机程序,例如图2的中央处理器222所执行的存储在存储器232中的程序。在一种示例性实施例中,所述数据库差异的识别装置还包括但不限于:字段定位模块,用于对所述存在差异的记录进行字段逐个比对,定位存在差异的字段。在一种示例性实施例中,所述摘要生成模块630包括但不限于:加密计算单元,用于采用md5加密算法计算不同环境下业务数据库信息中每条记录的md5值,得到每条记录的信息摘要值。在一种示例性实施例中,如图7所示,所述摘要生成模块630包括但不限于:字段剔除单元631,用于针对不同环境下所述业务数据库信息中的每条记录,剔除所述记录中的动态更新字段;加密处理单元632,用于采用信息摘要算法对每条记录的剩余字段进行散列处理,生成每条记录对应的信息摘要值。在一种示例性实施例中,所述差异比对模块640包括但不限于:对应存储单元,用于将每条记录的标识信息与所述记录对应的信息摘要值进行对应存储,得到所述标识信息所对应记录在不同环境下的信息摘要值;摘要比对单元,用于比对同一标识信息所对应记录在不同环境下的信息摘要值,获得存在差异的记录。可选的,本发明还提供一种电子设备,该电子设备以用于图1所示实施环境的服务器110中,执行图3-图5任一所示的数据库差异的识别方法的全部或者部分步骤。所述电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述示例性实施例所述的数据库差异的识别方法。该实施例中电子设备的处理器执行操作的具体方式已经在有关该数据库差异的识别方法的实施例中执行了详细描述,此处将不做详细阐述说明。在示例性实施例中,还提供了一种存储介质,该存储介质为计算机可读存储介质,例如可以为包括指令的临时性和非临时性计算机可读存储介质。该存储介质存储有计算机程序,该计算机程序可由服务器110的中央处理器222执行以完成上述数据库差异的识别方法。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1