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

技术编号:14923728 阅读:53 留言:0更新日期:2017-03-30 15:55
本发明专利技术实施例涉及一种获取数据的方法。包括:接收数据获取指令。获取与数据获取指令指定的目标表对应的目标位置信息集合。根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。根据生成的所有的查询指令,读取目标表管理的数据文件所包含的数据记录。通过本发明专利技术实施例可以实现,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位,进一步获取数据块中存储的数据,使得在Oracle中抽取数据时,更稳定,效率更快。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及一种获取数据的方法和装置、计算机设备
技术介绍
为提高从Oracle数据库(一类数据库)中抽取数据的效率,设置数据分片区间成为提高大数据处理能力的重要手段。这就要求首先在ETL(Extract-Transform-Load)阶段选择合适的分区列、为分区列创建索引或创建合适的分区表。其中,ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。再对ETL阶段确定的分区列进行抽样,根据抽样点确定数据分片,一个数据分片作为一个映射(Map)的输入,利用映射(Map)/归约(Reduce)技术实现抽取数据。但在分区列出现数据偏斜时,映射(Map)任务需要处理绝大部分数据,这会产生“负载偏斜”;Oracle固有的“绑定变量窥探”机制还可能导致“索引失效”;另外,数据分布偏斜会进一步加剧“负载偏斜”和“索引失效”,使得在数据抽取过程中性能不够稳定。因此,如何更有效率、性能更稳定地从Oracle中抽取数据成为本领域的技术人员迫切需要解决的技术问题。
技术实现思路
本申请提供了一种获取数据的方法和装置、计算机设备,可以实现在性能更稳定,更有效率地从数据库中抽取数据。第一方面,本申请的实施例提供了一种获取数据的方法。本申请适用于Oracle数据库;该Oracle数据库可以包括至少一个表,该至少一个表包括目标表;该至少一个表中的任意一个表可以用于管理至少一个数据文件,数据文件可以包括至少一个数据块,数据块可以包括至少一行数据记录;上述至少一个表中的所有表各自对应一个位置信息集合;该位置信息集合包括至少一条位置信息,每一条位置信息对应一个数据块,该位置信息可以包括数据文件的文件编号、数据块的块编号和数据记录的行编号。本申请提供的方法包括:接收数据获取指令。获取与数据获取指令指定的目标表对应的目标位置信息集合。根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。根据生成的所有的查询指令,读取目标表管理的数据文件所包含的数据记录。通过本申请可以实现,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位,进一步获取数据块中存储的数据,使得本申请从Oracle中抽取数据,相比于现有技术更稳定、更效率。在一个可能的设计中,根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录,具体为:建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;执行每个映射任务,以读取数据记录;对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。第二方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。第三方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。第四方面,提供了一种获取数据的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能设计所提供的方法的单元。第五方面,提供了一种生成位置信息集合的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式所提供的方法的单元。第六方面,提供了一种生成位置信息集合的装置,用于执行上述第三方面或第三方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第三方面或第三方面的任意可能的实现方式所提供的方法的单元。第七方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器与所述存储器通过总线连接;所述存储器用于存储计算机执行指令,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,使得计算机设备执行上述获取数据的方法或者执行上述生成位置信息集合的方法。第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括:用于执行上述获取数据的方法的指令,和/或执行上述生成位置信息集合的方法的指令。第九方面,提供了一种数据库系统,该数据库系统包括第四方面、第五方面或者第六方面提供的装置和数据库。本申请中,通过数据文件的文件编号、数据块的块编本文档来自技高网...
获取数据的方法和装置、计算机设备

【技术保护点】
一种获取数据的方法,Oracle数据库包括至少一个表,所述至少一个表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述方法包括:接收数据获取指令;获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查询指令;根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。

【技术特征摘要】
1.一种获取数据的方法,Oracle数据库包括至少一个表,所述至少一个
表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括
至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至
少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至
少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包
括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述方法包
括:
接收数据获取指令;
获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;
根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查
询指令;
根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数
据记录。
2.根据权利要求1所述的方法,其特征在于,根据所有的所述查询指令,
读取所述目标表管理的数据文件所包含的数据记录,具体为:
建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;
执行每个映射任务,以读取数据记录;
对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执
行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
3.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信
息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数

\t据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
4.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信
息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
5.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标
表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数
据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集
合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个
所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
6.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标
表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数
据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集
合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个
所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
7.一种获取数据的装置,Oracle数据库包括至少一个表,所述至少一个
表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括
至少...

【专利技术属性】
技术研发人员:徐谊
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1