著录项信息
专利名称 | 一种数据处理的方法及装置 |
申请号 | CN201410706742.6 | 申请日期 | 2014-11-27 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2015-03-25 | 公开/公告号 | CN104462291A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 杭州华为数字技术有限公司 | 申请人地址 | 浙江省杭州市滨江区滨兴路301号3幢A楼301室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 杭州华为数字技术有限公司 | 当前权利人 | 杭州华为数字技术有限公司 |
发明人 | 杜培亮 |
代理机构 | 北京中博世达专利商标代理有限公司 | 代理人 | 申健 |
摘要
本发明公开一种数据处理的方法及装置,涉及通信网络技术领域,可以解决为未建立索引的数据表创建索引的效率低的问题。本发明实施例通过读取未建立索引的数据表;扫描未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息;根据每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组;通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。本发明实施例提供的方案适于对数据进行处理时采用。
一种数据处理的方法及装置\n技术领域\n[0001] 本发明涉及通信网络技术领域,尤其涉及一种数据处理的方法及装置。\n背景技术\n[0002] 随着信息技术的发展,信息数据量不断增加,对大量的数据进行快速的存储和查询变得十分重要。为了方便快速的查找数据,在将数据导入数据库时会建立索引,数据在数据库中以表格的形式存储,表格的列表示属性,表格的行表示数据元组,每个数据元组为数据表中的一行数据,索引是根据数据表中一列或若干列按照一定顺序建立的列信息与数据元组之间的对应关系表。在查询数据时,首先通过列信息从索引中查询列信息对应的数据元组,从而确定需要查询的数据元组的位置,然后根据数据元组的位置直接访问数据元组获得所需数据,避免了繁杂的查找过程。\n[0003] 通常建立索引的方法为先把数据表中的索引设置为不可用,在导入数据时不启动索引的建立,导入数据之后设置数据表上的索引为可用,然后扫描数据表中的所有数据元组,为每个数据元组生成一个索引元组,对所有的索引元组排序生成索引文件。之后重新扫描数据表中的所有数据元组,按照上述方法生成下一个索引文件,由于每生成一个索引文件都需要扫描一次数据表中的所有数据元组,会导致创建索引的效率低。\n发明内容\n[0004] 本发明的实施例提供的数据处理的方法及装置,可以解决创建索引效率低的问题。\n[0005] 第一方面,本发明的实施例提供一种数据处理的方法,所述方法应用于处理未建立索引的数据表,所述未建立索引的数据表包括至少一个数据元组,所述数据元组为所述未建立索引的数据表中的一行数据,所述未建立索引的数据表对应至少一个索引定义,所述索引定义包括用于创建索引元组的信息和索引元组的排序规则,所述索引元组为确定所述数据元组位置的信息,包括:\n[0006] 读取所述未建立索引的数据表;\n[0007] 扫描所述未建立索引的数据表中的所有数据元组,通过所述用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息;\n[0008] 根据所述用于创建索引元组的信息,每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组;\n[0009] 通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0010] 在第一种可能的实施例中,结合第一方面,当还存在已建立索引的数据表时,其中,所述已建立索引的数据表与所述未建立索引的数据表相比,所述已建立索引的数据表还与索引文件关联,所述通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,包括:\n[0011] 获取所述已建立索引的数据表中每个索引定义对应的索引元组;\n[0012] 通过所述索引元组的排序规则,对每个索引定义对应的所述已建立索引的数据表的索引元组和所述未建立索引的数据表的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0013] 在第二种可能的实施例中,结合第一方面或第一方面中的第一种可能的实施例,在所述通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件之前,所述方法还包括:\n[0014] 确定内存空闲容量和每个索引定义对应的索引元组的大小;\n[0015] 根据所述内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量;\n[0016] 所述通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,包括:\n[0017] S1、通过所述索引元组的排序规则,对所述第一索引定义数量的索引定义对应的索引元组同时进行排序,生成所述第一索引定义数量的索引定义对应的索引文件;\n[0018] S2、将已生成的索引文件进行导出;\n[0019] S3、当导出所述已生成的索引文件之后,重新确定内存空闲容量,得到更新后的内存空闲容量;\n[0020] S4、根据所述更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量,所述N为大于1的整数,所述N用于表示对索引元组进行排序的次数;\n[0021] S5、通过所述索引元组的排序规则,对所述第N索引定义数量的索引定义对应的索引元组同时进行排序,生成所述第N索引定义数量的索引定义对应的索引文件;\n[0022] S6、按照步骤S2-S5的顺序执行,直到完成所有索引定义对应的索引文件的生成。\n[0023] 在第三种可能的实施例中,结合第一方面或第一方面中的第一种可能的实施例,所述通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,包括:\n[0024] 通过所述索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0025] 在第四种可能的实施例中,结合第一方面中第三种可能的实施例,在所述通过所述索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件之后,所述方法还包括:\n[0026] 将已生成的索引文件对应的数据表标记为已建立索引状态。\n[0027] 第二方面,本发明的实施例提供一种数据处理的装置,所述装置应用于处理未建立索引的数据表,所述未建立索引的数据表包括至少一个数据元组,所述数据元组为所述未建立索引的数据表中的一行数据,所述未建立索引的数据表对应至少一个索引定义,所述索引定义包括用于创建索引元组的信息和索引元组的排序规则,所述索引元组为确定所述数据元组位置的信息,包括:\n[0028] 读取单元,用于读取所述未建立索引的数据表,;\n[0029] 获取单元,用于扫描所述读取单元读取到的所述未建立索引的数据表中的所有数据元组,通过所述用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息;\n[0030] 索引元组生成单元,用于根据所述获取单元获取的每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组;\n[0031] 索引文件生成单元,用于通过所述索引元组的排序规则,对所述索引元组生成单元生成的每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0032] 在第一种可能的实施例中,结合第二方面,所述索引文件生成单元,包括:\n[0033] 索引元组获取模块,用于当还存在已建立索引的数据表时,获取所述已建立索引的数据表中每个索引定义对应的索引元组,其中,所述已建立索引的数据表与所述未建立索引的数据表相比,所述已建立索引的数据表还与索引文件关联;\n[0034] 索引文件生成模块,用于当还存在已建立索引的数据表时,通过所述索引元组的排序规则,对每个索引定义对应的所述已建立索引的数据表的索引元组和所述未建立索引的数据表的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0035] 在第二种可能的实施例中,结合第二方面或第二方面中的第一种可能的实施例,所述装置还包括:\n[0036] 索引定义数量确定单元,用于确定内存空闲容量和每个索引定义对应的索引元组的大小;根据所述内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量;\n[0037] 所述索引文件生成单元,还包括:导出模块,内存空闲容量确定模块,索引定义数量确定模块;\n[0038] 所述索引文件生成模块,还用于通过所述索引元组的排序规则,对所述索引定义数量确定单元确定的所述第一索引定义数量的索引定义对应的索引元组同时进行排序,生成所述第一索引定义数量的索引定义对应的索引文件;\n[0039] 所述导出模块,用于将已生成的索引文件进行导出;\n[0040] 所述内存空闲容量确定模块,用于当所述导出模块导出所述已生成的索引文件之后,重新确定内存空闲容量,得到更新后的内存空闲容量;\n[0041] 所述索引定义数量确定模块,用于根据所述更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量,所述N为大于1的整数,所述N用于表示对索引元组进行排序的次数;\n[0042] 所述索引文件生成模块,还用于通过所述索引元组的排序规则,对所述第N索引定义数量的索引定义对应的索引元组同时进行排序,生成所述第N索引定义数量的索引定义对应的索引文件。\n[0043] 在第三种可能的实施例中,结合第二方面或第二方面中的第一种可能的实施例,所述索引文件生成模块,还用于通过所述索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0044] 在第四种可能的实施例中,结合第二方面中的第三种可能的实施例,所述装置还包括:\n[0045] 状态标记单元,用于将已生成的索引文件对应的数据表标记为已建立索引状态。\n[0046] 本发明实施例提供的数据处理的方法及装置,首先读取未建立索引的数据表,扫描未建立索引的数据表中的所有的数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,进而根据获取到的内容生成每个索引定义对应的索引元组,最后通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,与现有技术中生成每个索引定义对应的索引文件都需要扫描一次所有的数据元组相比,本发明扫描一次所有的数据元组后就能够生成每个索引定义对应的索引元组,进而可以生成所有索引定义对应的索引文件,提高了为未建立索引的数据表创建索引的效率。\n附图说明\n[0047] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0048] 图1为本发明实施例提供的一种数据处理的方法的流程图;\n[0049] 图2为本发明实施例提供的另一种数据处理的方法的流程图;\n[0050] 图3为本发明实施例提供的另一种数据处理的方法的流程图;\n[0051] 图4为本发明实施例提供的一种数据处理的装置的逻辑结构示意图;\n[0052] 图5为本发明实施例提供的另一种数据处理的装置的逻辑结构示意图;\n[0053] 图6为本发明实施例提供的另一种数据处理的装置的逻辑结构示意图;\n[0054] 图7为本发明实施例提供的另一种数据处理的装置的逻辑结构示意图。\n具体实施方式\n[0055] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0056] 本发明实施例提供一种数据处理的方法,该方法应用于处理未建立索引的数据表,未建立索引的数据表包括至少一个数据元组,数据元组为未建立索引的数据表中的一行数据,未建立索引的数据表对应至少一个索引定义,索引定义包括用于创建索引元组的信息和索引元组的排序规则,索引元组为确定数据元组位置的信息,如图1所示,该方法包括:\n[0057] 101、读取未建立索引的数据表。\n[0058] 其中,本方法适用于处理设备,该处理设备可以用于为数据表(未建立索引的数据表)建立索引。\n[0059] 102、扫描未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息。\n[0060] 其中,用于创建索引元组的信息指定了使用数据表(未建立索引的数据表)中的哪一列信息进行索引的创建,数据元组的位置信息包括该数据元组所在的未建立索引的数据表的ID(identity,身份标识)以及该数据元组在该未建立索引的数据表中的偏移量。对于一个数据元组而言,索引定义对应的列信息为索引定义规定该数据元组的列对应存储的内容。\n[0061] 需要说明的是,本实施例中未建立索引的数据表可以为数据库中的未建立索引的数据表,在数据库中,将固定大小的一个存储空间作为一页,读取未建立索引的数据表的方式可以为:读取一页未建立索引的数据表,然后扫描这一页未建立索引的数据表中的数据元组,扫描完之后,将这一页未建立索引的数据表从内存中移除,继续读取下一页未建立索引的数据表,然后扫描下一页未建立索引的数据表,直到读取完所有未建立索引的数据表。\n[0062] 或者,在内存空闲容量允许的条件下,依次读取每页未建立索引的数据表,在读取的同时,扫描已经读取到的未建立索引的数据表中的所有数据元组,扫描完一页未建立索引的数据表,即将该页未建立索引的数据表从内存中移除,并继续读取剩余的未建立索引的数据表,直到读取完所有未建立索引的数据表。\n[0063] 103、根据每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组。\n[0064] 其中,一个索引元组包括一个列信息、该列信息所属数据元组的位置信息以及列信息与列信息所属数据元组的对应关系。在一个数据元组中,一个索引定义对应一个索引元组。在未建立索引的数据表中,一个索引定义对应的索引元组的数量与该未建立索引的数据表中数据元组的数量相同,且同一个索引定义对应的多个索引元组中的列信息的属性相同。\n[0065] 104、通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0066] 其中,索引元组的排序规则规定了如何对每个索引定义对应的索引元组进行排序,例如可以按照不同索引元组中列信息之间的从属关系或者并列关系进行排序,或者,当索引元组的列信息为具体数值时,可以按照数值从大到小或者从小到大的顺序排序。\n[0067] 本发明实施例提供的数据处理的方法,首先读取未建立索引的数据表,扫描未建立索引的数据表中的所有的数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,进而根据获取到的内容生成每个索引定义对应的索引元组,最后通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,与现有技术中生成每个索引定义对应的索引文件都需要扫描一次所有的数据元组相比,本发明扫描一次所有的数据元组后就能够生成每个索引定义对应的索引元组,进而可以生成所有索引定义对应的索引文件,提高了为未建立索引的数据表创建索引的效率。\n[0068] 可选的,作为本发明的另一实施例,当还存在已建立索引的数据表时,其中,已建立索引的数据表和未建立索引的数据表相比,已建立索引的数据表还与索引文件关联。可以理解的是,已建立索引的数据表也包括至少一个数据元组,该数据元组为已建立索引的数据表中的一行数据,已建立索引的数据表也对应至少一个索引定义。为了方便查询数据,需要使一个索引定义只对应一个数据表,所以要将与同一个索引定义对应的已建立索引的数据表的索引元组和未建立索引的数据表的索引元组进行合并。所以上述步骤104、通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件的具体实现方式为:\n[0069] 首先,处理设备需要获取已建立索引的数据表中每个索引定义对应的索引元组。\n然后,处理设备通过索引元组的排序规则,对每个索引定义对应的已建立索引的数据表的索引元组和未建立索引的数据表的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0070] 值得说明的是,当完成所有索引定义对应的索引文件的生成后,将已建立索引的数据表之前关联的索引文件进行删除。\n[0071] 可选的,作为本发明的另一实施例,在步骤104之前,该方法还可以包括:\n[0072] 处理设备确定内存空闲容量和每个索引定义对应的索引元组的大小。根据内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量。\n[0073] 举例说明,当内存空闲容量为每个索引定义对应的索引元组的大小的三倍时,说明内存空闲容量可以满足对三个索引定义对应的索引元组同时进行排序的条件,即对索引元组排序的第一索引定义数量为3。\n[0074] 进一步的,步骤104、通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件的具体实现方式为:\n[0075] S1、处理设备通过索引元组的排序规则,对第一索引定义数量的索引定义对应的索引元组同时进行排序,生成第一索引定义数量的索引定义对应的索引文件。\n[0076] S2、处理设备将已生成的索引文件进行导出。\n[0077] S3、当导出已生成的索引文件之后,处理设备重新确定内存空闲容量,得到更新后的内存空闲容量。\n[0078] 需要说明的是,导出已生成的索引文件之后会释放一部分内存,更新后的内存空闲容量变大。\n[0079] S4、处理设备根据更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量。\n[0080] 其中,N为大于1的整数,用于表示对索引元组进行排序的次数,第N索引定义数量为对索引元组第N次排序时的索引定义数量。\n[0081] 当内存空闲容量变大时,对索引元组排序的第N索引定义数量也会变大。\n[0082] S5、处理设备通过索引元组的排序规则,对第N索引定义数量的索引定义对应的索引元组同时进行排序,生成第N索引定义数量的索引定义对应的索引文件。\n[0083] 之后按照步骤S2-S5的顺序执行,直到完成所有索引定义对应的索引文件的生成。\n[0084] 举例说明,假设第一次确定的内存空闲容量只允许对一个索引定义对应的索引元组进行排序,生成该索引定义对应的索引文件后,将该索引定义对应的索引文件导出,此时内存空闲容量会变大,可能会允许对两个索引定义对应的索引元组同时进行排序,同时生成这两个索引定义对应的索引文件,将这两个索引文件对应的索引定义导出后,内存空闲容量将变得更大,允许对更多数量的索引定义对应的索引元组同时进行排序,利用这种生成索引文件的方法可以加快为未建立索引的数据表创建索引速度。\n[0085] 可选的,在本发明的另一实施例中,步骤104、通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件的方法,还可以包括:\n通过索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0086] 需要说明的时,本实施例为生成索引文件的另一种方法,在本发明中,可以根据内存空闲容量的大小,并行生成每个索引定义对应的索引文件,也可以依次生成每个索引定义对应的索引文件。\n[0087] 结合图1以及上述描述,本发明实施例还可以提供另一种数据处理方法,如图2所示,该方法包括:\n[0088] 201、读取未建立索引的数据表。\n[0089] 202、扫描未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息。\n[0090] 203、根据每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组。\n[0091] 进一步的,当存在已建立索引的数据表时,执行下述步骤204,当不存在已建立索引的数据表时,不执行步骤204,直接执行下述步骤205,图2中以存在已建立索引的数据表为例进行说明。\n[0092] 204、获取已建立索引的数据表中每个索引定义对应的索引元组。\n[0093] 205、确定内存空闲容量和每个索引定义对应的索引元组的大小。\n[0094] 206、根据内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量。\n[0095] 207、通过索引元组的排序规则,对第一索引定义数量的索引定义对应的索引元组同时进行排序,生成第一索引定义数量的索引定义对应的索引文件。\n[0096] 208、将已生成的索引文件进行导出。\n[0097] 209、当导出已生成的索引文件之后,重新确定内存空闲容量,得到更新后的内存空闲容量。\n[0098] 210、根据更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量。\n[0099] 其中N为大于1的整数,用于表示对索引元组进行排序的次数。\n[0100] 211、通过索引元组的排序规则,对第N索引定义数量的索引定义对应的索引元组同时进行排序,生成第N索引定义数量的索引定义对应的索引文件。\n[0101] 值得说明的是,当存在已建立索引的数据表时,上述步骤205至211中的每个索引定义对应的索引元组为每个索引定义对应的已建立索引数据表的索引元组和未建立索引数据表的索引元组。\n[0102] 当只存在未建立索引的数据表时,上述步骤205至211中的每个索引定义对应的索引元组为未建立索引的数据表对应每个索引定义的索引元组。\n[0103] 212、判断是否已经完成所有索引定义对应的索引文件的生成,若是,则执行下述步骤213,若否,则执行上述步骤206。\n[0104] 213、将已生成的索引文件对应的未建立索引的数据表标记为已建立索引状态。\n[0105] 结合图1、图2以及上述实施例,本发明实施例还可以提供另一种数据处理的方法,如图3所示,该方法包括:\n[0106] 301、读取未建立索引的数据表。\n[0107] 302、扫描未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息。\n[0108] 303、根据每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组。\n[0109] 304、通过索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0110] 305、将已生成的索引文件进行导出。\n[0111] 306、将已生成的索引文件对应的未建立索引的数据表标记为已建立索引状态。\n[0112] 值得说明的是,图3中以只存在未建立索引的数据表为例进行说明,当存在已建立索引的数据表时,在步骤303与304之间还需执行上述步骤204。\n[0113] 本发明实施例提供的数据处理的方法,首先读取未建立索引的数据表,扫描未建立索引的数据表中的所有的数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,进而根据获取到的内容生成每个索引定义对应的索引元组,最后通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,与现有技术中生成每个索引定义对应的索引文件都需要扫描一次所有的数据元组相比,本发明扫描一次所有的数据元组后就能够生成每个索引定义对应的索引元组,进而可以生成所有索引定义对应的索引文件,提高了为未建立索引的数据表创建索引的效率。\n[0114] 本发明实施例提供一种数据处理的装置,该装置应用于处理未建立索引的数据表,未建立索引的数据表包括至少一个数据元组,数据元组为未建立索引的数据表中的一行数据,未建立索引的数据表对应至少一个索引定义,索引定义包括用于创建索引元组的信息和索引元组的排序规则,索引元组为确定数据元组位置的信息,如图4所示,该装置包括:读取单元41,获取单元42,索引元组生成单元43,索引文件生成单元44。\n[0115] 读取单元41,用于读取未建立索引的数据表。\n[0116] 获取单元42,用于扫描读取单元41读取到的未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息。\n[0117] 索引元组生成单元43,用于根据获取单元42获取的每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组。\n[0118] 索引文件生成单元44,用于通过索引元组的排序规则,对索引元组生成单元43生成的每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0119] 进一步的,如图5所示,当还存在已建立索引的数据表时,其中,已建立索引的数据表与未建立索引的数据表相比,已建立索引的数据表还与索引文件关联,索引文件生成单元44包括:索引元组获取模块441,索引文件生成模块442。\n[0120] 索引元组获取模块441,用于当还存在已建立索引的数据表时,获取已建立索引的数据表中每个索引定义对应的索引元组。\n[0121] 索引文件生成模块442,用于当还存在已建立索引的数据表时,通过索引元组的排序规则,对每个索引定义对应的已建立索引的数据表的索引元组和未建立索引的数据表的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0122] 进一步的,如图6所示,该装置还包括:索引定义数量确定单元45。\n[0123] 索引文件生成单元44,还包括:导出模块443,内存空闲容量确定模块444,索引定义数量确定模块445。\n[0124] 索引定义数量确定单元45,用于确定内存空闲容量和每个索引定义对应的索引元组的大小;根据内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量。\n[0125] 索引文件生成模块442,还用于通过索引元组的排序规则,对索引定义数量确定单元45确定的第一索引定义数量的索引定义对应的索引元组同时进行排序,生成第一索引定义数量的索引定义对应的索引文件,并将生成的索引文件发送给导出模块443。\n[0126] 导出模块443,用于将已生成的索引文件进行导出。\n[0127] 内存空闲容量确定模块444,用于当导出模块443导出已生成的索引文件之后,重新确定内存空闲容量,得到更新后的内存空闲容量,并将更新后的内存空闲容量发送给索引定义数量确定模块445。\n[0128] 索引定义数量确定模块445,用于根据更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量,N为大于1的整数,用于表示对索引元组进行排序的次数。\n[0129] 索引文件生成模块442,还用于通过索引元组的排序规则,对第N索引定义数量的索引定义对应的索引元组同时进行排序,生成第N索引定义数量的索引定义对应的索引文件。\n[0130] 进一步的,作为本发明的另一实施例,索引文件生成模块442,还用于通过索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0131] 进一步的,作为本发明的另一实施例,如图6所示,该装置还包括:状态标记单元\n46,用于将已生成的索引文件对应的数据表标记为已建立索引状态。\n[0132] 本发明实施例提供的数据处理装置,首先读取单元读取未建立索引的数据表,获取单元扫描未建立索引的数据表中的所有的数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,进而索引元组生成单元根据获取到的内容生成每个索引定义对应的索引元组,最后索引文件生成单元通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,与现有技术中生成每个索引定义对应的索引文件都需要扫描一次所有的数据元组相比,本发明扫描一次所有的数据元组后就能够生成每个索引定义对应的索引元组,进而可以生成所有索引定义对应的索引文件,提高了为未建立索引的数据表创建索引的效率。\n[0133] 如图7所示,图7为该数据处理的装置的硬件结构示意图。其中,该装置可包括存储器71、发送器72、处理器73和总线74,其中,存储器71、发送器72、处理器73通过总线74通信连接。\n[0134] 存储器71可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器71可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在存储器71中,并由处理器73来执行。\n[0135] 发送器72用于装置与其他设备或通信网络(例如但不限于以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local Area Network,WLAN)等)之间的通信。\n[0136] 处理器73可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。\n[0137] 总线74可包括一通路,在装置各个部件(例如存储器71、发送器72和处理器73)之间传送信息。\n[0138] 应注意,尽管图7所示的硬件仅仅示出了存储器71、发送器72和处理器73以及总线\n74,但是在具体实现过程中,本领域的技术人员应当明白,该终端还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,还可包含实现其他功能的硬件器件。\n[0139] 具体的,图7所示的装置用于实现图4-图6实施例所示的装置时,该装置中的发送器72,用于将索引文件提供给处理器73。\n[0140] 处理器73,与存储器71和发送器72耦合,用于控制程序指令的执行,具体用于对数据表中的数据进行处理。\n[0141] 存储器71,用于存储未建立索引的数据表和已建立索引的数据表。\n[0142] 其中,未建立索引的数据表至少包括一个数据元组,数据元组为未建立索引的数据表中的一行数据,未建立索引的数据表对应至少一个索引定义,索引定义包括用于创建索引元组的信息和索引元组的排序规则,索引元组为确定数据元组位置的信息,已建立索引的数据表和未建立索引的数据表相比,已建立索引的数据表还与索引文件关联。\n[0143] 处理器73,用于读取未建立索引的数据表;扫描读取到的未建立索引的数据表中的所有数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息;进而根据每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,生成每个索引定义对应的索引元组。\n[0144] 进一步的,当存储器中存在已建立索引的数据表时,处理器73,还用于获取已建立索引的数据表中每个索引定义对应的索引元组,通过索引元组的排序规则,对每个索引定义对应的已建立索引的数据表的索引元组和未建立索引的数据表的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0145] 在本装置的一种可选构成方式中,处理器73,还用于确定内存空闲容量和每个索引定义对应的索引元组的大小;根据内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第一索引定义数量;通过索引元组的排序规则,对第一索引定义数量的索引定义对应的索引元组同时进行排序,生成第一索引定义数量的索引定义对应的索引文件。\n[0146] 发送器72,用于将已生成的索引文件进行导出。\n[0147] 存储器71,还用于存储发送器72导出的每个索引定义对应的索引文件。\n[0148] 当发送器72导出已生成的索引文件之后,处理器73,还用于重新确定内存空闲容量,得到更新后的内存空闲容量;根据更新后的内存空闲容量和每个索引定义对应的索引元组的大小,确定对索引元组排序的第N索引定义数量,N为大于1的整数,N用于表示对索引元组进行排序的次数;通过索引元组的排序规则,对第N索引定义数量的索引定义对应的索引元组同时进行排序,生成第N索引定义数量的索引定义对应的索引文件。\n[0149] 在本装置的另一种可选构成方式中,处理器73,还用于通过索引元组的排序规则,依次对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件。\n[0150] 进一步的,处理器73,还用于将已生成的索引文件对应的数据表标记为已建立索引状态。\n[0151] 本发明实施例提供的数据处理的装置,处理器读取存储器中未建立索引的数据表,扫描未建立索引的数据表中的所有的数据元组,通过用于创建索引元组的信息,获取每个索引定义对应的列信息和每个索引定义对应的列信息所属数据元组的位置信息,进而根据获取到的内容生成每个索引定义对应的索引元组,最后通过索引元组的排序规则,对每个索引定义对应的索引元组进行排序,生成每个索引定义对应的索引文件,与现有技术中生成每个索引定义对应的索引文件都需要扫描一次所有的数据元组相比,本发明扫描一次所有的数据元组后就能够生成每个索引定义对应的索引元组,进而可以生成所有索引定义对应的索引文件,提高了为未建立索引的数据表创建索引的效率。\n[0152] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。\n[0153] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。\n[0154] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。\n[0155] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。\n[0156] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。\n[0157] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
法律信息
- 2020-11-06
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 201410706742.6
申请日: 2014.11.27
授权公告日: 2018.01.09
- 2018-01-09
- 2015-04-22
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201410706742.6
申请日: 2014.11.27
- 2015-03-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-03-12
|
2013-11-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |