当前位置:文档之家› 软件设计说明书(基于元数据的虚拟数据自动生成系统)

软件设计说明书(基于元数据的虚拟数据自动生成系统)

基于元数据的虚拟数据自动生成系统设计说明书1 系统简介信息系统一般都是以数据库为后台进行开发的,其功能与性能测试往往需要一定量的数据为基础。

由于安全保密和时效性等原因,在信息系统的开发过程中不能直接加载真实数据进行测试。

因此,需要大量虚拟数据对系统进行全面测试。

虚拟数据的获取根据录入的方法的不同可以分为人工和自动生成两种方式。

人工录入方式,仿真程度高,确保了虚拟数据的质量。

但以每张表的记录数百万条计,工作量会非常大,且此工作没有继承性,以某个需求背景下录入的数据,当背景变化后难以重用。

因此,设计一个虚拟数据生成工具,自动生成虚拟数据非常必要。

本系统的设计目的就是为自动为用户提供海量虚拟数据。

本系统的设计采用了元数据技术,根据不同需求背景,通过元数据对数据库结构、数据特征和关系的描述,设定的模拟数据生成规则,自动生成海量的模拟数据。

归纳起来,本系统具有如下特点:(1)能够适应数据需求变化随着技术的发展和运用场景的变化,信息系统对虚拟数据在结构和内容上将提出新的要求。

通过传统的手工录入方式,将不得不大量修改记录甚至重新录入,实现起来时间长,工作量大。

本文档所描述的虚拟数据生成系统采用了基于元数据的规则生成技术,当需求改变时,及时更新相关配置,就可以重新自动生成虚拟数据,提高生产效率。

(2)能够高效灵活实现数据生成规则配置本系统对虚拟数据的生成是基于数据生成规则,而数据生成规则的制定,首先从数据库结构中自动读取结构化元数据,获取数据的特征及关系,构成基本生成规则。

在基本数据规则的基础上系统给出了针对不同类型数据的规范表达式,帮助用户定制符合自身需求的生成规则,实现数据生成规则配置的高效灵活。

(3)具有较好的资源字典扩展性信息系统所在的业务领域是不断地发展的,因此总会产生一些对新类型数据需求,而这些需要应及时加入到信息系统中。

本虚拟数据生成系统提供良好的资源字典维护功能,只需要及时更新字典中相关数据,既可实现了数据的无缝扩展。

(4)能够海量生成虚拟数据本系统的设计目的既实现海量虚拟数据的生成。

用户一旦根据需求,配置好数据生成规则实现资源字典的更新后,系统既可运用规则算法,自动生成海量数据,经测试生成1百万条记录的数据,大约花费10分钟。

2 软件设计2.1软件组成及框架“基于元数据的虚拟数据自动生成系统”的基本架构及连接关系如图1所示。

系统采用三层体架构,由数据支撑层、系统支撑层、系统应用层组成。

图1 系统组成及连接关系图数据支撑层为系统支撑层和系统应用层提供数据支撑,包括源数据库和虚拟数据库两部分。

源数据库为包含真实数据的信息系统数据库,包含了数据库结构、字典类数据(用于抽取的固定数据,如地名字典表)等信息,是整个虚拟数据生成的模板和来源。

虚拟数据库与源数据库结构相同,系统最终生成的虚拟数据存放于此。

系统支撑层为系统应用层提供后台软件支撑,包括元数据管理、虚拟数据生成两个子模块。

元数据管理子模块用于从源数据库中读取描述数据特征的结构化元数据,如数据的长度、类型、格式等,作为生成虚拟数据的基本标准。

虚拟数据生成子模块根据虚拟数据生成规则和生成需求(如生成虚拟数据数量等)生成数据,并存储到虚拟数据库中。

系统应用层面向用户,包括虚拟规则设置、数据需求设置两个子模块。

生成虚拟规则设置子模块将辅助用户,在元数据描述特征的基础上,设置数据生成规则。

在数据需求设置子模块中,用户录入生成数据量、是否唯一等用户对数据的整体需求。

2.2 实现方法虚拟数据要达到代替真实数据的目的,必须做到与真实数据不但形似而且神似,即两者虽然在内容上不尽相同,但在结构和反映事物特征上要相同。

本系统尝试以数据建模理论为基础,结合工程实践,通过分析数据特征,找出规律,提出虚拟数据的实现方法。

描述实体的数据有以下几个主要特征:1.实体属性特征,作为数据库中原子的数据值,固有的长度、类型、格式等特征;2.实体关系特征,描述数据实体之间是如何相关的,根据工程实践关注以下几种:(1)关联关系,包括一对一、一对多、多对多等数据实体间的关联关系;(2)分类关系,关联关系的一种特殊关系,相关的实体被分为一组,其中所有公共属性统一在一个超类实体中。

(3)自反关系,关联关系的一种特殊关系,是指一个实体所参与的关系,在这个关系中该实体即是父实体又是子实体。

2.2.1实体属性特征实现实体属性特征描述时包括两个方面。

一是数据所在字段的类型,如字段长度、类型、格式等;二是反映真实实体的特征,例如“电话号码”字段是长度为10的字符串,它有自定义格式:“XXXX-XXXXX”,前四个“X”表示区号,后五个“X”表示号码,“-”为二者的分隔。

真实实体用数据进行描述时,通常包含这二个特征。

实体属性特征的第一个方面是数据的基本特征,通常较好处理,只需要按数据所在字段的类型、长度要求,调用随机函数生成符合该特征的虚拟数据即可。

实体属性特征的第二个方面,需要在对真实实体特征仔细分析的基础上,利用不同途径实现。

下面尝试四种处理方式:1.随机生成法随机生成法首先按照数据的类型、长度、大小等约束条件划定数据的取值范围,然后在范围区间内随机生成数据。

图2随机生成法流程随机生成法是虚拟数据生成的基本方法,是其他生成法的基础。

可以说其他生成法是在随机生成法基础上增加其它相关功能和方法实现的。

系统默认对数据的生成采用该方法,特点是适用范围广,任何数据的虚拟都可以采用该方法实现,但遇到需要考验数据的特殊结构和数据间的逻辑关系时该方式并不适用。

1.替换实现法主要用于格式固定的随机数据。

这类数据有固定的格式,且有部分数值为可变,例如“单位名称”字段的基本格式为“第XX单位XXX部门”。

针对这类数据的特点将它分段为固定部分和动态部分,固定部分保持不变,动态部分调用随机函数实现,最后合并各段得到虚拟数据。

如前例,“X”为随机部分,其他为固定部分,处理时调用随机函数生成一个十位整数替换“第XX单位”中的“XX”随机部分;一个为小于1000的整数代替“第XXX部门”中的“XXX”随机部分,然后合并固定和动态部分生成虚拟数据。

图2 替换实现法生成流程替代生成法是基础方法,因为大多数数据的数值都有一定的格式规范,即使没有格式规范的数据,也可以认为该数据动态数值部分为数据本身,固定格式部分为空,如果不必考虑该数据的逻辑关系,该算法适合生成绝大多数虚拟数据。

当然,由于替代生成法是采用随机方式生成数据的,因此遇到需要考验数据间的拓扑、逻辑、关联的信息时,该方式并不适用。

2.枚举法主要用于有限集且值域较小的数据。

处理方法是,首先建立数据所有可以包括的集合,同时给出集合中数据出现的概率。

然后按照概率随机抽取集合中的数据作为虚拟数据。

这种方法在实际运用中仿真度高,可用性较强。

图3 枚举法生成流程3.组合法将一个字段的值设定为几个特定值的组合。

组合规则可以由多个参数组成,各组合参数可以从系统数据字典和样本数据库中取值,也可以从目标数据库中其他表中取值,还可以是固定的一个词。

比如“公司名称”字段的值可以设定为“地名”+“通信责任有限公司”,其中“地名”可以从基础数据库中的地名表取值,“通信责任有限公司”为一个固定词组。

图3 组合法生成流程组合法应适合虚拟有限数据集的数据,如果数据分布信息设计成熟,还能确保虚拟数据的逻辑分布信息,在实际运用中仿真度高,可用性较强。

4.偏移生成法偏移生成法是利用一定数量的真实数据,按照设定的偏移规则进行随机偏移,从而遮蔽数据的真实性,生成类似真实数据的虚拟数据。

虚拟数据生成法实际上就是以真实数据作为基础数据,并根据字符、数字或日期等类型的字段整体进行偏移规则设置,也可以对以上字段类型的字段单独进行偏移规则设置。

图4 偏移生成流程偏移生成法主要工作是对偏移规则的设计,配置简单;生成时偏移即可生成,数据速度较快,且生成的虚拟数据与真实数据具有很高的相似度,物理意义明确、逻辑关系清晰,可理解性更强。

偏移生成法的局限性在于该方法的基础是真实数据,因此必须有真实数据才可进行。

另外,在偏移规则的设定上要着重斟酌,因为偏移量过大,将造成数据失真,过小又不足以遮蔽数据的真实性。

5.混淆生成法混淆生成法是对真实数据的属性进行随机交换,从而实现真实数据的遮蔽。

真实数据中常有这样的属性,将其单个取出,难以表达明确的含义,而需要多个组合,才能包含足够的信息量。

混淆生成法是将数据中这类组合属性打散进行重新随机组合,获取虚拟数据的方法。

比如,对于“人员信息表”,单独获取“姓名”并没有多大的意义,但当“姓名”和“职位”组合就成为描述个人情况的关键信息。

利用混淆生成法将“姓名”与“职位”在表中进行重新随机组合,既可生成虚拟数据。

与替换生成法相比,不但确保了“姓名”的质量(不会出现随机而生成的奇怪人名),“职位”的布局结构也与真实的拓扑情况基本相同,从而在保障数据质量的同时,遮蔽了数据的真实性。

图5混淆生成法生成流程混淆生成法生成的虚拟数据与真实数据具有很高的相似度,能很好的保存真实数据的拓扑结构和逻辑关系,数据质量高。

混淆生成法要考虑哪些属性的组织包含关键信息,而不需要过多考虑数据的逻辑关系和拓扑结构等,因此设置规则更加简便。

由于该方法的基础是真实数据,必须有真实数据才可进行,并且如果数据的逻辑关系和拓扑结构也是需要遮蔽的信息,就要酌情使用该方法。

2.2.2 实体关系特征实现依据实体属性特征生成的数据,能够保证虚拟数据合格,但在反应数据间关联关系的合理性方面是不足的。

针对不同关联关系,提出相应的处理方法。

需要注意的是,系统主要解决工程中实际问题,因此并非严格遵循数据建模相关概念。

1.外键关联关系生成法实体间的关联关系落到物理模型层次,表现为表与表间的外键关系,在该关系中作为主键存在,提供数据的表将之称为字典表,在处理时随机抽取字典表中的数据直接放入到虚拟表中对应字段即可。

但在实际工程中,存在大量和外键关系类似,但并非严格符合数据建模的关系,例如虚拟表A中有“通信地址”字段,那么它与地名字典表存在类似外键关联的关系。

对该数据的处理,不是简单的直接抽取,而是对抽取的数据经过一定的规则转换后,生成虚拟数据,本文称这种转换后引用的关系为“函数引用”。

如上例“通信地址”中的数据“XX市XX区XX街道XXX号”,“XX市XX区XX街道”部分从地名字典表获得,而“XXX号”可以随机生成,然后将两者结合,就生成了虚拟的“通信地址”数据。

图6 外键关联关系生成法流程外键关联关系生成法适合于有主外键关系,或者隐含主外键关系的虚拟数据生成。

配置完整字典表,设计符合实际情况的规则是确保是本方法成功的两大关键,因此一旦做好这两个主要工作,系统就可以很方便的生成高质量的虚拟数据。

2.分类关系生成法分类关系是关联关系中特殊的一类,考虑到独立实体上有被称为超类实体的一个高层实体,因此在生成独立实体的特有数据时,要首先生成超类实体的共同属性数据。

相关主题