CN112085644A - 多列数据排序方法、装置、可读存储介质和电子设备 - Google Patents
多列数据排序方法、装置、可读存储介质和电子设备 Download PDFInfo
- Publication number
- CN112085644A CN112085644A CN201910506363.5A CN201910506363A CN112085644A CN 112085644 A CN112085644 A CN 112085644A CN 201910506363 A CN201910506363 A CN 201910506363A CN 112085644 A CN112085644 A CN 112085644A
- Authority
- CN
- China
- Prior art keywords
- sorting
- data table
- keys
- data
- key
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 21
- 238000012163 sequencing technique Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 239000012634 fragment Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Abstract
本发明公开了一种多列数据排序方法、装置、可读存储介质和电子设备,针对不同的数据表确定不同的组合方案,根据选取的组合方案将数据表分为若干列进行排序,减小排序过程的执行开销,同时利用图形处理器的高并发性,在数据分组之后对各个分组中数据进行并行排序。本申请实施例占用内存小,不会造成很大的内存开销,且执行效率高。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多列数据排序方法、装置、可读存储介质和电子设备。
背景技术
多列排序是对一张数据表中的多列数据进行排序的一种技术。目前的多列排序有两种方法。其中第一种方法是将数据表中的所有排序相关列结合成一个键进行排序,这种排序的缺点是一次性导入的数据过大,会造成很大的显存消耗,其次将所有列结合在一起排序的执行过程中判断语句的条件会非常多,尤其在基于图形处理器(GPU)的多键值排序中,会引起分支分歧,造成执行效率非常低下的问题。第二种方法为将数据表中的每一列作为一次输入依次进行排序,所述方法存在的问题是会引入一列索引数组,索引数组中的元素值用于表征数据表中元素在所述数据表中的位置。每当对一列数据进行排序之后都要改变一次索引数组中的数据值。由索引数组引起的额外开销也是不容小觑的。而且排序时只对一列数据进行排序,执行效率并不高。
发明内容
有鉴于此,本发明实施例提供一种多列数据排序方法、装置、可读存储介质和电子设备,旨在对数据表进行排序时将数据表分为若干列进行排序,使排序过程的执行开销最小。
第一方面,本发明实施例提供一种多列数据排序方法,包括:
根据输入的数据表确定组合方案,所述组合方案用于确定数据表的分割方式;
根据所述组合方案将所述数据表分割为至少两个键,其中每个键至少包含数据表中一列数据;
以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。
进一步地,所述根据输入的数据表确定组合方案包括:
确定候选组合方案,所述候选组合方案表征不同的数据表分割方式;
确定每一种候选组合方案的执行开销,所述执行开销用于表征对应的候选组合方案对所述输入的数据表的排序过程的效率;
根据所述执行开销确定组合方案。
进一步地,所述根据所述组合方案将所述数据表分割为至少两个键包括:
根据设定的优先级对输入的数据表中的列进行排序;
根据所述组合方案将所述排序后的数据表分割为至少两个键。
进一步地,以迭代方式按优先级顺序对所述数据表的所有键进行排序包括:
进入当前迭代,根据当前的排序信息,对当前需要进行排序的键进行排序;
根据排序结果更新排序信息;
进入下一次迭代。
进一步地,所述对当前需要进行排序的键进行排序包括:
根据上一次迭代过程的分组信息确定分组;
在每一个分组内对当前键进行排序并更新排序信息;
根据所述键中相邻行内的元素值关系更新分组信息。
进一步地,所述根据所述键中相邻行内的元素值关系更新分组信息包括:
根据所述键中相邻行内的元素值关系确定对比信息,所述对比信息用于表征每一行的元素值与上一行的元素值是否相同以及所述相邻行是否位于同一分组;
通过对所述对比信息进行前缀和操作确定分组信息。
进一步地,所述根据所述键中相邻行内的元素值关系确定对比信息包括:
响应于所述键中一行的元素值与上一行元素值完全相同且位于同一分组,将对应的对比信息记录为0;
响应于所述键中一行的元素值与上一行元素值不完全相同或位于不同分组,将对应的对比信息记录为1。
第二方面,本发明实施例提供一种多列数据排序装置,包括:
键组合模块,用于根据输入的数据表确定组合方案,所述组合方案用于确定数据表的分割方式。
数据表分割模块,用于根据所述组合方案将所述数据表分割为至少两个键,其中每个键至少包含数据表中一列数据。
排序模块,用于以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面中任一项所述的方法。
第四方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面中任一项所述的方法。
本发明实施例在对数据表进行排序时针对不同的数据表确定不同的组合方案,根据选取的组合方案将数据表分为若干列进行排序,减小排序过程的执行开销,同时利用图形处理器的高并发性,在数据分组之后对各个分组中数据进行并行排序。本申请实施例占用内存小,不会造成很大的内存开销,且执行效率高。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为一种异构计算机架构示意图;
图2为本发明实施例一种多列数据排序方法流程图;
图3为本发明实施例一个可选实现方式根据输入的数据表确定组合方案的流程图;
图4为本发明实施例一个可选实现方式对当前需要进行排序的键进行排序的流程图;
图5为本发明实施例一个可选实现方式分割数据表的示意图;
图6为本发明实施例一个可选实现方式对分割后数据表的第一键排序的示意图;
图7为本发明实施例一个可选实现方式对分割后数据表的第二键排序的示意图;
图8为本发明实施例一个可选实现方式对数据表中的一个键排序的示意图;
图9为本发明实施例另一个可选实现方式对数据表中的一个键的第一列排序的示意图;
图10为本发明实施例另一个可选实现方式对数据表中的一个键的第二列排序的示意图;
图11为本发明实施例一种多列数据排序装置的示意图;
图12为本发明实施例一种电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1为一种异构计算机架构示意图,如图1所示,所述异构计算机架构由中央处理器(CPU)和图形处理器(GPU)组成,所述中央处理器和图形处理器通过高速串行总线(PCIe-bus)连接。
具体地,所述中央处理器和所述图形处理器的运算核心包括控制单元(control)10、运算器(ALU)11、高速缓冲存储器(cache)12和动态随机存取存储器(DRAM)13。由图可见,中央处理器中的中的运算核心较少而图形处理器中的运算核心较多,使得所述图形处理器更为适合执行计算简单但并行性高的任务,而所述中央处理器更为适合执行计算复杂但并行性低的任务。在本发明实施例提供的多列数据排序方法过程中,可以通过中央处理器处理计算复杂且并行性较低的任务,例如确定组合候选方案、计算对应的执行开销等过程。同时可以通过图形处理器处理计算简单但并行性高的任务,例如控制多个线程以并行方式对分组后的键进行排序。
因此,本发明实施例在数据表的排序过程中通过图形处理器(GPU)实现数据的高并行处理,提高了排序的效率。同时针对不同的数据表确定不同的组合方案,根据选取的组合方案将数据表分为若干列进行排序,减小排序过程的执行开销,本申请实施例占用内存小,不会造成很大的内存开销,且执行效率高。
图2为本发明实施例一种多列数据排序方法流程图,如图2所示,所述多列数据排序方法包括:
步骤S100:根据输入的数据表确定组合方案。
具体地,所述组合方案用于确定数据表的分割方式。所述组合方案通过计算所述输入数据表在不同分割情况下的执行开销,确定所述执行开销最小的分割情况为组合方案。所述执行开销包括将所述数据表分割后的键载入图形处理器的开销以及对每个键内数据进行排序的开销,所述将键载入图形处理器的开销可根据所述键的存储层级,存储介质的访问速度,数据传输速度以及数据规模等多种软硬件参数进行估计。所述对每个键内数据进行排序的开销可根据所述数据表的规模,之前的键排序之后数据的分组数量,每个数据分组中数据量的分布,当前键中列的数量,以及计算单元计算性能等多种参数进行估计。
步骤S200:根据所述组合方案将所述数据表分割为至少两个键。
具体地,所述每个键至少包含所述数据表中一列数据。所述数据表分割后的键可以包含相同的数据量或不同的数据量。例如,当所述数据表包含4列数据时,可以将所述数据表分为两个包含2列数据的键、或一个包含2列数据和两个包含1列数据的键、或一个包含1列数据和一个包含3列数据的键。
进一步地,在根据所述组合方案将所述排序后的数据表分割为至少两个键之前,先根据设定的优先级对输入的数据表中的列进行排序。即对优先级高的列先排序,优先级低的列后排序。
步骤S300:以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成。
具体地,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。即以迭代方式按优先级顺序对所述数据表的所有键进行排序包括:进入当前迭代,根据当前的排序信息,对当前需要进行排序的键进行排序,根据排序结果更新排序信息,进入下一次迭代。所述排序信息通过创建索引数组记录,每一次迭代后更新所述索引数组内的排序信息,下一次的迭代基于上一次迭代后索引数组内记录的排序信息完成,即所述迭代过程中的键先根据上一次迭代记录的排序信号调整所述键中数据的位置后再进行本次迭代的排序,最后将本次迭代排序后的排序信息更新至所述索引数组内。
图3为本发明实施例一个可选实现方式根据输入的数据表确定组合方案的流程图。如图3所示,所述根据输入的数据表确定组合方案包括:
步骤S110:确定候选组合方案。
具体地,所述组合方案用于确定数据表的分割方式。根据输入数据表的大小不同,所述数据表对应的组合方案数量也不同。例如,所述数据表包含4列数据时,对应的组合方案包括将所述数据表分割为一个键、两个键、三个键和四个键的方案,其中所述将数据表分割为一个键的方案即对所述数据表不进行分割。分割为两个键的方案包括两种,一种分割为两个包含两列的键,另一种分割为一个包含一列的键和一个包含两列的键。分割为三个键的方案即将所述数据表分割为两个包含一列数据的键和一个包含两列数据的键。将所述数据表分割为四个键的方案即将所述数据表分割为四个包含一列数据的键。
进一步地,确定候选组合方案时还需要考虑到所述组合方案的可执行性。例如,某种组合方案执行过程中需要消耗的图形处理器全局内存大于所述图形处理器实际的存储内存,则需要将该方案排除。所述全局内存的消耗量可根据输入数据表的行数,所述数据表中数据值的数据类型以及执行过程中额外的数据开销进行估计。
步骤S120:确定每一种候选组合方案的执行开销。
具体地,所述执行开销用于表征对应的候选组合方案对所述输入的数据表的排序过程的效率。每一种所述组合方案的执行开销包括将所述数据表分割后的键载入图形处理器的开销以及对每个键内数据进行排序的开销。所述组合方案的执行开销计算公式如下:
其中所述Si表示组合方案,所述costi表示组合方案的执行开销,所述costioj为将第j个键包含的数据根据索引数组中记录的排序信息载入图形处理器的开销,所述开销可根据所述键的存储层级,存储介质的访问速度,数据传输速度以及数据规模等多种软硬件参数进行估计。所述costsortj为对第j个键内的所有数据进行排序产生的开销,所述开销可根据所述数据表的规模,根据之前的键排序之后数据的分组数量,每个数据分组中数据量的分布,当前键中列的数量,以及计算单元计算性能等多种参数进行估计。
步骤S130:根据所述执行开销确定组合方案。
具体地,在数据表对应的组合方案中确定一种执行开销最小的组合方案。在对包含k列的数据表进行排序时,可能存在2k-1种对应的组合方案。设定一个阈值,当所述k值小于阈值时,可以通过遍历搜索所有数据表对应的方案确定一种执行开销最小的组合方案;当k值大于所述阈值时,遍历搜索所有数据表对应的组合方案将带来巨大的计算开销。因此如果k值大于阈值时,采用如下方式确定组合方案:先将所述数据表中的每一列分割为一个键,每次对一个键进行排序,计算执行开销。之后从第二列开始,依次尝试将当前列加入到其前一列所在的组合并计算执行开销。例如,依次将第二与第一列进行组合,将第三个列加入第二个列所在的组合,所述组合包括第二列和第一列、第二列的组合。如果当前的组合的全局内存消耗量不超过所述处理器的实际存储内存,则计算当前组合的执行开销,当所述执行开销低于之前的最低执行开销,则将最低执行开销更新为当前方案的开销,并继续寻找可以组合的键,直到尝试将第k列加入到第k-1列所在的组合后,结束搜索并将找到的方案作为最优组合方案;当所述执行开销高于之前的最低执行开销,则不更新最低执行开销,并进行寻找可以组合的键,直到尝试将第k列加入到第k-1列所在的组合后,结束搜索并确定当前的最低执行开销对应的方案为组合方案。
所述方法可以通过输入的数据表选择执行开销最小的组合方案,降低了所述排序过程中的执行开销,提高了执行效率。
图4为本发明实施例一个可选实现方式对当前需要进行排序的键进行排序的流程图,如图4所示,所述对当前需要进行排序的键进行排序包括:
步骤S310:根据上一次迭代过程的分组信息确定分组。
具体地,所述分组信息通过创建分组数组记录,所述分组信息用于记录迭代过程完成后的分组情况,例如可以通过每一个分组对应的分组数组中的值相同来确定分组情况。每一次迭代过程的分组信息用于对下一次迭代过程中的键进行分组,通过分组将所述键分成多个数据分片,再对每一个分组内的数据分片进行排序。
进一步地,在通过分组将所述键分成多个数据分片后为所述数据分片分配线程,并行的对每一个分组内的数据分片进行排序。
步骤S320:在每一个分组内对当前键进行排序并更新排序信息。具体地,在对每一个分组内的数据分片进行排序的过程中可以选择多种排序方式,例如按全部按列的优先级顺序进行排序,当所述第一列排序完成后根据所述排序后的结果更新所述索引数组中的排序信息和分组信息,再进一步根据所述第一列的排序信息和分组信息对第二列进行排序,直到所有列完成排序后记录所述排序信息。或一次性针对当前键内的所有列按优先级进行排序,在排序完成后更新所述排序信息。假设当前键包括a,b,c三列并且均为升序排列,在排序过程中对第x行和第y行进行比较时规则如下,根据a,b,c列的优先级对所述第x行和第y进行排序。当ax<ay,ax=ay且bx<by或ax=ay、bx=by且cx<cy时将x排在y前面,否则将x排在y后面。相比逐列比较的方法,上述方法减少了排序信息的更新次数以及数据的移动次数,提高了排序效率。
步骤S330:根据所述键中相邻行内的元素值关系更新分组信息。
具体地,所述更新分组信息的过程包括:根据所述键中相邻行内的元素值关系确定对比信息,所述对比信息用于表征每一行的元素值与上一行的元素值是否相同以及所述相邻行是否位于同一分组。例如,响应于所述键中一行的元素值与上一行元素值完全相同且位于同一分组,将对应的对比信息记录为0,响应于所述键中一行的元素值与上一行元素值不完全相同或位于不同分组,将对应的对比信息记录为1。
进一步地,通过对所述对比信息进行前缀和操作确定分组信息。所述前缀和操作为将分组数组中每个元素值替换为所述元素值与之前所有元素值的和。其中所述分组信息中,通过相同的值确定所述数据分片内的分组,即所述分组信息中每组相同的值对应的所述数据分片中的行为一组。
所述方法通过记录分组信息对每一个所述键进行排序,避免了因所述输入数据表分割成键导致排序过程行的混淆。
图5为本发明实施例一个可选实现方式分割数据表的示意图,如图5所示,所述输入的数据表50包括4列数据。
具体地,所述数据表50对应的组合方案包括将所述数据表50分割为一个键、两个键、三个键和四个键的方案,其中所述将数据表50分割为一个键的方案即对所述数据表50不进行分割。分割为两个键的方案包括两种,一种分割为两个包含两列的键,另一种分割为一个包含一列的键和一个包含三列的键。分割为三个键的方案即将所述数据表50分割为两个包含一列数据的键和一个包含两列数据的键。将所述数据表50分割为四个键的方案即分割为四个包含一列数据的键。根据遍历搜索所有数据表对应的组合方案对应的执行开销,确定将所述数据表50分割为两个包含两列的第一键51和第二键52。
图6为本发明实施例一个可选实现方式对分割后数据表的第一键排序的示意图。图7为本发明实施例一个可选实现方式对分割后数据表的第二键排序的示意图。所述图6和图7中进行排序的键分别为经过所述图5分割后得到的第一键51和第二键52。
具体地,在对所述键进行排序时,以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。根据所述优先级顺序,所述第一键51和所述第二键52依次进行排序。如图6所示,在对所述第一键51和第二键52进行排序之前,所述索引数组中的初始排序信息为{0,1,2,3,4}。对所述第一键51先进行排序,并且将排序完成后的排序信息记录至所述索引数组60后,所述索引数组60更新为{1,3,0,2,4}。如图7所示,在所述第二键52排序时先根据所述第一键排序完成后更新的索引数组60{1,3,0,2,4}调整所述第二键52中的数据位置,再对调整位置后的第二键52进行排序,完成排序后将本次排序后的排序信息记录至所述索引数组60,所述索引数组60更新为{1,3,4,0,2}。当所述数据表还包括其他键时,所述更新后的索引数组还用于指示下一个键中的数据在经过前面两次排序后所在的位置。
图8为本发明实施例一个可选实现方式对数据表中的一个键排序的示意图,所述图8为对所述图7中所示的第二键52进行排序的示意图。在本实现方式中,对所述每个键进行排序时,一次性针对当前键内的所有列按优先级进行排序,在排序完成后更新所述排序信息。
具体地,以所述第二键52为例,所述第二键52的首先根据上一次迭代过程完成后记录的排序信息确定所述键中数据的位置,再根据上一次迭代过程完成后记录的分组信息确定分组。所述分组信息通过分组数组70记录,因所述分组数组70的分组信息为{0,0,1,1,1},所述键根据所述分组数组70中相同的值被分为包含两行元素值的第一分组520和包含三行元素值的第二分组521。分别对所述第一分组520和第二分组521进行排序。在本申请实施例中,为所述第一分组520和第二分组521各分配一组线程,并行对所述两个分组进行排序,在排序过程中对第x行和第y行进行比较时规则如下,当1x<1y或1x=1y且2x<2y时将x排在y前面,否则将x排在y后面。在排序后更新所述排序信息和所述分组信息。所述分组信息的确定方式为:先判断所述键中每行的数据值是否与上一行的数据值相同以及所述两行是否位于同一分组,若数据值相同且位于同一分组则在所述分组数组70中对应的位置标记为0,若数据值不同或位于不同分组则在所述分组数组70中对应的位置标记为1。在标记完成后所述分组数组70为{0,1,1,1,1}对所述分组数组70做前缀和操作,确定所述分组数组中的分组信息为{0,1,2,3,4}。所述前缀和操作为将分组数组中每个元素值替换为所述元素值与所述元素之前所有元素值的和。
所述方法减少了排序信息的更新次数以及数据的移动次数,提高了排序效率。
图9为本发明实施例另一个可选实现方式对数据表中的一个键的第一列排序的示意图。图10为本发明实施例另一个可选实现方式对数据表中的一个键的第二列排序的示意图。所述图9和图10分别为对所述图7中所示的第二键52的第一列和第二列进行排序的示意图。在本实现方式中,对所述每个键进行排序时,依次对所述键中的每一列进行排序。
具体地,以所述第二键52为例,所述图9为对所述第二键52中第一列进行排序的示意图。所述第二键52的第一列首先根据上一次迭代过程完成后记录的排序信息确定所述第一列中数据的位置,再根据上一次迭代过程完成后记录的分组信息确定分组。所述分组信息通过分组数组70记录,因所述分组数组70的分组信息为{0,0,1,1,1},所述第一列根据所述分组数组70中相同的值被分为包含两个元素值的第三分组5200和包含三个元素值的第四分组5201。分别对所述第三分组5200和第四分组5201进行排序。在本申请实施例中,为所述第三分组5200和第四分组5201各分配一组线程,并行对所述两个分组进行排序。在排序后更新所述排序信息和所述分组信息。所述分组信息的确定方式为:先判断所述第一列中每行的数据值是否与上一行的数据值相同,以及在排序前是否与上一行位于同一分组,若数据值相同且排序前位于同一分组则在所述分组数组70中对应的位置标记为0,若数据值不同或排序前位于不同分组内则在所述分组数组70中对应的位置标记为1。在标记完成后所述分组数组70为{0,0,1,0,1}对所述分组数组70做前缀和操作,确定所述分组数组中的分组信息为{0,0,1,1,2}。所述前缀和操作为将分组数组中每个元素值替换为所述元素值与所述元素之前所有元素值的和。
所述图10为对所述第二键52中第二列进行排序的示意图。所述第二键52的第二列首先根据第一列排序后更新的排序信息确定所述第二列中数据的位置,再根据所述分组信息确定分组。因所述分组数组70中的分组信息为{0,0,1,1,2},所述第二列根据所述分组数组70中相同的值被分为包含两个元素值的第五分组5210,包含两个元素值的第六分组5211和包含一个元素值的第七分组5212。在本申请实施例中,为所述第五分组5210、第六分组5211和第七分组5212各分配一组线程,并行对所述三个分组进行排序。与所述第一列的排序过程相同,所述第二列排序后确定并更新所述排序信息和所述分组信息。
所述多列数据排序方法通过记录分组信息对每一个所述键进行排序,避免了因所述输入数据表分割成键导致排序过程行的混淆。
图11为本发明实施例一种多列数据排序装置的示意图,如图11所示,所述多列数据排序装置包括:键组合模块110、数据表分割模块111和排序模块112。
具体地,所述键组合模块110用于根据输入的数据表确定组合方案,所述组合方案用于确定数据表的分割方式。所述数据表分割模块111用于根据所述组合方案将所述数据表分割为至少两个键,其中每个键至少包含数据表中一列数据。所述排序模块112用于以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。
所述装置在对数据表进行排序时针对不同的数据表确定不同的组合方案,根据选取的组合方案将数据表分为若干列进行排序,减小排序过程的执行开销,同时利用图形处理器的高并发性,在数据分组之后对各个分组中数据进行并行排序。本申请实施例占用内存小,不会造成很大的内存开销,且执行效率高。
图12为本发明实施例一种电子设备的示意图,如图12所示,在本实施例中,所述电子设备包括服务器、终端等。如图所示,所述电子设备包括:至少一个第一处理器122和一个第二处理器123组成的异构计算机架构,所述第一处理器例如可以是中央处理器(CPU),所述第二处理器例如可以是图形处理器(GPU);与至少一个所述异构计算机架构通信连接的存储器121;以及与存储介质通信连接的通信组件124,通信组件124在异构计算机架构的控制下接收和发送数据;其中,存储器121存储有可被至少一个异构计算机架构执行的指令,指令被至少一个异构计算机架构执行以实现上述实施例中的多列数据排序方法。
具体地,所述存储器121作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。异构计算机架构通过运行存储在存储器121中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述多列数据排序方法。
存储器121可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器121可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器121中,当被异构计算机架构执行时,执行上述任意方法实施例中的多列数据排序方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种多列数据排序方法,其特征在于,包括:
根据输入的数据表确定组合方案,所述组合方案用于确定数据表的分割方式;
根据所述组合方案将所述数据表分割为至少两个键,其中每个键至少包含数据表中一列数据;
以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。
2.如权利要求1所述的方法,其特征在于,所述根据输入的数据表确定组合方案包括:
确定候选组合方案,所述候选组合方案表征不同的数据表分割方式;
确定每一种候选组合方案的执行开销,所述执行开销用于表征对应的候选组合方案对所述输入的数据表的排序过程的效率;
根据所述执行开销确定组合方案。
3.如权利要求1所述的方法,其特征在于,所述根据所述组合方案将所述数据表分割为至少两个键包括:
根据设定的优先级对输入的数据表中的列进行排序;
根据所述组合方案将所述排序后的数据表分割为至少两个键。
4.如权利要求1所述的方法,其特征在于,以迭代方式按优先级顺序对所述数据表的所有键进行排序包括:
进入当前迭代,根据当前的排序信息,对当前需要进行排序的键进行排序;
根据排序结果更新排序信息;
进入下一次迭代。
5.如权利要求4所述的方法,其特征在于,所述对当前需要进行排序的键进行排序包括:
根据上一次迭代过程的分组信息确定分组;
在每一个分组内对当前键进行排序并更新排序信息;
根据所述键中相邻行内的元素值关系更新分组信息。
6.如权利要求5所述的方法,其特征在于,所述根据所述键中相邻行内的元素值关系更新分组信息包括:
根据所述键中相邻行内的元素值关系确定对比信息,所述对比信息用于表征每一行的元素值与上一行的元素值是否相同以及所述相邻行是否位于同一分组;
通过对所述对比信息进行前缀和操作确定分组信息。
7.如权利要求6所述的方法,其特征在于,所述根据所述键中相邻行内的元素值关系确定对比信息包括:
响应于所述键中一行的元素值与上一行元素值完全相同且位于同一分组,将对应的对比信息记录为0;
响应于所述键中一行的元素值与上一行元素值不完全相同或位于不同分组,将对应的对比信息记录为1。
8.一种多列数据排序装置,其特征在于,包括:
键组合模块,用于根据输入的数据表确定组合方案,所述组合方案用于确定数据表的分割方式;
数据表分割模块,用于根据所述组合方案将所述数据表分割为至少两个键,其中每个键至少包含数据表中一列数据;
排序模块,用于以迭代方式按优先级顺序对所述数据表的所有键进行排序直至所有的键排序完成,其中,在每次迭代中,以上一次迭代后更新的排序信息为基础根据当前迭代对应的键进行排序,所述排序信息用于指示数据表中的数据排序后所在的位置。
9.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910506363.5A CN112085644A (zh) | 2019-06-12 | 2019-06-12 | 多列数据排序方法、装置、可读存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910506363.5A CN112085644A (zh) | 2019-06-12 | 2019-06-12 | 多列数据排序方法、装置、可读存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112085644A true CN112085644A (zh) | 2020-12-15 |
Family
ID=73734470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910506363.5A Pending CN112085644A (zh) | 2019-06-12 | 2019-06-12 | 多列数据排序方法、装置、可读存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112085644A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047876A (zh) * | 2021-11-03 | 2022-02-15 | 河南星环众志信息科技有限公司 | 基于列式存储的数据排序方法、设备及存储介质 |
CN114297258A (zh) * | 2021-12-28 | 2022-04-08 | 上海右云信息技术有限公司 | 一种获取多列数据的综合排列数据的方法与设备 |
CN114372097A (zh) * | 2021-12-30 | 2022-04-19 | 北京达梦数据库技术有限公司 | 一种数据集列序列化的高效连接比对实现方法及装置 |
WO2022179023A1 (zh) * | 2021-02-25 | 2022-09-01 | 华为技术有限公司 | 一种排序装置及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750131A (zh) * | 2012-06-07 | 2012-10-24 | 中国科学院计算机网络信息中心 | 一种面向gpu的双调归并排序方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN103914462A (zh) * | 2012-12-31 | 2014-07-09 | 中国移动通信集团公司 | 一种数据存储和查询方法以及装置 |
CN104598485A (zh) * | 2013-11-01 | 2015-05-06 | 国际商业机器公司 | 处理数据库表的方法和设备 |
CN104636349A (zh) * | 2013-11-07 | 2015-05-20 | 阿里巴巴集团控股有限公司 | 一种索引数据压缩以及索引数据搜索的方法和设备 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
KR20160062663A (ko) * | 2014-11-25 | 2016-06-02 | 한국전자통신연구원 | 대립 유전자 카운팅 장치 및 방법 |
WO2016199808A1 (ja) * | 2015-06-08 | 2016-12-15 | 井上 克己 | メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 |
-
2019
- 2019-06-12 CN CN201910506363.5A patent/CN112085644A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750131A (zh) * | 2012-06-07 | 2012-10-24 | 中国科学院计算机网络信息中心 | 一种面向gpu的双调归并排序方法 |
CN103914462A (zh) * | 2012-12-31 | 2014-07-09 | 中国移动通信集团公司 | 一种数据存储和查询方法以及装置 |
CN104598485A (zh) * | 2013-11-01 | 2015-05-06 | 国际商业机器公司 | 处理数据库表的方法和设备 |
CN104636349A (zh) * | 2013-11-07 | 2015-05-20 | 阿里巴巴集团控股有限公司 | 一种索引数据压缩以及索引数据搜索的方法和设备 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
KR20160062663A (ko) * | 2014-11-25 | 2016-06-02 | 한국전자통신연구원 | 대립 유전자 카운팅 장치 및 방법 |
WO2016199808A1 (ja) * | 2015-06-08 | 2016-12-15 | 井上 克己 | メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
Non-Patent Citations (2)
Title |
---|
KE-SHI GE等: "基于GPU的密度峰值并行聚类算法(英文)", 《FRONTIERS OF INFORMATION TECHNOLOGY & ELECTRONIC ENGINEERING》, 3 July 2017 (2017-07-03) * |
丁祥武等: "集成CPU-GPU架构上的列存储连接优化技术研究", 《计算机科学》, 15 November 2016 (2016-11-15) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022179023A1 (zh) * | 2021-02-25 | 2022-09-01 | 华为技术有限公司 | 一种排序装置及方法 |
CN114047876A (zh) * | 2021-11-03 | 2022-02-15 | 河南星环众志信息科技有限公司 | 基于列式存储的数据排序方法、设备及存储介质 |
CN114047876B (zh) * | 2021-11-03 | 2022-11-18 | 河南星环众志信息科技有限公司 | 基于列式存储的数据排序方法、设备及存储介质 |
CN114297258A (zh) * | 2021-12-28 | 2022-04-08 | 上海右云信息技术有限公司 | 一种获取多列数据的综合排列数据的方法与设备 |
CN114372097A (zh) * | 2021-12-30 | 2022-04-19 | 北京达梦数据库技术有限公司 | 一种数据集列序列化的高效连接比对实现方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
US20100031003A1 (en) | Method and apparatus for partitioning and sorting a data set on a multi-processor system | |
JP6352958B2 (ja) | グラフインデックス探索装置及びグラフインデックス探索装置の動作方法 | |
US9977804B2 (en) | Index updates using parallel and hybrid execution | |
US7054994B2 (en) | Multiple-RAM CAM device and method therefor | |
CN102369511B (zh) | 资源迁移方法、装置及系统 | |
CN112074818A (zh) | 用于能够在区块链网络中访问过去的交易的方法及节点 | |
CN107908714A (zh) | 一种数据归并排序方法及装置 | |
CN112070652A (zh) | 数据压缩、解压方法、可读存储介质和电子设备 | |
CN111310115A (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
JP6812826B2 (ja) | 格納方法、格納装置及び格納プログラム | |
CN110008382B (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN110909085A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN103036796A (zh) | 路由信息更新方法及装置 | |
CN109684602B (zh) | 一种批处理方法和装置及计算机可读存储介质 | |
CN114816322A (zh) | Ssd的外部排序方法、装置和ssd存储器 | |
JP2022104892A (ja) | ロングテールキーワードの識別方法、キーワード検索方法及びコンピュータ機器 | |
CN112100446A (zh) | 搜索方法、可读存储介质和电子设备 | |
CN107169313A (zh) | Dna数据文件的读取方法及计算机可读存储介质 | |
CN106096022B (zh) | 多域网包分类规则的划分方法及装置 | |
JP2021018711A (ja) | タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム | |
CN116383290B (zh) | 一种数据泛化解析方法 | |
CN111752700B (zh) | 一种处理器上的硬件选择方法和装置 | |
CN115546009B (zh) | 非极大值抑制算法的优化方法、装置以及设备、存储介质 | |
CN114265556B (zh) | 一种数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |