一种数据宽表新增列的方法及装置与流程

文档序号:37208288发布日期:2024-03-05 14:46阅读:17来源:国知局
一种数据宽表新增列的方法及装置与流程

本发明涉及计算机,尤其涉及一种数据宽表新增列的方法及装置。


背景技术:

1、数据宽表,实质上是宽表模型的应用,通常是指业务主体相关的指标、维度、属性关联在一起的一张数据库表,通俗的理解为一张表包括了所需的所有列信息。

2、数据宽表在实际应用中必须具备有新增列的功能,才能使其适应业务多样性发展的需求,目前主要采用两种方式对数据宽表进行新增列:

3、1.直接实施新增列操作:由软件开发人员事先梳理业务需求,汇总出本次需要新增的所有列,再在当前数据宽表中手动或者定时进行新增列的操作;

4、2.数据迁移式新增列操作:由软件开发人员事先梳理业务需求,汇总出本次需要新增的所有列,新建一张包含本次新增列和当前数据宽表中所有列的中间表,同时停止对当前数据宽表的业务访问并将当前数据宽表作为历史数据宽表,将中间表作为最新的当前数据宽表,重启业务访问,使得新的业务数据返回至最新的当前数据宽表并将历史数据宽表的历史数据迁移至最新的当前数据宽表中,等所有历史数据迁移完毕后,才完成本次新增列的操作。

5、关于上述新增列的两种方式,采用直接实施新增列操作,会对数据产生性能影响,甚至出现卡顿现象,且需要耗费大量时间和资源,而采用数据迁移式新增列操作,由于需要将海量的历史数据重新迁移至新的数据宽表中,数据迁移量较大整个过程需要耗费大量时间且过程复杂需要经验丰富的数据库维护人员和软件开发人员参与,耗费人力资源,且无论是直接实施新增列操作还是采用数据迁移式新增列操作,均需要选择一个非业务高峰期进行操作,因此,对数据宽表进行新增列操作的效率低。


技术实现思路

1、本发明所要解决的技术问题是:本发明提供一种数据宽表新增列的方法及装置,提高对数据宽表进行新增列操作的效率。

2、为了解决上述技术问题,本发明采用的技术方案为:

3、第一方面,本发明提供一种数据宽表新增列的方法,包括:

4、接收实时数据,从所述实时数据中提取出实时元数据信息;

5、将所述实时元数据信息与apache doris数据库中数据宽表的历史元数据信息进行比较,当存在新元数据信息时,根据所述新元数据信息对所述数据宽表进行新增列操作。

6、本发明的有益效果在于:从接收的实时数据中提取出实时元数据信息,将其与历史元数据信息进行比较,得到新元数据信息即所需要新增的列,无需软件开发人员事先梳理需要新增的列就能动态发现需要新增的列,节省人力的同时提高工作效率,且利用apache doris数据库支持毫秒级新增列的功能,能实现实时新增列操作,不仅不需要选择在非业务高峰期进行操作,且不会对数据产生性能影响更不会出现卡顿现象,提高了对数据宽表进行新增列操作的效率,优化用户体验。

7、可选地,所述实时元数据信息包括字段名和字段类型,所述从所述实时数据中提取出实时元数据信息包括:

8、对所述实时数据进行解析,得到对应的key键,将所述key键作为实时元数据信息的字段名;

9、获取所述key键对应的value值,将所述value值对应的数据类型作为实时元数据信息的字段类型。

10、根据上述描述可知,通过对实时数据进行解析获取对应的key键和key键对应的value值,以此得到实时元数据信息的字段名和字段类型,保证实时元数据信息的完整性。

11、可选地,所述apache doris数据库中数据宽表的历史元数据信息以hash结构存储在redis中。

12、根据上述描述可知,将历史元数据信息以hash结构存储在redis中,节约内存的同时提高查询效率。

13、可选地,所述将所述实时元数据信息与apache doris数据库中数据宽表的历史元数据信息进行比较包括:

14、获取所述实时元数据信息中的字段名,判断所述字段名是否存在于所述历史元数据信息中,若存在,则返回列已存在标志,若不存在,则使用分布式锁将所述字段名锁定,并再一次判断所述字段名是否存在于所述历史元数据信息中,若仍不存在,则将所述字段名对应的实时元数据信息作为新元数据信息,否则返回已新增列成功标志。

15、根据上述描述可知,将实时元数据信息与历史元数据信息进行比较时,采用了双重检查锁定机制即当第一次判断实时元数据信息的字段名不存在于历史元数据信息中时,使用分布式锁将字段名锁定,并再一次判断该字段名是否存在于历史元数据信息中,只有两次均不存在才将实时元数据信息作为新元数据信息,确保在多个新增列并发条件下,对相同的列只进行一次新增操作,从而实现新增列的原子性和保障查询元数据的性能。

16、可选地,所述根据所述新元数据信息对所述数据宽表进行新增列操作包括:

17、当根据所述新元数据信息对所述数据宽表进行新增列操作时,必须在一个事务中完成所述新增列操作。

18、根据上述描述可知,在对数据宽表进行新增列操作时,需要在一个事务中完成,从而避免重复进行新增列操作,提高新增列的准确性。

19、第二方面,本发明提供一种数据宽表新增列的装置,包括:

20、接收模块,用于接收实时数据,从所述实时数据中提取出实时元数据信息;

21、新增列模块,用于将所述实时元数据信息与apache doris数据库中数据宽表的历史元数据信息进行比较,当存在新元数据信息时,根据所述新元数据信息对所述数据宽表进行新增列操作。

22、本发明的有益效果在于:从接收的实时数据中提取出实时元数据信息,将其与历史元数据信息进行比较,得到新元数据信息即所需要新增的列,无需软件开发人员事先梳理需要新增的列就能动态发现需要新增的列,节省人力的同时提高工作效率,且利用apache doris数据库支持毫秒级新增列的功能,能实现实时新增列操作,不仅不需要选择在非业务高峰期进行操作,且不会对数据产生性能影响更不会出现卡顿现象,提高了对数据宽表进行新增列操作的效率,优化用户体验。

23、可选地,所述实时元数据信息包括字段名和字段类型,所述接收模块包括:

24、解析模块,用于对所述实时数据进行解析,得到对应的key键,将所述key键作为实时元数据信息的字段名;

25、获取所述key键对应的value值,将所述value值对应的数据类型作为实时元数据信息的字段类型。

26、根据上述描述可知,通过对实时数据进行解析获取对应的key键和key键对应的value值,以此得到实时元数据信息的字段名和字段类型,保证实时元数据信息的完整性。

27、可选地,所述apache doris数据库中数据宽表的历史元数据信息以hash结构存储在redis中。

28、根据上述描述可知,将历史元数据信息以hash结构存储在redis中,节约内存的同时提高查询效率。

29、可选地,所述新增列模块包括:

30、锁定模块,用于获取所述实时元数据信息中的字段名,判断所述字段名是否存在于所述历史元数据信息中,若存在,则返回列已存在标志,若不存在,则使用分布式锁将所述字段名锁定,并再一次判断所述字段名是否存在于所述历史元数据信息中,若仍不存在,则将所述字段名对应的实时元数据信息作为新元数据信息,否则返回已新增列成功标志。

31、根据上述描述可知,将实时元数据信息与历史元数据信息进行比较时,采用了双重检查锁定机制即当第一次判断实时元数据信息的字段名不存在于历史元数据信息中时,使用分布式锁将字段名锁定,并再一次判断该字段名是否存在于历史元数据信息中,只有两次均不存在才将实时元数据信息作为新元数据信息,确保在多个新增列并发条件下,对相同的列只进行一次新增操作,从而实现新增列的原子性和保障查询元数据的性能。

32、可选地,所述新增列模块具体用于:

33、当根据所述新元数据信息对所述数据宽表进行新增列操作时,必须在一个事务中完成所述新增列操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1