一种数据转换的方法及装置的制造方法

文档序号:8298918阅读:150来源:国知局
一种数据转换的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理技术领域,特别涉及一种数据转换的方法及装置。
【背景技术】
[0002] 数据库是按照数据结构来组织、存储和管理数据的仓库,数据库有很多种类型,从 最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方 面得到了广泛的应用。不同的数据库中存储数据的方式可能有所不同,如果将第一数据库 中的数据存储到第二数据库中,需要将从第一数据库中导出的数据转换成符合第二数据库 要求的存储方式。
[0003] 现有技术中,一个数据转换的过程通过一个线程来执行,每个步骤的执行结果直 接传递给下一个步骤,如果上一个步骤没有执行完成,下一个步骤就会一直处于等待的状 态,直到得到上一个步骤的执行结果数据才开始运行。当待转换的数据较多时,数据转换的 效率较低。

【发明内容】

[0004] 有鉴于此,本发明提供了一种数据转换的方法及装置,能够提高数据转换的效率。
[0005] 一方面,本发明提供了一种数据转换的方法,包括:
[0006] S1 :将数据转换的过程划分为两个以上的步骤;
[0007] S2 :在相邻的步骤中间增加阻塞队列,为每一个步骤分配一个以上的线程;
[0008] S3 :前一个步骤的每个线程将执行结果数据写入阻塞队列,下一个步骤的每个线 程从所述阻塞队列中读取前一个步骤的所述执行结果数据。
[0009] 进一步地,还包括:
[0010] 将所述阻塞队列中所述执行结果数据中的当前未分配的一条记录,分配给任一负 载的记录最少的下一个步骤的线程。
[0011] 进一步地,所述S2,包括:
[0012] 根据用户指令为任意步骤分配预设个数个线程。
[0013] 进一步地,还包括:
[0014]通过Java数据库连接JDBC连接存储待转换数据的数据库;
[0015] 和/或,通过开放数据库互连ODBC连接存储待转换数据的数据库。
[0016] 进一步地,所述S1包括:将数据转换的过程划分为获取、转换和输出三个步骤;
[0017] 步骤S3,包括:
[0018] S31 :在获取步骤的一个以上的获取线程中,每个获取线程获取待转换数据中的记 录,并将获取的记录逐条写入到第一阻塞队列中;
[0019] S32 :在转换步骤的一个以上的转换线程中,每个转换线程逐条读取所述第一阻塞 队列中的获取的记录,转换读取的记录,将转换后的记录逐条写入到第二阻塞队列中;
[0020] S33:在输出步骤的一个以上的输出线程中,每个输出线程逐条读取所述第二阻塞 队列中的转换后的记录,输出所述转换后的记录。
[0021] 进一步地,所述S31中,每个获取线程获取待转换数据中的一条记录,包括:
[0022] 当存储所述待转换数据的数据库支持分批读取时,分批向所述数据库请求所述待 转换数据,每批请求返回预设记录数条所述待转换数据中的记录,将数据库返回的记录存 储到第一预设结果集中,从所述第一预设的结果集中逐条读取记录;
[0023] 当存储所述待转换数据的数据库不支持分批读取时,向存储所述待转换数据的数 据库请求所述待转换数据,将所述待转换数据存储到第二预设结果集中,从所述第二预设 结果集中逐条读取记录。
[0024] 另一方面,本发明提供了一种数据转换的装置,包括:
[0025] 划分单元,用于将数据转换的过程划分为两个以上的步骤;
[0026] 第一分配单元,用于在相邻的步骤中间增加阻塞队列,为每一个步骤分配一个以 上的线程;
[0027] 执行单元,用于使前一个步骤的每个线程将执行结果数据写入阻塞队列,并使下 一个步骤的每个线程从所述阻塞队列中读取前一个步骤的所述执行结果数据。
[0028] 进一步地,还包括:第二分配单元,用于将所述阻塞队列中所述执行结果数据中的 当前未分配的一条记录,分配给任一负载的记录最少的下一个步骤的线程。
[0029] 进一步地,所述划分单元,用于将数据转换的过程划分为获取、转换和输出三个步 骤;
[0030] 所述执行单元包括:
[0031] 获取子单元,用于通过获取步骤的一个以上的获取线程中的每个获取线程,获取 待转换数据中的记录,并将获取的记录逐条写入到第一阻塞队列中;
[0032] 转换子单元,用于通过转换步骤的一个以上的转换线程中的每个转换线程,逐条 读取所述第一阻塞队列中的获取的记录,转换读取的记录,将转换后的记录逐条写入到第 二阻塞队列中;
[0033] 输出子单元,用于通过输出步骤的一个以上的输出线程中的每个输出线程,逐条 读取所述第二阻塞队列中的转换后的记录,输出所述转换后的记录。
[0034] 进一步地,所述获取子单元,用于当存储所述待转换数据的数据库支持分批读取 时,分批向所述数据库请求所述待转换数据,每批请求返回预设记录数条所述待转换数据 中的记录,将数据库返回的记录存储到第一预设结果集中,从所述第一预设的结果集中逐 条读取记录;当存储所述待转换数据的数据库不支持分批读取时,向存储所述待转换数据 的数据库请求所述待转换数据,将所述待转换数据存储到第二预设结果集中,从所述第二 预设结果集中逐条读取记录。
[0035] 本发明提供的一种数据转换的方法及装置,将数据转换的过程划分为两个以上的 步骤,在相邻的步骤之间增加了阻塞队列,阻塞队列之前的步骤将执行结果数据写入到阻 塞队列中,阻塞队列之后的步骤从阻塞队列中获取前一个步骤的执行结果数据,实现每个 步骤都通过多个线程并行处理,提高了数据转换的效率。
【附图说明】
[0036] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
[0037] 图1是本发明一实施例提供的一种数据转换的方法流程图;
[0038] 图2是本发明一实施例提供的一种数据转换的装置的示意图;
[0039] 图3是本发明一实施例提供的另一种数据转换的装置的示意图。
【具体实施方式】
[0040] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 如图1所示,本发明实施例提供了一种数据转换的方法,该方法可以包括以下步 骤:
[0042] S1 :将数据转换的过程划分为两个以上的步骤;
[0043] S2 :在每两个步骤中间增加阻塞队列,为每一个步骤分配一个以上的线程;
[0044]S3:前一个步骤的每个线程将执行结果数据写入阻塞队列,下一个步骤的每个线 程从所述阻塞队列中读取前一个步骤的所述执行结果数据。
[0045] 本发明实施例提供的一种数据转换的方法,将数据转换的过程划分为两个以上的 步骤,在相邻的步骤之间增加了阻塞队列,阻塞队列之前的步骤将执行结果数据写入到阻 塞队列中,阻塞队列之后的步骤从阻塞队列中获取前一个步骤的执行结果数据,实现每个 步骤都通过多个线程并行处理,提高了数据转换的效率。
[0046] 为了合理分配阻塞队列中的记录,使得每个线程所负载的记录的数量相对平均, 提高处理效率,该方法还包括:
[0047] 将所述阻塞队列中所述执行结果数据中的当前未分配的一条记录,分配给任一负 载的记录最少的下一个步骤的线程。
[0048] 每个步骤都可以单独的增加和扩展,用户可以根据需求灵活地设置每个步骤中并
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1