专利名称:一种数据并行抽取方法、装置和数据库系统的制作方法
技术领域:
本发明涉及计算机技术,特别涉及一种数据并行抽取技术。
技术背景随着现代企业的迅速发展,企业所积累的各种数据也随之剧增。为了便于对这些海量数据进行科学、有效的管理和分析,数据仓库(Data Warehouse) 技术开始得到广泛推广和应用。ETL(Extract、 Transform、 Load,抽取、转换、 装载)作为数据仓库系统中的一个重要工具,主要负责业务数据的抽取、转换 和装载处理过程。在企业级的应用中,用户经常需要从数据库中抽取一些大的 或超大的数据库表,其单个数据库表的数据量级可达几个GB,甚至几十个GB 或几百个GB。传统单进程的抽取方式根本无法满足客户需求。因此,为了解 决大数据表抽取的性能瓶颈问题,采用高性能的多进程并行抽取技术方案成为 必然的趋势。业界现有的技术方案是根据用户并行数要求,以数据库表中某一个或多个 字段值作为分割约束条件,将数据库表中存储的数据分割成若干个部分,然后 将每一部分数据分配给一个独立的抽取进程处理,这样,每个抽取进程在执行 过程中,根据数据的分割约束条件,抽取分配给自己的那部分数据记录,最后 将所有抽取进程抽取的数据进行合并,形成一份完整数据库表。例如以一个数 据库表中的年龄字段进行分割,将字段值作为分割约束条件,例如0-10、 10-20、 20-30、 30-40...等各年龄段分别作为分割约束条件,每一个抽取进程至少负责 一个分割约束条件限定出的数据抽取工作。这种并行抽取技术依赖数据库表中的某一个或多个字段值来作为数据分 割条件进行数据分割,字段值的选择需要人工参与,还需要人工向各进程输入数据分割条件,因此无法自动实现。并且依赖数据库表中的字段值的分割方式 中,除非用户对所选取的字段取值范围非常清楚,否则很难实现对数据库表的 均匀分割,以均衡各抽取进程的数据抽取量。加之由数据库数据的存储方式所决定,在根据字段值作为数据分割约束条 件时,分配给同一个抽取进程的数据分布在不同的物理存储位置区域,这样数 据库服务器在读取数据的过程,需要频繁移动指针,消耗了大量不必要的时间, 大大降低了数据抽取性能。因此,这种并行抽取技术虽然在一定程度上可以提 高数据抽取性能,但还是很难满足客户对高性能抽取功能的需求。发明内容本发明实施例提供一种数据并行抽取方法、装置和数据库系统,用以提高 现有并行抽取技术的性能。本发明实施例提供的一种数据并行抽取方法,包括 根据待抽取数据库的标识信息获取待抽取数据库的存储区域分布信息; 根据所述存储区域分布信息将数据库的存储区域分割为设定数目的存储 子区域;创建所述设定数目的数据抽取子进程,各数据抽取子进程分别从其中一个 存储子区域中,并行抽取待抽取数据库表的数据。本发明实施例还提供一种数据并行抽取装置,包括获取单元,用于根据待抽取数据库标识信息获取待抽取数据库的存储区域 分布信息;分割单元,用于根据所述存储区域分布信息将数据库的存储区域分割为设 定数目的存储子区域;抽取单元,用于创建并并行启动所述设定数目的数据抽取子进程,各数据 抽取子进程单元分别从其中一个存储子区域中,并行抽取待抽取数据库表的数 据。本发明实施例还提供一种数据库系统,包括数据库和所述数据并行抽取装置。本发明实施例根据数据单元的存储区域分布信息,对待抽取数据库表的存 储区域分为多个存储子区域,每一个数据抽取子进程负责抽取一个存储子区域 中的数据,从而使相邻或相近物理存储区域的数据单元被尽可能的分配给同一 抽取子进程,这样,每一个子进程在抽取过程中,指针的移动范围被限定在一 个相对较小的存储区域内,减少了指针的移动范围,增强了抽取性能。尤其提高了超过GB数据量级的大数据库的抽取性能。
图1为现有数据库的物理存储方式示意图;图2为本发明实施例提供的数据并行抽取方法流程示意图;图3为本发明实施例提供的数据并行抽取方法一个具体实施例的流程示意图;图4为本发明实施例提供的数据并行抽取装置结构示意图; 图5为本发明实施例提供的数据库系统结构示意图。
具体实施方式
如图1所示,为数据库的物理存储方式, 一般数据库中包含多个数据库表, 每一个数据库表具有唯一的标识信息,标识信息包括表名和用户名,唯一限定 一个数据库表,用户通过表名和用户名访问数据库表,并抽取数据库表的数据。 在数据库中的数据被存储在存储介质的各分区中,例如存储磁盘的各分区中, 并采用类似数据文件、数据块的存储方式进行管理,每一个数据库中包含至少 一个数据文件,每一个数据文件中至少包含一个数据块,每一个数据块中至少 包含一个数据单元。数据单元是数据库管理的最小数据单位,根据不同的数据 库管理模式,数据单元可以是数据库中的一条记录或一个字段。数据库的所有数据单元是统一进行存储管理的,在存储过程中,每一个数 据库表的各数据单元可能分属于不同的数据块,各数据块又可能分属于不同的 数据文件,各数据文件又可能分别存储在不同的分区中。在数据库的存储管理中,通常以数据对象标识表示分区,以数据文件标识 表示数据文件,以数据块标识表示数据块,并根据各数据单元所在分区对应的 数据对象标识、所在数据文件对应的数据文件标识、所在数据块对应的数据块 标识,生成该数据单元的数据单元标识,每一个数据单元标识唯一映射数据单 元的物理存储位置信息。根据不同的数据库管理方法,才艮据这些信息生成数据 单元标识的方法可能有所不同,但是这些信息都反映了数据单元的物理存储位 置信息,因此被通称为数据库表的存储区域分布信息。尽管一个数据库表的数据单元可能分属于多个分区、多个数据文件、多个 数据块,使得各数据单元的数据单元标识不连续,映射的物理存储位置也是不 连续的,但是根据数据库的存储方式, 一个数据库表中,属于同一分区、同一 数据文件或同一各数据块的数据单元的存储位置是相邻或相近的,因此,如果 利用数据库表的存储区域分布信息将相邻或相近的数据单元分配给一个数据 抽取子进程负责抽取,则可以使每一个子进程在抽耳又过程中,指针的移动范围 被限定在一个相对较小的存储区域内,减少了指针的移动范围,增强了抽取性能。尤其提高了超过GB数据量级的大数据库的抽取性能。如图2所示,本发明实施例正是基于对数据库存储管理方式的分析,提供 一种数据并行抽取方法,利用数据库存储区域分布信息将数据库表的存储区域 分成多个存储子区域,然后由每一个数据抽取子进程分别负责抽取其中一个存 储子区域上的数据单元,具体包括如下步骤S201 、根据待抽取数据库标识信息获取待抽取数据库的存储区域分布信自.各数据库表的存储区域分布信息被分别保存一个数据库存储管理文件中, 数据库存储管理文件可以被称为数据库字典,数据抽取进程可以根据数据库标识信息查询数据库存储管理文件获得待抽取数据库的所有存储区域分布信息。5202、 根据所述存储区域分布信息将数据库的存储区域分割为设定数目的 存储子区域;5203、 创建所述设定数目的数据抽取子进程,各数据抽取子进程并行从其 中一个存储子区域中,抽取待抽取数据库表的数据。其中,步骤S202中可以采用很多种方法将将数据库的存储区域分割为设 定数目的存储子区域,并且根据不同的划分方式,在步骤S203,各数据抽取子 进程分别根据相应的数据分割约束条件抽取数据,例如一、 根据数据对象标识进行分割存储子区域分割方式为根据数据对象标识的大小顺序,将各分区分割为 设定数目的分組,则每一个分组为一个存储子区域,每一个存储子区域中至少 包括一个分区;的数据对象标识直接作为数据分割约束条件,并将数据分割约束条件输入数据 库,从数据库中抽取存储在该存储子区域中的待抽取数据库表数据;或者抽取进程先分别根据各存储子区域中各分区的数据对象标识,生成各各存 储子区域对应的数据单元标识极大值和极小值;每一个数据抽取子进程分别以 各存储子区域对应的数据单元标识极大值和极小值作为数据分割约束条件,并 将数据分割约束条件输入数据库,从数据库中抽取待抽取数据库表的数据。二、 根据数据文件标识进行分割存储子区域的分割方法为根据数据文件标识的大小顺序,将各数据文件 分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储子区域中 至少存储一个数据文件;相应的,每一个数据抽取子进程分别以对应存储子区域中各分区的数据对 象标识和对应数据文件标识直接作为数据分割约束条件,并将数据分割约束条 件输入数据库,从数据库中抽取存储在该存储子区域中的待抽取数据库表数据;或者抽取进程先分别根据各存储子区域中各分区的数据对象标识、各数据对象 标识对应的数据文件标识,生成各数据文件中的数据单元标识最大值和最小 值;分别根据各存储子区域对应的所有数据单元标识最大值和最小值,确定数 据单元标识极大值和极小值;然后每一个数据抽取子进程分别以存储子区域对 应的数据单元标识极大值和极小值作为数据分割约束条件,并将数据分割约束 条件输入数据库,从数据库中抽取待抽取数据库表的数据。三、根据数据块标识进行分割存储子区域的分割方法为根据所述数据块标识的大小顺序,将各数据块 分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储子区域中 至少存储一个数据块;相应的,每一个数据抽取子进程可以分别以对应存储子区域中各分区的数 据对象标识、每一个数据对象标识对应的数据文件标识和每一个数据文件标识 对应的数据块标识直接作为数据分割约束条件,并将数据分割约束条件输入数 据库,从数据库中抽取存储在该存储子区域中的待抽取数据库表数据;或者数据抽取进程先分别根据每一个存储子区域中各分区的数据对象标识、每 一个数据对象标识对应的数据文件标识和每一个数据文件标识对应的数据块 标识,生成各数据块的数据单元标识最大值和最小值;并分别根据各存储子区 域对应的所有数据单元标识最大值和最小值,确定各存储子区域对应的数据单 元标识极大值和极小值;然后每一个数据抽取子进程再分别以对应存储子区域 的数据单元标识极大值和极小值作为数据分割约束条件,并将数据分割约束条 件输入数据库,从数据库中抽取待抽取数据库表的数据。上述各种实施方式中,由于各标识一般按顺序编号,所以根据各标识的大小顺序进行分组时,自然将存储位置相邻或相近的数据单元划分到一个数据存 储子区域中。上述各种实施方式中,数据抽取子进程可以直接以各存储子区域对应的相关标识作为数据分割约束条件,也可以其中存储的数据单元标识为数据分割约 束条件,如果以数据单元标识为数据分割约束条件,则需要根据数据单元标识 的生成规则确定相应的数据单元标识极大值和极小值。数据单元标识具有一定的生成规则,例如数据单元标识的^^式为 数据对象标识+数据文件标识+数据块标识+数据存储单元序号 因此,如果根据数据对象标识生成数据单元标识极大值和极小值时,根据 "数据文件标识+数据块标识+数据存储单元序号,,占有的位数,数据单元标识 极大值将每一位置9,数据单元标识极小值将每一位置0;如果根据"数据对象标识+数据文件标识,,生成数据单元标识极大值和极小值时,根据"数据块标识+数据存储单元序号,,占有的位数,数据单元标识 极大值将每一位置9,数据单元标识极小值将每一位置0; 其它数据单元标识的生成方法类似,不再——举例说明。 较佳的,还可以根据数据文件进行存储子区域的分割,但是在以数据单元 标识极大值和极小值作为数据分割约束条件时,可以每一个数据文件标识对应 的数据块标识最大值生成对应的数据单元最大值,以每一个数据文件标识对应 的数据块标识最小值生成对应的数据单元最小值;在获取数据存储分布信息 时,只需要获取每一个数据文件标识对应的数据块标识最大值和最小值。这种 方式中,可以先根据数据文件标识的大小顺序进行分组,也可以根据数据文件 标识的大小顺序进行排序后生成各自对应的数据块标识最大值和最小值,然后 根据数据块标识最大值的大小顺序,对各对数据块标识最大值和最小值进行分 组,每一个分组中数据块标识极大值和极小值相应表示一个存储子区域。下面 就以该较佳方式为例,详细说明本发明实施例提供数据并行抽取方法。如图3所示,为本发明实施例提供的一种数据并行抽取方法的流程示意图, 包括步骤S301、获取待抽取数据库表的各数据对象标识、每一个数据对象标识 对应的各数据文件标识以及每一个数据文件标识对应的数据块标识最大值和最小值;每一个数据库表的各数据文件标识及对应的数据块标识最大值和最小值 是存储在数据库管理系统中,例如数据库字典中,数据抽取进程根据数据库表 标识信息和用户名可以从数据字典中查询待抽取数据库表的各数据文件标识 及对应的数据块标识最大值和最小值。步骤S302、根据数据文件标识的大小顺序,分别生成各存储子区域中,每 一个数据文件对应的数据单元标识最大值和最小值;在获得数据对象标识、数据文件标识,以及数据块标识的最大值和最小值 后,根据数据单元的具体格式,可以生成各数据文件对应的数据单元标识的最 大值和最小值。例如数据单元标识的才各式为数据对象标识+数据文件标识+数据块标识 最大值+数据存储单元序号,并且数据单元序号的位数为3位时,数据单元标 识最大值为数据对象标识+数据文件标识+数据块标识最大值+999数据单元标识最小值为数据对象标识+数据文件标识+数据块标识最d 、值+000步骤S303、将各对数据单元标识最大值和最小值分割为设定数目的分组, 每一个分组为一个存储子区域,每一个存储子区域中至少存储一个数据文件;步骤S304、分别根据各存储子区域对应的所有数据单元标识最大值和最小 值,确定数据单元标识极大值和极小值;其中,每一个存储子区域对应的数据单元标识极大值和极小值都可以被设 定为一项数据分割约束条件参数, 一项数据分割约束条件参数事实上限定了一 个数据单元标识集合,该集合中的每一个数据单元标识小于等于极大值大于等 于极小值。待抽取数据库表的部分数据单元标识包含在该集合中,当然,不排 除待抽取数据库表占用该极大值和极小值限定范围内所有数据单元标识的情 况。步骤S305、创建与分数目相同的数据抽取子进程,向每一个数据抽取子进 程分配一个存储子区域对应的数据分割约束条件;步骤S306、各数据抽取子进程分别根据自己的数据分割约束条件,并行从 数据库中抽取出所述待抽取数据库表的数据;其中,每一个数据抽取子进程抽取的数据单元的数据单元标识,小于等于 对应存储子区域的数据单元标识极大值并大于等于极小值;其中一项数据分割约束条件的数据单元标识极大值和极小值限定出了所 有小于等于极大值并大于等于极小值的数据单元标识。数据抽取子进程调用一 个查询函数,将极大值和极小值作为查询参数向数据库进行查询,数据库管理 系统的查询接口根据极大值和极小值限定的集合,查询出属于该集合中的各数 据单元标识对应的数据单元,并向数据抽取子进程返回查询结果。事实上,根据数据文件划分存储子区域后,相邻或相近物理存储区域的数 据被尽可能的分配给同一抽取子进程,这样,数据库管理系统在查询过程中, 指针移动范围被限定在各数据文件的存储区域内,从而减少了指针的移动范 围,增强了抽取性能。在待抽取数据库表的所有数据被抽取出之后,可以进行汇总合并,得到一份完整的数据库表。本领域技术人员可以理解本发明实施例提供的数据库表数据并行抽取方 法和数据库表的获取方法中,全部或部分步骤是可以通过程序指令相关的硬件来完成,该程序可以存储在可读取存储介质中,可读取存储介质例如随机存储 器、磁盘、光盘等。当该程序通过计算机运行后,可以并行抽取数据库表数据 并进一步将抽取的数据合并为 一个数据库表。下面以Oracle数据库的应用实例再进行详细说明,其它数据库的实现方式 完全类似,本发明技术领域的技术人员完全可以参照实现。Oracle数据库中的数据单元被称为一条记录,每一条记录都存在一个默认 的行标识(ROWID)字段,ROWID是每一条记录的唯一标识,每一个ROWID和一个物理存储信息相映射,每一个物理存储信息指向一个物理存储地址。ROWID总共18位,编码规则如下7位数据对象标识+ 3位数据文件标识+ 5位IU居块标识+ 3位记录行序号假设用户设定使用n个子进程来并行抽取A表中的数据,A表的所属用户 名为B。并行抽取实现过程如下1 、根据A表名(数据库表标识)和B用户名(用户标识信息),查询数 据字典DBA—OBJECTS,查询A表的所有数据对象标识(DATA—OBJECT—ID )4吕息;2、 根据A表名和B用户名,查询数据字典DBA—EXTENTS,查询A表 的所有数据文件标识(FILE—ID),以及每一个FILE—ID对应的数据块标识(BLOCK—ID)的最大值和最小值,并按照数据文件表示(FILE—ID)从小到大进行排序;查询语句如下SELECT FILE—ID, MAX(BLOCK一ID), MIN(BLOCK—ID)FROM DBA—EXTENTSWHERE OWNER-,B'AND SEGMENT—NAME =,A,GROUP BY FILE—IDORDER BY FILE—ID DESC3、 分别以DATA—OBJECT—ID、 FILE—ID、数据文件的最小BLOCK—ID、 最大BLOCK—ID作为输入参数,循环调用DBMS—ROWID.ROWID—CREATE() 函数生成每个DATA—OBJECT—ID和FILE—ID对应的最大ROWID和最小 ROWID;DBMS—ROWID,ROWIDj:REATE0函数的原型定义如下 DBMS_ROWID.ROWID—CREATE(ROWID_TYPE, 〃ROWID类型OBJECT_NUMBER, 〃数据对象标识 RELATIVE_FNO, 〃文件标识BLOCK—NUMBER, 〃数据块标识 ROW—NUMBER 〃记录行号);在获取最大ROWID时,BLOCK—NUMBER参数为数据文件的最大 BLOCK—ID , ROW—NUMBER为999;在获取最小ROWID时,BLOCK—NUMBER参数为数据文件的最小 BLOCK ID, ROW—NUMBER为000;假设第1步获取的DATA—OBJECT—ID为x个,第2步获取的FILE—ID为 y个,则最后计算得到的最大ROWID和最小ROWID值为z = x*y对;4、 根据用户设定的并行抽取进程数,将上述的最大ROWID和最小ROWID 值对分为n组,并取每一组的极大ROWID和极小ROWID作为数据分割约束 条件;5、 创建n个数据抽取子进程,并给每一个数据抽取进程分配一组极大 ROWID和极小ROWID作为数据分割约束条件;6、 启动所有数据抽取子进程,每个数据抽取子进程根据极大ROWID和 极小ROWID限定的范围从数据库中抽取自己负责的数据记录;数据抽取语句如下SELECT* FROM AWHERE ROWID >=极小ROWIDAND ROWID >=极大ROWID7、 将所有数据抽取子进程抽取到的记录进行汇总合并,得到一份完整的 A表数据。根据本发明实施例公开的内容,本领域技术人员可以轻易的用于其它类型 数据库的数据抽取,这里以Oracle数据库为例,并不限定本发明的保护范围。 如图4所示,本发明实施例还提供一种数据并行抽取装置,主要包括 获取单元401 ,用于根据待抽取数据库标识信息获取待抽取数据库的存储 区域分布信息;分割单元402,用于根据所述存储区域分布信息将数据库的存储区域分割 为设定数目的存储子区域;抽取单元403,用于创建所述设定数目的数据抽取子进程,各数据抽取子 进程单元分别从其中一个存储子区域中,并行抽取待抽取数据库表的数据。如图5所示,本发明实施例还提供一种数据库系统,包括数据库51和数 据并行抽取装置52,该数据并行抽取装置52的结构如图4所示,包括获取 单元401、分割单元402和抽取单元403,用于从凄t据库中抽取待抽取数据库 表的数据。其中,数据并行抽取装置的分割单元402和抽取单元403的实现细节参见 本发明实施例提供的数据并行抽取方法,这里不再重复描述。本发明实施例提供的数据并行抽取装置应用在数据库的管理系统中,可以 增强数据的并行抽取性能。综上所述,本发明实施例提供的技术方案根据数据文件对待抽取数据库表 的进行分组后,相邻或相近物理存储区域的数据被尽可能的分配给同一抽取子 进程,这样,每一个子进程在抽取过程中,指抽取性能针的移动范围被限定在 一个数据文件的存储区域内,减少了指针的移动,增强了抽取性能。尤其提高 了数据量级的大数据库的抽取性能。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种数据并行抽取方法,其特征在于,包括根据待抽取数据库的标识信息获取待抽取数据库的存储区域分布信息;根据所述存储区域分布信息将数据库存储区域分割为设定数目的存储子区域;创建所述设定数目的数据抽取子进程,各数据抽取子进程分别从其中一个存储子区域中,并行抽取待抽取数据库表的数据。
2、 如权利要求1所述的方法,其特征在于所述存储区分布信息包括存储所述待抽取数据库表数据的各数据对象标 识;并且所述存储子区域的分割方法为根据数据对象标识的大小顺序,将各分区 分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储子区域中 至少包括一个分区。
3、 如权利要求2所述的方法,其特征在于,各数据抽取子进程抽取待抽 取数据库表数据的方法为每一个数据抽取子进程分别以对应存储子区域包括 的各分区数据对象标识为数据分割约束条件,抽取存储在该存储子区域中的待 抽取数据库表数据。
4、 如权利要求2所述的方法,其特征在于,各数据抽取子进程抽取待抽 取数据库表数据的方法包括分别根据各存储子区域中各分区数据对象标识,生成各存储子区域对应的 数据单元标识极大值和极小值;每一个数据抽取子进程分别以对应存储子区域的数据单元标识极大值和 极小值为数据分割约束条件,抽取待抽取数据库表的数据。
5、 如权利要求1所述的方法,其特征在于所述存储区分布信息包括存储所述待抽取数据库表数据的各数据对象标 识、以及每一个数据对象标识对应的数据文件标识;并且所述存储子区域的分割方法为根据数据文件标识的大小顺序,将各数据 文件分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储子区 域中至少存储一个数据文件。
6、 如权利要求5所述的方法,其特征在于,每一个数据抽取子进程分别 以对应存储子区域中各分区数据对象标识、每一个数据对象标识对应的数据文 件标识为数据分割约束条件,抽取存储在该存储子区域中的待抽取数据库表数 据。
7、 如权利要求5所述的方法,其特征在于,各数据抽取子进程抽取待抽 取数据库表数据的方法包括分别根据各存储子区域中各分区的数据对象标识、每一个数据对象标识对 应的数据文件标识,生成各数据文件中的数据单元标识最大值和最小值;分别根据各存储子区域对应的所有数据单元标识最大值和最小值,确定各 存储子区域对应的数据单元标识极大值和极小值;每一个数据抽取子进程分别以存储子区域对应的数据单元标识极大值和 极小值为数据分割约束条件,抽取待抽取数据库表的数据。
8、 如权利要求1所述的方法,其特征在于所述存储区分布信息包括存储所述待抽取数据库表数据的各数据对象标 识、每一个数据对象标识对应的数据文件标识,以及每一个数据文件标识对应 的各数据块标识;并且所述存储子区域的分割方法为根据所述数据块标识的大小顺序,将各数 据块分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储子区 域中至少存储一个数据块。
9、 如权利要求8所述的方法,其特征在于,每一个数据抽取子进程分别 以对应存储子区域中各分区的数据对象标识、每一个数据对象标识对应的数据 文件标识和每一个数据文件标识对应的数据块标识为数据分割约束条件,抽取 存储在该存储子区域中的待抽取数据库表数据。
10、 如权利要求8所述的方法,其特征在于,数据抽取子进程抽取待抽取 数据库表数据的方法包括分别根据每一个存储子区域中各分区的数据对象标识、每一个数据对象标 识对应的数据文件标识和每一个数据文件标识对应的lt据块标识,生成各数据 块中的数据单元标识最大值和最小值;分别根据各存储子区域对应的所有数据单元标识最大值和最小值,确定各 存储子区域对应的数据单元标识极大值和极小值;每一个数据抽取子进程分别以对应存储子区域对应的数据单元标识极大 值和极小值为数据分割约束条件,抽取待抽取数据库表的数据。
11、 如权利要求l所述的方法,其特征在于所述存储区分布信息包括存储所述待抽取数据库表数据的各数据对象标 识、每一个数据对象标识对应的数据文件标识,以及每一个数据文件标识对应 的数据块标识最大值和最小值。
12、 如权利要求11所述的方法,其特征在于所述存储子区域的分割方法为根据所述数据文件标识的大小顺序,将各 数据文件分割为设定数目的分组,每一个分组为一个存储子区域,每一个存储 子区域中至少存储一个数据文件;并且所述数据抽取子进程抽取待抽取数据库表数据的方法包括分别根据每一个存储子区域中各分区的数据对象标识、每一个数据对象标 识对应的数据文件标识和每一个数据文件标识对应的数据块标识最大值和最 小值,对应生成各数据文件中的数据单元标识最大值和最小值;分别根据各存储子区域对应的所有数据单元标识最大值和最小值,确定各 存储子区域对应的数据单元标识极大值和极小值;极小值为数据分割约束条件,抽取待抽取数据库表的数据。
13、 如权利要求11所述的方法,其特征在于所述根据存储区域分布信息将数据库存储区域分割为设定数目存储子区域的方法包括分别根据每一个存储子区域中各分区的数据对象标识、每一个数据对象标 识对应的数据文件标识和每一个数据文件标识对应的数据块标识最大值和最 小值,对应生成各数据文件中的数据单元标识最大值和最小值;根据所述数据文件标识标识或者数据单元标识最大值的大小顺序,将各对 数据单元标识最大值和最小值分成设定数目的分组,并确定各分组中数据单元 标识极大值和极小值,其中每一个分组为一个存储子区域;并且所述数据抽取子进程抽取待抽取数据库表数据的方法包括极小值为数据分割约束条件,抽取待抽取数据库表的数据。
14、 如权利要求4、 7、 10、 12或13所述的方法,其特征在于,所述数据 单元为数据库表的一条记录或字段。
15、 如权利要求l所述的方法,其特征在于,所述存储区域分布信息是根 据数据库标识信息从数据库存储管理文件中获取的。
16、 如权利要求1或15所述的方法,其特征在于,所述数据库标识信息 包括数据库表的表名和用户名。
17、 一种数据并行抽取装置,其特征在于,包括获取单元,用于根据待抽取数据库标识信息获取待抽取数据库的存储区域 分布信息;分割单元,用于4艮据所述存储区域分布信息将数据库的存储区域分割为设 定数目的存储子区域;抽取单元,用于创建并并行启动所述设定数目的数据抽取子进程,各数据 抽取子进程单元分别从其中一个存储子区域中,并行抽取待抽取数据库表的数 据。
18、 一种数据库系统,包括数据库和数据并行抽取装置,其特征在于,所述数据并行抽取装置包括获取单元,用于根据待抽取数据库标识信息获取待抽取数据库的存储区域 分布信息;分割单元,用于根据所述存储区域分布信息将数据库的存储区域分割为设 定数目的存储子区域;抽取单元,用于创建并并行启动所述设定数目的数据抽取子进程,各数据 抽取子进程单元分别从其中一个存储子区域中,并行从所述数据库中抽取待抽 取数据库表的数据。
全文摘要
本发明提供一种数据并行抽取方法、装置和数据库系统,用以提高现有并行抽取技术的抽取性能。本发明实施例提供的技术方案根据待抽取数据库的标识信息获取待抽取数据库的存储区域分布信息;根据所述存储区域分布信息将数据库的存储区域分割为设定数目的存储子区域;创建所述设定数目的数据抽取子进程,各数据抽取子进程并行从其中一个存储子区域中,抽取待抽取数据库表的数据。从而使相邻或相近物理存储区域的数据被尽可能的分配给同一抽取子进程,这样,每一个子进程在抽取过程中,指针的移动范围被限定在一个相对较小的存储区域内,减少了指针的移动,增强了抽取性能。尤其提高了超过GB数据量级的大数据库的抽取性能。
文档编号G06F17/30GK101329676SQ20071012334
公开日2008年12月24日 申请日期2007年6月20日 优先权日2007年6月20日
发明者谭力夫, 陆春义 申请人:华为技术有限公司