数据模型的验证方法、装置、电子设备、存储介质与流程

文档序号:22500247发布日期:2020-10-13 09:32阅读:151来源:国知局
数据模型的验证方法、装置、电子设备、存储介质与流程
本发明涉及计算机
技术领域
,特别涉及数据模型的验证方法、装置、电子设备、存储介质。
背景技术
:数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。数据模型是数据仓库的重要组成部分,在数据模型上线发布之前,需要对其进行验证。发布的数据模型运行于生产环境,对于未发布状态的数据模型的验证在开发环境中进行,现有技术中,为了使模型验证过程中未发布状态的数据模型的数据与发布状态的数据模型的数据之间互不影响,需要隔离生产环境与开发环境。而对未发布状态的数据模型进行验证需要数据源,则需要从生产环境中抽取数据至开发环境中。若抽取全量数据,会占用较多的资源,且非常耗时;若只采样抽取部分数据,存在采样不准,未发布状态的数据模型得不到有效的逻辑验证。技术实现要素:本发明提供数据模型的验证方法、装置、电子设备、存储介质,以减少数据模型验证过程中数据抽取的资源消耗。具体地,本发明是通过如下技术方案实现的:第一方面,提供一种数据模型的验证方法,包括:针对未发布状态的被测数据模型的代码,确定所述代码对应的操作类型;在所述操作类型为读操作的情况下,从生产环境中读取所述读操作针对的第一目标数据,并根据所述第一目标数据验证所述被测数据模型。可选地,确定所述代码对应的操作类型,包括:解析所述代码,确定所述代码中的目标关键词;根据所述目标关键词确定所述操作类型。可选地,解析所述代码,确定所述代码中的目标关键词,包括:对所述代码进行关键词匹配;将所述代码中包含的预定义的关键词确定为所述目标关键词。可选地,根据所述目标关键词确定所述操作类型,包括:根据所述目标关键词与预定义的关键词与操作类型之间的映射关系确定所述操作类型。可选地,所述从生产环境中读取所述读操作针对的第一目标数据,包括:在所述操作类型为读操作且所述读操作对应的代码中不存在目标标识的情况下,从所述生产环境读取所述第一目标数据。可选地,所述方法还包括:在所述操作类型为读操作且所述读操作对应的代码中存在目标标识的情况下,从开发环境中读取所述第一目标数据。可选地,所述方法还包括:在所述操作类型为写操作的情况下,在开发环境中对所述写操作针对的第二目标数据进行改写,并根据改写后的第二目标数据验证所述被测数据模型。第二方面,提供一种数据模型的验证装置,包括:确定模块,用于针对未发布状态的被测数据模型的代码,确定所述代码对应的操作类型;第一读取模块,用于在所述操作类型为读操作的情况下,从生产环境中读取所述读操作针对的第一目标数据;验证模块,用于根据所述第一目标数据验证所述被测数据模型。可选地,所述确定模块具体用于:解析所述代码,确定所述代码中的目标关键词;根据所述目标关键词确定所述操作类型。可选地,在解析所述代码,确定所述代码中的目标关键词时,所述确定模块用于:对所述代码进行关键词匹配;将所述代码中包含的预定义的关键词确定为所述目标关键词。可选地,在根据所述目标关键词确定所述操作类型时,所述确定模块用于:根据所述目标关键词与预定义的关键词与操作类型之间的映射关系确定所述操作类型。可选地,所述第一读取模块用于:在所述操作类型为读操作且所述读操作对应的代码中不存在目标标识的情况下,从所述生产环境读取所述第一目标数据。可选地,所述装置还包括:第二读取模块,用于在所述操作类型为读操作且所述读操作对应的代码中存在目标标识的情况下,从开发环境中读取所述第一目标数据。可选地,所述装置还包括:改写模块,用于在所述操作类型为写操作的情况下,在开发环境中对所述写操作针对的第二目标数据进行改写;所述验证模块,还用于根据改写后的第二目标数据验证所述被测数据模型。第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的数据模型的验证方法。第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的数据模型的验证方法的步骤。本发明的实施例提供的技术方案可以包括以下有益效果:本发明实施例中,通过识别被测数据模型的代码对应的操作类型,在生产环境与开发环境之间实现了软隔离,在被测数据模型的代码涉及读操作的情况下,允许被测数据模型从生产环境读取数据,此时生产环境与开发环境相当于共用数据;在被测数据模型的代码涉及写操作的情况下,在开发环境中对数据进行改写,避免因被测数据模型的代码存在漏洞而在生产环境产生问题数据,影响生产环境的正确性。从而,可以在尽量不从生产环境抽取数据至开发环境的情况下,让未发布状态的被测数据模型有能力获取到全量数据,实现逻辑的完整验证。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。图1是本发明一示例性实施例示出的一种数据仓库的结构示意图;图2是本发明一示例性实施例示出的一种数据模型的验证方法的流程图;图3是本发明一示例性实施例示出的另一种数据模型的验证方法的流程图;图4是本发明一示例性实施例示出的一种数据模型的验证装置的模块示意图;图5是本发明一示例实施例示出的一种电子设备的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。图1是本发明一示例性实施例示出的一种数据仓库的结构示意图,数据仓库的数据可以分为ods(操作数据存储)层、dw(数据仓库)层和dm(数据集市)层。ods层,其数据来源于业务系统的业务数据库,用于支持企业日常生产应用。dw层,从ods层中获得的数据按照主题建立各种数据模型。dm层,该层主要提供数据产品和数据分析使用的数据,供线上系统使用,例如提供给bi可视化平台进行数据分析和数据挖掘使用。dw层的数据模型在上线发布之前,需要对其进行验证,验证通过才能发布数据模型。对数据模型进行验证时,运行数据模型的代码,按照代码的逻辑操作数据,得到运行结果,并将运行结果与期望结果进行比对,来判断数据模型是否符合预期、是否正确。由于数据模型的代码会涉及写操作,相关技术中,通过使未发布状态的数据模型的运行环境与发布状态的数据模型的运行环境之间实现硬隔离,使两个运行环境的数据之间互不影响,以避免因对数据模型进行验证导致对处于发布状态的数据模型造成影响。为了便于描述,将发布状态的数据模型的运行环境称为生产环境,将未发布状态的数据模型的运行环境称为开发环境。而对未发布状态的数据模型进行验证需要数据源,就需要从生产环境抽取数据至开发环境。若进行全量数据的抽取,数据量非常大,数据抽取时间长,且会占用较多资源。若采用抽样的方法抽取部分数据,同样会占用不少的资源,同时存在同步过来的数据从逻辑上与全量数据的连贯性不一致,致使无法支撑数据模型的完整逻辑验证的情形。基于上述情况,本发明实施例提供一种数据模型的验证方法。图2是本发明一示例性实施例示出的一种数据模型的验证方法的流程图,该方法可以包括以下步骤:步骤201、针对未发布状态的被测数据模型的代码,确定代码对应的操作类型。对未发布状态的被测数据模型进行验证,需要运行该被测数据模型的代码,可以但不限于采用ide(集成开发环境)运行该被测数据模型的代码,可以在代码的运行过程中确定代码对应的操作类型。在一个实施例中,可以通过对代码进行解析,确定代码中的目标关键词,并根据目标关键词确定操作类型。关于目标关键词的确定,可以但不限于通过对代码进行关键词匹配,并将代码中包含的预定义的关键词确定为目标关键词。预定义的关键词可根据实际需求自行设置。关于操作类型的确定,可以预定义关键词与操作类型之间的映射关系,并根据目标关键词与该映射关系确定操作类型。举例来说,假设被测数据模型采用sql语句实现,表1是本发明一示例性实施例示出的预定义关键词与操作类型之间的映射关系,若被测数据模型的一条代码为insertintouser(‘王明','yangyuchun','2007070103'),结合表1可以确定其目标关键词为“insert”,对应的操作类型为“写操作”。表1预定义关键词操作类型insert写操作deletefrom写操作join读操作步骤202、在操作类型为读操作的情况下,从生产环境中读取读操作针对的第一目标数据,并根据第一目标数据验证被测数据模型。其中,生产环境为在线正在使用的,布置于生产环境服务器上,生产环境服务器上运行有至少一个处于发布状态的数据模型。可以理解的,运行发布状态的数据模型时,无需区分其代码对应的操作类型,不管操作类型是读操作还是写操作,均在生产环境中进行。由于读操作不会出现问题数据,不会对生产环境的数据产生影响,本实施例中,在代码对应的操作类型为读操作的情况下,可以从生产环境(例如,ods层)读取数据以进行模型验证,从而无需将生产环境中的全量数据抽取至开发环境,可以减少数据抽取的耗时以及数据抽取的资源,并且支持待测数据模型能够读取到生产环境的全量数据,能够支持模型验证的完整逻辑验证。步骤203、在操作类型为写操作的情况下,在开发环境中对写操作针对的第二目标数据进行改写,并根据改写后的第二目标数据验证被测数据模型。其中,开发环境布置于开发环境服务器上,处于未发布状态的被测数据模型运行在开发环境服务器上。在另一个实施例中,对被测数据模型的验证也可以在测试环境中进行,那么在操作类型为写操作的情况下,则在测试环境中对写操作针对的第二目标数据进行改写。需要说明的是,若在测试环境中验证被测数据模型,需要克隆一份生产环境的配置以创建测试环境。由于写操作会改变真实数据,若未发布的被测数据模型存在漏洞,运行该未发布的被测数据模型会产生问题数据,因此在代码对应的操作类型为写操作的情况下,不在生产环境中进行数据的改写,而在开发环境进行数据改写。若被测数据模型的代码运行完毕,第一目标数据以及改写后的第二目标数据与预期结果相同,说明数据模型的业务逻辑与期望逻辑一致,模型验证通过,可以进入发布状态。若被测数据模型从未发布状态转成发布状态,可以将写入开发环境的数据清除,以释放空间占用。本实施例中,通过识别被测数据模型的代码对应的操作类型,在生产环境与开发环境之间实现了软隔离,在被测数据模型的代码涉及读操作的情况下,允许被测数据模型从生产环境读取数据,此时生产环境与开发环境相当于共用数据;在被测数据模型的代码涉及写操作的情况下,在开发环境中对数据进行改写,避免因被测数据模型的代码存在漏洞而在生产环境产生问题数据,影响生产环境的正确性。从而,可以在尽量不从生产环境抽取数据至开发环境的情况下,让未发布状态的被测数据模型有能力获取到全量数据,实现逻辑的完整验证。图3是本发明一示例性实施例示出的另一种数据模型的验证方法的流程图,本实施例中,被测数据模型还可以从开发环境读取数据,参见图3,该方法可以包括以下步骤:步骤301、针对未发布状态的被测数据模型的代码,确定代码对应的操作类型。对未发布状态的被测数据模型进行验证,需要运行该被测数据模型的代码,可以但不限于采用ide(集成开发环境)运行该被测数据模型的代码,可以在代码的运行过程中确定代码对应的操作类型。在一个实施例中,可以通过对代码进行解析,确定代码中的目标关键词,并根据目标关键词确定操作类型。关于目标关键词的确定,可以但不限于通过对代码进行关键词匹配,并将代码中包含的预定义的关键词确定为目标关键词实现。关于操作类型的确定,可以预定义关键词与操作类型之间的映射关系,并根据目标关键词与该映射关系确定操作类型。步骤301中,若代码对应的操作类型为写操作,则执行步骤302。步骤302、在开发环境中对写操作针对的第二目标数据进行改写,并根据改写后的第二目标数据验证被测数据模型。若被测数据模型的代码包含:(1)将表a中的数据写入临时表b中,(2)从表b中读取数据。由于步骤(1)涉及写操作,在开发环境中进行,因此表b的数据存在于开发环境,表b的数据不存在于生产环境,步骤(2)无法从生产环境读取表b的数据,此种情况下可以在被测数据模型的代码中添加目标标识,强制被测数据模型从开发环境获取数据。从而步骤301中,若代码对应的操作类型为读操作,可以执行步骤303进一步确定代码是否包含目标标识,进而可以确定是从开发环境读取数据还是从生产环境读取数据。步骤303、确定代码是否包含目标标识。其中,目标标识相当于是个强制开关,在遇到目标标识的情况下,也即代码存在目标标识,则执行步骤304,从开发环境读取数据。目标标识可以但不限于通过在代码中添加字段实现。步骤304,从开发环境读取第一目标数据。而若代码不包含目标标识,则执行步骤305,从生产环境读取数据。步骤305,从生产环境读取第一目标数据。若被测数据模型的代码逻辑运行完毕,第一目标数据以及改写后的第二目标数据与预期结果相同,说明数据模型的业务逻辑与期望逻辑一致,模型验证通过,可以进入发布状态。若被测数据模型从未发布状态转成发布状态,可以将写入开发环境的数据清除,以释放空间占用。本实施例中,数据模型验证过程中在节约了数据抽取消耗的时间和空间资源的基础上,通过目标标识可以使模型验证过程中数据的处理逻辑符合被测数据模型的代码逻辑,实现逻辑的完整、准确验证。与前述数据模型的验证方法实施例相对应,本发明还提供了数据模型的验证装置的实施例。图4是本发明一示例性实施例示出的一种数据模型的验证装置的模块示意图,包括:确定模块41,用于针对未发布状态的被测数据模型的代码,确定所述代码对应的操作类型;第一读取模块42,用于在所述操作类型为读操作的情况下,从生产环境中读取所述读操作针对的第一目标数据;验证模块43,用于根据所述第一目标数据验证所述被测数据模型。可选地,所述确定模块具体用于:解析所述代码,确定所述代码中的目标关键词;根据所述目标关键词确定所述操作类型。可选地,在解析所述代码,确定所述代码中的目标关键词时,所述确定模块用于:对所述代码进行关键词匹配;将所述代码中包含的预定义的关键词确定为所述目标关键词。可选地,在根据所述目标关键词确定所述操作类型时,所述确定模块用于:根据所述目标关键词与预定义的关键词与操作类型之间的映射关系确定所述操作类型。可选地,所述第一读取模块用于:在所述操作类型为读操作且所述读操作对应的代码中不存在目标标识的情况下,从所述生产环境读取所述第一目标数据。可选地,所述装置还包括:第二读取模块,用于在所述操作类型为读操作且所述读操作对应的代码中存在目标标识的情况下,从开发环境中读取所述第一目标数据。可选地,所述装置还包括:改写模块,用于在所述操作类型为写操作的情况下,在开发环境中对所述写操作针对的第二目标数据进行改写;所述验证模块,还用于根据改写后的第二目标数据验证所述被测数据模型。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。图5是本发明一示例实施例示出的一种电子设备的结构示意图,示出了适于用来实现本发明实施方式的示例性电子设备50的框图。图5显示的电子设备50仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图5所示,电子设备50可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备50的组件可以包括但不限于:上述至少一个处理器51、上述至少一个存储器52、连接不同系统组件(包括存储器52和处理器51)的总线53。总线53包括数据总线、地址总线和控制总线。存储器52可以包括易失性存储器,例如随机存取存储器(ram)521和/或高速缓存存储器522,还可以进一步包括只读存储器(rom)523。存储器52还可以包括具有一组(至少一个)程序模块524的程序工具525(或实用工具),这样的程序模块524包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。处理器51通过运行存储在存储器52中的计算机程序,从而执行各种功能应用以及数据处理,例如上述任一实施例所提供的方法。电子设备50也可以与一个或多个外部设备54(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口55进行。并且,模型生成的电子设备50还可以通过网络适配器56与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器56通过总线53与模型生成的电子设备50的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的电子设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所提供的方法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1