获取排序的统计数据的方法及排序装置的制作方法

文档序号:6399617阅读:137来源:国知局
专利名称:获取排序的统计数据的方法及排序装置的制作方法
技术领域
本发明涉及排序技术,尤其涉及一种获取排序的统计数据的方法及排序装置。
背景技术
随着计算机和网络通信技术的发展,网络成为人们日常生活、工作中进行交流和沟通的重要工具,使得网络上产生了海量的统计数据,例如,网页的用户浏览量信息数据、网站的用户注册量信息数据、游戏系统中的游戏用户量信息数据以及各游戏用户的积分信息数据、微博账户的访问量信息数据以及粉丝量信息数据等。为了从海量的统计数据中能够快速、有效地获取用户查询所需的数据,更好地为用户提供个性化的服务,需要对网络中产生的海量统计数据进行有效管理。例如,基于一定的排序策略,对海量统计数据进行排序,举例来说,根据存储的游戏系统的各用户的积分信息数据,按照积分从高到低进行排列。这样,在接收到用户的积分排序查询请求时,向用户输出排序前N (统计数据量值)位的积分信息数据,即topN数据。其中,N可以根据实际需要确定,例如,对于游戏系统,可以输出前10000名的游戏用户,即N为10000 ;对于微博,输出粉丝最多的前1000个微博账户,以有效降低用户浏览查询结果所需的时间,便于用户快速定位所需的数据。现有基于存储的统计数据获取排序的统计数据的方法,根据统计数据存储在数据库中还是内存中,对应的技术方案主要包含以下两种。(一 )、对于存储在数据库中的统计数据,将接收的统计数据存储在数据库中,并定期对数据库中存储的统计数据进行排序,以排序结果作为当前排序时间周期至下一排序时间周期内用于查询的近似结果。具体地,该流程包括:步骤001,将实时获取的统计数据存放在第一数据库中,并在第一数据库中维护统计数据;本步骤中,各需要进行排序的网页、网站、游戏系统以及微博等,按照预先设置的策略,将实时发生的相关统计数据发送至排序装置。在排序装置中,采用数据库方式存储接收的统计数据。对统计数据进行维护包括:对统计数据的增加、删除以及修改。其中,以游戏系统中游戏用户的积分为例,统计数据的增加是指新用户获取了新积分,将该游戏用户的新积分存储在数据库中;删除是指游戏用户由于作弊等原因,清空该游戏用户的积分;修改是指现有游戏用户通过游戏获取了新的积分或被罚积分,需要对该游戏用户在数据库中存储的积分进行相应更新。步骤002,按照预先设置的周期,对第一数据库中的统计数据进行排序,获取排序结果,将排序结果存放至第二数据库中;本步骤中,按照预先设置的周期,例如,每天凌晨,对第一数据库中的所有统计数据进行排序,并将排序结果存放在与第一数据库不同的另一个第二数据库中。步骤003,接收排序查询请求,从第二数据库中获取排序查询请求对应的统计数据,输出topN统计数据。
本步骤中,在用户需要进行排序查询时,从经过排序的第二数据库中进行查询,即所有获取topN的操作,都从第二数据库中读取。这样,通过设置第一数据库和第二数据库,第一数据库用于存储实时接收的统计数据,第二数据库用于存储对统计数据进行排序的排序结果,从而实现统计数据的排序推荐。由于在计算机中,数据可以存放在内存、硬盘(数据库)、移动设备中,其中,一方面,内存中的数据存储成本最高,移动设备中的数据存储成本最低,即将数据存放在内存中,相对于将数据存放在硬盘中,成本较高。另一方面,内存中的数据访问速度最高,移动设备中的数据访问速度最低。而上述对统计数据进行排序的方法,采用硬盘对统计数据进行存储,虽然存储成本较低,但由于数据访问速度较低,运算性能较低,而统计数据量大,导致排序的时间长,排序效率较低;进一步地,采用定期排序的方法,不能在每次进行topN请求时,对数据库A中的统计数据进行实时排序,使得每次获取的topN统计数据的实时性较差。(二)、为了提高topN统计数据的实时性,采用内存对统计数据进行存储,对于存储在内存中的统计数据,可以使用各种有序数据结构进行维护。例如,可以使用开源键值对(key-value)存储系统软件redis中的设置(zset)维护有序统计数据,其中,统计数据采用键值对方式存储在内存中,zset使用跳表维护有序统计数据。或者,还可以使用二叉树等数据结构对统计数据进行维护。以zset维护有序数据为例,基于存储的统计数据获取排序的统计数据的方法,其流程包括:步骤011,将实时获取的统计数据增加到zset中;步骤012,在zset中维护统计数据;本步骤中,统计数据维护包括:统计数据的增加、删除、修改。内存中统计数据的维护与数据库中统计数据的维护相类似。步骤013,接收排序查询请求,通过排列(range)操作,获取排序查询请求对应的topN统计数据。在该基于存储的统计数据获取排序的统计数据的方法中,采用内存存储统计数据,虽然统计数据访问速度快,但由于所有统计数据都存放在内存中,因而,能够存储的数据量大小受到内存大小的限制,而实际应用中,统计数据量是非常大的,如果数据量达到几十吉(G)、上百G,全部存储在内存,由于内存的价格显著高于硬盘,将造成存储成本显著上升;同时,对存储的全部统计数据进行排序以获取排序的统计数据,排序所需的时间长,排序效率还是较低。

发明内容
本发明的实施例提供一种获取排序的统计数据的方法,降低排序所需的时间、提高统计数据的排序效率。本发明的实施例还提供一种排序装置,降低排序所需的时间、提高统计数据的排
序效率。为达到上述目的,本发明实施例提供的一种获取排序的统计数据的方法,预先在内存中设置用于存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树,该方法包括:Al,接收到统计数据后,查询第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,执行步骤BI,如果查询到,执行步骤Cl ;BI,根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据;Cl,根据接收的统计数据对应的值,更新第一扩展红黑树或第二扩展红黑树中查询到的统计数据;D1,接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的第一阈值的统计数据。其中,所述方法进一步包括:维护第一扩展红黑树以及第二扩展红黑树中存储的统计数据。其中,维护所述统计数据包括:对统计数据执行增加、删除或修改处理。其中,所述对统计数据执行删除处理包括:A31,在第一扩展红黑树中查询待删除统计数据,如果查询到,执行步骤A32,否则,执行步骤A33 ;A32,删除查询得到的统计数据,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树;A33,在第二扩展红黑树中查询待删除统计数据,如果查询到,删除查询得到的统计数据,否则,不作处理。其中,所述步骤BI包括:C11,判断第一扩展红黑树中是否存储满统计数据,如果是,执行步骤C12,如果否,将接收的统计数据存储至第一扩展红黑树;C12,判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤C13 ;否则,将接收的统计数据输出至第二扩展红黑树,执行步骤C14 ;C13,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据存储至第一扩展红黑树,执行步骤C14 ;C14,判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤C15 ;否则,丢弃接收的统计数据;C15,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。其中,所述步骤Cl包括:D21,判断是否在第一扩展红黑树中查询到接收的统计数据对应的键,如果是,执行步骤D22,否则,将接收的统计数据输出至第二扩展红黑树,执行步骤D24 ;D22,删除在第一扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,执行步骤D23,否则,将接收的统计数据插入第一扩展红黑树;
D23,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树;D24,删除在第二扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值,如果是,执行步骤D25,否贝U,执行步骤D26 ;D25,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树;D26,将接收的统计数据插入第二扩展红黑树。其中,所述第一阈值不小于输出的统计数据的数量值,所述第二阈值大于第一阈值。一种排序装置,该排序装置包括:内存模块、统计数据查询模块、新增统计数据处理模块、已有统计数据处理模块以及排序查询模块,其中,内存模块,用于设置存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树;统计数据查询模块,用于接收到统计数据后,查询内存模块中的第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,将接收的统计数据输出至新增统计数据处理模块,如果查询到,将接收的统计数据输出至已有统计数据处理模块;新增统计数据处理模块,用于根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新内存模块中第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据;已有统计数据处理模块,用于根据接收的统计数据对应的值,更新内存模块中第一扩展红黑树或第二扩展红黑树中查询到的统计数据;排序查询模块,用于接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的统计数据。较佳地,所述新增统计数据处理模块包括:第一判断单元、第二判断单元、统计数据第一处理单元、第三判断单元以及统计数据第二处理单元,其中,第一判断单元,用于判断内存模块的第一扩展红黑树中是否存储满统计数据,如果是,将接收的统计数据输出至第二判断单元,如果否,将接收的统计数据存储至第一扩展红黑树;第二判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,向统计数据第一处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及第三判断单元;统计数据第一处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据分别输出至第一扩展红黑树以及第三判断单元;第三判断单元,用于判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,通知统计数据第二处理单元;否则,丢弃接收的统计数据;统计数据第二处理单元,用于接收通知,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。较佳地,所述已有统计数据处理模块包括:第四判断单元、第五判断单元、统计数据第三处理单元、第六判断单元、统计数据第四处理单元、统计数据第五处理单元以及统计数据第六处理单元,其中,第四判断单元,用于判断是否在内存模块的第一扩展红黑树中查询到接收的统计数据对应的键,如果是,向统计数据第三处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及统计数据第五处理单元,通知统计数据第五处理单元;统计数据第三处理单元,用于接收触发信息,删除在第一扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第五判断单元;第五判断单元,用于判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,向统计数据第四处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第一扩展红黑树;统计数据第四处理单元,用于接收触发信息,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树;统计数据第五处理单元,用于接收通知,删除在第二扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第六判断单元;第六判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值,如果是,向统计数据第六处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第二扩展红黑树;统计数据第六处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树。由上述技术方案可见,本发明实施例提供的一种获取排序的统计数据的方法及排序装置,预先在内存中设置用于存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树,接收到统计数据后,实时对第一扩展红黑树或第二扩展红黑树进行更新,并在接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的第一阈值统计数据。这样,由于该方法在内存中维护了有序的数据结构,利用两个大小不同的扩展红黑树维护统计数据,只需在内存中保存第一阈值与第二阈值之和的数据,有效降低了内存中整体数据的大小,并能够利用扩展红黑树的排列操作,对第一扩展红黑树中存储的统计数据进行自动排序,使得获取第一阈值统计数据所用的时间更短、统计数据的排序效率更高且获取的第一阈值统计数据具有实时性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,以下将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,还可以根据这些附图所示实施例得到其它的实施例及其附图。图1为本发明实施例获取排序的统计数据的方法流程示意图。图2为本发明实施例在内存的扩展红黑树中维护统计数据的方法第一具体流程示意图。图3为本发明实施例在内存的扩展红黑树中维护统计数据的方法第二具体流程示意图。图4为本发明实施例在内存的扩展红黑树中维护统计数据的方法第三具体流程示意图。图5为本发明实施例的排序装置结构示意图。
具体实施例方式以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。现有基于统计数据获取排序的统计数据的方法,对于存储在数据库中的统计数据,采用硬盘对统计数据进行存储,定期对数据库中的统计数据进行排序,以排序结果作为该定期时间内的近似结果,数据访问速度较低,统计数据量大,导致排序的时间长,排序效率较低,统计数据的实时性较差;而采用内存存储统计数据,由于所有统计数据都存放在内存中,因而,存储成本显著上升;同时,对存储的全部统计数据进行排序,排序所需的时间长,排序效率还是较低。红黑树是一种自平衡二叉查询树,应用于计算机科学中的数据查询,查询效率较高,有着良好的最坏情况运行时间,可以在算法时间复杂度0(log η)时间内执行查询、增力口、修改和删除操作。其中,η是红黑树中节点的数目。在红黑树的基础上,扩展红黑树扩展了每个节点的信息,增加了两个变量:左子树个数、右子树个数,使得在0(log η)的时间里,可以获得节点在整个扩展红黑树中的排名。关于红黑树以及扩展红黑树的详细描述,具体可参见相关技术文献,在此不再赘述。本发明实施例中,首先,考虑数据库或内存接收统计数据时,统计数据是各网页、网站、游戏系统以及微博最新的统计数据信息,例如,对于游戏系统的积分,统计数据是各游戏用户实时的积分信息数据,积分的多少可以直接从接收的积分信息数据中反映出来;对于微博,统计数据是粉丝信息数据,各微博的粉丝数量可以直接从接收的粉丝量信息数据中反映出来。因而,根据接收的统计数据与存储预定数量的统计数据进行比较,即可获知该接收的统计数据在存储的统计数据中的排序信息。其次,考虑扩展红黑树对插入的统计数据的位置具有的自动排序性质,能够自动实现对存储在扩展红黑树中的统计数据的排序;最后,考虑到到实际应用中,只向查询用户输出topN数据,而无需输出所有排序的统计数据,因而,无需存储所有的统计数据,只需存储能够保障输出topN数据准确性的统计数据即可。基于上述分析及考虑,本发明实施例中,在内存中维护两颗扩展红黑树,即第一扩展红黑树A和第二扩展红黑树B。其中,第一扩展红黑树A中设置有N个节点,用于存储实时接收的统计数据,第二扩展红黑树B中设置有ION个节点,用于存储第一扩展红黑树A输出的统计数据。这样,通过在内存中维护存储有限数量统计数据的第一扩展红黑树和第二扩展红黑树,实时维护第一扩展红黑树A中的统计数据,在第一扩展红黑树A中存储的统计数据已满的情况下,按照预先设置的策略,输出第一扩展红黑树A中存储的统计数据,存储至第二扩展红黑树B,在对统计数据进行排序时,第一扩展红黑树A自动对存储的统计数据进行排序,并根据接收的排序查询请求,输出第一扩展红黑树A中排序的统计数据。从而既可以减少内存中存储的数据量,降低存储成本,又可根据内存维护统计数据的实时性,提高排序的实时性以及排序效率。本发明实施例中,采用扩展红黑树存储统计数据的数据结构中,保存有有序的统计数据,在O (log (η))的时间内,可以完成统计数据的插入、删除、查询,并可自动执行排序,从而获得统计数据的排名。图1为本发明实施例获取排序的统计数据的方法流程示意图。参见图1,该流程包括:步骤101,预先在内存中设置用于存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树;本步骤中,第一阈值与输出的统计数据的数量值,即topN相关。较佳地,第一阈值不小于输出的统计数据的数量值。本发明实施例中,第一阈值(NI)等于输出的统计数据的数量值(N)。第二阈值可根据实际需要确定,较佳地,第二阈值大于第一阈值。本发明实施例中,第二阈值(N2)为第一阈值(NI)的10倍。这样,在内存中只需IlN的存储空间用于存储统计数据,可以有效降低统计数据的存储成本。本发明实施例中,统计数据以键值对方式进行存储,关于将统计数据转换为键值对并以键值对进行存储的详细流程,具体可参见相关技术文献,在此不再赘述。步骤102,接收到统计数据后,查询第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,执行步骤103,如果查询到,执行步骤104 ;本步骤中,根据接收的统计数据是否在第一扩展红黑树以及第二扩展红黑树存在对应的键,需要采用不同的处理策略。步骤103,根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据;本步骤具体包括:All,判断第一扩展红黑树中是否存储满统计数据,如果是,执行步骤A12,如果否,将接收的统计数据存储至第一扩展红黑树;本步骤中,在接收到实时的统计数据时,如果确定第一扩展红黑树以及第二扩展红黑树中未存储有该统计数据对应的键,表明该接收的统计数据未存储在内存中,为新增加的统计数据;而如果确定第一扩展红黑树或第二扩展红黑树中存储有该统计数据对应的键,表明该接收的统计数据为需要更新的统计数据,在内存中对其进行相应更新即可。在确定接收的统计数据为新增加的统计数据后,判断第一扩展红黑树中是否存储满统计数据,如果是,需要根据预先设置的策略对第一扩展红黑树中存储的统计数据进行处理;如果否,则可以直接将接收的统计数据存储至第一扩展红黑树。A12,判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤A13 ;否则,将接收的统计数据输出至第二扩展红黑树,执行步骤A14 ;本步骤中,统计数据以键值对方式存储,每一统计数据对应有唯一的键以及唯一的值。如果接收的统计数据对应的值大于第一扩展红黑树存储的各统计数据对应的最小值,表明需要将最小值对应的统计数据从第一扩展红黑树中移走,以获取存储接收的统计数据的空间;如果接收的统计数据对应的值不大于第一扩展红黑树存储的统计数据对应的最小值,表明该接收的统计数据无需存储在第一扩展红黑树中,可以输出至第二扩展红黑树进行后续处理。A13,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据存储至第一扩展红黑树,执行步骤A14 ;本步骤中,第一扩展红黑树存储接收的统计数据后,按照自身具有的自动排序性质,通过排序操作,自动对新插入进行存储的统计数据的位置进行调整,即进行自动排序。A14,判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤A15 ;否则,丢弃接收的统计数据;本步骤中,如果第二扩展红黑树接收的统计数据对应的值大于存储的各统计数据对应的最小值,表明需要将该最小值对应的统计数据从第二扩展红黑树中移走,以获取存储接收的统计数据的空间;如果接收的统计数据对应的值不大于第二扩展红黑树存储的各统计数据对应的最小值,表明该接收的统计数据无需存储在第二扩展红黑树中,可以直接将接收的统计数据进行丢弃处理。本发明实施例中,将统计数据增加到扩展红黑树(第一扩展红黑树以及第二扩展红黑树)中空余节点的操作,都不需要扩展红黑树对统计数据重新排序。扩展红黑树通过增加节点的调整操作,使增加的统计数据符合扩展红黑树的性质。相类似地,将统计数据删除的操作,也不需要扩展红黑树重新排序,扩展红黑树通过删除统计数据的调整操作,使删除统计数据后的扩展红黑树符合扩展红黑树的性质。A15,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。本步骤中,第二扩展红黑树存储接收的统计数据后,按照自身具有的自动排序性质,自动对新插入的统计数据的位置进行调整。步骤104,根据接收的统计数据对应的值,更新第一扩展红黑树或第二扩展红黑树中查询到的统计数据;本步骤具体包括:A21,判断是否在第一扩展红黑树中查询到接收的统计数据对应的键,如果是,执行步骤A22,否则,将接收的统计数据输出至第二扩展红黑树,执行步骤A24 ;A22,删除在第一扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,执行步骤A23,否则,将接收的统计数据插入第一扩展红黑树;本步骤中,第一扩展红黑树按照自身的性质,自动对新插入的统计数据的位置进行调整。
A23,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树;A24,删除在第二扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值,如果是,执行步骤A25,否贝U,执行步骤A26 ;A25,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树;本步骤中,第一扩展红黑树以及第二扩展红黑树按照自身的性质,自动对新插入的统计数据的位置进行调整。A26,将接收的统计数据插入第二扩展红黑树。本步骤中,第二扩展红黑树按照自身的性质,自动对新插入的统计数据的位置进行调整。实际应用中,该方法还可以进一步包括:维护第一扩展红黑树以及第二扩展红黑树中存储的统计数据。本步骤中,对于内存中存储的统计数据,技术维护人员需要根据实际需求,维护内存中存储的统计数据。例如,对于积分系统来说,根据预先设置的奖励规则,对符合奖励规则的用户积分进行积分鼓励,而对于违反规则的用户的积分进行扣减积分处理,或是从内存中删除该用户的统计数据等。本发明实施例中,维护统计数据包括:对统计数据执行增加、删除或修改处理。其中,统计数据的修改包括对统计数据对应的值进行的递增或递减处理,统计数据的增加和修改的流程与步骤104相类似,后续再进行详细描述。对统计数据执行删除处理包括:A31,在第一扩展红黑树中查询待删除统计数据,如果查询到,执行步骤A32,否则,执行步骤A33 ;A32,删除查询得到的统计数据,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树;A33,在第二扩展红黑树中查询待删除统计数据,如果查询到,删除查询得到的统计数据,否则,不作处理。步骤105,接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的第一阈值的统计数据。本步骤中,在第一扩展红黑树中查询统计数据,如果查询到,返回排序的统计数据;如果未查询到,表明排序查询请求对应的统计数据未存储在第一扩展红黑树中,即排序查询请求对应的统计数据未处于topN中,返回排序查询请求失败。图2为本发明实施例在内存的扩展红黑树中维护统计数据的方法第一具体流程示意图。参见图2,以对统计数据执行增加为例,该流程包括:步骤201,接收统计数据,获取内存中第一扩展红黑树A的存储状态,如果具有空余节点,执行步骤202,否则,执行步骤203 ;本步骤中,内存接收到统计数据,在内存中未查询到该统计数据对应的键,即该统计数据为未存储的统计数据。将统计数据增加到内存时,首先尝试将统计数据增加到第一扩展红黑树A中。步骤202,将统计数据插入至空余节点进行存储;本步骤中,确定第一扩展红黑树A中有空余节点,将统计数据插入至空余节点进行存储,依据扩展红黑树的性质,通过排列操作,第一扩展红黑树A对插入的统计数据的位置进行自动调整。步骤203,判断接收的统计数据对应的值是否不大于第一扩展红黑树A中存储的统计数据对应的最小值,如果否,执行步骤204;否则,将接收的统计数据输出到第二扩展红黑树B,执行步骤205 ;本步骤中,确定第一扩展红黑树A中没有空余节点,判断接收的统计数据的对应值是否不大于第一扩展红黑树A中存储的统计数据对应的最小值,如果是,则将接收的统计数据输出到第二扩展红黑树B,以进行后续处理;如果接收的统计数据对应的值大于第一扩展红黑树A中存储的统计数据对应的最小值,则需要对第一扩展红黑树A以及第二扩展红黑树B进行相应处理。步骤204,删除第一扩展红黑树A中最小值对应的统计数据,并将删除的统计数据输出至第二扩展红黑树B,将接收的统计数据增加到第一扩展红黑树A中,执行步骤205 ;本步骤中,第一扩展红黑树A将统计数据插入至删除统计数据的节点进行插入存储后,依据扩展红黑树的性质,通过排列操作,对插入的统计数据的位置进行自动调整。步骤205,判断第二扩展红黑树B中是否有空余节点,如果有,执行步骤206,否则,执行步骤207 ;步骤206,将第一扩展红黑树A输出的统计数据存储在第二扩展红黑树B中的空余节点;本步骤中,第二扩展红黑树B将统计数据插入至空余节点进行存储后,按照自身的性质,通过排列操作,自动对新插入的统计数据的位置进行调整。步骤207,第二扩展红黑树B判断接收的统计数据对应的值是否不大于存储的统计数据对应的最小值,如果是,执行步骤208 ;否则,执行步骤209 ;步骤208,丢弃接收的统计数据;步骤209,删除第二扩展红黑树B中最小值对应的统计数据,将接收的统计数据存储到第二扩展红黑树B中。本步骤中,与前述相类似,第二扩展红黑树B在删除最小值对应的统计数据,存储接收的统计数据后,按照自身的性质,自动对新插入的统计数据的位置进行调整。图3为本发明实施例在内存的扩展红黑树中维护统计数据的方法第二具体流程示意图。以对统计数据对应的值进行递增为例,参见图3,该流程包括:步骤301,在第一扩展红黑树A中查询待递增的统计数据,如果查询到,执行步骤302,否则,执行步骤303 ;步骤302,删除查询得到的统计数据,对删除的统计数据进行递增(increase)操作后,重新插入到第一扩展红黑树A中;本步骤中,第一扩展红黑树A按照自身的性质,自动对新插入的统计数据的位置进行调整。步骤303,在第二扩展红黑树B中查询待递增的统计数据,如果查询到,执行步骤304,否则,结束流程;本步骤中,如果第一扩展红黑树A中没有查询到该待递增的统计数据,则在第二扩展红黑树B中查询该统计数据。步骤304,删除该统计数据,对该删除的统计数据进行increase操作;步骤305,判断进行increase操作的统计数据对应的值是否大于第一扩展红黑树A中统计数据对应的值中的最小值,如果是,执行步骤306,否则,执行步骤307 ;步骤306,将进行increase操作的统计数据与第一扩展红黑树A中最小值对应的统计数据进行交换;本步骤中,第一扩展红黑树A与第二扩展红黑树B,依据扩展红黑树的性质,通过排列操作,分别对插入的统计数据的位置进行自动调整。步骤307,将进行increase操作的统计数据插入到第二扩展红黑树B中。图4为本发明实施例在内存的扩展红黑树中维护统计数据的方法第三具体流程示意图。以对统计数据对应的值进行递减为例,参见图4,该流程包括:步骤401,在第一扩展红黑树A中查询待递减的统计数据,如果查询到,执行步骤402,否则,执行步骤406 ;步骤402,删除查询得到的统计数据,对该删除的统计数据进行递减(decrease)操作;步骤403,判断进行decrease操作的统计数据对应的值是否小于第二扩展红黑树B中统计数据对应的值中的最大值,如果是,执行步骤404,否则,执行步骤405 ;步骤404,将进行decrease操作的统计数据与第二扩展红黑树B中最大值对应的统计数据进行交换;本步骤中,第一扩展红黑树A与第二扩展红黑树B,依据扩展红黑树的性质,通过排列操作,分别对插入的统计数据的位置进行自动调整。步骤405,将进行decrease操作的统计数据插入到第一扩展红黑树A中;步骤406,在第二扩展红黑树B中查询待递减的统计数据,如果查询到,执行步骤407,否则,结束流程;本步骤中,如果第一扩展红黑树A中没有查询到该统计数据,则在第二扩展红黑树B中查询该统计数据。步骤407,删除该统计数据,对该删除的统计数据进行decrease操作,插入第二扩展红黑树B。本步骤中,也可以判断进行decrease操作后的统计数据对应的值是否小于第二扩展红黑树B中各统计数据对应的最小值,如果是,则将该递减后的统计数据删除。由上述可见,由于该方法在内存中维护了有序的数据结构,利用两个大小不同的扩展红黑树维护内部统计数据,只需在内存中保存ll*n个数据,有效降低了内存中整体数据的大小,并能够利用扩展红黑树的排列操作,对存储的统计数据进行自动排序,使得获取tonN数据所用的时间更短、统计数据的排序效率更高;进一步地,由于内存中的数据结构是实时有序的,因此,获取的topN数据具有实时性,而不是近似数据。图5为本发明实施例的排序装置结构示意图。参见图5,该装置包括:内存模块、统计数据查询模块、新增统计数据处理模块、已有统计数据处理模块以及排序查询模块,其中,内存模块,用于设置存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树;本发明实施例中,第一阈值(NI)等于统计数据的数量值(N),第二阈值(N2)为第一阈值(NI)的10倍。统计数据查询模块,用于接收到统计数据后,查询内存模块中的第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,将接收的统计数据输出至新增统计数据处理模块,如果查询到,将接收的统计数据输出至已有统计数据处理模块;新增统计数据处理模块,用于根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新内存模块中第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据;本发明实施例中,新增统计数据处理模块包括:第一判断单元、第二判断单元、统计数据第一处理单元、第三判断单元以及统计数据第二处理单元(图中未示出),其中,第一判断单元,用于判断内存模块的第一扩展红黑树中是否存储满统计数据,如果是,将接收的统计数据输出至第二判断单元,如果否,将接收的统计数据存储至第一扩展红黑树;第二判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,向统计数据第一处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及第三判断单元;本发明实施例中,统计数据以键值对方式存储,每一统计数据对应有唯一的键以及唯一的值。统计数据第一处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据分别输出至第一扩展红黑树以及第三判断单元;第三判断单元,用于判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,通知统计数据第二处理单元;否则,丢弃接收的统计数据;统计数据第二处理单元,用于接收通知,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。已有统计数据处理模块,用于根据接收的统计数据对应的值,更新内存模块中第一扩展红黑树或第二扩展红黑树中查询到的统计数据;本发明实施例中,已有统计数据处理模块包括:第四判断单元、第五判断单元、统计数据第三处理单元、第六判断单元、统计数据第四处理单元、统计数据第五处理单元以及统计数据第六处理单元(图中未示出),其中,第四判断单元,用于判断是否在内存模块的第一扩展红黑树中查询到接收的统计数据对应的键,如果是,向统计数据第三处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及统计数据第五处理单元,通知统计数据第五处理单元;统计数据第三处理单元,用于接收触发信息,删除在第一扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第五判断单元;
第五判断单元,用于判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,向统计数据第四处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第一扩展红黑树;统计数据第四处理单元,用于接收触发信息,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树;统计数据第五处理单元,用于接收通知,删除在第二扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第六判断单元;第六判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值,如果是,向统计数据第六处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第二扩展红黑树;统计数据第六处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树。排序查询模块,用于接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的统计数据。较佳地,该装置还可以进一步包括:统计数据维护模块,用于维护内存模块中第一扩展红黑树以及第二扩展红黑树中存储的统计数据。本发明实施例中,维护统计数据包括:对统计数据执行增加、删除或修改处理。其中,统计数据的修改包括对统计数据对应的值进行的递增或递减处理。显然,本领域技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也包含这些改动和变型在内。
权利要求
1.一种获取排序的统计数据的方法,预先在内存中设置用于存储第一阈值统计数据的第一扩展红黑树以及用于存储第二阈值统计数据的第二扩展红黑树,该方法包括: Al,接收到统计数据后,查询第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,执行步骤BI,如果查询到,执行步骤Cl ; BI,根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据; Cl,根据接收的统计数据对应的值,更新第一扩展红黑树或第二扩展红黑树中查询到的统计数据; D1,接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的第一阈值的统计数据。
2.根据权利要求1所述的方法,其中,所述方法进一步包括: 维护第一扩展红黑树以及第二扩展红黑树中存储的统计数据。
3.根据权利要求2所述的方法,其中,维护所述统计数据包括:对统计数据执行增加、删除或修改处理。
4.根据权利要求3所述的方法,其中,所述对统计数据执行删除处理包括: A31,在第一扩展红黑树中查询待删除统计数据,如果查询到,执行步骤A32,否则,执行步骤A33 ; A32,删除查询得到的统计数据,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树; A33,在第二扩展红黑树中查询待删除统计数据,如果查询到,删除查询得到的统计数据,否则,不作处理。
5.根据权利要求1至4任一项所述的方法,其中,所述步骤BI包括: C11,判断第一扩展红黑树中是否存储满统计数据,如果是,执行步骤C12,如果否,将接收的统计数据存储至第一扩展红黑树; C12,判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤C13 ;否则,将接收的统计数据输出至第二扩展红黑树,执行步骤 C14 ; C13,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据存储至第一扩展红黑树,执行步骤C14 ; C14,判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,执行步骤C15 ;否则,丢弃接收的统计数据; C15,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。
6.根据权利要求1至4任一项所述的方法,其中,所述步骤Cl包括: D21,判断是否在第一扩展红黑树中查询到接收的统计数据对应的键,如果是,执行步骤D22,否则,将接收的统计数据输出至第二扩展红黑树,执行步骤D24 ; D22,删除在第一扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,执行步骤D23,否则,将接收的统计数据插入第一扩展红黑树; D23,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树; D24,删除在第二扩展红黑树中查询得到的统计数据,判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值,如果是,执行步骤D25,否则,执行步骤D26 ; D25,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树; D26,将接收的统计数据插入第二扩展红黑树。
7.根据权利要求6所述的方法,其中,所述第一阈值不小于输出的统计数据的数量值,所述第二阈值大于第一阈值。
8.一种排序装置,其特征在于,该排序装置包括:内存模块、统计数据查询模块、新增统计数据处理模块、已有统计数据处理模块以及排序查询模块,其中, 内存模块,用于设置存储第一阈值统计数据的第一扩展红黑树以及存储第二阈值统计数据的第二扩展红黑树; 统计数据查询模块,用于接收到统计数据后,查询内存模块中的第一扩展红黑树以及第二扩展红黑树,如果未查询到接收的统计数据对应的键,将接收的统计数据输出至新增统计数据处理模块,如果查询到,将接收的统计数据输出至已有统计数据处理模块; 新增统计数据处理模块,用于根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、 第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新内存模块中第一扩展红黑树、和/或,第二扩展红黑树中存储的统计数据; 已有统计数据处理模块,用于根据接收的统计数据对应的值,更新内存模块中第一扩展红黑树或第二扩展红黑树中查询到的统计数据; 排序查询模块,用于接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的统计数据。
9.根据权利要求8所述的排序装置,其特征在于,所述新增统计数据处理模块包括 第一判断单元、第二判断单元、统计数据第一处理单元、第三判断单元以及统计数据第二处理单元,其中, 第一判断单元,用于判断内存模块的第一扩展红黑树中是否存储满统计数据,如果是,将接收的统计数据输出至第二判断单元,如果否,将接收的统计数据存储至第一扩展红黑树; 第二判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树存储的各统计数据对应的最小值,如果是,向统计数据第一处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及第三判断单元; 统计数据第一处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据输出至第二扩展红黑树,并将接收的统计数据分别输出至第一扩展红黑树以及第三判断单元; 第三判断单元,用于判断接收的统计数据对应的值是否大于第二扩展红黑树存储的各统计数据对应的最小值,如果是,通知统计数据第二处理单元;否则,丢弃接收的统计数据; 统计数据第二处理单元,用于接收通知,将第二扩展红黑树中最小值对应的统计数据删除,并将接收的统计数据存储至第二扩展红黑树。
10.根据权利要求8所述的排序装置,其特征在于,所述已有统计数据处理模块包括:第四判断单元、第五判断单元、统计数据第三处理单元、第六判断单元、统计数据第四处理单元、统计数据第五处理单元以及统计数据第六处理单元,其中, 第四判断单元,用于判断是否在内存模块的第一扩展红黑树中查询到接收的统计数据对应的键,如果是,向统计数据第三处理单元输出触发信息;否则,将接收的统计数据分别输出至第二扩展红黑树以及统计数据第五处理单元,通知统计数据第五处理单元; 统计数据第三处理单元,用于接收触发信息,删除在第一扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第五判断单元; 第五判断单元,用于判断接收的统计数据对应的值是否小于第一扩展红黑树中存储的各统计数据对应的最小值、且小于第二扩展红黑树中存储的各统计数据对应的最大值,如果是,向统计数据第四处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第一扩展红黑树; 统计数据第四处理单元,用于接收触发信息,将第二扩展红黑树中最大值对应的统计数据插入第一扩展红黑树,将接收的统计数据插入第二扩展红黑树; 统计数据第五处理单元,用于接收通知,删除在第二扩展红黑树中查询得到的统计数据,将接收的统计数据输出至第六判断单元; 第六判断单元,用于判断接收的统计数据对应的值是否大于第一扩展红黑树中存储的各统计数据对应的最小值 ,如果是,向统计数据第六处理单元输出触发信息以及接收的统计数据;否则,将接收的统计数据插入第二扩展红黑树; 统计数据第六处理单元,用于接收触发信息,将第一扩展红黑树中最小值对应的统计数据插入第二扩展红黑树,将接收的统计数据插入第一扩展红黑树。
全文摘要
本发明公开了一种获取排序的统计数据的方法及排序装置。该方法包括预先在内存中设置用于存储统计数据的第一扩展红黑树以及第二扩展红黑树;接收到统计数据后,在内存中进行查询,如果未查询到接收的统计数据对应的键,根据接收的统计数据对应的值、第一扩展红黑树存储的各统计数据对应的最小值、第二扩展红黑树存储的各统计数据对应的最小值以及最大值,更新内存中存储的统计数据;如果查询到,根据接收的统计数据对应的值,更新第一扩展红黑树或第二扩展红黑树中查询到的统计数据;接收到排序查询请求后,在第一扩展红黑树中获取排序查询请求对应的排序的第一阈值的统计数据。应用本发明,可以降低排序所需的时间、提高统计数据的排序效率。
文档编号G06F17/30GK103116641SQ201310055790
公开日2013年5月22日 申请日期2013年2月21日 优先权日2013年2月21日
发明者张任重 申请人:新浪网技术(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1