一种海量数据提取的方法及装置制造方法

文档序号:6620358阅读:228来源:国知局
一种海量数据提取的方法及装置制造方法
【专利摘要】本发明适用于大数据处理【技术领域】,提供了一种海量数据提取的方法及装置,该方法包括:在接收到数据提取请求信息时,根据所述请求信息中的时间范围通过B-Tree索引确定待提取数据所在的数据分区,并确定该数据分区列内的偏移开始位置PB和偏移结束位置PE,根据所述请求信息中的列信息通过列索引确定每个列相对所述数据子块的起始位置Pi,并根据所述请求信息中数据主键对应的数据子块编号确定该数据主键的起始位置PC;提取位置范围[PC+Pi+PB,PC+Pi+PE]内的数据。通过本发明可有效减少索引大小,提高索引定位效率和数据提取效率。
【专利说明】一种海量数据提取的方法及装置

【技术领域】
[0001] 本发明属于大数据处理【技术领域】,尤其涉及一种海量数据提取的方法及装置。

【背景技术】
[0002] 随着大数据时代的来临,对海量数据的处理(包括数据的存储、提取等)的需求越 来越大。目前主要采用关系型数据库来存储海量数据。然而,数据存储在关系型数据库中, 使用B-Tree和聚簇索引的方式,索引比较大(1. 6G的数据,索引超过200M),查询数据时,力口 载索引数据比较多,另外获取一条数据需要从磁盘提取整行数据,磁盘I/O比较耗时。当提 取的数据涉及到多个表时,提取效率更低,性能更差。


【发明内容】

[0003] 本发明实施例提供一种海量数据提取的方法及装置,以减少索引大小,提高索引 定位效率和数据提取效率。
[0004] 本发明实施例的第一方面,提供一种海量数据提取的方法,所述方法包括:
[0005] 从原始数据库中获取原始数据,并根据预设规则对所述原始数据进行分区;
[0006] 根据分区规则建立B-Tree索引;
[0007] 根据存入数据分区中的数据列类型、数据分区的时间范围以及数据列存入的先后 顺序建立列索引;
[0008] 将所述数据分区中的数据块拆分成多个数据子块,对所述数据子块进行编号,每 个数据子块对应一个数据主键,并将所述数据主键的列数据根据所述列索引存入对应的数 据子块中;
[0009] 在接收到数据提取请求信息时,根据所述请求信息中的时间范围通过B-Tree索 引确定待提取数据所在的数据分区,并确定该数据分区列内的偏移开始位置PB和偏移结 束位置PE,根据所述请求信息中的列信息通过列索引确定每个列相对所述数据子块的起始 位置Pi,并根据所述请求信息中数据主键对应的数据子块编号确定该数据主键数据的起始 位置P c;
[0010] 提取位置范围[Pc+Pi+PB^+Pi+PE]内的数据。
[0011] 本发明实施例的第二方面,一种海量数据提取的装置,所述装置包括:
[0012] 分区单元,用于从原始数据库中获取原始数据,并根据预设规则对所述原始数据 进行分区;
[0013] 第一索引单元,用于根据分区规则建立B-Tree索引;
[0014] 第二索引单元,用于根据存入数据分区中的数据列类型、数据分区的时间范围以 及数据列存入的先后顺序建立列索引;
[0015] 第一处理单元,用于将所述数据分区中的数据块拆分成多个数据子块,对所述数 据子块进行编号,每个数据子块对应一个数据主键,并将所述数据主键的列数据根据所述 列索引存入对应的数据子块中;
[0016] 第二处理单元,用于在接收到数据提取请求信息时,根据所述请求信息中的时间 范围通过B-Tree索引确定待提取数据所在的数据分区,并确定该数据分区列内的偏移开 始位置PB和偏移结束位置PE,根据所述请求信息中的列信息通过列索引确定每个列相对 所述数据子块的起始位置匕,并根据所述请求信息中数据主键对应的数据子块编号确定该 数据主键数据的起始位置P c;
[0017] 数据提取单元,用于提取位置范围[Pc+Pi+PBJc+Pi+PE]内的数据。
[0018] 本发明实施例与现有技术相比存在的有益效果是:本发明实施例根据时间范围对 数据进行分区,并根据所述数据分区建立B-Tree索引(根据时间范围建立的索引)以及列 索引,使得数据分区中的时间范围索引和列索引共用,有效减少索引的大小。而且,在数据 查询时,可以根据时间范围索引、列索引以及列偏移定位数据,提高索引定位效率和数据提 取效率。另外,数据按列存储,使得在提取数据时,单列数据不需要提取整行数据,有效减少 冗余数据的提取,具有较强的易用性和实用性。

【专利附图】

【附图说明】
[0019] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述 中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些 实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些 附图获得其他的附图。
[0020] 图1是本发明实施例一提供的海量数据提取方法的实现流程图;
[0021] 图2是本发明实施例二提供的海量数据提取装置的架构示例;
[0022] 图3是本发明实施例三提供的海量数据提取装置的组成结构图。

【具体实施方式】
[0023] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之 类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这 些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装 置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0024] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0025] 实施例一:
[0026] 图1示出了本发明第一实施例提供的海量数据提取方法的实现流程,其过程详述 如下:
[0027] 在步骤S101中,从原始数据库中获取原始数据,并根据预设规则对所述原始数据 进行分区。
[0028] 在本实施例中,所述对原始数据进行分区是指根据预设规则将同类型的数据存 放在一个数据文件中。例如根据时间范围,将连续5年的数据存放为一个数据文件,则 2000-2005数据为一个文件,2006-2010数据为一个文件。
[0029] 作为本发明的另一示例,为了方便计算索引,在根据预设规则对所述原始数据进 行分区之前,还包括:
[0030] 对获取的所述原始数据进行填充处理,以使得填充处理后的数据与时间点对齐。 由于数据与时间点是对齐的,从而所有的列可共用对应的时间范围。例如如果数据是每天 一条,则将数据按照每天一条填充,当天没有数据的,填充一条空数据,从而保证每天都有 数据填充。
[0031] 在步骤S102中,根据分区规则建立B-Tree索引。
[0032] 在本实施例中,可以根据预定的时间范围规则(例如,连续5年的数据存放为一个 数据文件),创建对应的数据分区,在数据分区中根据时间范围建立B-Tree索引,由于数据 与时间点是对齐的,从而所有的列都可共用该时间范围。
[0033] 在步骤S103中,根据存入数据分区中的数据列类型、数据分区的时间范围以及数 据列存入的先后顺序建立列索引,并将所述列索引存入对应的数据分区中。
[0034] 示例性的,所述列索引的计算公式可如下:
[0035]

【权利要求】
1. 一种海量数据提取的方法,其特征在于,所述方法包括: 从原始数据库中获取原始数据,并根据预设规则对所述原始数据进行分区; 根据分区规则建立B-Tree索引; 根据存入数据分区中的数据列类型、数据分区的时间范围以及数据列存入的先后顺序 建立列索引; 将所述数据分区中的数据块拆分成多个数据子块,对所述数据子块进行编号,每个数 据子块对应一个数据主键,并将所述数据主键的列数据根据所述列索引存入对应的数据子 块中; 在接收到数据提取请求信息时,根据所述请求信息中的时间范围通过B-Tree索引确 定待提取数据所在的数据分区,并确定该数据分区列内的偏移开始位置PB和偏移结束位 置PE,根据所述请求信息中的列信息通过列索引确定每个列相对所述数据子块的起始位置 Pi,并根据所述请求信息中数据主键对应的数据子块编号确定该数据主键的起始位置P。; 提取位置范围[Pc+Pi+PB^+Pi+PE]内的数据。
2. 如权利要求1所述的方法,其特征在于,所述列索引的计算公式如下:
其中,yn为第η列索引,T为时间范围内总的时间点个数,Li为第i列的单个字段数据 长度,η为大于或等于2的整数。
3. 如权利要求1所述的方法,其特征在于,所述根据预设规则对所述原始数据进行分 区包括: 根据时间范围对所述原始数据进行分区。
4. 如权利要求1至3任一项所述的方法,其特征在于,在根据预设规则对所述原始数据 进行分区之前,还包括: 对获取的所述原始数据进行填充处理,以使得填充处理后的数据与时间点对齐。
5. 如权利要求1所述的方法,其特征在于,所述将所述数据分区中的数据块拆分成多 个数据子块包括: 将数据分区中的数据块根据一个数据主键存储所有列所需的存储空间拆分成多个数 据子块。
6. -种海量数据提取的装置,其特征在于,所述装置包括: 分区单元,用于从原始数据库中获取原始数据,并根据预设规则对所述原始数据进行 分区; 第一索引单元,用于根据分区规则建立B-Tree索引; 第二索引单元,用于根据存入数据分区中的数据列类型、数据分区的时间范围以及数 据列存入的先后顺序建立列索引; 第一处理单元,用于将所述数据分区中的数据块拆分成多个数据子块,对所述数据子 块进行编号,每个数据子块对应一个数据主键,并将所述数据主键的列数据根据所述列索 引存入对应的数据子块中; 第二处理单元,用于在接收到数据提取请求信息时,根据所述请求信息中的时间范围 通过B-Tree索引确定待提取数据所在的数据分区,并确定该数据分区列内的偏移开始位 置PB和偏移结束位置PE,根据所述请求信息中的列信息通过列索引确定每个列相对所述 数据子块的起始位置匕,并根据所述请求信息中数据主键对应的数据子块编号确定该数据 主键的起始位置P c ; 数据提取单元,用于提取位置范围[PfPi+PBJfPi+PE]内的数据。
7. 如权利要求6所述的装置,其特征在于,所述列索引的计算公式如下:
其中,yn为第η列索引,T为时间范围内总的时间点个数,Li为第i列的单个字段数据 长度,η为大于或等于2的整数。
8. 如权利要求6所述的装置,其特征在于,所述分区单元用于: 根据时间范围对所述原始数据进行分区。
9. 如权利要求6至8任一项所述的装置,其特征在于,所述分区单元还用于: 对获取的所述原始数据进行填充处理,以使得填充处理后的数据与时间点对齐。
10. 如权利要求6所述的装置,其特征在于,所述第一处理单元用于: 将数据分区中的数据块根据一个数据主键存储所有列所需的存储空间拆分成多个数 据子块。
【文档编号】G06F17/30GK104112011SQ201410340118
【公开日】2014年10月22日 申请日期:2014年7月16日 优先权日:2014年7月16日
【发明者】陈工孟, 唐杰 申请人:深圳市国泰安信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1