获取数据的方法和装置、计算机设备的制造方法

文档序号:9911269阅读:345来源:国知局
获取数据的方法和装置、计算机设备的制造方法
【技术领域】
[0001]本发明涉及数据库技术领域,尤其涉及一种获取数据的方法和装置、计算机设备。
【背景技术】
[0002]为提高从Oracle数据库(一类数据库)中抽取数据的效率,设置数据分片区间成为提高大数据处理能力的重要手段。
[0003]这就要求首先在ETL(Extract-Transform-Load)阶段选择合适的分区列、为分区列创建索引或创建合适的分区表。其中,ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
[0004]再对ETL阶段确定的分区列进行抽样,根据抽样点确定数据分片,一个数据分片作为一个映射(Map)的输入,利用映射(Map)/归约(Reduce)技术实现抽取数据。
[0005]但在分区列出现数据偏斜时,映射(Map)任务需要处理绝大部分数据,这会产生“负载偏斜”;Oracle固有的“绑定变量窥探”机制还可能导致“索引失效”;另外,数据分布偏斜会进一步加剧“负载偏斜”和“索引失效”,使得在数据抽取过程中性能不够稳定。
[0006]因此,如何更有效率、性能更稳定地从Oracle中抽取数据成为本领域的技术人员迫切需要解决的技术问题。

【发明内容】

[0007]本申请提供了一种获取数据的方法和装置、计算机设备,可以实现在性能更稳定,更有效率地从数据库中抽取数据。
[0008]第一方面,本申请的实施例提供了一种获取数据的方法。本申请适用于Oracle数据库;该Oracle数据库可以包括至少一个表,该至少一个表包括目标表;该至少一个表中的任意一个表可以用于管理至少一个数据文件,数据文件可以包括至少一个数据块,数据块可以包括至少一行数据记录;上述至少一个表中的所有表各自对应一个位置信息集合;该位置信息集合包括至少一条位置信息,每一条位置信息对应一个数据块,该位置信息可以包括数据文件的文件编号、数据块的块编号和数据记录的行编号。
[0009]本申请提供的方法包括:接收数据获取指令。获取与数据获取指令指定的目标表对应的目标位置信息集合。根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。根据生成的所有的查询指令,读取目标表管理的数据文件所包含的数据记录。通过本申请可以实现,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位,进一步获取数据块中存储的数据,使得本申请从Orac I e中抽取数据,相比于现有技术更稳定、更效率。
[0010]在一个可能的设计中,根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录,具体为:建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;执行每个映射任务,以读取数据记录;对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
[0011]在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
[0012]在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
[0013]第二方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
[0014]第三方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
[0015]第四方面,提供了一种获取数据的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能设计所提供的方法的单元。
[0016]第五方面,提供了一种生成位置信息集合的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式所提供的方法的单元。
[0017]第六方面,提供了一种生成位置信息集合的装置,用于执行上述第三方面或第三方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第三方面或第三方面的任意可能的实现方式所提供的方法的单元。
[0018]第七方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器与所述存储器通过总线连接;
[0019]所述存储器用于存储计算机执行指令,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,使得计算机设备执行上述获取数据的方法或者执行上述生成位置信息集合的方法。
[0020]第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括:用于执行上述获取数据的方法的指令,和/或执行上述生成位置信息集合的方法的指令。
[0021]第九方面,提供了一种数据库系统,该数据库系统包括第四方面、第五方面或者第六方面提供的装置和数据库。
[0022]本申请中,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位;通过对一个表管理的每个数据文件中的每个数据块均定位,从每个数据文件中的所有数据块分别获取数据块存储的所有数据记录,实现对一个表管理的所有数据记录的抽取,抽取效率相比于现有技术更效率。
【附图说明】
[0023]图1为Oracle数据库中表结构示意图;
[0024]图2为位置信息结构示意图;
[0025]图3为本发明实施例提供的一种获取数据的方法的流程图;
[0026]图4为为本发明实施例提供的一种生成位置信息集合的方法的流程图;
[0027]图5为本发明实施例提供的又一种生成位置信息集合的方法的流程图;
[0028]图6为本发明实施例提供的一种获取数据的装置的结构示意图;
[0029]图7为本发明实施例提供的一种生成位置信息集合的装置的结构示意图;
[0030]图8为本发明实施例提供的另一种生成位置信息集合的装置的结构示意图;
[0031 ]图9为本发明实施例提供的一种大数据加载系统的硬件结构示意图。
【具体实施方式】
[0032]为使本发明实施例的目
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1