本发明涉及物理,具体涉及一种仿真数据生成的方法及装置。
背景技术:
1、在现如今追求信息化时代的浪潮中,数据一直都是至关重要的一个环节之一。有了数据,各种系统才能发挥出其实质作用。但是在系统开发过程中或者试运行阶段,往往存在数据模拟困难或者没有数据对接的情况,对后续工作进度造成了实质影响,同时数据的精准性也是一个考验。
2、现有相关技术实现上面还存在以下不足:
3、1.涉及多种具备关联性的数据同时生成时,仿真精准度不足。实际运用中经常会遇到数据自身或者数据与数据之间存在一定的关联性,随机生成的数据没办法满足这种关联性。
4、2.数据仿真结束后缺少输出方式的应用。数据仿真生成的数据想要能正常运用或者跟系统对接,还缺少数据输出结果的一个环节。
5、3.数据规则不支持动态变化,对于已完成的规则存在修改难度大的问题。
6、综上,如何通过简单的配置化管理动态生成需要的仿真数据,解决复杂数据间的关联问题,实现数据输出方式,减少重复操作的时间成本,成为当前亟待解决的问题。
技术实现思路
1、本发明是为了解决如何便捷提供仿真数据的问题,提供一种仿真数据生成的方法及装置,可支持多个数据模型间数据动态关联,具备兜底策略,适配大部分数据内容生成场景;通过调整配置即可实现不同数据模型的生成规则的创建,且可通过可视化界面管理;活性高,如果数据模型有变动,只需要修改当前数据模型规则结构,降低了代码改动的可能性,节约开发成本;持动态解析表达式,满足灵活处理动态数据的需求,实现更高的灵活性和动态性;支持4种常规数据格式输出,满足绝大部分数据输出场景,且支持扩展。
2、本发明提供一种仿真数据生成的方法,包括以下步骤:
3、s1、在数据内容规则管理模块、数据生成策略管理模块和数据输出方式管理模块中进行待生成数据的设置,查询数据内容规则管理模块、数据生成策略管理模块和数据输出方式管理模块依次获得数据库配置规则、数据生成策略和数据输出方式;
4、s2、生成x条随机数据,开始准备进行数据仿真;
5、s3、判断数据生成策略是单表还是多表,如果是单表,则最终会生成x条数据;如果是多表,且比例为1:n:m,则最终多张表生成数据总数为x:xn:xm条;
6、s4、按照数据库配置规则生成数据;针对多个数据模型,分别实现各自的填充逻辑;先根据数据内容模拟顺序对各个模型字段进行排序,然后依次按照顺序进行数据规则填充;
7、如果没有数据内容模拟顺序,则按默认顺序处理;
8、如果当前规则是值引用规则,获得被引用字段的信息和所在数据模型,当多个线程都处理完毕后统一返回留待后续填充字段值;
9、s5、进行值引用字段的填充,本次循环中所有数据都已成功生成;
10、s6、返回步骤s4,直至循环x次后,本轮数据全部生成完毕;
11、s7、根据数据输出方式调整最终各数据模型的输出顺序;
12、s8、根据数据输出方式将数据转换成输出方法支持的格式,然后根据输出方法配置的规则对数据进行最终处理,一种仿真数据生成的方法完成。
13、本发明所述的一种仿真数据生成的方法,作为优选方式,步骤s2中通过threadlocalrandom生成随机的数据;
14、步骤s3中,如果先考虑生成策略的比例关系且存在多表关联生成,则先用threadlocalrandom随机生成关联表比例实际的个数,作为本次循环中关联表需要生成的数据总数;
15、步骤s4中,根据数据库配置规则生成数据的具体方法包括:
16、s41、判断当前规则是否为值引用规则,如果否,进入步骤s42;如果是,获得被引用字段的信息和所在数据模型,进入步骤s4a;
17、s42、根据数据库配置规则生成数据,固定值生成进入步骤s43,字典值生成进入步骤s44,ip值生成进入步骤s45,数字生成进入步骤s46,字符串生成进入步骤s47,时间生成进入步骤s48,值查询生成进入步骤s49;
18、s43、判断固定值配置项数量是否大于1,如果否,则当前固定值为唯一项,进入步骤s4a;
19、如果是,判断是否存在权重配置项,如果存在,根据权重比设置固定值区间随机生成区间值,输出当前区间内的固定值,进入步骤s4a;如果不存在,默认权重比为1:1,根据权重比设置固定值区间随机生成区间值,输出当前区间内的固定值,进入步骤s4a;
20、s44、判断当前是否多选,如果否,则选中的值为直接输出值,进入步骤s4a;
21、如果是,判断是否设置分割符,如果设置,则将选择的字典值拼成字符串,用分隔符拼接,进入步骤s4a;如果未设置,则将选择的字典值拼成字符串,用英文逗号拼接,进入步骤s4a;
22、s45、根据范围生成四个范围内的数字,然后用符号拼接作为ip值生成值,进入步骤s4a;
23、s46、判断是否生成小数,如果否,则根据配置范围随机生成范围内的整数,进入步骤s4a;如果是,则根据配置范围随机生成范围内的小数,进入步骤s4a;
24、s47、随机生成配置长度的字符串,判断是否需要md5加密,如果是,通过md5算法对生成的字符串加密,进入步骤s4a;如果否,进入步骤s4a;
25、s48、将配置的时间范围转成毫秒值,在生成区间值内随机生成数字作为时间值;判断是否配置了时间表达式,如果是,则将时间值转成对应表达式的时间字符串,进入步骤s4a;如果否,进入步骤s4a;
26、s49、根据sql语句查询数据库结果,进入步骤s4a;
27、s4a、输出生成的当前值,判断除引用类型字段以外其他类型字段是否全部生成实际值,如果是,进入步骤s5,如果否,返回步骤s41。
28、本发明所述的一种仿真数据生成的方法,作为优选方式,步骤s5中,值引用字段的填充方法为有向图,值引用字段依赖于被引用字段的结果,且引用方向有序;值引用字段的填充算法为邻接表;
29、步骤s5包括:
30、s51、将输出的值引用结果对象根据引用字段的关系转换成图结构;
31、s52、判断图结构是否为闭环,如果是,则抛出异常,配置错误,结束;如果否,则进入步骤s53;
32、s53、优先遍历不存在子节点的数据节点,根据填充规则填充数据;
33、s54、依靠图的广度优先搜索方法寻找兄弟节点,根据填充规则进行填充,直到左右节点数据填充完毕,值引用字段结果生成;
34、s55、根据值引用生成结果填充完整数据模型的数据。
35、本发明所述的一种仿真数据生成的方法,作为优选方式,步骤s4中,值引用可使用动态表达式,当值引用使用了动态表达式时,则解析动态表达式后获得被引用字段信息;
36、步骤s8中,输出数据的生成路径和文件名称可使用动态表达式;
37、动态表达式的解析方法包括:判断是否符合动态表达式格式,如果是,则获取表达式中${}符号内部内容,通过正则表达式对内容进行校验,判断当前内容符合哪种表达式构造,并根据表达式构造进行结果值运算后输出。
38、本发明所述的一种仿真数据生成的方法,作为优选方式,步骤s7中,数据为根据字段名称生成对应的json格式数据;
39、步骤s8中,输出方法支持的格式包括文件输出、接口输出、kafka输出和数据库输出;
40、步骤s8包括以下步骤:
41、s81、获得已经完成内容填充的结果数据,并判断当前输出方式;文件输出格式时进入步骤s82,接口输出格式时进入步骤s83,kafka输出格式时进入步骤s84,数据库输出格式时进入步骤s85;
42、s82、判断当前字段类型是否是对象类型或者数组类型格式,如果否,则直接将值依次用指定符号作为分隔符拼接;如果是,则转成json字符串后整个字符串作为后续拼接值;
43、拼接好的格式数据作为文件的内容;如果文件名含动态表达式,则先解析获得实际值;然后通过io操作写入文件对象中,生成文件,进入步骤s86;
44、s83、根据配置项获取请求接口信息,然后请求接口url和请求参数,如果请求接口url和请求参数使用了动态表达式则先进行动态表达式解析再进行接口请求,将生成好的数据结果放入请求体内,进入步骤s86;
45、s84、根据配置规则将结果数据转化成kafka数据支持的内容,连接kafka源后将数据内容下发到对应的topic里,进入步骤s86;
46、s85、将数据出口拼接成新增的sql语句后动态连接数据库,执行sql语句,进入步骤s86;
47、s86、一种仿真数据生成的方法完成。
48、本发明提供一种仿真数据生成的装置,包括依次电连接的数据内容规则管理模块、数据生成策略管理模块和数据输出方式管理模块;
49、数据内容规则管理模块进行数据内容规则管理,数据内容规则管理模块配置的字段包括:数据唯一标识字段和数据内容规则填充;
50、数据生成策略管理模块可标记不同模型间生成数据的比例关系;
51、数据输出方式管理模块包括至少两种以上输出方法;
52、仿真数据生成的装置根据数据内容规则、数据生成策略管理和输出方式管理方法输出仿真数据。
53、本发明所述一种仿真数据生成的装置,作为优选方式,数据唯一标识字段可区分不同类型数据模型;在输出方式为文件类型时,用作文件名进行拼接;在输出方式为接口类型时,用作接口参数标识数据类型;在输出方式为kafka类型时,用作topic;在输出方式为数据库类型时,用作表名;
54、数据内容规则填充的内容包括字段名称、字段类型、数据内容模拟规则、数据内容模拟顺序和数据输出顺序;
55、字段名称标识当前字段含义;
56、字段类型包括字符串、数字、布尔值、对象类型、对象字符串类型、数组类型、数组字符串类型,对象字符串类型和数组字符串类型在所有输出方式中都被转换成json字符串的形式输出;对象类型和数组类型在文件输出方式和kafka输出方式中按字段顺序拆开依次用分隔符拼接输出,在接口输出方式中,以对象形式输出;
57、数据内容模拟规则决定随机生成数据的内容范围,数据内容范围包括固定值、字典值、ip、整数范围、字符串长度范围、1位小数、2位小数、时间、值引用和值查询;
58、数据内容模拟顺序使存在关联关系的字段在生成数据上有先后关系;
59、数据输出顺序可维护最终输出顺序。
60、本发明所述一种仿真数据生成的装置,作为优选方式,值查询为内容模拟兜底方案,内容填充支持内置表达式逻辑。
61、本发明所述一种仿真数据生成的装置,作为优选方式,数据生成策略管理模块对于存在多张表时,值引用的求和规则针对主表里的值依赖于副表引用字段值的累加情况;值引用的相等规则针对副表字段依赖于主表的引用字段,如果策略是1:1引用字段无论是在主表还是在副表皆可;
62、数据生成策略管理模块对于单表自引用,针对字表引用字段是数组类型的情况,值引用的相等规则则是针对除数组类型外的其它情况;值引用允许使用动态表达式;
63、数据输出方式管理模块包括文件输出、接口输出、kafka输出和数据库输出。
64、本发明所述一种仿真数据生成的装置,作为优选方式,数据内容规则管理模块、数据生成策略管理模块和数据输出方式管理模块均设置在业务层,业务层通过接口层与展示层电连接,业务层设置输出接口,业务层与基础层的数据库、缓存电连接;
65、展示层包括数据内容规则管理页面、数据生成策略管理页面和数据输出方式管理页面,数据内容规则管理页面通过接口层与数据内容规则管理模块电连接,数据生成策略管理页面通过接口层与数据生成策略管理模块电连接,数据输出方式管理页面通过接口层与数据输出方式管理模块电连接。
66、本发明具有以下优点:
67、(1)本发明可支持多个数据模型间数据动态关联,具备兜底策略,适配大部分数据内容生成场景;
68、(2)本发明通过调整配置即可实现不同数据模型的生成规则的创建,且可通过可视化界面管理;
69、(3)本发明灵活性高,如果数据模型有变动,只需要修改当前数据模型规则结构,降低了代码改动的可能性,节约开发成本;
70、(4)本发明支持动态解析表达式,满足灵活处理动态数据的需求,实现更高的灵活性和动态性;
71、(5)本发明支持4种常规数据格式输出,满足绝大部分数据输出场景,且支持扩展。