专利名称:监控数据的排序方法及系统的制作方法
监控数据的排序方法及系统技术领域:
本发明涉及一种监控数据的排序方法及系统,尤其是涉及一种海量监控数据的排序方法及系统。背景技木
在系统设计过程中,我们经常需要将大量(比如几十万、甚至上百万)的监控数据进行排序,然后依据设计需要取出前TOP N条作为排行榜的数据。
常见的排序方法都是直接对所有的监控数据进行排序,然而,在大数据量,特别是海量数据的情况下,这势必会造成系统响应缓慢,甚至造成“假死”的现象。
发明内容
为了解决上述问题,本发明的目的是提供一种监控数据的排序方法。本发明的另ー目的是提供一种监控数据的排序系统。其中,本发明的监控数据的排序方法包括以下步骤
51、接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求;
52、分别对每个子排序请求的数据集进行排序;
53、合并所有子排序请求的排序结果,并对所述子排序请求进行排序。作为本发明的进ー步改进,所述SI步骤还包括
根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。作为本发明的进ー步改进,所述S2步骤包括
在系统内存中开辟ー块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列;
将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置。作为本发明的进ー步改进,所述S2步骤还包括
加入新加入数据,就与所述序列最后的数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置。作为本发明的进ー步改进,所述S3步骤包括
在系统内存中开辟ー块连续的可存放子排序请求的排序结果的第二区域空间,并在该第二区域空间内形成一序列;
将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置。相应地,本发明的监控数据的排序系统包括
分配模块,用于接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求;
子排序请求处理模块,用于分别对每个子排序请求的数据集进行排序;主排序请求处理模块,用于合并所有子排序请求的排序结果,并对所述子排序请求进行排序。作为本发明的进ー步改进,所述分配模块还用于
根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。作为本发明的进ー步改进,所述子排序请求处理模块还用于
在系统内存中开辟ー块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列;
将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置。
作为本发明的进ー步改进,所述子排序请求处理模块还用于
加入新加入数据,就与所述序列最后的数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置。作为本发明的进ー步改进,所述主排序请求处理模块还用于
在系统内存中开辟ー块连续的可存放子排序请求的排序结果的第二区域空间,并在该第二区域空间内形成一序列;
将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置。相比于现有技术,本发明在系统硬件环境无任何变化的条件下,极大地提高对监控数据的排序速率和效率。
图I是本发明一实施例的监控数据的排序方法的流程 图2是本发明一实施例的监控数据的排序系统的模块图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。如图I所示,在本发明ー实施例中的监控数据的排序方法包括
SI、接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求,以及,根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。S2、分别对每个子排序请求的数据集进行排序。其中,在本发明ー实施方式中,其具体包括首先,在系统内存中开辟ー块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列,该序列开始处标记为indexj),以此类推,将该第一区域空间最后ー块标记为index_(n-l),优选地,index越小,则表示在序列中排序约靠前。其次,将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置,优选地,毎次加入ー个数据时,就与已在所述第一区域空间中且index最大的那个数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置;继续将新加入数据和已在所述第一区域空间中的index次大数据比较,若新加入数据比其更优先,则交换两数据的位置,以此类推,直至当新加入数据与已在所述序列中第X的数据比较后,其优先度没有第X的数据高时终止,重复上述步骤,完成每个子排序请求的数据集排序,得到子排序请求的排序结果。值得一提的是如果被交换的数据的序列位置是index_(n-l),则抛弃该数据。如此,可以保证该连续空间中始终保持的都是最优先的若干个数据。S3、合并所有子排序请求的排序结果,并对所述子排序请求进行排序。在本发明一实施方式中,其具体包括首先,在系统内存中开辟一块连续的可存放子排序请求的排序结果的第二区域空间,并在该第二区域空间内形成一序列,该序列开始处标记为indexj),以此类推,将该第二区域空间最后一块标记为index_(n-l),优选地,index越小,则表示在序列中排序约靠前。其次,将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置,优选地,每次加入一个数据时,就与已在所述区域空间中且index最大的那个子排序请求的排序结果比较,若新加入的子排序请求的排序结果比其更优先,则在所述序列上交换两者位置;继续将新加入的子排序请求的排序结果和已在所述区域空间中的index次大子排序请求的排序结果比较,若新加入的子排序请求的排序结果比其更优先,则交换两者的位置,以此类推,直至当新加入的子排序请求的 排序结果与已在所述序列中第X的子排序请求的排序结果比较后,其优先度没有第X的子排序请求的排序结果高时终止,重复上述步骤,完成所述监控数据排序请求。如图2所示,在本发明一实施例中的监控数据的排序系统包括
分配模块,用于接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求,以及,根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。子排序请求处理模块,用于分别对每个子排序请求的数据集进行排序。其中,在本发明一实施方式中,其具体包括首先,在系统内存中开辟一块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列,该序列开始处标记为index_0,以此类推,将该第一区域空间最后一块标记为index_(n_l),优选地,index越小,则表示在序列中排序约靠前。其次,将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置,优选地,每次加入一个数据时,就与已在所述第一区域空间中且index最大的那个数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置;继续将新加入数据和已在所述第一区域空间中的index次大数据比较,若新加入数据比其更优先,则交换两数据的位置,以此类推,直至当新加入数据与已在所述序列中第X的数据比较后,其优先度没有第X的数据高时终止,重复上述步骤,完成每个子排序请求的数据集排序,得到子排序请求的排序结果。值得一提的是如果被交换的数据的序列位置是index_(n-l),则抛弃该数据。如此,可以保证该连续空间中始终保持的都是最优先的若干个数据。主排序请求处理模块,用于合并所有子排序请求的排序结果,并对所述子排序请求进行排序。其中,主查询在内存开辟一块连续的可存放子排序请求的排序结果的第二区域空间。并在该第二区域空间内形成一序列,该序列开始处标记为indexj),以此类推,将该第二区域空间最后一块标记为index_(n-l),优选地,index越小,则表示在序列中排序约靠前。其次,将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置,优选地,每次加入一个数据时,就与已在所述区域空间中且index最大的那个子排序请求的排序结果比较,若新加入的子排序请求的排序结果比其更优先,则在所述序列上交换两者位置;继续将新加入的子排序请求的排序结果和已在所述区域空间中的index次大子排序请求的排序结果比较,若新加入的子排序请求的排序结果比其更优先,则交换两者的位置,以此类推,直至当新加入的子排序请求的排序结果与已在所述序列中第X的子排序请求的排序结果比较后,其优先度没有第X的子排序请求的排序结果高时终止,重复上述步骤,完成所述监控数据排序请求。综上所述,本发明在系统硬件环境无任何变化的条件下,极大地提高对监控数据的排序速率和效率。应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说 明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
权利要求
1.一种监控数据的排序方法,其特征在于,所述方法包括 51、接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求; 52、分别对每个子排序请求的数据集进行排序; 53、合并所有子排序请求的排序结果,并对所述子排序请求进行排序。
2.根据权利要求I所述的监控数据的排序方法,其特征在于,所述SI步骤还包括 根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。
3.根据权利要求I所述的监控数据的排序方法,其特征在于,所述S2步骤包括 在系统内存中开辟ー块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列; 将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置。
4.根据权利要求3所述的监控数据的排序方法,其特征在于,所述S2步骤还包括 加入新加入数据,就与所述序列最后的数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置。
5.根据权利要求I所述的监控数据的排序方法,其特征在于,所述S3步骤包括 在系统内存中开辟ー块连续的可存放子排序请求的排序结果的第二区域空间,并在该第二区域空间内形成一序列; 将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置。
6.一种监控数据的排序系统,其特征在于,所述系统包括 分配模块,用于接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求; 子排序请求处理模块,用于分别对每个子排序请求的数据集进行排序; 主排序请求处理模块,用于合并所有子排序请求的排序结果,并对所述子排序请求进行排序。
7.根据权利要求6所述的监控数据的排序方法,其特征在于,所述分配模块还用于 根据所述监控数据排序请求的规模和可分配的子排序请求个数计算得到每个子排序请求涉及的数据范围。
8.根据权利要求6所述的监控数据的排序方法,其特征在于,所述子排序请求处理模块还用于 在系统内存中开辟ー块连续的可存放子排序请求的数据范围内数据集的第一区域空间,并在该第一区域空间内形成一序列; 将所述数据集中的数据依次加入所述第一区域空间,并将所述新加入数据在所述序列中,从后向前比较,以判断是否需要调整所述新加入数据的序列位置。
9.根据权利要求8所述的监控数据的排序方法,其特征在于,所述子排序请求处理模块还用于 加入新加入数据,就与所述序列最后的数据比较,若新加入数据比其更优先,则交换两数据在所述序列上的位置。
10.根据权利要求6所述的监控数据的排序方法,其特征在于,所述主排序请求处理模块还用于 在系统内存中开辟ー块连续的可存放子排序请求的排序结果的第二区域空间,并在该第二区域空间内形成一序列; 将所述子排序请求的排序结果依次加入所述第二区域空间,并将所述新加入的子排序请求的排序结果在所述序列中,从后向前比较,以判断是否需要调整所述新加入的子排序请求的排序结果的序列位置。
全文摘要
本发明提供了一种监控数据的排序方法及系统,其中,所述方法包括S1、接收监控数据排序请求,并将所述监控数据排序请求拆分为若干个子排序请求;S2、分别对每个子排序请求的数据集进行排序;S3、合并所有子排序请求的排序结果,并对所述子排序请求进行排序。相比于现有技术,本发明在系统硬件环境无任何变化的条件下,极大地提高对监控数据的排序速率和效率。
文档编号G06F7/08GK102830950SQ201210273209
公开日2012年12月19日 申请日期2012年8月3日 优先权日2012年8月3日
发明者姚春秋, 蔡远 申请人:苏州迈科网络安全技术股份有限公司