数据排序方法和装置制造方法
【专利摘要】本发明公开了一种数据排序方法和装置,属于计算机领域。所述方法包括:将待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;再进行压缩,得到压缩数据段;将每次压缩后得到的压缩数据段写入所述存储介质;当所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;对所述合并数据段进行解压,获取排序数据;将所述排序数据写入所述存储介质。本发明通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘IO,节省了CPU的资源,提高了数据排序的性能。
【专利说明】数据排序方法和装置
【技术领域】
[0001]本发明涉及计算机领域,特别涉及一种数据排序方法和装置。
【背景技术】
[0002]排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据调整为“有序”的数据。现有技术通常通过外部排序来对数据进行处理,即将待排序的数据分批读入内存,在内存中采用内存排序方法分别对读入的待排序数据进行排序,得到初始合并段,将得到的初始合并段写入磁盘;当所有的初始合并段均写入磁盘后,每次从磁盘中读取多个初始合并段,将该多个初始合并段进行归并,得到中间合并段,将得到的中间合并段再次写入磁盘中,直到磁盘中所有的初始合并段被归并为中间合并段后,再每次从磁盘中读取多个中间合并段进行归并,经过多次归并后,得到一个有序数据。
[0003]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0004]在对数据的进行排序的过程中,需要进行多次归并,且待排序的数据量越大,磁盘10越大,排序耗时长,磁盘负担重。
【发明内容】
[0005]为了解决现有技术的问题,本发明实施例提供了一种数据排序方法和装置。所述技术方案如下:
[0006]第一方面,提供了一种数据排序方法,所述方法包括:
[0007]将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;
[0008]对所述有序数据段进行压缩,得到压缩数据段;
[0009]将每次压缩后得到的压缩数据段写入所述存储介质;
[0010]当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;
[0011]对所述合并数据段进行解压,获取排序数据;
[0012]将所述排序数据写入所述存储介质。
[0013]结合第一方面,在第一方面的第一种可能实现方式中,将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段包括:
[0014]将所述存储介质中的待排序数据分批读入所述内存;
[0015]每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。
[0016]结合第一方面,在第一方面的第二种可能实现方式中,对所述有序数据段进行压缩,得到压缩数据段包括:
[0017]获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;
[0018]根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。[0019]结合第一方面,在第一方面的第三种可能实现方式中,当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段包括:
[0020]当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段;
[0021]将所述中间数据段写入所述存储介质;
[0022]当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。
[0023]结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段包括:
[0024]获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;
[0025]获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和;
[0026]根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。
[0027]第二方面,提供了一种数据排序装置,所述装置包括:
[0028]数据读入模块,用于将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;
[0029]压缩模块,用于对所述有序数据段进行压缩,得到压缩数据段;
[0030]数据段写入模块,用于将每次压缩后得到的压缩数据段写入所述存储介质;
[0031]归并模块,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;
[0032]解压模块,用于对所述合并数据段进行解压,获取排序数据;
[0033]排序数据写入模块,用于将所述排序数据写入所述存储介质。
[0034]结合第二方面,在第二方面的第一种可能实现方式中,所述数据读入模块包括:
[0035]数据读入单元,用于将所述存储介质中的待排序数据分批读入所述内存;
[0036]排序单元,用于每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。
[0037]结合第二方面,在第二方面的第二种可能实现方式中,所述压缩模块包括:
[0038]出现次数获取单元,用于获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;
[0039]压缩数据段获取单元,用于根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。
[0040]结合第二方面,在第二方面的第三种可能实现方式中,所述归并模块包括:
[0041]归并单元,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段;[0042]中间数据段写入单元,用于将所述中间数据段写入所述存储介质;
[0043]合并数据段获取单元,用于当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。
[0044]结合第二方面的第三种可能实现方式,在第二方面的第四种可能实现方式中,所述归并单元包括:
[0045]出现次数获取子单元,用于获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;
[0046]总次数获取子单元,用于获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和;
[0047]中间数据段获取子单元,用于根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。
[0048]本发明实施例提供的技术方案带来的有益效果是:
[0049]本发明实施例提供的方法和装置,通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘10,节省了 CPU的资源,提高了数据排序的性能。
【专利附图】
【附图说明】
[0050]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051]图1是本发明实施例提供的一种数据排序方法的流程图;
[0052]图2a是本发明实施例提供的一种数据排序方法的流程图;
[0053]图2b是本发明实施例提供的两路归并示意图;
[0054]图3是本发明实施例提供的一种数据排序方法的流程图;
[0055]图4是本发明实施例提供的一种数据排序装置结构示意图。
【具体实施方式】
[0056]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057]图1是本发明实施例提供的一种数据排序方法的流程图,参见图1,所述方法包括:
[0058]101:将存储介质中的待排序数据分批读入内存,每读入一段数据,对该读入的数据进行排序,得到有序数据段;
[0059]102:对该有序数据段进行压缩,得到压缩数据段;
[0060]103:将每次压缩后得到的压缩数据段写入该存储介质;[0061]104:当该待排序数据所对应的所有压缩数据段均写入该存储介质时,将该存储介质中的压缩数据段分批读入该内存,并进行归并,得到合并数据段;
[0062]105:对该合并数据段进行解压,获取排序数据;
[0063]106:将该排序数据写入该存储介质。
[0064]本发明实施例提供的方法,通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘10,节省了 CPU的资源,提高了数据排序的性能。
[0065]可选地,将存储介质中的待排序数据分批读入内存,每读入一段数据,对该读入的数据进行排序,得到有序数据段包括:
[0066]将该存储介质中的待排序数据分批读入该内存;
[0067]每读入一段数据,使用预设内存排序算法,对该读入的数据进行排序,得到该有序数据段。
[0068]可选地,对该有序数据段进行压缩,得到压缩数据段包括:
[0069]获取该有序数据段中的数据以及每个数据在该有序数据段中的出现次数;
[0070]根据该有序数据段中的数据以及每个数据的出现次数,获取该压缩数据段。
[0071]可选地,当该待排序数据所对应的所有压缩数据段均写入该存储介质时,将该存储介质中的压缩数据段分批读入该内存,并进行归并,得到合并数据段包括:
[0072]当该待排序数据所对应的所有压缩数据段均写入该存储介质时,将该存储介质中的压缩数据段分批读入该内存,每读入预设数目的压缩数据段,对该预设数目的压缩数据段进行归并,得到中间数据段;
[0073]将该中间数据段写入该存储介质;
[0074]当该待排序数据对应的所有中间数据段均写入该存储介质时,将该所有中间数据段分批读入该内存,继续进行归并,直至得到该合并数据段。
[0075]可选地,每读入预设数目的压缩数据段,对该预设数目的压缩数据段进行归并,得到中间数据段包括:
[0076]获取该预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;
[0077]获取每个数据的总出现次数,该总出现次数为该每个数据在对应的压缩数据段中的出现次数之和;
[0078]根据该每个数据和该每个数据的总出现次数,获取该中间数据段。
[0079]上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再
--赘述。
[0080]图2a是本发明实施例提供的一种数据排序方法的流程图。本发明实施例应用于对包括重复数据的待排序数据进行排序的场景下,参见图2a,所述方法包括:
[0081]201:将存储介质中的待排序数据分批读入内存;
[0082]其中,该存储介质用于存储数据,可以为软盘、磁盘、光盘等。
[0083]为了进行数据排序,需要首先将待排序数据读入内存,而当该内存不足以容纳该待排序数据时,需要根据内存的大小,一次读入一部分的待排序数据到内存,也即是,将该待排序数据分批读入内存。[0084]图2b是本发明实施例提供的两路归并示意图。参见图2b,该待排序数据为xbayabczxybyzdzbyaxzbxd,当内存不足以容纳该待排序数据时,将该待排序数据分为xbayabczxyby和zdzbyaxzbxd,并依次读入内存,即首先将待排序数据xbayabczxyby读入内存中。
[0085]202:每读入一段数据,使用预设内存排序算法,对该读入的数据进行排序,得到有序数据段;
[0086]其中,该预设内存排序算法可以为快速排序算法、堆排序算法或归并排序算法,本发明实施例对此不做限定。
[0087]具体地,每读入一段数据,使用该预设内存排序算法,对该读入的数据进行调整,将该读入的数据调整为一段有序的数据,即得到该有序数据段。
[0088]参见图2b,对该读入内存的待排序数据xbayabczxyby进行快速排序,得到有序数据段 aabbbcxxyyyz。
[0089]203:对该有序数据段进行压缩,得到压缩数据段;
[0090]可选地,该步骤203具体包括:
[0091](1)获取该有序数据段中的数据以及每个数据在该有序数据段中的出现次数;
[0092]本发明实施例应用于该待排序数据包括重复数据的场景下,则在获取该有序数据段中的数据的同时,获取数据在该有序数据段中的出现次数。
[0093]参见图2b,该有序数据段aabbbcxxyyyz包括数据a、b、c、x、y、z,且数据a、b、c、x、y、z在该有序数据段中的出现次数分别为2、3、1、2、3、1。
[0094](2)根据该有序数据段中的数据以及每个数据的出现次数,获取该压缩数据段。
[0095]具体地,将该压缩数据段以该有序数据段中的数据与该数据的出现次数对应表
/j、l Ο
[0096]参见图2b,将该有序数据段aabbbcxxyyyz表示为a2b3clx2y3zl。
[0097]优选地,该步骤203具体包括:对该有序数据段进行RLE (Run-Length-Encoding,行程编码)压缩,得到该压缩数据段。
[0098]其中,RLE是一种统计编码,该编码属于无损压缩编码,RLE压缩的基本原理是:将数据序列中的数据,用单个数据和该数据在该数据序列中的出现次数表示,从而实现数据的压缩,算法简单,压缩速度快。
[0099]204:将每次压缩后得到的压缩数据段写入该存储介质;
[0100]在本发明实施例中,将压缩后得到的压缩数据段写入该存储介质,降低了磁盘10,提供了数据排序性能。
[0101]205:判断该存储介质中是否还存在待排序数据;如果是,执行步骤201,如果否,执行步骤206 ;
[0102]具体地,该存储介质中的待排序数据较大,当该内存不足以容纳该存储介质中的所有待排序数据时,根据该内存的大小,将待排序数据分批读入该内存,并判断该存储介质中是否还存在未读入内存的待排序数据,如果是,继续执行步骤201,将该存储介质中未读入内存的待排序数据读入该内存。
[0103]参见图2b,根据内存的大小将待排序数据xbayabczxybyzdzbyaxzbxd,分为xbayabczxyby和zdzbyaxzbxd依次读入内存,首先将xbayabczxyby读入内存后,并通过执行步骤202-步骤205,将xbayabczxyby对应的压缩数据段写入该存储介质,则判断该存储介质中是否还存在待排序数据,此时,确定该存储介质中还存在待排序数据zdzbyaxzbxd,则将待排序数据zdzbyaxzbxd读入该内存。
[0104]206:将该存储介质中的压缩数据段分批读入该内存;
[0105]在本发明实施例中,当该存储介质中不存在未读入内存的待排序数据时,将该存储介质中的压缩数据段分批读入该内存。
[0106]207:每读入预设数目的压缩数据段,获取该预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;
[0107]具体地,对于一个压缩数据段,获取该压缩数据段中的每个数据,并获取每个数据在该压缩数据段中的出现次数。
[0108]其中,该预设数目可以预先设定,或根据该压缩数据段的总数目确定,本发明实施例对此不做限定。
[0109]参见图2b,对于待排序数据xbayabczxybyzdzbyaxzbxd,得到的压缩数据段包括a2b3clx2y3zl和alb2d2x2ylz3,则在第一个数据段中,数据a、b、c、x、y、z的出现次数分别为2、3、1、2、3、1,在第二个数据段中,数据a、b、d、x、y、z的出现次数分别为1、2、2、2、1、3。
[0110]208:获取每个数据的总出现次数,该总出现次数为该每个数据在对应的压缩数据段中的出现次数之和;
[0111]在本发明实施例中,该总出现次数用于表示数据在该预设数目的压缩数据段中的总出现次数。具体地,对于该预设数目的压缩数据段,获取该预设数目的压缩数据段中的每个数据;当该预设数目的压缩数据段中的任两个压缩数据段中包括相同的数据时,获取该数据在该两个压缩数据段中的出现次数之和,进而获取该数据在该预设数目的每个压缩数据段的出现次数之和,将得到的出现次数之和确定为该数据的总出现次数;对于该预设数目的压缩数据段中的任两个压缩数据段中不同的数据,将该数据在对应的压缩数据段中的出现次数确定为该数据的总出现次数。
[0112]参见图2b,在第一个数据段中,数据a、b、C、x、y、z的出现次数分别为2、3、1、2、3、1,在第二个数据段中,数据a、b、d、x、y、z的出现次数分别为1、2、2、2、1、3,将相同的数据和对应的总出现次数组合,即数据a、b、x、y、z的总出现次数分别为3、5、4、4、4,将不同的数据和对应的出现次数分别组合,即数据c、d的总出现次数还是1、2。
[0113]209:根据该每个数据和该每个数据的总出现次数,获取该中间数据段;
[0114]具体地,将该中间数据段以每个数据与该数据的总出现次数对应表示。
[0115]在步骤207-209中,对该预设数目的压缩数据段进行归并排序,得到中间数据段。优选地,对该压缩数据段进行N次归并排序,即将N个压缩数据段归并为一个有序数据段。进一步优选地,采用两路归并算法对压缩数据段进行归并,即N=2,也即是该预设数目为2。
[0116]参见图2b,根据数据a、b、C、d、x、y、z的总出现次数,得到中间数据段a3b5cld2x4y4z40
[0117]210:将该中间数据段写入该存储介质;
[0118]211:判断该存储介质中是否还存在未读入内存的压缩数据段,如果是,执行步骤206,如果否,执行步骤212 ;
[0119]212:将该所有中间数据段分批读入该内存,继续进行归并,直至得到该合并数据段;
[0120]在本发明实施例中,当该存储介质中不存在未读入内存的压缩数据段时,将该存储介质中的所有中间数据段分批读入该内存。在读入内存后的归并过程与压缩数据段归并为中间数据段的过程类似,在此不再赘述。
[0121]其中,该合并数据段为一个有序的数据段,即对压缩数据段逐趟进行归并,直至得到一个有序的数据段为止。
[0122]参见图2b,该中间数据段a3b5cld2x4y4z4为一个有序的数据段,且不存在其他数据段,则将该数据段a3b5cld2X4y4z4确定为该合并数据段。
[0123]本发明实施例以采用两路归并算法对压缩数据段进行归并为例进行说明,则在对中间数据段进行归并时,同样是依次将两个中间数据段归并为一个数据段,并写入存储介质,当将所有的中间数据段归并且写入存储介质时,继续进行两路归并,直至归并为一个有序的数据段,即为该合并数据段。
[0124]在本发明实施例中,在对压缩数据段进行归并时,可以直接进行数据段的归并,而无需进行解压,避免了增加占用CPU的资源。
[0125]213:对该合并数据段进行解压,获取排序数据;
[0126]解压过程为压缩过程的逆过程,具体为:根据该合并数据段中的数据的出现次数,将该合并数据段以重复的数据表示,得到排序数据,其中,数据重复的次数即为数据的出现次数。
[0127]参见图2,对合并数据段a3b5cld2X4y4z4进行解压,得到排序数据aaabbbbbcddxxxxyyyyzzzz0
[0128]214:将该排序数据写入该存储介质。
[0129]本发明实施例提供的方法,通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘10,节省了 CPU的资源,提高了数据排序的性能。
[0130]图3是本发明实施例提供的一种数据排序方法的流程图,本发明实施例应用于对数据库中的数据进行排序的场景下,参见图3,所述方法包括:
[0131]301:将存储介质中的待排序数据库数据分批读入内存;
[0132]具体地,当数据库的每个连接所分配的用于排序的内存不足以容纳该待排序数据时,将该待排序数据库数据分批读入该内存。
[0133]数据库中的很多操作都需要对数据进行排序,如聚集操作的一种实现方法为排序聚集,而数据库中的MAX、MIN、SUM、COUNT等基本功能都是通过聚集操作实现的,即数据库中的很多基本功能都需要对数据进行排序;又如,Merge Join操作是表连接的一种实现方法,需要内表和外表均为有序表,即Mergejoin操作也需要对数据进行排序。进一步地,由于数据库是高并发系统,为每个连接所分配的用于排序的内存一般不会太大(如,数据库Postgres默认只有1MB),则对于大数据量的数据排序操作需要使用存储介质进行数据排序。
[0134]302:每读入一段数据库数据,使用预设内存排序算法,对该读入的数据库数据进行排序,得到有序数据段;
[0135]具体地,每读入一段数据库数据,选择该数据库数据中的多列,并指定按照其中一列,对该数据库数据进行排序,如采用select......0rder by......语句,实现对读入内存的待
排序数据库数据的排序。
[0136]例如,米用语句:selectname,age,address,phone from order by age对数据库数据中的name、age、address、phone进行查询,并按照age从小到大的顺序进行排序。
[0137]如,表1是本发明实施例提供读入内存的待排序数据库数据,该读入内存的待排序数据库数据包括rowid, name, age, address, phone ;其中rowid是唯一行定位标识。
[0138]表1
【权利要求】
1.一种数据排序方法,其特征在于,所述方法包括: 将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段; 对所述有序数据段进行压缩,得到压缩数据段; 将每次压缩后得到的压缩数据段写入所述存储介质; 当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段; 对所述合并数据段进行解压,获取排序数据; 将所述排序数据写入所述存储介质。
2.根据权利要求1所述的方法,其特征在于,将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段包括: 将所述存储介质中的待排序数据分批读入所述内存; 每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。
3.根据权利要求1所述的方法,其特征在于,对所述有序数据段进行压缩,得到压缩数据段包括: 获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;· 根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。
4.根据权利要求1所述的方法,其特征在于,当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段包括: 当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段; 将所述中间数据段写入所述存储介质; 当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。
5.根据权利要求4所述的方法,其特征在于,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段包括: 获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数; 获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和; 根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。
6.一种数据排序装置,其特征在于,所述装置包括: 数据读入模块,用于将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段; 压缩模块,用于对所述有序数据段进行压缩,得到压缩数据段; 数据段写入模块,用于将每次压缩后得到的压缩数据段写入所述存储介质;归并模块,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段; 解压模块,用于对所述合并数据段进行解压,获取排序数据; 排序数据写入模块,用于将所述排序数据写入所述存储介质。
7.根据权利要求6所述的装置,其特征在于,所述数据读入模块包括: 数据读入单元,用于将所述存储介质中的待排序数据分批读入所述内存; 排序单元,用于每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。
8.根据权利要求6所述的装置,其特征在于,所述压缩模块包括: 出现次数获取单元,用于获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数; 压缩数据段获取单元,用于根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。
9.根据权利要求6所述的 装置,其特征在于,所述归并模块包括: 归并单元,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段; 中间数据段写入单元,用于将所述中间数据段写入所述存储介质; 合并数据段获取单元,用于当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。
10.根据权利要求9所述的装置,其特征在于,所述归并单元包括: 出现次数获取子单元,用于获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数; 总次数获取子单元,用于获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和; 中间数据段获取子单元,用于根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。
【文档编号】G06F17/30GK103577559SQ201310505217
【公开日】2014年2月12日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】王传廷, 刘辉军 申请人:华为技术有限公司