一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据流通系统中数据库代码生成、更新方法及系统与流程

2022-10-26 17:36:55 来源:中国专利 TAG:


1.本发明涉及数据库技术领域,尤其涉及一种数据流通系统中数据库代码生成、更新方法及系统。


背景技术:

2.在数据流通过程中,涉及从原始数据到数据元件再到数据产品的转化过程,数据操作系统中的各子系统的数据库部分采用列式存储和行列混存技术,涉及到的数据类型多样,在处理不同数据类型时,根据存储结构设计的不同,对基本数据类型进行了不同的封装,用于处理不同类型的列存数据。例如,通过添加一些属性构成一个值向量类,用于处理不同类型列簇的处理。由此,在原来基本类型的基础上,组合不同的属性,衍生出上百种值向量类。
3.现有技术中,数据库内核开发过程中,对基本数据类型的处理采用手工编码的方式,在基本数据类型可控的情况下,这种方式没有问题。但在上述数据流通过程中涉及到上百种数据类型的情况下,依赖人工维护不仅存在代码重复量大的问题,并且后期接口扩展或改动不灵活,不宜后期维护。


技术实现要素:

4.本发明要解决的技术问题是提高数据类型众多情况下数据库代码的开发效率,本发明提出一种数据流通系统中数据库代码生成、更新方法及系统。
5.根据本发明实施例的数据流通系统中数据库代码生成方法,所述代码生成方法用于数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统及数据金库中对应的各子数据库的开发,所述代码生成方法包括:根据各所述子系统数据库中数据类型的封装需求,确定对应数据类型的值向量类;根据所述值向量类分别创建元数据文件和数据模板;通过模板引擎基于所述元数据文件和所述数据模板生成数据类型文件集代码。
6.根据本发明实施例的数据流通系统中数据库代码生成方法,根据数据流通系统中各子系统数据库的封装需求来确定对应数据类型的值向量类,并根据值向量类来建立元数据文件和数据库模板,从而可以通过模板引擎基于元数据文件和数据模板自动生成数据类型文件集代码,提高了数据流通系统中各子系统数据库的开发效率,且便于数据库代码的更新维护。
7.根据本发明的一些实施例,所述封装需求包括:是否固定宽度、是否支持null、是否支持嵌套类型。
8.在本发明的一些实施例中,所述数据模板为多个,每个所述数据模板对应一类数据类型。
9.根据本发明的一些实施例,所述元数据文件包括:元数据参数存放路径、license声明信息和待引入包。
10.在本发明的一些实施例中,各所述子数据库中的至少部分采用列存储或行列混存。
11.根据本发明实施例的数据库中数据类型代码更新方法,所述代码更新方法用于对采用如上所述的数据流通系统中数据库代码生成方法生成的数据库代码进行更新,所述方法包括:根据待更新的数据类型确定对应的元数据文件和数据模板;对所述元数据文件和/或所述数据模板进行对应修改;基于修改后的所述元数据文件和所述数据模板生成更新后的数据类型文件代码,并对原数据类型文件集代码进行替换。
12.根据本发明实施例的数据库中数据类型代码更新方法,由于创建了元数据文件和数据模板,在对数据类型进行更新时,仅需修改对应的元数据文件和数据模板即可,无需对所有数据类型的值向量类进行单独修改更新,提高了数据类型代码更新的便利性。
13.根据本发明的一些实施例,根据待修改的数据类型确定对应的元数据文件和数据模板,包括:根据数据库待新增或待删除的列簇处理接口,确地待修改的数据类型确定对应的元数据文件和数据模板。
14.根据本发明实施例的数据流通系统中数据库代码生成系统,所述代码生成系统用于数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统及数据金库中对应的各子数据库的开发,所述代码生成系统包括:确定模块,用于根据各所述子系统数据库中数据类型的封装需求,确定对应数据类型的值向量类;整备模块,用于根据所述值向量类分别创建元数据文件和数据模板;代码生成模块,用于通过模板引擎基于所述元数据文件和所述数据模板生成数据类型文件集代码。
15.根据本发明实施例的数据流通系统中数据库代码生成系统,通过确定模块根据数据流通系统中各子系统数据库的封装需求来确定对应数据类型的值向量类,并通过整备模块根据值向量类来建立元数据文件和数据库模板,从而代码生成模块可以通过模板引擎基于元数据文件和数据模板自动生成数据类型文件集代码,提高了数据流通系统中各子系统数据库的开发效率,且便于数据库代码的更新维护。
16.根据本发明的一些实施例,所述封装需求包括:是否固定宽度、是否支持null、是否支持嵌套类型。
17.在本发明的一些实施例中,所述整备模块中的所述数据模板为多个,每个所述数据模板对应一类数据类型。
附图说明
18.图1为根据本发明实施例的数据流通系统过程示意图;
图2为根据本发明实施例的数据流通系统中数据库代码生成方法流程图;图3为根据本发明实施例的数据库中数据类型代码更新方法流程图;图4为根据本发明实施例的数据流通系统中数据库代码生成系统组成示意图;图5为根据本发明实施例的数据流通系统中数据库代码生成方法示意图;图6为根据本发明实施例的元数据文件组成示意图;附图标记:代码生成系统100,确定模块10,整备模块20,代码生成模块30。
具体实施方式
19.为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
20.本发明中说明书中对方法流程的描述及本发明说明书附图中流程图的步骤并非必须按步骤标号严格执行,方法步骤是可以改变执行顺序的。而且,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
21.根据本发明实施例的数据流通系统中数据库代码生成方法,代码生成方法用于数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统及数据金库中对应的各子数据库的开发。
22.需要说明的是,现有技术中,数据库常见的基本数据类型大约有20~30种左右,在传统关系性数据库中,由于数据类型体量小,针对不同数据类型采用手工编写对应的实现文件。
23.而如图1所示,在本发明提出的数据流通过程中,数据流经归集获得原始数据,通过对原始数据进行清洗获得标准数据,标准数据经整合获得基础数据,基础数据经开发获得元件模型,由元件模型获得数据元件进行交易和维护。
24.具体涉及22个处理流程,包括:01数据调研、02数据登记、03归集编目、04分类分级、05标准制定、06数据编目、07质量稽核、08清洗转换、09业务分析、10数仓建模、11资源编目、12脱敏加密、13元件设计、14元件开发、15元件评估审核、16元件入库、17元件析权、18元件估值定价、19元件发布、20元件维护、21元件购买、22元件调用。
25.上述数据处理过程通过数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统共同协作完成,其中上述各子系统及数据金库对应的各子系统数据库存储的数据类型种类繁多、且具有不同的封装需求。本发明可以实现大体量数据类型数据库的代码开发效率。
26.如图2所示,代码生成方法包括:a100,根据各子系统数据库中数据类型的封装需求,确定对应数据类型的值向量类;如上所述,在数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统及数据金库中对应的各子数据库涉及不同数据类型的封装需求,针对各子系统数据库来获取对应的封装需求,以确定对应数据类型的值向量类。
27.a200,根据值向量类分别创建元数据文件和数据模板;例如,可以根据值向量类开发创建对应的数据模板,并建立对应的元数据文件。
28.a300,通过模板引擎基于元数据文件和数据模板生成数据类型文件集代码。
29.根据本发明实施例的数据流通系统中数据库代码生成方法,根据数据流通系统中各子系统数据库的封装需求来确定对应数据类型的值向量类,并根据值向量类来建立元数据文件和数据库模板,从而可以通过模板引擎基于元数据文件和数据模板自动生成数据类型文件集代码,提高了数据流通系统中各子系统数据库的开发效率,且便于数据库代码的更新维护。
30.根据本发明的一些实施例,封装需求包括:是否固定宽度、是否支持null、是否支持嵌套类型。可以理解的是,上述封装需求仅是对本发明的举例说明,在具体开发过程中,可以根据各子系统实际需要确定封装需求。
31.在本发明的一些实施例中,数据模板为多个,每个数据模板对应一类数据类型。例如,数据模板可以包括:数字类模板、字符类模板、枚举类模板、日期时间类型模板等等,其中,数字类模板可以用来生成int,bigint,samllint等数据类型,字符类模板用来处理char,varchar等字符串类型。元数据信息可以通过json文件声明。
32.根据本发明的一些实施例,元数据文件包括:元数据参数存放路径、license声明信息和待引入包。在生成数据库的数据类型代码时,可以通过模板引擎将元数据参数存放路径、license声明信息和待引入包在数据模板中替换填入,生成对应数据类型的代码。
33.在本发明的一些实施例中,各子数据库中的至少部分采用列存储或行列混存。需要说明的是,在数据流通过程中,涉及大量的统计、计算等操作,采用列存储或行列混存,有利于减少数据访问次数,提高数据处理效率。但是,采用列存储或行列混存,数据库数据类型衍生出众多类型,并且这些类型具备基本一致接口,此时依赖人工维护不仅存在代码重复量大的问题,并且后期接口扩展或改动不灵活,不宜后期维护。
34.针对这个问题,本发明通过上述所述的数据流通系统中数据库代码生成方法,来提高数据类型代码的开发效率。
35.根据本发明实施例的数据库中数据类型代码更新方法,代码更新方法用于对采用如上所述的数据流通系统中数据库代码生成方法生成的数据库代码进行更新,如图3所示,方法包括:b100,根据待更新的数据类型确定对应的元数据文件和数据模板;b200,对元数据文件和/或数据模板进行对应修改;b300,基于修改后的元数据文件和数据模板生成更新后的数据类型文件代码,并对原数据类型文件集代码进行替换。
36.根据本发明实施例的数据库中数据类型代码更新方法,由于创建了元数据文件和数据模板,在对数据类型进行更新时,仅需修改对应的元数据文件和数据模板即可,无需对所有数据类型的值向量类进行单独修改更新,提高了数据类型代码更新的便利性。
37.根据本发明的一些实施例,根据待修改的数据类型确定对应的元数据文件和数据模板,包括:根据数据库待新增或待删除的列簇处理接口,确地待修改的数据类型确定对应的元数据文件和数据模板。
38.也就是说,在进行数据库新增,或删除列簇处理接口时,可以根据对应的数据类型确定待修改更新的元数据文件和数据模板,以生成更新后的数据库代码。
39.根据本发明实施例的数据流通系统中数据库代码生成系统,代码生成系统用于数据流通系统中的数据归集子系统、数据清洗子系统、数据整合子系统、数据开发子系统、数据交易子系统、数据维护子系统及数据金库中对应的各子数据库的开发。
40.如图4所示,代码生成系统包括:确定模块、整备模块和代码生成模块。
41.其中,确定模块用于根据各子系统数据库中数据类型的封装需求,确定对应数据类型的值向量类;整备模块用于根据值向量类分别创建元数据文件和数据模板;代码生成模块用于通过模板引擎基于元数据文件和数据模板生成数据类型文件集代码。
42.根据本发明实施例的数据流通系统中数据库代码生成系统,通过确定模块根据数据流通系统中各子系统数据库的封装需求来确定对应数据类型的值向量类,并通过整备模块根据值向量类来建立元数据文件和数据库模板,从而代码生成模块可以通过模板引擎基于元数据文件和数据模板自动生成数据类型文件集代码,提高了数据流通系统中各子系统数据库的开发效率,且便于数据库代码的更新维护。
43.根据本发明的一些实施例,封装需求包括:是否固定宽度、是否支持null、是否支持嵌套类型。可以理解的是,上述封装需求仅是对本发明的举例说明,在具体开发过程中,可以根据各子系统实际需要确定封装需求。
44.在本发明的一些实施例中,整备模块中的数据模板为多个,每个数据模板对应一类数据类型。例如,数据模板可以包括:数字类模板、字符类模板、枚举类模板、日期时间类型模板等等,其中,数字类模板可以用来生成int,bigint,samllint等数据类型,字符类模板用来处理char,varchar等字符串类型。元数据信息可以通过json文件声明。
45.下面参照附图详细描述根据本发明的数据流通系统中数据库代码生成、更新方法及系统。值得理解的是,下述描述仅是示例性描述,而不应理解为对本发明的具体限制。
46.数据流通系统中,对于数据库基本数据类型和附加属性组合衍生出来的上百个值向量类型,如果使用传统手工维护代码的方式,不仅存在大量的重复性工作,并且灵活性差,后期维护成本高。本发明将代码生成技术引入到数据库,使用代码生成模板来生成这些类,提高数据库代码的开发效率。
47.下面以代码生成技术freemarker结合fmpp进行代码生成为例,对本发明的技术方案进行介绍:freemarker是一款模板引擎,可以做到基于预定义的模板结合输入参数,生成目标文本。freemarker设计之初是用于web开发,用来生成html页面的。fmpp是一个通用的文本文件预处理工具。它使用freemarker模板,递归的处理整个目录。用来静态生成网站,源代码,配置文件等。可以将来自csv,json等源文件的数据插入到生成的文件中。
48.这里将这两种技术引入到数据库领域进行代码生成,解决数据类型众多背景下的传统手工维护的问题。
49.本发明应用了fmpp和freemarker技术实现值向量类代码生成。使用maven插件调用fmpp来执行实际的代码生成。fmpp反过来使用freemarker作为模板引擎。fmpp读取一组
模板,并使用一组数据将它们处理为输出。
50.进行代码生成需要依赖两部分内容:代码生成遵循的规则和代码生成依赖的元数据。
51.生成规则是通过模板文件提供。根据不同数据类型定义相应模板文件,例如数字类模板用来生成int,bigint,samllint等数据类型,字符类模板用来处理char,varchar等字符串类型。元数据信息通过json文件声明。
52.有了生成规则和元数据后,可以通过freemarker框架进行代码生成。基本逻辑如图5所示。
53.其中,config.fmpp是元数据文件,其内容结构如图6所示。
54.其中data段包含了元数据参数的存放路径../data/difftypes.tdd。difftypes.tdd文件中以json形式存放了想要格式化生成的数据类型参数。在代码生成过程中,fmpp将json文件中的数据插入到生成文件中。
55.freemarkerlinks段指定了目标代码中需要include的内容。主要包括两部分,license声明信息和需要引入的包,分别对应license.ftl和vv_imports.ftl。
56.freemarker模板文件:使用freemarker语法编写模板文件。根据元数据文件中配置的types,遍历每个type类型并对其进行下列操作:1、根据不同类型名具备的属性,创建classname、valuesname等变量;2、使用include语法在对应位置license声明信息和需要引入的包;3、生成类的实现部分。类的基本数据成员和方法在这里实现。
57.代码示例如下:typetemplate.java《@pp.dropoutputfile /》《#list vv.types as type》《#list type.minor as minor》《#assign classname = "nullable${minor.class}vector" /》《#assign valuesname = "${minor.class}vector" /》《#assign friendlytype = (minor.friendlytype) /》《@pp.changeoutputfile name="/targetdir/vector/${classname}.java" /》《#include "/@includes/license.ftl" /》《#include "/@includes/vv_imports.ftl" /》public final class ${classname} extends basedatavaluevector {
ꢀꢀꢀꢀ
private final uintvector bits = new uintvector(bitsfield, allocator);
ꢀꢀꢀꢀ
private final ${valuesname} values = new ${minor.class}vector(field, allocator);
ꢀꢀꢀ
@override
ꢀꢀꢀꢀ
publicfieldreadergetreader() {
ꢀꢀꢀꢀꢀꢀꢀꢀ
return reader;
ꢀꢀꢀꢀ
}
ꢀꢀꢀ
...}根据上述示例生成的数据类型文件如下:nullabletinyintvector.java/** licensed to the xxxx* xxxx ...*/importjava.util.arrays;importjava.util.random;importjava.util.list;importjava.util.set;public final class nullabletinyintvector extends basedatavaluevector{
ꢀꢀꢀꢀ
private final uintvector bits = new uintvector(bitsfield, allocator);
ꢀꢀꢀꢀ
private final tinyintvector values = new tinyintvector(field, allocator);
ꢀꢀꢀꢀ
@override
ꢀꢀꢀꢀ
publicfieldreadergetreader() {
ꢀꢀꢀꢀꢀꢀꢀꢀ
return reader;
ꢀꢀꢀꢀ
}
ꢀꢀ
...}综上所述,本实施例将代码生成技术应用到数据库开发。解决数据库内核开发过程中出现的代码重复量大,后期维护困难的问题。引入代码生成技术后,开发人员只需要编写模板文件,配置元数据文件,使用代码生成技术去生成目标代码。一旦接口发生更改,只需要维护一个模板文件就可以,大大缩减了开发周期和后期维护成本。
58.通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献