智能数据库编码监控方法、装置及电子设备与流程

文档序号:18795751发布日期:2019-09-29 19:36阅读:241来源:国知局
本申请涉及软件开发
技术领域
:,尤其涉及一种智能数据库编码监控方法、装置及电子设备。
背景技术
::现有的企业级web后台软件研发的过程中,数据库相关的orm映射相关代码编程是重要且不可或缺的组成部分;有很多半自动的orm框架(如mybatis及greendao等)均致力于解决orm映射中涉及到的软件编程中通过人力手工编程的成本问题,具体通过自动化的模块将软件后端的对象型数据和数据库中的关系型的数据进行映射,并应用工具自动生成代码,以解决orm映射相关的代码量较大、需要人工编码导致效率低及容易出错问题。然而,由于在大规模的企业级web后台软件研发过程中的前期和中期的需求变更频繁,数据库中的数据表经常存在变动的情况,尤其是数据库表结构的变更;该变更会导致早期通过工具生成orm相关的代码映射关系存在遗漏、缺失和错误,使得orm相关代码与数据库系统中的数据表存在不一致和滞后的情形,因此研发人员不得不人工的去检查表结构是否存在变更,进而需要频繁、不定期的再次利用工具人工手动生成新的orm映射相关的代码,覆盖软件仓库的之前对应的相关代码。技术实现要素:针对现有技术中的问题,本申请提供一种智能数据库编码监控方法、装置及电子设备,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率。为解决上述技术问题,本申请提供以下技术方案:第一方面,本申请提供一种智能数据库编码监控方法,包括:对目标数据库对应的数据库表结构进行实时监测;若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码;获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。进一步地,所述若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码,包括:若监测到所述数据库表结构发生变化,则控制预设的触发器将所述数据库表结构的当前变化对应的触发信息存储至触发信息表中;基于所述触发信息判断所述数据库表结构的当前变化是否满足预设的触发累计条件,若是,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。进一步地,在所述动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码之后,还包括:将所述orm自动生成代码存储至orm数据库中。进一步地,还包括:基于所述触发信息生成对应的用于进行辅助编码的数据库触发统计摘要信息;将所述数据库触发统计摘要信息发送至对应的客户端以辅助用户对所述目标数据库进行编码。进一步地,在所述获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错之前,还包括:更新所述目标数据库对应的代码仓库中的该目标数据库对应的代码中与orm相关的数据,并将该与orm相关的数据确认为所述orm当前存储代码。进一步地,所述获取并输出该orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错,包括:自所述触发信息表和所述代码仓库中分别获取对应的所述orm自动生成代码和orm当前存储代码;对所述orm当前存储代码和所述orm自动生成代码之间进行差异对比,得到对应的差异数据;将所述差异数据发送至对应的客户端以使用户自所述客户端中根据该差异数据进行针对所述目标数据库的当前变化的代码纠错。进一步地,在所述将所述差异数据发送至对应的客户端以使用户自所述客户端中根据该差异数据进行针对所述目标数据库的当前变化的代码纠错之前,还包括:对所述差异数据进行针对自动生成代码的时间戳的过滤处理。第二方面,本申请提供一种智能数据库编码监控装置,包括:数据库监听模块,用于对目标数据库对应的数据库表结构进行实时监测;代码存储模块,用于若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码;代码差异分析模块,用于获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的智能数据库编码监控方法的步骤。第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的智能数据库编码监控方法的步骤。本申请提供的一种智能数据库编码监控方法、装置及电子设备,其中的智能数据库编码监控方法包括对目标数据库对应的数据库表结构进行实时监测;若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码;获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,能够避免采用频繁且主动的手动执行脚本,并避免了因重复生成和覆盖对应代码而造成的繁琐流程,能够有效节省人力成本及时间成本,进而能够有效提高企业级web后台软件研发的准确性、可靠性和开发效率。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例的智能数据库编码监控系统的架构示意图;图2是本申请实施例中的智能数据库编码监控方法的流程示意图;图3是本申请实施例中的智能数据库编码监控方法中步骤200的第一种流程示意图;图4是本申请实施例中的智能数据库编码监控方法中步骤200的第二种流程示意图;图5是本申请实施例中的包含有步骤400和步骤500的智能数据库编码监控方法的流程示意图;图6是本申请实施例中的包含有步骤204的智能数据库编码监控方法的流程示意图;图7是本申请实施例中的智能数据库编码监控方法中步骤300的流程示意图;图8是本申请实施例中的包含有步骤3021的智能数据库编码监控方法的流程示意图;图9是本申请实施例中的智能数据库编码监控装置的结构示意图;图10是本申请实施例中的智能数据库编码监控装置的具体结构示意图;图11是本申请实施例中的智能数据库编码监控方法的具体流程示意图;图12是本申请实施例的智能数据库编码监控方法的服务器的硬件结构框图。具体实施方式为了使本
技术领域
:的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。很多半自动的orm框架(如mybatis,greendao)致力于解决orm映射中涉及到的软件编程通过人力手工编程成本问题;比如:可以对数据库相关的代码通过手动执行脚本的方式触发生成对应的数据库处理相关的代码,对于存在数据库表结构存在频繁的变更的场景,上述变更导致早期通过工具生成orm相关的代码映射关系存在遗漏,缺失,错误,跟数据库系统中的数据表不一致和滞后的情况;研发人员不得不人工的去检查表结构是否存在变更,进而频繁、不定期的再次利用工具人工手动生成新的orm映射相关的代码,比较繁琐,依然存在人力和时间上的投入和消耗的问题。综上所述,现有在服务器端或者手机终端使用的半自动化的orm框架,仍然无法解决数据库表结构变更带来的orm映射代码进行重复编码和低效率问题,在数据库表结构变更的时候用户需要频繁的、主动的通过人工手动执行脚本,重复生成和覆盖对应的代码,流程非常繁琐;挖掘和利用数据库表结构变更相关信息,无需人力和手动干预,对orm映射相关的代码进行全自动化的纠错和高效辅助编码的工具还鲜有研究。考虑到现有技术存在的上述问题,本申请提供一种智能数据库编码监控方法、智能数据库编码监控装置、电子设备和计算机可读存储介质,通过对目标数据库对应的数据库表结构进行实时监测;若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码;获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,能够避免采用频繁且主动的手动执行脚本,并避免了因重复生成和覆盖对应代码而造成的繁琐流程,能够有效节省人力成本及时间成本,进而能够有效提高企业级web后台软件研发的准确性、可靠性和开发效率。在本申请的一个或多个实施例中,对象关系映射(objectrelationmapping,简称orm),是一种成熟的数据库相关的软件编程技术,该技术通过把对象模型表示的对象映射到基于sql的关系模型数据库结构中去的,使得在具体操作实体对象的时候,就不需要再去和复杂的sql语句打交道,只需简单的操作实体对象的属性和方法。orm技术是在对象和关系之间提供了一条桥梁,软件后端的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。在本申请的一个或多个实施例中,所述触发器具体可以为一种ddl触发器(datadefinitionlanguagetrigger),用于审核与规范对数据库中表、触发器和视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。在数据库结构发生变化时可以执行触发器内的一段程序。为此,在本申请实施例中提供了一种智能数据库编码监控系统,参见图1,该智能数据库编码监控系统中可以至少包含有:服务器11和至少一个客户端设备12,且客户端设备12可以包含有显示界面,各种不同类型的数据表数据库均可以部署在所述服务器11中。其中,所述服务器11执行智能数据库编码监控的过程,即所述服务器可以对目标数据库对应的数据库表结构进行实时监测,若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码,获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错,而后,所述服务器11可以将所述差异数据发送至对应的预先订阅且获得授权的客户端设备12以使用户自其持有的该客户端设备12中根据该差异数据进行针对所述目标数据库的当前变化的代码纠错。在实际应用中,进行智能数据库编码监控的部分可以在服务器端执行,即,如图1所示的架构,也可以全部的操作均在客户端设备中完成。具体可以根据客户端设备的处理能力,以及用户使用场景的限制等进行选择。例如,目标区域的管理员可以应用其持有的客户端设备在线进行针对所述目标区域中的各个客户端设备的智能数据库编码监控。本申请对此不作限定。可以理解的是,所述客户端设备可以包括手机、平板电脑、网络机顶盒、便携式计算机、台式电脑、个人数字助理(pda)、车载设备、智能穿戴设备和一体机等等,或者用于进行智能数据库编码监控的app。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。客户端设备的具体形式本申请不作限定。上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remoteprocedurecallprotocol,远程过程调用协议)、rest协议(representationalstatetransfer,表述性状态转移协议)等。为了能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,具体的可以通过所述智能数据库编码监控系统实现智能数据库编码监控过程,虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或客户端设备产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。基于上述智能数据库编码监控系统,本申请实施例可以通过服务器执行智能数据库编码监控的过程,并通过客户端设备执行在线向服务器发送智能数据库编码监控指令以及接收服务器发送的监控结果的过程,具体通过下述实施例进行详细说明。本申请提供一种执行主体为服务器的智能数据库编码监控方法的实施例,参见图2,所述智能数据库编码监控方法具体包含有如下内容:步骤100:对目标数据库对应的数据库表结构进行实时监测。在步骤100中,服务器根据预先设置的监控参数对所述目标数据库对应的数据库表结构进行实时监测。可以理解的是,用户开启服务器后,服务器自行判断是否设置过所述监控参数,若是,则根据所述监控参数对目标数据库对应的数据库表结构进行实时监测,若否,则向用户发出提示以使该用户设置所述监控参数;例如:数据库表变更相关的频度和时间规则参数以及代码路径参数等。步骤200:若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。步骤300:获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。可以理解的是,所述输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据中的输出是指将所述差异数据发送至对应的客户端设备或直接对该差异数据进行显示处理。从上述描述可知,本申请实施例提供的智能数据库编码监控方法,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,能够避免采用频繁且主动的手动执行脚本,并避免了因重复生成和覆盖对应代码而造成的繁琐流程,能够有效节省人力成本及时间成本,进而能够有效提高企业级web后台软件研发的准确性、可靠性和开发效率。为了在提高数据库表结构变化的纠错效率和自动化程度的基础上,进一步降低服务器负荷并提高纠错过程的可靠性,在本申请的一个实施例中,参见图3,所述智能数据库编码监控方法中的步骤200具体包含有如下内容:步骤201:若监测到所述数据库表结构发生变化,则控制预设的触发器将所述数据库表结构的当前变化对应的触发信息存储至触发信息表中。在本申请后续的一个或多个实施例中,所述触发信息表具体存储在名为monitor_orm_trigger的文件夹中。其中,用于存储所述触发信息的所述触发信息表的属性字段包括:修改所述目标数据库的数据库结构的修改时间戳、执行针对所述数据库结构的修改操作的客户端ip地址、用户标识、针对所述目标数据库的操作类型、操作表名称、具体触发操作的sql语句等包含环境和执行上下文信息。步骤202:基于所述触发信息判断所述数据库表结构的当前变化是否满足预设的触发累计条件,若是,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。在此基础上,为了有效提高orm自动生成代码的存储可靠性,在本申请的一个实施例中,参见图4,在所述智能数据库编码监控方法中的步骤202之后还具体包含有如下内容:步骤203:将所述orm自动生成代码存储至orm数据库中。在本申请后续的一个或多个实施例中,所述orm数据库中信息具体存储在名为dir_orm_database的文件夹中。为了在提高数据库表结构变化的纠错效率和自动化程度的基础上,进一步为用户提供辅助编码信息以提升研发人员对表结构设计潜在问题的认知能力,在本申请的一个实施例中,参见图5,所述智能数据库编码监控方法的步骤300之后还具体包含有如下内容:步骤400:基于所述触发信息生成对应的用于进行辅助编码的数据库触发统计摘要信息。步骤500:将所述数据库触发统计摘要信息发送至对应的客户端以辅助用户对所述目标数据库进行编码。为了在提高数据库表结构变化的纠错效率和自动化程度的基础上,进一步提高纠错结果的准确性,在本申请的一个实施例中,参见图6,所述智能数据库编码监控方法的步骤300之前还具体包含有如下内容:步骤204:更新所述目标数据库对应的代码仓库中的该目标数据库对应的代码中与orm相关的数据,并将该与orm相关的数据确认为所述orm当前存储代码。在本申请后续的一个或多个实施例中,所述代码仓库中信息具体存储在名为dir_repo_database的文件夹中。为了进一步提高数据库表结构变化的纠错效率和自动化程度,在本申请的一个实施例中,参见图7,所述智能数据库编码监控方法的步骤300具体包含有如下内容:步骤301:自所述触发信息表和所述代码仓库中分别获取对应的所述orm自动生成代码和orm当前存储代码。步骤302:对所述orm当前存储代码和所述orm自动生成代码之间进行差异对比,得到对应的差异数据。步骤303:将所述差异数据发送至对应的客户端以使用户自所述客户端中根据该差异数据进行针对所述目标数据库的当前变化的代码纠错。为了在提高数据库表结构变化的纠错效率和自动化程度的基础上,进一步提高纠错结果的准确性,在本申请的一个实施例中,参见图8,所述智能数据库编码监控方法中的步骤303之前具体包含有如下内容:步骤3021:对所述差异数据进行针对自动生成代码的时间戳的过滤处理。基于上述内容,本申请实施例提供的智能数据库编码方法,通过设计一种智能的数据库表结构变化触发规则,对数据库表结构变更进行实时监控,将数据库表结构变化影响的代码通过orm工具重新自动生成,同时将数据库前后变化造成新老代码的差异、涵盖数据库结构变更的数据统计特征的差异摘要信息进行提取,通过消息机制传递给订阅者;包含数据统计特征的差异摘要信息,可以明显提升研发人员对表结构设计潜在问题的认知能力,进而优化表结构设计的逻辑;和以往的orm框架代码自动生成技术对比,该方案在数据库表结构变更的时候不同于以往的方案,不需要采用频繁的、主动的手动执行脚本,重复生成和覆盖对应的代码的繁琐流程,此方案可以使得用户可以全自动的、实时高效的了解数据库orm相关代码的错误或缺陷,规避技术风险,提升了自动化效率,增大了自动化代码的覆盖范围,降低了手工触发脚本生成代码操作带来的部分不良弊端。从软件层面来说,基于上述智能数据库编码监控方法的实施例,本申请还提供一种用于实现所述智能数据库编码监控方法中全部或部分内容的智能数据库编码监控装置,参见图9,所述智能数据库编码监控装置具体包含有如下内容:数据库监听模块003,用于对目标数据库对应的数据库表结构进行实时监测。代码存储模块006,用于若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。代码差异分析模块007,用于获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。具体来说,除了上述的数据库监听模块003、代码存储模块006和代码差异分析模块007,参见图10,所述智能数据库编码监控装置还包含有:数据库核心系统服务模块001、数据存储模块002、orm代码生成模块004、orm代码生成触发模块005和代码差异提醒模块008,具体说明如下:(1)参见表1,数据库核心系统服务模块001作为核心服务,会初始化系统参数,让其他业务子模块运行起来。表1(2)参见表2,数据存储模块002包含正常web软件业务逻辑相关的数据库表结构;开发人员根据软件开发流程在软件开发和调试运行过程中,对于数据库已有的信息进行增、删、改、查相关的操作,同时针对业务逻辑的变更,对表的结构进行修改,新增,删除表格,修改表结构增加一列,减少一列,修改表结构某个字段的属性等操作,特别的,上述数据存储模块002包含一个触发器监听信息表,后面我们统一用monitor_trigger_table表示;它包含了数据库监听模块003监听的数据信息;数据库监听模块003通过设置触发器,建立ddl语言触发规则;监听数据库表结构变化;以及通过设计一张崭新的monitor_orm_trigger表,存入触发的信息;同时包含上下文信息进行联合决策。表2其中,monitor_trigger_table表的属性字段中至少包含有以下内容:1)执行修改数据库结构的修改时间戳opertime;2)执行修改操作客户端的ip,主机名hostname,数据库操作的类型,操作表的名字,具体触发操作的sql语句等包含环境和执行上下文信息,方便后续模块进行联合决策。(3)参见表3,数据库监听模块003用于监听上述模块中数据库表的变化,其中包含一个ddl触发器,对ddl相关的数据库表结构相关的操作进行记录;当程序开发人员在修改表,修改列,新增表,新增列等,在数据库结构发生变化时可以执行触发器内的一段程序,将触发信息存储至触发器监听信息表monitor_trigger_table,调用orm代码生成触发模块005。上述monitor_trigger_table表的属性字段,包含但不局限于,执行修改数据库结构的修改时间戳opertime,执行修改操作客户端的ip,主机名hostname,数据库操作的类型,操作表的名字,具体触发操作的sql语句等包含环境和执行上下文信息,方便后续模块进行联合决策;表3(4)参见表4,orm代码生成模块004用于接收来自orm代码生成触发模块005的生成信息,进行半自动的orm框架相关代码的生成,将其存储至代码存储模块006,同时执行代码差异分析模块007进行代码差异分析;上述orm代码生成模块004,一般有现存的商业化开源代码,例如java的mybatis自动生成框架mybatisgenerator,上述orm代码生成模块004需要设置当前连接的数据库ip地址,用户名密码,目标的代码文件路径名称等;设置完毕后,调用改模块的接口,即可获取最新的数据库表结构对应的自动生成的代码。表4(5)参见表5,orm代码生成触发模块005用于进行orm触发的判断和分析,决策,是否启动orm代码生成模块004进行代码的生成;可选的,为了缓解数据库压力,进行了触发的累计判断,在频繁提交代码时间worktime内,在时间周期n_worktime有m_worktime次及以上的触发,才触发orm代码生成模块004进行代码生成;在非工作时间idletime内,j_idletime时间间隔周期有k_idletime次及以上触发,才触发orm代码生成模块004进行代码生成;通过查询代码存储模块006,代码仓库的代码中数据库代码最近的一次修改时间记为t_repo_database,作为查询条件,获取现在时刻t_currenttime到t_repo_database时间中,monitor_trigger_table中存储的ddl表结构变化的数据。表5(6)参见表6,代码存储模块006包含两项内容:代码仓库的代码和orm自动生成代码。上述代码仓库的代码,表示的是代码仓库当前时间最新的代码中,数据库orm相关代码,我们假定其所在文件夹为dir_repo_database;上述orm自动生成代码,是orm代码生成模块004生成的新代码,我们假定其所在文件夹为dir_orm_database。表6(7)参见表7,代码差异分析模块007首先会对dir_repo_database的代码文件进行更新操作,确保次文件夹的代码是最近的代码仓库代码;然后通过对比工具,对比当前时间最新的代码中数据库代码的文件夹部分dir_repo_database和orm自动生成代码dir_orm_database这两个文件夹的差异部分,生成的一个独立的对比差异文件diff_patch;上述的对比工具,具体的软件实现存在很多成熟的开源的文本对比工具,在此不赘述,研发人员可以根据工程实践需要自行下载使用;特别的,上述代码差异分析模块007会查询monitor_trigger_table表,生成数据库触发统计摘要信息;上述数据库触发统计摘要信息是对monitor_trigger_table表历史信息进行数据分析的信息,会提供包括但不限于该表格在过去一周内被修改的频次信息、当前排名top10触发器修改的表名等,作为数据库触发统计摘要信息,最频繁修改的表接口和字段生成报表摘要的意义在于,提醒数据库设计人员合理优化表接口,进行提醒和风险控制;特别的,代码差异分析模块007会针对diff_patch差异文件进行分析,过滤去掉差异中自动生成代码的时间戳的差异部分,减少不必要的误触发概率;若最后确认是表结构差异,则调用代码差异提醒模块008。表7(8)参见表8,代码差异提醒模块008用于将代码差异分析模块007生成的数据库触发统计摘要信息、对比差异文件diff_patch通过邮件的形式发给所有研发人员。表8基于上述内容,本申请提供一种应用所述智能数据库编码监控装置实现所述智能数据库编码监控方法的实施例,参见图11,具体包含有如下内容:s1:开启服务器:用户开启数据库核心系统服务模块001;s2:判断是否设置过服务器参数;若是,则直接执行s3;否则,数据库核心系统服务模块001进行参数初始化:设置数据库表变更相关的频度和时间规则参数,设置orm代码生成模块004相关的代码路径参数;s3:判断是否有ddl触发事件;数据库监听模块块003应用ddl触发器监听数据存储模块002中的数据库表结构的变化,即是否产生ddl触发事件,若是则执行s4;s4:数据库监听模块块003将ddl触发事件和当前环境上下文信息写入数据存储模块块002中的monitor_trigger_table数据表内;s5:orm代码生成触发模块005对ddl触发事件的触发时间和频次进行分析,进行orm触发的判断,决策是否启动orm代码生成模块004进行代码的生成;若是,则执行s6;s6:orm代码生成模块004生成对应的代码;orm代码生成模块004收到来自orm代码生成触发模块005的生成信息,进行半自动的orm框架相关代码的生成,将其存储至代码存储模块006;可选的,为了缓解数据库压力,进行了触发的累计判断:(1)在频繁提交代码时间worktime内,在时间周期n_worktime有m_worktime次及以上的触发,才触发orm代码生成模块004进行代码生成;(2)在非工作时间idletime内,j_idletime时间间隔周期有k_idletime次及以上触发,才触发orm代码生成模块004进行代码生成;通过查询代码存储模块006,代码仓库的代码中数据库代码最近的一次修改时间记为t_repo_database,作为查询条件,获取现在时刻t_currenttime到t_repo_database时间中,monitor_trigger_table中存储的ddl表结构变化的数据;s7:确保t_repo_database的代码文件更新到最新;代码差异分析模块007首先会对dir_repo_database的代码文件进行更新操作,确保次文件夹的代码是最近的代码仓库代码;s8:使用对比工具获取代码差异;代码差异分析模块007通过对比工具,对比当前时间最新的代码中数据库代码的文件夹部分dir_repo_database和orm自动生成代码dir_orm_database这两个文件夹的差异部分,生成的一个独立的对比差异文件diff_patch;s9:生成数据库触发统计摘要信息;代码差异分析模块007查询数据存储模块块002中的monitor_trigger_table表,生成数据库触发统计摘要信息;代码差异分析模块007针对diff_patch差异文件进行分析,过滤去掉差异中自动生成代码的时间戳的差异部分,减少不必要的误触发概率;代码差异分析模块007若确认是表结构差异,调用代码差异提醒模块008。s10:将对比差异文件diff_patch和数据库触发统计摘要信息以邮件形式发送给订阅者;代码差异提醒模块008将代码差异分析模块007生成的数据库触发统计摘要信息、对比差异文件diff_patch通过邮件的形式发给所有研发人员。为了更进一步的说明本方案,本申请还提供一种应用所述智能数据库编码监控装置实现所述智能数据库编码监控方法的具体应用实例,具体包含有如下内容:本应用实例以某银行某后台大型项目开发过程中,对某个交易历史数据库表transaction_history增加一个是否有效的新字段valid这一列为例,讲述自动代码的生成过程;1)管理员开启数据库核心系统服务模块001,让其他业务子模块运行;同时进行相关模块参数设置;上述数据存储模块002,包含正常web软件业务逻辑相关的数据库表结构;开发人员根据软件开发流程在软件开发和调试运行过程中,对于数据库已有的信息进行增、删、改、查相关的操作,同时针对业务逻辑的变更,对表的结构进行修改,新增,删除表格,修改表结构增加一列,减少一列,修改表结构某个字段的属性等操作;特别的,上述数据存储模块002包含一个触发器监听信息表,后面统一用monitor_trigger_table表示;它包含了数据库监听模块003监听的数据信息,具体表述如表9所示:表9研发人员在工作时间区间1个小时内,连续10次对transaction_history表进行修改,其中一次执行了如表10所示的sql语句:表10altertabletransaction_historyadd(validvarchar2(1)default('1'))2)数据库监听模块003,监听上述模块中数据库表的变化;上述监听模块,包含一个ddl触发器,对ddl相关的数据库表结构相关的操作进行记录;当程序开发人员在修改表,修改列,新增表,新增列等,在数据库结构发生变化时可以执行触发器内的一段程序,将触发信息存储至触发器监听信息表monitor_trigger_table,调用orm代码生成触发模块005。上述monitor_trigger_table表的属性字段,包含但不局限于,执行修改数据库结构的修改时间戳opertime,执行修改操作客户端的ip,主机名hostname,数据库操作的类型,操作表的名字,具体触发操作的sql语句等包含环境和执行上下文信息,方便后续模块进行进行联合决策;例如本具体实例中,由于研发人员对transaction_history增加了valid一列,例如本例中预设类似的触发器核心关键代码如表11所示(这里忽略sql语法中具体的字段和表属性详细信息):表11触发器预设以后会监听到表修改操作,将上述信息存储至monitor_trigger_table表。3)orm代码生成触发模块005,进行orm触发的判断和分析,决策,是否启动orm代码生成模块004进行代码的生成;可选的,为了缓解数据库压力,进行了触发的累计判断,在频繁提交代码时间worktime内,在时间周期n_worktime有m_worktime次及以上的触发,才触发orm代码生成模块004进行代码生成;在非工作时间idletime内,j_idletime时间间隔周期有k_idletime次及以上触发,才触发orm代码生成模块004进行代码生成;通过查询代码存储模块006,代码仓库的代码中数据库代码最近的一次修改时间记为t_repo_database,作为查询条件,获取现在时刻t_currenttime到t_repo_database时间跨度内,monitor_trigger_table中存储的ddl表结构变化的数据;例如本具体实例中,在工作时间段内120min有10次的表结构修改操作,大于m_worktime=5的门限数值,因此可以触发自动代码生成;通过查询时刻t_currenttime到t_repo_database时间跨度为5天,这5天存在20次修改,修改均是对transaction_history表结构进行变更。4)orm代码生成模块004收到来自orm代码生成触发模块005的生成信息,进行半自动的orm框架相关代码的生成,将其存储至代码存储模块006,同时执行代码差异分析模块007进行代码差异分析;上述orm代码生成模块004,一般有现存的商业化开源代码,例如java的mybatis自动生成框架mybatisgenerator。上述orm代码生成模块需要设置当前连接的数据库ip地址,用户名密码,目标的代码文件路径名称等;设置完毕后,调用改模块的接口,即可获取最新的数据库表结构对应的自动生成的代码;例如本实例中,数据库ip填写的是transaction_history所在的主机ip,目标代码路径填写的是”d:\orm_database”,使用的半自动orm框架是mybatisgenerator;最后映射transaction_history数据库表,生成了对应的自动化代码。5)生成的代码存储于代码存储模块006;代码存储模块006包含两项内容,代码仓库的代码,orm自动生成代码。上述代码仓库的代码,表示的是代码仓库当前时间最新的代码中,数据库orm相关代码,假定其所在文件夹为dir_repo_database;上述orm自动生成代码,是orm代码生成模块004生成的新代码,假定其所在文件夹为dir_orm_database。6)代码差异分析模块007该模块首先会对dir_repo_database的代码文件进行更新操作,确保次文件夹的代码是最近的代码仓库代码;然后通过对比工具,对比当前时间最新的代码中数据库代码的文件夹部分dir_repo_database和orm自动生成代码dir_orm_database这两个文件夹的差异部分,生成的一个独立的对比差异文件diff_patch;上述的对比工具,具体的软件实现存在很多成熟的开源的文本对比工具,在此不赘述,研发人员可以根据工程实践需要自行下载使用;特别的,上述代码差异分析模块007,会查询monitor_trigger_table表,生成数据库触发统计摘要信息;上述数据库触发统计摘要信息是对monitor_trigger_table表历史信息进行数据分析的信息,会提供包括但不限于该表格在过去一周内被修改的频次信息、当前排名top10触发器修改的表名等,作为数据库触发统计摘要信息,最频繁修改的表接口和字段生成报表摘要的意义在于,提醒数据库设计人员合理优化表接口,进行提醒和风险控制;特别的,代码差异分析模块007会针对diff_patch差异文件进行分析,过滤去掉差异中自动生成代码的时间戳的差异部分,减少不必要的误触发概率;最后确认是表结构差异,调用代码差异提醒模块008。例如本实例中,由于表结构变化包含了针对transaction_history表增加了valid字段;生成的diff_patch会一定会包含如下信息,该信息提示在新的代码中,需要增加上述valid字段属性的获取和设置函数,还有属性声明字段相关的信息;同时通过时间条件约束,查询monitor_trigger_table相关的信息,发现transaction_history修改最为频繁,是top10表结构修改的数据库表最频繁的一个,生成数据库触发统计摘要信息。7)代码差异提醒模块008将代码差异分析模块007生成的数据库触发统计摘要信息、对比差异文件diff_patch通过邮件的形式发给所有研发人员;例如本实例中,研发人员每天早上八点半到公司即收到transaction_history表结构修改的邮件;短期内,研发人员通过工具将patch应用到最新的代码仓库,高效快捷;长期内,研发团队发现transaction_history数据表修改最为频繁,提醒数据库设计人员重新审视此表的设计是否过于臃肿,后续长期将合理优化表接口提上计划和日程,进而作为提醒和风险控制的重要依据。基于此,本申请通过智能的数据库表结构变化触发规则以及对数据库表结构变更进行实时监控,在数据库表结构发生变化时,将数据库表结构变化影响的代码通过orm工具重新自动生成;不需要采用频繁的、主动的手动执行脚本,重复生成和覆盖对应的代码的繁琐流程,此方案可以使得用户可以全自动的、实时高效的了解数据库orm相关代码的错误或缺陷,规避技术风险,提升了自动化效率,增大了自动化代码的覆盖范围,降低了手工触发脚本生成代码操作带来的部分不良弊端;将数据库前后变化造成新老代码的差异、涵盖数据库结构变更的数据统计特征的差异摘要信息进行提取,通过消息机制传递给订阅者;包含数据统计特征的差异摘要信息,可以明显提升研发人员对表结构设计潜在问题的认知能力,进而优化表结构设计的逻辑。从上述描述可知,本申请应用实例提供的应用所述智能数据库编码监控装置实现所述智能数据库编码监控方法,通过设计一种智能的数据库表结构变化触发规则,对数据库表结构变更进行实时监控,将数据库表结构变化影响的代码通过orm工具重新自动生成,同时将数据库前后变化造成新老代码的差异、涵盖数据库结构变更的数据统计特征的差异摘要信息进行提取,通过消息机制传递给订阅者;包含数据统计特征的差异摘要信息,可以明显提升研发人员对表结构设计潜在问题的认知能力,进而优化表结构设计的逻辑;和以往的orm框架自动代码生成技术对比,该方案在数据库表结构变更的时候不同于以往的方案,不需要采用频繁的、主动的手动执行脚本,重复生成和覆盖对应的代码的繁琐流程,此方案可以使得用户可以全自动的、实时高效的了解数据库orm相关代码的错误或缺陷,规避技术风险,提升了自动化效率,增大了了自动化代码的覆盖范围,降低了手工触发脚本生成代码操作带来的部分不良弊端。本申请上述所提供的方法实施例可以在客户端设备12、服务器设备11、计算机集群或者类似的运算装置中执行。以运行在服务器上为例,图12是本发明实施例的一种智能数据库编码监控方法的服务器的硬件结构框图。如图12所示,服务器设备11可以包括一个或多个(图中仅示出一个)处理器1020(处理器1020可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1040、以及用于通信功能的传输模块1060。本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器设备11还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。存储器1040可用于存储应用软件的软件程序以及模块,如本发明实施例中的智能数据库编码监控方法对应的程序指令/模块,处理器1020通过运行存储在存储器1040内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的智能数据库编码监控方法。存储器1040可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1040可进一步包括相对于处理器1020远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输模块1060用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备11的通信供应商提供的无线网络。在一个实例中,传输模块1060包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块1060可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。基于前述智能数据库编码监控的内容,本申请实施例还提供一种电子设备,包括显示屏、处理器以及存储处理器可执行指令的存储器。所述的显示屏可以包括触摸屏、液晶显示器、投影设备等显示信息内容的设备。所述的电子设备类型可以包括移动终端、专用车险设备、车机交互设备、个人电脑等。所述处理器执行所述指令时可以实现所述智能数据库编码监控方法的全部或部分内容,例如,所述处理器执行所述指令时可以实现如下内容:步骤100:对目标数据库对应的数据库表结构进行实时监测。步骤200:若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。步骤300:获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。可以理解的是,所述输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据中的输出是指将所述差异数据发送至对应的客户端设备或直接对该差异数据进行显示处理。从上述描述可知,本申请实施例提供的电子设备,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,能够避免采用频繁且主动的手动执行脚本,并避免了因重复生成和覆盖对应代码而造成的繁琐流程,能够有效节省人力成本及时间成本,进而能够有效提高企业级web后台软件研发的准确性、可靠性和开发效率。基于前述智能数据库编码监控的内容,本申请的实施例还提供能够实现上述智能数据库编码监控方法实施例中的全部或部分步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的智能数据库编码监控方法的全部,例如,所述处理器执行所述计算机程序时实现下述步骤:步骤100:对目标数据库对应的数据库表结构进行实时监测。步骤200:若监测到所述数据库表结构发生变化,则自动生成该数据库表结构的当前变化所影响的数据对应的orm自动生成代码。步骤300:获取并输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据以对所述目标数据库进行代码纠错。可以理解的是,所述输出预存储的所述目标数据库对应的orm当前存储代码和所述orm自动生成代码之间的差异数据中的输出是指将所述差异数据发送至对应的客户端设备或直接对该差异数据进行显示处理。从上述描述可知,本申请实施例提供的计算机可读存储介质,能够在数据库的数据库表结构发送变化时,实现针对变化内容的全自动监控及纠错过程,监控可靠性高且纠错准确性高,并能够有效提高数据库表结构变化的纠错效率,能够避免采用频繁且主动的手动执行脚本,并避免了因重复生成和覆盖对应代码而造成的繁琐流程,能够有效节省人力成本及时间成本,进而能够有效提高企业级web后台软件研发的准确性、可靠性和开发效率。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。上述的指令可以存储在多种计算机可读存储介质中。所述计算机可读存储介质可以包括用于存储信息的物理装置,可以将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。本实施例所述的计算机可读存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如ram、rom等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置如,cd或dvd。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。下述所述的装置或服务器或客户端或系统中的指令同上描述。虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。以上所述仅为本说明书的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1