【技术实现步骤摘要】
本专利技术涉及数据库
,尤其涉及一种获取数据的方法和装置、计算机设备。
技术介绍
为提高从Oracle数据库(一类数据库)中抽取数据的效率,设置数据分片区间成为提高大数据处理能力的重要手段。这就要求首先在ETL(Extract-Transform-Load)阶段选择合适的分区列、为分区列创建索引或创建合适的分区表。其中,ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。再对ETL阶段确定的分区列进行抽样,根据抽样点确定数据分片,一个数据分片作为一个映射(Map)的输入,利用映射(Map)/归约(Reduce)技术实现抽取数据。但在分区列出现数据偏斜时,映射(Map)任务需要处理绝大部分数据,这会产生“负载偏斜”;Oracle固有的“绑定变量窥探”机制还可能导致“索引失效”;另外,数据分布偏斜会进一步加剧“负载偏斜”和“索引失效”,使得在数据抽取过程中性能不够稳定。因此,如何更有效率、性能更稳定地从Oracle中抽取数据成为本领域的技术人员迫切需要解决的技术问题。
技术实现思路
本申请提供了一种获取数据的方法和装置、计算机设备,可以实现在性能更稳定,更有效率地从数据库中抽取数据。第一方面,本申请的实施例提供了一种获取数据的方法。本申请适用于Oracle数据库;该Oracle数据库可以包括至少一个表,该至少一个 ...
【技术保护点】
一种获取数据的方法,Oracle数据库包括至少一个表,所述至少一个表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述方法包括:接收数据获取指令;获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查询指令;根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。
【技术特征摘要】
1.一种获取数据的方法,Oracle数据库包括至少一个表,所述至少一个
表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括
至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至
少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至
少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包
括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述方法包
括:
接收数据获取指令;
获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;
根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查
询指令;
根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数
据记录。
2.根据权利要求1所述的方法,其特征在于,根据所有的所述查询指令,
读取所述目标表管理的数据文件所包含的数据记录,具体为:
建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;
执行每个映射任务,以读取数据记录;
对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执
行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
3.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信
息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
\t据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
4.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信
息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
5.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标
表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数
据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集
合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个
所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
6.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标
表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数
据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集
合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个
所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块
所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第
一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数
据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
7.一种获取数据的装置,Oracle数据库包括至少一个表,所述至少一个
表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括
至少...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。