技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种具备细粒度特性的多线程ETL方法  >  正文

一种具备细粒度特性的多线程ETL方法

  • 国知局
  • 2024-07-31 23:26:02

本发明涉及计算机,尤其是涉及一种具备细粒度特性的多线程etl方法。

背景技术:

1、在现代etl过程中,数据处理被分为数据抽取、数据清洗、数据导入三个部分;在数据导入阶段,采用多线程机制来提高入库速度是一种常见的性能优化手段:多线程通过将任务拆分,由之前地串行写入变为并行写入,采用这种方法可以明显地提高导入速度。但多线程的引入使事务处理问题成为了新的技术痛点。此外,一个子线程就需要一个数据库连接,存在子线程数量太多导致数据库连接耗尽的问题,同时,一个子线程就开启一个独立事务,这使得使用框架技术代理管控事务变得十分复杂困难。

2、解决上述问题的关键技术之一是使用线程工具类将多线程事务合并成一个整体事务实现事务控制的方案,该方案在实际环境中得到了大量的采用。但该方案在控制事务时只能执行单一层级的事务管理,这意味着事务是一个不可分割的工作单位,事务中的操作要么全部完成,要么全部不完成。这限制了它在处理复杂业务逻辑时的灵活性,尤其是由于子线程只能参与整体事务,这可能导致事务的粒度过大,增加了事务的复杂性和风险。由于事务粒度太粗,在数据入库的中后段发生异常进行回滚会消耗大量时间,对硬件造成许多不必要的负担。

技术实现思路

1、本发明的目的是提供一种具备细粒度特性的多线程etl方法,在etl多线程入库阶段,设置事务协调器,通过事务协调器使子线程在执行过程中嵌套执行另一个事务,从而形成了事务的层次结构,更精细地控制事务的边界和粒度。

2、为实现上述目的,本发明提供了一种具备细粒度特性的多线程etl方法,步骤包括:

3、s1、对整体事务进行初始化与管理;

4、s2、创建子线程,并对子线程进行处理;

5、s3、子线程请求嵌套事务,并对嵌套事务进行处理;

6、s4、线程间进行同步与通信;

7、s5、设置异常处理与恢复机制;

8、s6、对整体事务进行提交。

9、优选的,步骤s1中包括:

10、s11、在主线程中,创建事务协调器,协调和管理多线程事务;

11、s12、事务协调器初始化整体事务,并获取数据库连接;

12、s13、在整体事务中共享数据库连接,并设置为手动提交模式;

13、s14、事务协调器对整体事务的状态信息进行管理,包括事务是否开始、是否完成、是否提交与是否回滚。

14、优选的,步骤s2中包括:

15、s21、创建子线程,主线程将事务协调器的引用传递给子线程;

16、s22、子线程接收到事务协调器引用后,获取当前整体事务的上下文信息,并准备执行自己的数据库操作,参与事务。

17、优选的,步骤s3中,子线程在事务协调器中请求开启嵌套事务,事务协调器接收到请求后,利用数据库的保存点机制开启嵌套事务,当子线程在嵌套事务中执行数据库操作时,根据操作结果提交或回滚嵌套事务。

18、优选的,步骤s4中,子线程之间、子线程与主线程之间进行同步和通信,事务协调器提供同步原语,包括锁和条件变量,协调线程间的操作顺序,子线程完成嵌套事务后,通过事务协调器向主线程发送完成信号,主线程收到全部子线程信号后,根据结果进行提交或回滚。

19、优选的,步骤s5中包括:

20、s51、对子线程执行嵌套事务时发生的异常进行捕获,采用细粒度事务方法对异常进行处理;

21、s52、当发生的异常可以处理,子线程尝试恢复事务的执行;

22、s53、当发生的异常无法处理,通知事务协调器,并提供异常信息,事务协调器根据收到的异常信息和业务逻辑,回滚出错的嵌套事务或回滚整体事务。

23、优选的,步骤s6中,全部子线程成功完成嵌套事务,且没有未处理的异常时,主线程通过事务协调器提交整体事务。

24、因此,本发明采用上述一种具备细粒度特性的多线程etl方法,具有以下有益效果:

25、(1)设置有事务协调器,通过使用事务协调器、异常捕获处理机制、嵌套事务等技术,有效地将多线程事务合并成一个整体事务,并在子线程中支持处理嵌套事务功能,实现在elt多线程数据入库过程中事务的细粒度控制,不仅提高了数据的一致性和完整性,还简化了事务管理的复杂性,提高了系统的性能和可靠性;

26、(2)在复杂的业务逻辑中,将不同子任务或子流程划分为独立的嵌套事务,实现更精细化的错误处理,当某个子任务出现问题时,仅回滚该子任务的事务,而不影响其他子任务的执行,同时,使用有限的数据库连接实现了细粒度的事务控制,相较于子线程单独管理事务,可以有效避免因子线程数太多造成的数据库连接耗尽问题,有着更好的资源管控能力;

27、(3)细粒度的事务功能使异常处理更简单、更集中,当子线程中的操作异常时,可以简单地回滚该子线程的事务并向上层抛出异常,上层逻辑决定如何处理异常,这避免了跨多个线程扩展异常处理,降低了代码复杂性和维护成本。

28、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

技术特征:

1.一种具备细粒度特性的多线程etl方法,其特征在于,步骤包括:

2.根据权利要求1所述的一种具备细粒度特性的多线程etl方法,其特征在于,步骤s1中包括:

3.根据权利要求2所述的一种具备细粒度特性的多线程etl方法,其特征在于,步骤s2中包括:

4.根据权利要求3所述的一种具备细粒度特性的多线程etl方法,其特征在于:步骤s3中,子线程在事务协调器中请求开启嵌套事务,事务协调器接收到请求后,利用数据库的保存点机制开启嵌套事务,当子线程在嵌套事务中执行数据库操作时,根据操作结果提交或回滚嵌套事务。

5.根据权利要求4所述的一种具备细粒度特性的多线程etl方法,其特征在于:步骤s4中,子线程之间、子线程与主线程之间进行同步和通信,事务协调器提供同步原语,包括锁和条件变量,协调线程间的操作顺序,子线程完成嵌套事务后,通过事务协调器向主线程发送完成信号,主线程收到全部子线程信号后,根据结果进行提交或回滚。

6.根据权利要求5所述的一种具备细粒度特性的多线程etl方法,其特征在于,步骤s5中包括:

7.根据权利要求6所述的一种具备细粒度特性的多线程etl方法,其特征在于:步骤s6中,全部子线程成功完成嵌套事务,且没有未处理的异常时,主线程通过事务协调器提交整体事务。

技术总结本发明公开了一种具备细粒度特性的多线程ETL方法,属于计算机技术领域,步骤包括:对整体事务进行初始化与管理;创建子线程,并对子线程进行处理;子线程请求嵌套事务,并对嵌套事务进行处理;线程间进行同步与通信;设置异常处理与恢复机制;对整体事务进行提交与回滚。本发明采用上述方法,在ETL多线程数据入库阶段,让子线程在执行过程中嵌套执行另一个事务,从而形成了事务的层次结构,更精细地控制事务的边界和粒度。技术研发人员:王洪峰,李建,王俊伟受保护的技术使用者:东北大学技术研发日:技术公布日:2024/7/29

本文地址:https://www.jishuxx.com/zhuanli/20240730/197541.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。