CN105677903A - 获取数据的方法和装置、计算机设备 - Google Patents
获取数据的方法和装置、计算机设备 Download PDFInfo
- Publication number
- CN105677903A CN105677903A CN201610081914.4A CN201610081914A CN105677903A CN 105677903 A CN105677903 A CN 105677903A CN 201610081914 A CN201610081914 A CN 201610081914A CN 105677903 A CN105677903 A CN 105677903A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- block
- positional information
- data file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及一种获取数据的方法。包括:接收数据获取指令。获取与数据获取指令指定的目标表对应的目标位置信息集合。根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。根据生成的所有的查询指令,读取目标表管理的数据文件所包含的数据记录。通过本发明实施例可以实现,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位,进一步获取数据块中存储的数据,使得在Oracle中抽取数据时,更稳定,效率更快。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种获取数据的方法和装置、计算机设备。
背景技术
为提高从Oracle数据库(一类数据库)中抽取数据的效率,设置数据分片区间成为提高大数据处理能力的重要手段。
这就要求首先在ETL(Extract-Transform-Load)阶段选择合适的分区列、为分区列创建索引或创建合适的分区表。其中,ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
再对ETL阶段确定的分区列进行抽样,根据抽样点确定数据分片,一个数据分片作为一个映射(Map)的输入,利用映射(Map)/归约(Reduce)技术实现抽取数据。
但在分区列出现数据偏斜时,映射(Map)任务需要处理绝大部分数据,这会产生“负载偏斜”;Oracle固有的“绑定变量窥探”机制还可能导致“索引失效”;另外,数据分布偏斜会进一步加剧“负载偏斜”和“索引失效”,使得在数据抽取过程中性能不够稳定。
因此,如何更有效率、性能更稳定地从Oracle中抽取数据成为本领域的技术人员迫切需要解决的技术问题。
发明内容
本申请提供了一种获取数据的方法和装置、计算机设备,可以实现在性能更稳定,更有效率地从数据库中抽取数据。
第一方面,本申请的实施例提供了一种获取数据的方法。本申请适用于Oracle数据库;该Oracle数据库可以包括至少一个表,该至少一个表包括目标表;该至少一个表中的任意一个表可以用于管理至少一个数据文件,数据文件可以包括至少一个数据块,数据块可以包括至少一行数据记录;上述至少一个表中的所有表各自对应一个位置信息集合;该位置信息集合包括至少一条位置信息,每一条位置信息对应一个数据块,该位置信息可以包括数据文件的文件编号、数据块的块编号和数据记录的行编号。
本申请提供的方法包括:接收数据获取指令。获取与数据获取指令指定的目标表对应的目标位置信息集合。根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。根据生成的所有的查询指令,读取目标表管理的数据文件所包含的数据记录。通过本申请可以实现,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位,进一步获取数据块中存储的数据,使得本申请从Oracle中抽取数据,相比于现有技术更稳定、更效率。
在一个可能的设计中,根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录,具体为:建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;执行每个映射任务,以读取数据记录;对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
在一个可能的设计中,获取所述目标位置信息集合中一条位置信息的实现方法包括:针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
第二方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
第三方面,本申请的实施例提供了一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
第四方面,提供了一种获取数据的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能设计所提供的方法的单元。
第五方面,提供了一种生成位置信息集合的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式所提供的方法的单元。
第六方面,提供了一种生成位置信息集合的装置,用于执行上述第三方面或第三方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第三方面或第三方面的任意可能的实现方式所提供的方法的单元。
第七方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器与所述存储器通过总线连接;
所述存储器用于存储计算机执行指令,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,使得计算机设备执行上述获取数据的方法或者执行上述生成位置信息集合的方法。
第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括:用于执行上述获取数据的方法的指令,和/或执行上述生成位置信息集合的方法的指令。
第九方面,提供了一种数据库系统,该数据库系统包括第四方面、第五方面或者第六方面提供的装置和数据库。
本申请中,通过数据文件的文件编号、数据块的块编号和数据记录的行编号,快速的定位数据块,且每个数据块都有一个定位;通过对一个表管理的每个数据文件中的每个数据块均定位,从每个数据文件中的所有数据块分别获取数据块存储的所有数据记录,实现对一个表管理的所有数据记录的抽取,抽取效率相比于现有技术更效率。
附图说明
图1为Oracle数据库中表结构示意图;
图2为位置信息结构示意图;
图3为本发明实施例提供的一种获取数据的方法的流程图;
图4为为本发明实施例提供的一种生成位置信息集合的方法的流程图;
图5为本发明实施例提供的又一种生成位置信息集合的方法的流程图;
图6为本发明实施例提供的一种获取数据的装置的结构示意图;
图7为本发明实施例提供的一种生成位置信息集合的装置的结构示意图;
图8为本发明实施例提供的另一种生成位置信息集合的装置的结构示意图;
图9为本发明实施例提供的一种大数据加载系统的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
如图1所示,在Oracle数据库(一种关系数据库管理系统)中,表(Table)是管理数据的逻辑单位;每个表都对应在存储介质(例如磁盘整列)中有一个或多个数据文件。在存储介质中,数据文件的基本组成单位是数据块(block),即数据文件包括一个或多个数据块;数据块包括至少一个数据记录,一个数据记录为数据块中一行的数据;数据记录是指存储介质上的一段连续字节。本实施例读取数据记录是以数据块为单位进行读取的,因此,在对一个数据块进行数据记录读取时,会完整读取该数据块包含的所有数据记录。
一种可选应用场景,用于存储数据文件的存储介质具体为冗余磁盘阵列(RedundantArraysofIndependentDisks,RAID)。在此应用场景下,一个表(Table)管理的所有数据文件可能是均匀地分散存储在RAID上的多块盘片中。可选地,需读取该表管理的所有数据记录时,可以首先从RAID中查找到存储有该表管理的数据记录所在的数据块(block),使用映射(Map)/归约(Reduce)技术并行从查找到的每个数据块进行数据记录的读取。
如图2所示,在本申请提供的Oracle数据库中,每条数据记录都有唯一的位置信息(ROWID),通过位置信息可以确定每条数据记录存储的位置。具体对于一条数据记录而言,该条数据记录的位置信息包括:该数据记录的行编号,该数据记录所在数据块的块编号,和数据文件(包含该数据记录所在的数据块)的文件编号。可选地,ROWID可以用字符串表示。
以图2中虚线框选中的“第1行”为例说明下位置信息(ROWID)的构成,该“第1行”记录的数据记录为“aaa…”;该数据记录的位置信息(ROWID)具体在图3中体现为:“第1行”(该数据记录的行编号),“第X个数据块”(数据块的块编号),以及“第M个数据文件”(数据文件的文件编号)。
本领域人员应知,在Oracle数据库中,通过位置信息(ROWID)检索数据记录的方式,比现有技术通过索引方式来检索数据记录的方式需要更少检索步骤,因此检索更效率。
在Oracle数据库中,表管理的数据记录属于哪个应用或者哪个业务,均与位置信息(ROWID)无关,即使两个数据记录一样,两条数据记录各自具有唯一的ROWID。本实施例中,使用符合结构化查询语言(StructuredQueryLanguage,简称SQL)的查询指令(即SQL语句),进行数据记录的查询,具体是根据查询指令中的查询条件,确定该查询条件指定的ROWID或者指定的查询区间,该查询区间是指由两个ROWID确定的区间(通常是左开右闭区间或者是左闭右开区间);根据确定的ROWID或者根据确定的查询区间,从存储介质读取数据记录。
方法实施例
基于Oracle数据库,本实施例使用位置信息(ROWID)从存储介质抽取数据,并提供了一种获取数据的方法,该方法的实现流程参见图3。
本实施例中,Oracle数据库包括至少一个表。
在该至少一个表中,每一个表用于管理至少一个数据文件;该数据文件包括至少一个数据块,每个数据块包括至少一行数据记录。
该至少一个表中的所有表,各自对应一个位置信息集合。该位置信息集合包括至少一条位置信息,一条位置信息对应一个数据块;其中,位置信息可以包括数据文件的文件编号、数据块的块编号和数据记录的行编号。一个位置信息可以定位一个数据文件包括的一个数据块的一行数据记录,当然也可以定位一个数据文件中的一个数据块。本实施例中,位置信息,用于在Oracle数据库中生成查询指令,例如SQL的SELECT指令;可选地,根据一个位置信息生成一条查询指令。
该至少一个表中包括目标表,该目标表是指数据获取指令指定的表。本发明实施例期望获取某个表的数据记录时,便会针对该个表生成数据获取指令,该个表也就成为目标表。
如图3所示的流程步骤如下:
S310,接收数据获取指令。其中,该数据获取指令用于指示读取目标表对应的数据记录。
可选地,在大数据加载系统中,可以通过YARN(YetAnotherResourceNegotiator,另一种资源协调者)接收数据获取指令。
S320,获取与数据获取指令指定的目标表对应的目标位置信息集合。
其中,根据前述,目标表可以用于管理至少一个目标数据文件,每个目标数据文件对应有至少一个目标数据块,所述至少一个目标数据块中每个目标数据块都对应有多条位置信息。从一个目标数据块对应的多条位置信息中确定一条位置信息为目标位置信息;以此类推,针对每个目标数据块均会确定一条目标位置信息,目标位置信息集合是指全部目标数据块各自对应的目标位置信息所构成的集合,换句话说,一个目标位置信息集合与一个目标表对应。
获取位置信息的方式可以有多种,本实施例不一一详述,下面仅以一条位置信息为例提供两种方式,如下。
方式一,针对表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号。将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
因此,采用方式一针对目标表管理的一个数据文件中的一个数据块,获取到与该个数据块对应的一条目标位置信息。
方式二,针对所述表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
本实施例中,可以直接从元数据文件,具体可以是该元数据文件包含的数据字典,获取到构成每个数据块中第一行数据记录的位置信息所需的所有信息。
采用方式二可以针对目标表管理的一个数据文件中的一个数据块,获取到与该个数据块对应的一条目标位置信息。
应该知道的是,可以针对表中每个数据块,通过上述任一种方式(例如方式一或者方式二)分别获取一条位置信息;将该表对应的每个数据块分别获取的一条位置信息构成一个集合,该集合记为该表对应的位置信息集合。因此,根据目标表获得的位置信息集合即为目标位置信息集合。
通过上述任一种方式(例如方式一或者方式二)获得的位置信息集合在逻辑上是连续的,具体地,所谓的在逻辑上连续是指:位置信息集合中的每个位置信息分别对应一个数据块;该位置信息集合对应的所有数据块中存储的数据记录,包括了该位置信息集合对应的表所管理的所有数据记录。
S330,根据目标位置信息集合包含的每条位置信息,分别生成一条查询指令。
在Oracle数据库中,可以指定对一个区间内的数据记录进行查询,该区间可以是左开右闭区间或者是左闭右开区间。该区间的两个端点根据目标位置信息集合确定,具体地,对于目标位置信息集合中的相邻两个位置信息,将相邻的前一个位置信息作为该区间的一个端点,将相邻的后一个位置信息作为该区间的另一个端点,以此类推,基于目标位置信息集合中每个相邻的两个位置信息,均会生成一个该区间。
可选地,根据目标位置信息集合中的第一个相邻位置关系生成一个闭区间;根据目标位置信息集合中的非第一个相邻位置关系分别生成一个左开右闭区间。
可选地,根据目标位置信息集合中的最后一个相邻位置关系生成一个闭区间;根据目标位置信息集合中的非最后一个相邻位置关系分别生成一个左闭右开区间。
这样,所有区间构成一个连续的更大的闭区间,从该更大的闭区间对应的每个数据块获取到的数据记录,为该目标表所管理的所有数据记录。
本实施例中,根据基于目标位置信息集合确定的每个区间,分别生成一条查询指令,使得执行所有查询指令可以从存储介质获取到该目标表管理的全部数据记录。
S340,根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。
所述查询指令为SQL的查询语句,根据查询指令指定的区间确定数据块,具体地,根据该区间端点对应的位置信息确定数据块。
可选地,根据该区间端点确定数据块的具体实现可以是:如果该区间为闭区间,则根据该闭区间的两个端点(对应两个位置信息),确定该两个端点对应指定的两个数据块,将这两个数据块确定为待获取数据记录的数据块;如果该区间为左闭右开区间,则根据该左闭右开区间中的左边一个端点(对应一个位置信息),确定该个端点指定的一个数据块,将该个数据块确定为待获取数据记录的数据块;如果该区间为左开右闭区间,则根据该左开右闭区间中的右边一个端点(对应一个位置信息),确定该个端点指定的一个数据块,将该个数据块确定为待获取数据记录的数据块。
从确定的每个数据块,读取每个数据块包含的所有数据记录,读取到的所有数据记录为所述目标表管理的数据记录。
可选地,使用映射(Map)/归约(Reduce)技术执行步骤S340,具体包括:建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;执行每个映射任务,以读取数据记录;对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
具体地,首先确定映射(Map)/归约(Reduce)模型,包括:确定至少一个映射任务,以及确定至少一个归约任务,以及确定执行所述至少一个映射任务所得的结果如何分配给各个归约任务继续执行。
一个映射任务处理S330生成的至少一个查询指令,根据每个查询指令指定的区间对应地确定数据块,即该至少一个查询指令指定的所有数据块作为该个映射任务处理的一个数据分片;执行该个映射任务分别从根据该至少一个查询指令确定的每个数据块获取数据记录;该个映射任务获取到的数据记录被分配给各个归约任务,一个归约任务分配到部分该个映射任务获取到的数据记录;以此类推,每个映射任务获取到的数据记录均被同原理地分配给各个归约任务。
单个归约任务,用于对从各个映射任务分别分配到的部分数据记录进行处理(例如合并)。以此类推,所有归约任务均对分配到的部分数据记录进行处理,处理输出所述目标表管理的所有数据记录。
本实施例利用映射(Map)/归约(Reduce)获取从数据块获取目标表管理的所有数据记录,需要访问的所有数据块通常是平均分配给每个映射(Map)的,保证了负载均匀,提高了获取数据记录的效率,并且消除数据偏斜和索引失效。
另外,使用映射(Map)/归约(Reduce)获取目标表管理的所有数据记录,水平扩展性好;例如,目标表管理的数据记录越多,那么用于存储数据记录的数据块越多,相应地可以增建更多的映射任务来并行访问数据块,或者为每个映射任务分配更多需要访问的数据块。
一个具体实施举例。
410为抽取数据记录的预先步骤。
步骤410,从Oracle数据库的元数据文件(具体可以是该元数据文件包含的数据字典)获取目标表管理的每个数据块中的第一个数据记录的位置信息,得到目标位置信息集合。
例如,目标表管理的数据文件包含:数据块1到数据块N。从元数据文件获取数据块1的第一行数据记录的ROWID1,从元数据文件获取数据块2的第一行数据记录的ROWID2,依次类推,从数据块1到数据块N中分别获取每个数据块的第一行数据记录的位置信息(ROWID),得到位置信息集合{ROWID1,ROWID2…,ROWIDN};其中,ROWID1对应数据块1,ROWID2对应数据块2,ROWIDN对应数据块N。
可选地,大数据加载系统能够是从元数据文件探测Oracle数据库中被加载对象(数据记录)的ROWID,例如大数据加载系统通过Loader(加载器)进行ROWID的探测。
具体探测实现是,Loader查询数据库的元数据文件,查询到每个数据块(数据块1到数据块N)的第一行数据记录的ROWID,将查询到的所有ROWID组成的集合作为目标位置信息集合。用这种方式得到的目标位置信息集合覆盖了目标表对应的所有数据块,可以保证是遍历目标位置信息集合对应的所有数据块能够获取到目标表管理的数据记录。
后续,每次需要利用大数据加载系统加载Oracle数据库中目标表管理的所有数据记录,均可执行步骤420和步骤430实现。
步骤420,根据目标位置信息集合中的每两个相邻位置信息,分别确定一个区间,一个区间作为一个查询指令的查询条件。
例如,根据目标位置信息集合{ROWID1,ROWID2,……ROWIDN}确定区间的具体实现是:根据ROWID1和ROWID2确定区间[ROWID1,ROWID2],将区间[ROWID1,ROWID2]作为SELECT指令(查询指令)的参数,得到一个SELECT指令为:SELECT*FROM[ROWID1,ROWID2);以此类推,会确定N-1个区间,并对应生成N-1个查询指令,并且所有查询指令指定的区间覆盖了记录有目标表管理的数据记录的所有数据块,且确定的数据块没有重复。
步骤430,将所有查询指令均匀地分配给每个映射节点(用于执行映射任务的处理器节点)。每个映射节点执行分配到的查询指令,从查询指令指定的数据块读取数据记录;后续,归约节点(用于执行归约任务的处理器节点)再对每个映射节点从获取到的数据记录进行处理(例如合并),得到目标表管理的所有数据记录
图4为本发明实施例提供的一种生成位置信息集合的方法的流程图。如图4所示,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
本发明实施例中的生成位置信息集合的方法与图3所示的实施例中的相关描述类似,可相互参照理解,不再赘述。
图5为本发明实施例提供的另一种生成位置信息集合的方法的流程图。如图5所示,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
本发明实施例中的生成位置信息集合的方法与图3所示的实施例中的相关描述类似,可相互参照理解,不再赘述。
图6为本发明实施例提供的一种获取数据的装置的结构示意图。如图6所示,Oracle数据库包括至少一个表,所述至少一个表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述至少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述装置包括:
接收单元701,用于接收数据获取指令;
处理单元702,用于获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;
所述处理单元702,还用于根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查询指令;
读取单元703,用于根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。
可选地,所述读取单元703具体用于:
建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;
执行每个映射任务,以读取数据记录;
对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
可选地,所述处理单元702具体用于:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
可选地,所述处理单元702具体用于:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
本发明实施例中的生成位置信息集合的方法与图3所示的方法实施例对应,可相互参照理解,不再赘述。
图7为本发明实施例提供的一种生成位置信息集合的装置的结构示意图。如图7所示,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述装置包括:
获取单元801,用于针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
处理单元802,用于将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
本发明实施例中的生成位置信息集合的方法与图4所示的方法实施例对应,可相互参照理解,不再赘述。
图8为本发明实施例提供的另一种生成位置信息集合的装置的结构示意图。如图8所示,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述装置包括:
获取单元901,用于针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
处理单元902,还用于将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
本发明实施例中的生成位置信息集合的方法与图3所示的方法实施例对应,可相互参照理解,不再赘述。
图9为本发明实施例提供的一种大数据加载系统的硬件结构示意图。图9示出了本发明实施例能够被应用到能够运行虚拟机的计算机/计算机群1000中,例如服务器终端设备,客户终端设备,个人计算机等等。该类计算机/计算机群1000中一般可以包括一个或多个处理器1001,一个或多个存储器1002,以及一个或多个输入输出接口1003。其中,各个模块通过系统总线1004连接。存储器1002用来存储程序,处理器1001通过读取存储器中存放的程序,执行该程序。输入输出接口1003用于数据的输入以及输出。
需要说明的是,这里的处理器1001可以是一个处理器,也可以是多个处理元件的统称。例如,该处理器可以是中央处理器(CentralProcessingUnit,CPU),也可以是特定集成电路(ApplicationSpecificIntegratedCircuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路,例如:一个或多个微处理器(digitalsingnalprocessor,DSP),或,一个或者多个现场可编程门阵列(FieldProgrammableGateArray,FPGA)。
存储器1002可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码或接入网管理设备运行所需要参数、数据等。且存储器1003可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volatilememory),例如磁盘存储器,闪存(Flash)等。
总线1004可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总线、外部设备互连(PeripheralComponent,PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,EISA)总线等。该总线1004可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器与所述存储器通过总线连接;所述存储器用于存储计算机执行指令,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,使得计算机设备执行上述方法实施例中的方法步骤。
本实施例所述的处理器、存储器和总线。对应地与上述的处理器1001、存储器102和总线1004功能类似,同原理地工作,不再赘述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种获取数据的方法,Oracle数据库包括至少一个表,所述至少一个表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述方法包括:
接收数据获取指令;
获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;
根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查询指令;
根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。
2.根据权利要求1所述的方法,其特征在于,根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录,具体为:
建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;
执行每个映射任务,以读取数据记录;
对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
3.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
4.根据权利要求1或2所述的方法,其特征在于,获取所述目标位置信息集合中一条位置信息的实现方法包括:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
5.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
6.一种生成位置信息集合的方法,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述方法包括:
针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
7.一种获取数据的装置,Oracle数据库包括至少一个表,所述至少一个表包括目标表;一个所述表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述至少一个表中的所有表各自对应一个位置信息集合;所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块,所述位置信息包括数据文件的文件编号、数据块的块编号和数据记录的行编号;所述装置包括:
接收单元,用于接收数据获取指令;
处理单元,用于获取与所述数据获取指令指定的所述目标表对应的目标位置信息集合;
所述处理单元,还用于根据所述目标位置信息集合包含的每条所述位置信息,分别生成一条查询指令;
读取单元,用于根据所有的所述查询指令,读取所述目标表管理的数据文件所包含的数据记录。
8.根据权利要求7所述的装置,其特征在于,所述读取单元具体用于:
建立至少一个映射任务,一个映射任务处理至少一条所述查询指令;
执行每个映射任务,以读取数据记录;
对执行每个映射任务读取到的所有数据记录执行至少一个归约任务,执行每个归约任务得到所述目标表管理的数据文件所包含的数据记录。
9.根据权利要求7或8所述的装置,其特征在于,所述处理单元具体用于:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的一条位置信息。
10.根据权利要求7或8所述的装置,其特征在于,所述处理单元具体用于:
针对所述目标表管理的一个数据文件中的一个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的一条位置信息。
11.一种生成位置信息集合的装置,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述装置包括:
获取单元,用于针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中任一行数据记录的行编号;
处理单元,用于将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中任一行数据记录的行编号,作为该个数据块对应的位置信息。
12.一种生成位置信息集合的装置,Oracle数据库包括目标表;所述目标表用于管理至少一个数据文件,所述数据文件包括至少一个数据块,所述数据块包括至少一行数据记录;其特征在于,所述目标表对应一个位置信息集合,所述位置信息集合包括至少一条位置信息,一条所述位置信息对应一个所述数据块;所述装置包括:
获取单元,用于针对所述目标表管理的每个数据文件中的每个数据块,获取该个数据块所处数据文件的文件编号,获取该个数据块的块编号,获取该个数据块中第一行数据记录的行编号;
处理单元,还用于将该个数据块所处数据文件的文件编号、该个数据块的块编号、该个数据块中第一行数据记录的行编号,作为该个数据块对应的位置信息。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述处理器与所述存储器通过总线连接;
所述存储器用于存储计算机执行指令,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,使得计算机设备执行权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610081914.4A CN105677903A (zh) | 2016-02-05 | 2016-02-05 | 获取数据的方法和装置、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610081914.4A CN105677903A (zh) | 2016-02-05 | 2016-02-05 | 获取数据的方法和装置、计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677903A true CN105677903A (zh) | 2016-06-15 |
Family
ID=56304253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610081914.4A Pending CN105677903A (zh) | 2016-02-05 | 2016-02-05 | 获取数据的方法和装置、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677903A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN108427675A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 构建索引的方法及设备 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及系统 |
CN109492041A (zh) * | 2018-11-07 | 2019-03-19 | 杭州数梦工场科技有限公司 | Oracle数据抽取方法、系统、设备及计算机介质 |
CN110018988A (zh) * | 2017-11-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 快照删除方法、处理方法、装置及系统 |
CN111400427A (zh) * | 2019-01-02 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 数据存储、查询方法、装置和计算设备 |
CN113127475A (zh) * | 2019-12-30 | 2021-07-16 | 中国移动通信集团四川有限公司 | 一种数据处理方法、系统及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329676A (zh) * | 2007-06-20 | 2008-12-24 | 华为技术有限公司 | 一种数据并行抽取方法、装置和数据库系统 |
WO2010033877A1 (en) * | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Storage-side storage request management |
CN103279582A (zh) * | 2013-06-24 | 2013-09-04 | 浙江宇天科技股份有限公司 | 一种基于Oracle分区的数据存储方法及装置 |
CN104750744A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团河南有限公司 | 一种基于Oracle数据库的压缩数据同步方法及装置 |
-
2016
- 2016-02-05 CN CN201610081914.4A patent/CN105677903A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329676A (zh) * | 2007-06-20 | 2008-12-24 | 华为技术有限公司 | 一种数据并行抽取方法、装置和数据库系统 |
WO2010033877A1 (en) * | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Storage-side storage request management |
CN103279582A (zh) * | 2013-06-24 | 2013-09-04 | 浙江宇天科技股份有限公司 | 一种基于Oracle分区的数据存储方法及装置 |
CN104750744A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团河南有限公司 | 一种基于Oracle数据库的压缩数据同步方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427675A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 构建索引的方法及设备 |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN110018988A (zh) * | 2017-11-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 快照删除方法、处理方法、装置及系统 |
CN110018988B (zh) * | 2017-11-08 | 2023-04-04 | 阿里巴巴集团控股有限公司 | 快照删除方法、处理方法、装置及系统 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及系统 |
CN109492041A (zh) * | 2018-11-07 | 2019-03-19 | 杭州数梦工场科技有限公司 | Oracle数据抽取方法、系统、设备及计算机介质 |
CN109492041B (zh) * | 2018-11-07 | 2020-12-15 | 杭州数梦工场科技有限公司 | Oracle数据抽取方法、系统、设备及计算机介质 |
CN111400427A (zh) * | 2019-01-02 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 数据存储、查询方法、装置和计算设备 |
CN113127475A (zh) * | 2019-12-30 | 2021-07-16 | 中国移动通信集团四川有限公司 | 一种数据处理方法、系统及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677903A (zh) | 获取数据的方法和装置、计算机设备 | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US10216848B2 (en) | Method and system for recommending cloud websites based on terminal access statistics | |
CN103064933B (zh) | 数据查询方法及系统 | |
DE102016013248A1 (de) | Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
CN105989076A (zh) | 一种数据统计方法以及装置 | |
CN109118353B (zh) | 风控模型的数据处理方法和装置 | |
CN109857803B (zh) | 数据同步方法、装置、设备、系统及计算机可读存储介质 | |
US8250536B2 (en) | Analysis of a legacy source code application | |
CN108205571B (zh) | 键值数据表的连接方法及装置 | |
CN104182405A (zh) | 一种连接查询方法及装置 | |
CN102609462A (zh) | 一种通过提取sql模板对海量sql压缩存储的方法 | |
CN110399096B (zh) | 分布式文件系统元数据缓存重删的方法、装置以及设备 | |
CN104102701A (zh) | 一种基于hive的历史数据存档与查询方法 | |
CN105468623A (zh) | 数据处理方法及装置 | |
CN103810197A (zh) | 一种基于Hadoop的数据处理方法及其系统 | |
CN111045654A (zh) | 基于Vue快速生成常用指令的方法、装置、计算机设备及存储介质 | |
CN111047434A (zh) | 一种操作记录生成方法、装置、计算机设备和存储介质 | |
CN104933096A (zh) | 数据库的异常键识别方法、装置与数据系统 | |
CN111176901B (zh) | 一种hdfs删除文件恢复方法、终端设备及存储介质 | |
CN111045994B (zh) | 一种基于kv数据库的文件分类检索方法及系统 | |
CN112631833A (zh) | 一种数据归档查询方法、系统、存储介质及设备 | |
JP6588988B2 (ja) | 業務プログラム生成支援システムおよび業務プログラム生成支援方法 | |
CN109471917B (zh) | 数据处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |
|
RJ01 | Rejection of invention patent application after publication |