掌桥专利:专业的专利平台
掌桥专利
首页

自动化创建和更新数据同步宽表结构的改进方法

文献发布时间:2024-04-18 20:02:18


自动化创建和更新数据同步宽表结构的改进方法

技术领域

本发明涉及大数据实时流维表查询领域,特别涉及自动化创建和更新数据同步宽表结构的改进方法。

背景技术

大数据实时数仓是能够实时处理和分析大规模数据的数据仓库系统。它结合了大数据技术和实时数据处理技术,能够满足快速变化的业务需求,并支持实时的数据分析和决策。

但是现阶段的表字段同步只能局限于单表,不能适配多表关联生成的宽表,需要手动一个个字段对应或者仅限于web界面的选择操作,没有一定的规则自动关联字段,且现有的数据库将介质和存储体都归属于存储体,导致其有很多相同的东西需要重复配置,且多键值类型字段的分区分桶配置冗余,通过这样重复冗余配置,这样降低了配置效率,增加不一致性。

发明内容

本发明的目的在于提供自动化创建和更新数据同步宽表结构的改进方法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:自动化创建和更新数据同步宽表结构的改进方法,所述改进方法包括以下几个步骤;

第一步,通过在数据库中配置表配置的schema元数据及其关联信息配置表,创建和更新多个存储体的宽表结构;

第二步,根据最佳实践规则,自动化生成所需宽表字段;

第三步,减少冗余配置,将介质和存储体拆分为存储体介质表和元数据存储体表,然后再加上元数据信息表,组成核心的基座;

第四步,对输出流特定字段的类型进行自定义,通过新增flink任务宽表特定字段类型转换表,来定义要转换类型的字段和转换的类型,解耦输出流的字段类型与输入流的强关联;

第五步,增加表自定义属性表,且支持属性自定义配置、属性加解密和替换;

第六步,将任务宽表涉及到的表关联信息表,拆分为任务宽表涉及到的表关联信息和元数据存储体,并解析任务对应的宽表及其关联关系;

第七步,进行表所属的目录名和数据库名的配置,在元数据存储体表内增加目录名和数据库名。

优选的,所述第一步中的存储体包括flink、hudi和doris。

优选的,所述第三步中减少冗余配置操作后,其他表在进行元数据、存储体和介质三个递进层面进行区分时,使用其中一个对应表的主键作为外键,进行针对性配置。

优选的,所述递进层面进行区分后,对关联表进行改进,包括将介质分类从存储体分类中拆分出来,确保仅有表模板属性、表模板字段和表自定义属性配置和存储体介质表关联的配置,需要根据不同介质进行配置。

优选的,所述减少冗余配置还包括减少分区分桶配置冗余,将元数据存储体表的键字段、键类型移到新的元数据键值表。

优选的,所述第五步中属性自定义配置是,将表模板属性从表模板中拆出,并增加表自定义属性表,使字段和属性配置分离。

优选的,所述第六步中解析任务对应的宽表及其关联关系是,通过任务名称查宽表的元数据信息及其关联表的关联关系,以及对应关联表的信息,且宽表需要同步到的存储体、介质、对应的模板、键值、自定义字段和属性信息。

优选的,所述宽表所需字段信息的获取包括以下几个步骤;

A1,根据宽表及其关联关系以及对应关联表的信息获取到宽表所需字段名信息;

A2,将事实表字段格式统一化;

A3,进行特定字段的增减处理;

A4,获取宽表所需字段名对应字段的类型和长度类完整字段信息。

优选的,所述宽表所需字段信息获取后进行宽表结构设置,且创建宽表对应不同存储体的结构。

优选的,所述宽表结构设置完成之后,再创建和更新语句设置并执行,所述执行的操作包括以下几个步骤;

B1,设置表属性、键值和分区分桶信息;

B2,判断是创建还是更新,包括查找对应存储体是否有表,如果表不存在则准备创建表,如果存在,获取旧表结构;

B3,创建数据表操作语句,包括判断是否是创建、设置表属性、查找对应的表模板和替换里面占位符创建对应的建表和更新语句;

B4,执行语句。

本发明的技术效果和优点:

本发明通过在数据库中配置表配置的schema元数据及其关联信息配置表来高效的自动化创建和更新多个存储体的宽表结构,同时本方法可以自动化生成所需宽表字段,标准化宽表字段设置规则,以此减少冗余配置,提高配置效率,减少不一致性;同时本方法的设置支持属性自定义配置、属性加解密和替换,以此保证数据字段一致性,操作流程正确快速。

附图说明

图1为本发明改进方法的操作流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了如图1所示的自动化创建和更新数据同步宽表结构的改进方法,改进方法包括以下几个步骤;

第一步,通过在数据库中配置表配置的schema元数据及其关联信息配置表,创建和更新多个存储体的宽表结构;

具体的,第一步中的存储体包括flink、hudi和doris。

第二步,根据最佳实践规则,自动化生成所需宽表字段;

第三步,减少冗余配置,将介质和存储体拆分为存储体介质表和元数据存储体表,然后再加上元数据信息表,组成核心的基座;

具体的,第三步中减少冗余配置操作后,其他表在进行元数据、存储体和介质三个递进层面进行区分时,使用其中一个对应表的主键作为外键,进行针对性配置。

进一步的,递进层面进行区分后,对关联表进行改进,包括将介质分类从存储体分类中拆分出来,确保仅有表模板属性、表模板字段和表自定义属性配置和存储体介质表关联的配置,需要根据不同介质进行配置。

再进一步的,减少冗余配置还包括减少分区分桶配置冗余,将元数据存储体表的键字段、键类型移到新的元数据键值表。

第四步,对输出流特定字段的类型进行自定义,通过新增flink任务宽表特定字段类型转换表,来定义要转换类型的字段和转换的类型,解耦输出流的字段类型与输入流的强关联;

第五步,增加表自定义属性表,且支持属性自定义配置、属性加解密和替换;

具体的,第五步中属性自定义配置是,将表模板属性从表模板中拆出,并增加表自定义属性表,使字段和属性配置分离。

第六步,将任务宽表涉及到的表关联信息表,拆分为任务宽表涉及到的表关联信息和元数据存储体,并解析任务对应的宽表及其关联关系;

具体的,第六步中解析任务对应的宽表及其关联关系是,通过任务名称查宽表的元数据信息及其关联表的关联关系,以及对应关联表的信息,且宽表需要同步到的存储体、介质、对应的模板、键值、自定义字段和属性信息。

第七步,进行表所属的目录名和数据库名的配置,在元数据存储体表内增加目录名和数据库名。

具体的,宽表所需字段信息的获取包括以下几个步骤;

A1,根据宽表及其关联关系以及对应关联表的信息获取到宽表所需字段名信息;

进一步的,判断字段名信息是否为键值,有则保留。如果宽表涉及到的关联表的添加模式为增补模式,则宽表所需字段名为该关联表的所有字段。如果宽表涉及到的关联表的更新模式为增补模式,则宽表所需字段名为该关联表的值不可变的列,以及对应的元数据存储体信息表记录的键字段集合,经过去重之后的组合。

A2,将事实表字段格式统一化,用于将非标准化字段命名的字段标准化存储到表,方便找到重复字段,且事实表的字段进行驼峰转下划线。

A3,进行特定字段的增减处理;

进一步的,根据任务名称获取到任务对应的任务宽表特定字段增减表,获取需要删减的字段的记录。

根据记录,对宽表所需字段名进行增删,重命名一般用于处理同名字段。

A4,获取宽表所需字段名对应字段的类型和长度类完整字段信息。

进一步的,根据宽表及其关联关系以及对应关联表的名称,从flink的catalog表结构里面的完整字段信息;

如果信息不完整的话,再连接关联表所在数据源,获取完整字段信息;

根据任务宽表特定字段类型转换表找到要转换的字段,如果存在,则进行转换成对应字段类型。

进一步的,宽表所需字段信息获取后进行宽表结构设置,且创建宽表对应不同存储体的结构。

需要说明的是,创建宽表对应不同存储体(如hudi、doris等)和介质(如flink、spark等)的结构,包括:

设置字段,将完整字段信息设置到对应表结构,字段类型根据表存储体进行对应;

设置key和分区类型,根据元数据存储体、元数据键值表记录获取所需的键值字段,比如元数据信息表的id,存储体类型,键字段,键类型,表分区的类型,表分桶的类型信息。

再进一步的,宽表结构设置完成之后,再创建和更新语句设置并执行,执行的操作包括以下几个步骤;

B1,设置表属性、键值和分区分桶信息;

B2,判断是创建还是更新,包括查找对应存储体是否有表,如果表不存在则准备创建表,如果存在,获取旧表结构;

具体的,对比新表结构,是否有字段变更,如果有变更,则记录需要变更的字段结构信息,准备更新;如果没有变更则什么都不做。

B3,创建数据表操作语句,包括判断是否是创建、设置表属性、查找对应的表模板和替换里面占位符创建对应的建表和更新语句;

需要说明的是,设置表属性,从表模板属性、表自定义属性表,找到对应的模板和自定义配置,根据自定义属性更改对应的模板属性,如果属性里面有占位符,则用配置文件里面的属性值进行替换,如果有加解密配置,则根据规则进行加解密之后再替换。

B4,执行语句。

需要说明的是,数据表用途:

元数据信息表:表在数仓的所需相关信息。元数据关联信息表:表之间的关联关系信息。任务宽表关联信息表:任务与宽表的对应关系。任务宽表涉及到的表关联信息表:任务对应的宽表是涉及到的元数据关联信息。任务宽表特定字段增减表:通用规则基础上进行特定字段的删除和增减重命名的任务,比如关联表同名字段的删除和重命名。任务宽表特定字段类型转换表:解耦输出流的字段类型与输入流的强关联,对输出流特定字段的类型进行自定义。表自定义属性表:支持表在不同介质中属性的自定义配置,支持排序和加解密配置。元数据存储体信息表:用于对应不同存储体设置特定于该存储体的结构和配置信息。存储体介质表:定义存储体和介质组合关系。元数据键值表:定义表对应存储体的键值字段、类型和顺序。表模板表:用于记录不同介质的创建更新表模板。表模板属性表:用于记录不同介质的表属性模板,支持排序和加解密配置。

其中,具体表结构信息为:

元数据信息表:主键、原始表名和数仓层类型,1:ods表,2:dwd宽表,添加模式,0:append,1:upsert,值不可变的列;

元数据关联信息表:主键、外键和被关联的数据字段、关系模型、元数据信息表的id,被关联的元数据信息表的id;

任务宽表关联信息表:主键、任务名称、宽表的id(对应元数据信息表的id);

任务宽表涉及到的表关联信息表:主键,flink任务宽表关联信息表的id,涉及到的元数据表信息表的id,是否是时间临时关联和排序号;

任务宽表特定字段增减表:主键,flink任务宽表关联信息表的id,涉及到的元数据关联信息表的id,要排除的字段集合,要保留的字段集合,要重命名的字段集合;

任务宽表特定字段类型转换表:主键,flink任务宽表关联信息表的id,元数据存储体表的id,要转换类型的字段,转换的类型;

表自定义属性表:主键,元数据存储体表的id,存储体介质表的id,操作类型,1:upsert 2:delete,属性值的key、属性值的value、加密类型、排序号;

元数据存储体信息表:主键,元数据信息表的id,存储体类型,0:mysql,1:hudi,2:doris,目录名,库名,表分区的类型,0:不分区,1:字段值,2:RANGE范围,3:List列表,表分桶的类型,0:不分桶,1:HASH,2:RANDOM;

存储体介质表:主键,存储体类型,media类型,0:存储体,1:flink,2:spark;

元数据键值表:主键,元数据存储体表的id,键字段、键类型,0:唯一主键,1:重复主键,2:分区键,3:分桶键、排序号;

表模板表:主键,存储体介质表的id,表语句模板,模板类型:1:建表,2:添加字段,3:删除字段;4:修改字段;

表模板表:主键,存储体介质表的id,属性值的key,属性值的value,加密类型,排序号。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116581559