一种用于大数据的排序方法及系统的制作方法

文档序号:6548961阅读:153来源:国知局
一种用于大数据的排序方法及系统的制作方法
【专利摘要】一种用于大数据的排序方法和系统。所述方法包括如下步骤:对每个数据建立索引,其中每个索引对应所述数据的至少一个特征;建立数组,并从所有数据选取预设目标排序数量的数据的索引放入所述数组;将剩余数据的预设排序的特征与所述数组中的数据的预设排序的特征进行比较,依据预设排序条件和比较结果确定是否替换所述数组中已存的索引;当所有数据比较完毕后,根据当前所述数组中的索引查找所述索引对应的数据;对查找到的数据根据所述预设排序规则进行排序。本发明降低了排序的耗时和复杂度,提高了排序效率。
【专利说明】一种用于大数据的排序方法及系统

【技术领域】
[0001]本发明涉及数据统计和处理【技术领域】,特别涉及一种用于大数据的排序方法和系统。

【背景技术】
[0002]排序是一种常见的操作,对于一些应用来说可能需要将大量数据,根据某种特点进行TopN排序,并给出对应TopN的一系列数据,因此需要一个良好的方法,保证准确性和高效性。
[0003]现有技术的排序方法通常是使用现有的排序算法,例如冒泡排序,快速排序,插入排序等。现有的这些排序算法,对于数据量较小时效果比较好。但是,当数据量比较大时,排序的效率则相对较低。例如,当有100万个数据时,仅需获得topN(比如,N = 10)的排序,使用现有方法必须对100万个数据全进行排序,整个工作显然是耗时且复杂的。


【发明内容】

[0004]本发明的目的是提供一种用于大数据的排序方法,该方法降低了排序的耗时和复杂度,提高了排序效率。
[0005]为实现上述目的,本发明实施方式提供一种用于大数据的排序方法,包括如下步骤:
[0006]对每个数据建立索引,其中每个索引对应数据的至少一个特征;
[0007]建立数组,并从所有数据选取预设目标排序数量的数据的索引放入所述数组;
[0008]将剩余数据的预设排序的特征与所述数组中的数据的预设排序的特征进行比较,依据预设排序条件和比较结果确定是否替换所述数组中已存的索引;
[0009]当所有数据比较完毕后,根据当前所述数组中的索引查找所述索引对应的数据;
[0010]对查找到的数据根据所述预设排序规则进行排序。
[0011]根据本发明的一个方面,所述数组的大小等于或大于所述预设目标排序数量。
[0012]根据本发明的另一个方面,所述预设排序条件为所述数组中索引对应的每个数据均大于或小于所述数组外的每个剩余数据;所述预设排序规则为升序排序或降序排序。
[0013]根据本发明的又一方面,所述特征至少包括用户名、使用流量、登录时长和登录设备。
[0014]根据本发明的再一方面,在对查找到的数据根据所述预设排序规则进行排序之后,还包括如下步骤:根据排序后数据的索引,获取符合所述预设排序规则的每个数据的至少一个特征。
[0015]根据本法实施方式的用于大数据的排序方法,在执行TopN排序时,不需要对所有数据进行排序,仅仅是对N+1个数据进行简单的比较大小的操作,而不是相对复杂的排序操作。当数据量较大时,本发明可以降低排序的耗时和复杂度,提高了排序效率,达到高效的找到TopN的目的。
[0016]本发明的另一个目的是提供一种用于大数据的排序系统,该系统降低了排序的耗时和复杂度,提高了排序效率。
[0017]为实现上述目的,本发明实施方式提供一种用于大数据的排序系统,包括:索引建立模块,用于对每个数据建立索引,其中每个索引对应数据的至少一个特征;数组建立模块,所述数据建立模块连接至所述索引建立模块,用于建立数组,并从所有数据选取预设目标排序数量的数据的索引放入所述数组;特征比较模块,所述特征比较模块连接至所述数组建立模块,用于将剩余数据的预设排序的特征与所述数组中的数据的预设排序的特征进行比较;索引确定模块,所述索引确定模块连接至所述特征比较模块,用于依据预设排序条件和比较结果确定是否替换所述数组中已存的索引;数据查找模块,所述数据查找模块连接至所述索引确定模块,用于当所有数据比较完毕后,根据当前所述数组中的索引查找所述索引对应的数据;数据排序模块,所述数据排序模块连接至所述数据查找模块,用于对查找到的数据根据所述预设排序规则进行排序。
[0018]根据本发明的一个方面,所述数组的大小等于或大于所述预设目标排序数量。
[0019]根据本发明的另一个方面,所述预设排序条件为所述数组中索引对应的每个数据均大于或小于所述数组外的每个剩余数据;所述预设排序规则为升序排序或降序排序。
[0020]根据本发明的又一方面,所述特征至少包括用户名、使用流量、登录时长和登录设备。
[0021]根据本发明的再一方面,所述数据排序模块还用于根据排序后数据的索引,获取符合所述预设排序规则的每个数据的至少一个特征。
[0022]根据本发明实施方式的用于大数据的排序系统,在执行TopN排序时,不需要对所有数据进行排序,仅仅是对N+1个数据进行简单的比较大小的操作,而不是相对复杂的排序操作。当数据量较大时,本发明可以降低排序的耗时和复杂度,提高了排序效率,达到高效的找到TopN的目的。

【专利附图】

【附图说明】
[0023]图1是根据本发明第一实施方式的用于大数据的排序方法的流程图;
[0024]图2示意性地示出索引-特征结构;
[0025]图3是根据本发明第二实施方式的用于大数据的排序方法的流程图;
[0026]图4是根据本发明实施方式的用于大数据的排序系统的结构图。

【具体实施方式】
[0027]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0028]通常在统计用户或者APP应用的流量时,所统计的流量信息包括:数据量的大小(使用流量)、用户名以及使用的APP软件等。排序时需要从上述这些流量信息中,找到真正的数据量来进行排序。为此,本发明引入了索引,通过索引查找到流量信息,进而也就查找到具体的数据量,例如:用户名或使用的APP软件。图1是根据本发明第一实施方式的用于大数据的排序方法的流程图。本发明提出的用于大数据的排序方法实际上仅仅是需要TopN的数据,只要找到索引即可,很多操作都是用索引实现,而不需要将所有数据(如,100万个数据)都排序,从而降低了排序的耗时和复杂度,提高了排序效率。
[0029]如图1所示,本发明第一实施方式的用于大数据的排序方法,包括如下步骤:
[0030]步骤SI,对每个数据建立索引。数据类型不做限制,例如:流量数据、时间数据等均可。
[0031]其中,每个索引对应数据的至少一个特征。图2示意性地示出索引-特征结构。如图2所示,索引可以对应数据的三个特征,特征1、特征2、特征3等。优选的,以流量数据为例,数据的特征可以至少包括用户名、使用流量、登录时长和登录设备。
[0032]需要说明的是,此处对特征的数量和内容的举例,仅是出于示例的目的,其他示例在此不再赘述。
[0033]步骤S2,建立数组,并从所有数据选取预设目标排序数量的数据的索引放入数组。
[0034]在本发明的实施方式中,数组的大小等于或大于所述预设目标排序数量。
[0035]换言之,如果要对所有数据进行针对某个特征的TopN排序,即对数据某个特征的前N个数据进行排序,则N为预设目标排序数量。建立的数组的大小至少为N。从所有的P个数据中选取N个数据的索引放入到数组中,其中N小于P。并且,上述放入数组的N个数据可以为随机选取的N个,并非经过排序完成的N个数据。
[0036]步骤S3,将剩余数据的预设排序的特征与数组中的数据的预设排序的特征进行比较,依据预设排序条件和比较结果确定是否替换数组中已存的索引。其中,预设排序条件为数组中索引对应的每个数据均大于或小于数组外的每个剩余数据。
[0037]以流量数据按使用流量进行降序排列为例,选取使用流量最多的前N个数据。
[0038]具体地,从所有P个流量数据中,取出下一个流量数据,将其对应的使用流量和数组中已存的索引对应的流量数据的使用流量进行大小比较。如果判断新取出的流量数据的使用流量最小,则继续重复该步骤,取出下一个流量数据进行比较。如果新取出的流量数据的使用流量不是最小,则用该流量数据的索引替换数组中最小使用流量对应流量数据的索引。
[0039]以100万个数据为例,预设排序条件为数组中索引对应的每个数据均大于或小于数组外的每个剩余数据。具体地,从100万个数据中选取10个最大的数据。实际上不需要将100万个数据都从大到小排序,只需要将最大的10个数据找出来,将其索引存储到数组中即可。
[0040]步骤S4,当所有数据比较完毕后,根据当前数组中的索引查找索引对应的数据。
[0041]需要说明的是,本步骤中查找到的数据虽然满足预设排序条件,S卩比数组外的其他数据大(或者小),但是这些数据本身是没有经过排序的。
[0042]步骤S5,对查找到的数据根据预设排序规则进行排序。
[0043]将步骤S4中获取的符合预设排序条件但无序的数据按照预设排序规则进行排序。其中,预设排序规则为升序排序或降序排序。由此,需要这种排序过程涉及的数据量较小,从而可以降低排序的耗时和复杂度,提高了排序效率。此外,由于排序过程涉及的数据量较小,因此各种排序算法的性能没有明显差距,即可以选用任意排序算法,不限于上述升序或降序方式。
[0044]在本发明的实施方式中,在步骤S5之后,还包括如下步骤:根据排序后数据的索弓丨,获取符合预设排序规则的每个数据的至少一个特征。例如,根据排序后的索引,可以获取排名前N的数据对应的使用用户的用户名及使用的流量值等特征。图3是根据本发明第二实施方式的用于大数据的排序方法的流程图。举例来说明本方法,对于某个网络设备,当前有100万人登录,管理员要查看使用流量最多的前10个用户的用户名以及流量统计。
[0045]步骤S11,建立一个大小为N的数组。其中,N = 10。即,建立一个大小为10的数组。
[0046]步骤S12,从P个流量数据中,取出N个数据的索引放到数组中。其中,P =1000000,N = 10。
[0047]从100万个流量数据中,取出10个数据的索引,放到数组中。这里使用的是数据的索引,通过该索引可以找到流量数据也能找到用户名等信息。
[0048]步骤S13,从P个流量数据中,取出下一个数据,将其预设排序的特征(如使用流量)和数组中的数据的预设排序的特征进行大小比较。
[0049]从100万个流量数据中,取出下一个数据,将其预设排序的特征和数组中的数据的预设排序的特征进行大小比较,并确定是否替换数据中的索引记录。
[0050]步骤S14,判断新取出的数据的预设排序的特征是否最小,如果是,则执行步骤S13,否则执行步骤S15。
[0051]步骤S15,去掉数组中预设排序的特征最小的数据的索引,替换为新取出的数据的索引。
[0052]步骤S16,判断是否所有数据都进行了大小比较,如果是,则执行步骤S17,否则执行步骤S13。
[0053]步骤S17,选用任意的排序算法将这N个数据排序,得到top N的流量大小数据。
[0054]数组中记录了 10个索引,这10个索引对应了一系列数据,其中对应的流量数据的使用流量是最大的10个。选用任意的排序算法将这10个数据排序就可以得到toplO的使用流量的数据。例如,采用升序或降序方式对上述10个数据进行排序。
[0055]步骤S18,访问数据,根据索引可以查找到具体的用户名和流量大小。
[0056]本发明实施方式提供的用于大数据的排序方法,在执行TopN排序时,不需要对所有数据进行排序,仅仅是对N+1个数据进行简单的比较大小的操作,而不是相对复杂的排序操作。当数据量较大时,本发明可以降低排序的耗时和复杂度,提高了排序效率,达到高效的找到TopN的目的。
[0057]图4是根据本发明实施方式的用于大数据的排序系统的结构图。
[0058]如图4所示,本发明实施方式提供的用于大数据的排序系统,包括:索引建立模块
1、数组建立模块2、特征比较模块3、索引确定模块4、数据查找模块5和数据排序模块6。
[0059]具体来说,索引建立模块I用于对每个数据建立索引,例如:流量数据、时间数据等均可。
[0060]其中,每个索引对应所述数据的至少一个特征。优选的,以流量数据为例,数据的特征可以至少包括用户名、使用流量、登录时长和登录设备。需要说明的是,此处对特征的数量和内容的举例,仅是出于示例的目的,其他示例在此不再赘述。
[0061 ] 数组建立模块2连接至索引建立模块I,用于建立数组,并从所有数据选取预设目标排序数量的数据的索引放入数组。
[0062]在本发明的实施方式中,数组的大小等于或大于所述预设目标排序数量。
[0063]换言之,如果要对所有数据进行Top N排序,即对数据某个特征的前N个数据进行排序,则N为预设目标排序数量。建立的数组的大小至少为N。数组建立模块2从所有的P个数据中选取N个数据的索引放入到数组中,其中N小于P。并且,上述放入数组的N个数据可以为随机选取的N个,并非经过排序完成的N个数据。
[0064]特征比较模块3连接至数组建立模块2,用于将剩余数据的预设排序的特征与数组中的数据的预设排序的特征进行比较。
[0065]索引确定模块4连接至特征比较模块3,用于依据预设排序条件和比较结果确定是否替换所述数组中已存的索引。其中,预设排序条件为所述数组中索引对应的每个数据均大于或小于数组外的每个剩余数据。
[0066]以流量数据按使用流量进行降序排列为例,选取使用流量最多的前N个数据。
[0067]具体地,特征比较模块3从所有P个流量数据中,取出下一个流量数据,将其对应的使用流量和数组中已存的索引对应的流量数据的使用流量进行大小比较。如果判断新取出的流量数据的使用流量最小,则继续重复该步骤,取出下一个流量数据进行比较。如果新取出的流量数据的使用流量不是最小,则索引确定模块4用该流量数据的索引替换数组中最小使用流量对应流量数据的索引。数据查找模块5连接至索引确定模块4,用于当所有数据比较完毕后,根据当前数组中的索引查找索引对应的数据。
[0068]以100万个数据为例,预设排序条件为数组中索引对应的每个数据均大于或小于数组外的每个剩余数据。具体地,从100万个数据中选取10个最大的数据。实际上不需要将100万个数据都从大到小排序,只需要数据查找模块5将最大的10个数据找出来,将其索引存储到数组中即可。
[0069]需要说明的是,数据查找模块5查找到的数据虽然满足预设排序条件,即比数组外的其他数据大(或者小),但是这些数据本身是没有经过排序的。
[0070]数据排序模块6连接至数据查找模块5,用于对查找到的数据根据预设排序规则进行排序。其中,预设排序规则为升序排序或降序排序。
[0071]数据排序模块6将获取的符合预设排序条件但无序的数据按照预设排序规则进行排序。其中,预设排序规则为升序排序或降序排序。由此,需要这种排序过程涉及的数据量较小,从而可以降低排序的耗时和复杂度,提高了排序效率。此外,由于排序过程涉及的数据量较小,因此各种排序算法的性能没有明显差距,即可以选用任意排序算法,不限于上述升序或降序方式。
[0072]在本发明的实施方式中,数据排序模块6还用于根据排序后数据的索引,获取符合预设排序规则的每个数据的至少一个特征。例如,数据排序模块6根据排序后的索引,可以获取排名前N的数据对应的使用用户的用户名及使用的流量值等特征。
[0073]本发明实施方式提供的用于大数据的排序系统,在执行TopN排序时,不需要对所有数据进行排序,仅仅是对N+1个数据进行简单的比较大小的操作,而不是相对复杂的排序操作。当数据量较大时,本发明可以降低排序的耗时和复杂度,提高了排序效率,达到高效的找到TopN的目的。
[0074]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【权利要求】
1.一种用于大数据的排序方法,包括如下步骤: 对每个数据建立索引,其中每个索引对应数据的至少一个特征; 建立数组,并从所有数据选取预设目标排序数量的数据的索引放入所述数组; 将剩余数据的预设排序的特征与所述数组中的数据的预设排序的特征进行比较,依据预设排序条件和比较结果确定是否替换所述数组中已存的索引; 当所有数据比较完毕后,根据当前所述数组中的索引查找所述索引对应的数据;以及 对查找到的数据根据所述预设排序规则进行排序。
2.根据权利要求1所述的用于大数据的排序方法,其中,所述数组的大小等于或大于所述预设目标排序数量。
3.根据权利要求1所述的用于大数据的排序方法,其中, 所述预设排序条件为所述数组中索引对应的每个数据均大于或小于所述数组外的每个剩余数据; 所述预设排序规则为升序排序或降序排序。
4.根据权利要求1所述的用于大数据的排序方法,其中,所述特征至少包括用户名、使用流量、登录时长和登录设备。
5.根据权利要求 1-4任一项所述的用于大数据的排序方法,其中,在对查找到的数据根据所述预设排序规则进行排序之后,还包括如下步骤:根据排序后数据的索引,获取符合所述预设排序规则的每个数据的至少一个特征。
6.一种用于大数据的排序系统,包括: 索引建立模块,用于对每个数据建立索引,其中每个索引对应数据的至少一个特征;数组建立模块,所述数据建立模块连接至所述索引建立模块,用于建立数组,并从所有数据选取预设目标排序数量的数据的索引放入所述数组; 特征比较模块,所述特征比较模块连接至所述数组建立模块,用于将剩余数据的预设排序的特征与所述数组中的数据的预设排序的特征进行比较; 索引确定模块,所述索引确定模块连接至所述特征比较模块,用于依据预设排序条件和比较结果确定是否替换所述数组中已存的索引; 数据查找模块,所述数据查找模块连接至所述索引确定模块,用于当所有数据比较完毕后,根据当前所述数组中的索引查找所述索引对应的数据;以及 数据排序模块,所述数据排序模块连接至所述数据查找模块,用于对查找到的数据根据所述预设排序规则进行排序。
7.根据权利要求6所述的用于大数据的排序系统,其中,所述数组的大小等于或大于所述预设目标排序数量。
8.根据权利要求6所述的用于大数据的排序系统,其中, 所述预设排序条件为所述数组中索引对应的每个数据均大于或小于所述数组外的每个剩余数据; 所述预设排序规则为升序排序或降序排序。
9.根据权利要求6所述的用于大数据的排序系统,其中,所述特征至少包括用户名、使用流量、登录时长和登录设备。
10.根据权利要求6-9任一项所述的用于大数据的排序系统,其中,所述数据排序模块还用于根据排序后数据 的索引,获取符合所述预设排序规则的每个数据的至少一个特征。
【文档编号】G06F17/30GK104077361SQ201410252136
【公开日】2014年10月1日 申请日期:2014年6月9日 优先权日:2014年6月9日
【发明者】李鹏 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1