一种排序的方法、装置与终端
技术领域
本发明涉及数据处理技术,尤其涉及一种排序的方法、装置与终端。
背景技术
现有技术中,为了提高企业、个人、产品等的知名度,获取更大商业价值,很多商业机构常常通过电视、新闻或网络等媒体为排名位于前N个的企业、个人和产品做TOP N宣传和推广。例如,可以为世界排名前500强的企业进行宣传和推广。
TOP N数据的处理往往涉及的数据量很大。现有技术中,用户在查询TOP N数据时,查询系统一般先查询出所有的数据集,并对数据集中的数据按照给定的规则进行排序,然后从排序结果中取出前N个数据作为TOP N数据呈现给用户。这样,会增加查询系统读写磁盘的次数,从而增加了查询系统查询TOP N数据的处理时间,降低了查询系统的响应速度。
发明内容
本发明的多个方面提供一种排序的方法、装置与终端,用于克服现有技术中获取TOP N数据时耗费时间长的问题。
本发明第一个方面提供一种排序的方法,包括:
当更新数据库中主数据的数据状态参数时,排序装置根据所述主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,所述排序列表包括按照预设的排序规则进行排序后的标识信息集;
根据所述标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表。
在第一种可能的实现方式中,根据第一方面,在根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表之前,所述方法还包括:
判断所述标识信息集中所包含的标识信息的数目是否小于预设阈值;
若所述数目小于所述预设阈值,则将所述已更新的数据状态参数的标识信息直接加入所述排序列表,否则,根据所述已更新的数据状态参数以及与所述每个标识信息对应的数据状态参数,更新所述排序列表。
在第二种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表,包括:
将所述已更新的数据状态参数与所述标识信息集中最后一个标识信息对应的数据状态参数进行比较;
当根据比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,更新所述排序列表。在第三种可能的实现方式中,结合第一方面或第一种可能的实现方式或第二种可能实现的方式,
所述根据所述已更新的数据状态参数以及与所述每个标识信息对应的数据状态参数,更新所述排序列表,包括:
判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据;
当与所述每个标识信息对应的主数据未包含所述已更新的数据状态参数对应的主数据,则删除所述标识信息集中最后一个标识信息,并将与所述已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到所述排序列表中。
在第四种可能的实现方式中,结合第一种可能实现的方式或第二种可能的实现方式或第三种可能实现的方式,还包括:
当需删除主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
遍历所述数据库中的数据状态参数并更新所述排序列表,以使所述标识信息集所包含的标识信息的数目达到所述预设阈值。
在第五种可能的实现方式中,结合第一种可能实现的方式至第四种可能实现的方式,还包括:
当需删除的主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将所述已更新的数据状态参数对应的主数据的标识信息按照所述预设的排序规则加入到所述排序列表中。
本发明第二方面提供一种排序装置,包括:
第一获取单元,用于当更新数据库中主数据的数据状态参数时,根据所述主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,所述排序列表包括按照预设的排序规则进行排序的标识信息集;
第二获取单元,用于根据所述第一获取单元获取的标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
第一更新单元,用于根据所述已更新的数据状态参数以及所述第二获取单元获取的数据状态参数,更新所述排序列表。
在第一种可能的实现方式中,根据第二方面,还包括:判断预设阈值单元,所述判断预设阈值单元用于:
判断所述第一获取单元获取的标识信息集中所包含的标识信息的数目是否小于预设阈值;
若所述数目小于所述预设阈值时,则将所述已更新的数据状态参数的标识信息直接加入所述排序列表,否则,触发所述第一更新单元。
在第二种可能的实现方式中,结合第一方面或第一种可能实现的方式,所述第一更新单元包括:
比较子单元,用于将所述已更新的数据状态参数与所述第一获取单元获取的标识信息集中最后一个标识信息对应的数据状态参数进行比较;
更新子单元,用于当根据所述比较子单元的比较结果确定需根据所述更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,更新所述排序列表。
在第三种可能的实现方式中,结合第二种可能的实现方式,所述更新子单元包括:
判断模块,用于当根据所述比较子单元的比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据,并当判断结果为否时,触发排序模块;
所述排序模块,用于删除所述标识信息集中最后一个标识信息,并将与所述已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到所述排序列表中。
在第四种可能的实现方式中,结合第一种可能实现的方式至第三种可能实现的方式,还包括第二更新单元,所述第二更新单元用于:
当需删除主数据的标识信息时,从所述排序列表中删除所述需删除的主数据的标识信息;
遍历所述数据库中的数据状态参数并更新所述排序列表,以使所标识信息集所包含的标识信息的个数达到所述预设阈值。
在第五种可能的实现方式中,结合第一种可能实现的方式至第三种可能实现的方式,还包括第三更新单元,所述第三更新单元用于:
当需删除主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将所述已更新的数据状态参数对应的主数据的标识信息按照所述预设的排序规则加入到所述排序列表中。
本发明第三方面提供一种终端,包括:至少一个处理器,以及存储器,所述存储器用于存储可执行程序代码,其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于:
当更新数据库中主数据的数据状态参数时,根据所述主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,所述排序列表包括按照预设的排序规则进行排序后的标识信息集;
根据所述标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表。
由上述技术方案可知,本发明提供的排序的方法、装置与终端,当数据库中主数据的数据状态参数发生变化时,仅需要根据已更新的数据状态参数获取相应的排序列表,并根据排序列表中的标识信息获取N个数据状态参数即可,然后根据更新的数据状态参数和已获取的N个数据状态参数进行排序,以更新排序列表,克服了当主数据的数据状态参数进行更新时需要遍历整个数据库获取用户所需获取的前N个主数据的运行效率低和处理时间长的问题,提升了用户的体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为根据发明一实施例的排序的系统的结构示意图;
图1B为根据本发明一实施例的排序的方法的流程示意图;
图2为根据本发明另一实施例的排序的方法的流程示意图;
图3A为根据本发明又一实施例的排序装置的结构示意图;
图3B为根据本发明另一实施例的排序装置的结构示意图;
图4为根据本发明再一实施例的排序装置的结构示意图;
图5A为根据本发明又一实施例的排序装置的结构示意图;
图5B为根据本发明再一实施例的排序装置的结构示意图;
图6为根据本发明另一实施例的排序装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1A所示,为根据本发明的排序的系统的结构示意图。该排序的系统包括数据库110和排序装置300,数据库110和排序装置300可通过总线120连接。数据库110中包括多个主数据以及各主数据对应的数据状态参数。排序装置300中内设排序列表,该排序列表包括按照预设的排序规则进行排序后的标识信息,根据标识信息可以获取数据状态参数,还可以获取到主数据。当更新主数据的数据状态参数时,排序装置300将已更新的数据状态参数与排序列表中各标识信息对应的数据状态参数进行比较,并根据比较结果确定是否更新排序列表。这样,当主数据的数据状态参数发生变化并需要重新进行排序时,排序装置300只需要针对已更新的数据状态参数和排序列表中各标识信息对应的数据状态参数更新排序列表即可,不需要遍历整个数据库110。
实施例一
基于图1A所示的系统架构图,本实施例提供一种排序的方法,用于在主数据的数据状态参数更新时实现对TOP N主数据的快速排序,其适用于现有技术中的任何一种排序系统。本实施例的排序的方法的执行主体为排序装置。
如图1B所示,为根据本实施例的排序的方法的流程示意图,该方法包括:
步骤101,当更新数据库中主数据的数据状态参数时,排序装置根据已更新的数据状态参数,获取与已更新的数据状态参数对应的排序列表,排序列表包括按照预设的排序规则进行排序后的标识信息。
本实施例的标识信息用于获取数据状态参数。具体地,在其中的一种实施方式中,该标识信息可以包括数据状态参数的地址,根据数据状态参数的地址可以获得该数据状态参数;在其中的另一种实施方式中,该标识信息可以包括主数据的地址,在根据主数据的地址找到该主数据后,可以通过主数据查找相应的数据状态参数。
其中,需要说明的是,在获得数据状态参数时,可以根据该数据状态参数获得与该数据状态参数对应的主数据。
其中,需要说明的是,标识信息还可以包括其它各种形式,只要能通过标识信息查找到数据状态参数即可,具体可以根据实际需求进行设定,本发明实施例并未对此进行限定。
数据库中通常包括很多个主数据,每个主数据均可对应多个数据状态参数,具体可以根据实际需要进行设定。其中,主数据为用户需获取的排序名称,数据状态参数为该主数据的属性值。例如,主数据可以为“歌曲名称”,数据状态参数可以为“下载次数”、“点播次数”等,或者主数据可以为“书名”,数据状态参数可以为“点击量”、“更新字数”等。这里的已更新的数据状态参数即是当前发生变化的数据状态参数,例如某首歌的下载次数被更新时,该首歌的歌名为主数据,相应的下载次数为已更新的数据状态参数。在具体实现方式中,主数据及其对应的各个数据状态参数可以采用列表的方式放在数据库中,以便于查找。该包括主数据及其各个状态参数的列表可以对应一个排序列表,也可以对应多个排序列表,例如当数据状态参数为“点击量”时,其对应的一个排序列表可以包括按照点击量从大到小的顺序进行排列的N个标识信息,以获取按照点击量从大到小进行排序的N个数据状态参数以及该N个数据状态参数中每个数据状态参数所对应主数据,该N个数据状态参数中每个数据状态参数所对应主数据即是用户需要获取的TOP N主数据;其对应的另一个排序列表可以包括按照下载量从小到大的顺序进行排列的N个标识信息,以获取按照下载量从小到大的N个数据状态参数以及该N个数据状态参数中每个数据状态参数所对应的主数据。获取该预设的排序列表的方法可以按照现有技术获取,即遍历数据库中所有主数据的数据状态参数,按照预设的排序规则找出前N个数据状态参数。其中,N为大于0的整数。
需要指出的是,更新操作包括很多种,例如更改主数据的某个数据状态参数,或者增加某个主数据时;如果增加某个主数据,相应地,也会增加该主数据的数据状态参数。
步骤102,根据所述标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数。
排序列表包含的标识信息集可包括N个标识信息,根据该N个标识信息可以获得该N个标识信息中每个标识信息对应的主数据和数据状态参数。例如,根据标识信息可先获取数据状态参数,再通过获取的数据状态参数获取相应的主数据,还可以根据标识信息同时获取数据状态参数和主数据,当然该排序列表本身也可以包括数据状态参数和/或主数据,即数据状态参数和/或主数据本身就是标识信息。标识信息的具体实现方式以及如何通过标识信息获取相应的数据状体参数可以根据实际需要进行设定,在此不再赘述。
步骤103,根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表。
具体可根据已更新的数据状态参数和获取到的与所述每个标识信息对应的数据状态参数的排序结果来更新排序列表,以保证用户根据该排序列表获取到的是TOP N主数据。
根据本实施例的排序的方法,当数据库中主数据的数据状态参数发生变化时,仅需要根据排序列表获取N个数据状态参数,并根据已更新的数据状态参数和排序列表中的N个数据状态参数,更新排序列表,克服了当更新主数据的数据状态参数时需要遍历整个数据库的问题,从而降低了获取TOP N主数据的时间,提升了用户的体验。
本实施例中,优选地将排序列表存在排序装置的内存中,即根据已更新的数据状态参数获取预设的排序列表包括:根据已更新的数据状态参数获取在排序装置的内存中预设的排序列表。这样能够尽量减少磁盘读写操作的次数。
实施例二
本实施例基于上述实施例提供一种排序的方法。如图2所示,为根据本实施例的排序的方法的流程示意图。
步骤201,当更新数据库中主数据的数据状态参数时,排序装置根据所述主数据的已更新的数据状态参数,判断是否有与已更新的数据状态参数对应的排序列表,所述排序列表包括按照预设的排序规则进行排序后的标识信息集,当判断结果为是时,执行步骤202,否则停止操作。
其中,标识信息集是标识信息的集合,可以包含至少零个标识信息。
每个数据状态参数均属于一定的类别,例如当数据状态参数为“点击量”时,其所属的类别是“点击量”。
其中,需要说明的是,主数据的数据状态参数不一定会被用作排序,只有在主数据的数据状态参数被用作排序时,才会执行如下步骤,例如,当已更新的数据状态参数为“歌词字数”时,并未有对应对“歌词字数”这一类别的排序列表时,无需进行后续操作。
可选地,采用TOPN排序索引代表排序列表的类别,其可以反映预设的排序规则,例如“点击量最多的前N首歌”、“下载量最多的前N本书”、“差评量最少的前N个淘宝店家”等等。当数据状态参数为某首歌的“点击量”时,其对应的TOPN排序索引为“点击量最多的前N首歌”。其中N为大于0的整数。TOP N排序索引可以与数据状态参数相关联。
本实施例中,以索引数据为标识信息为例进行说明。排序装置根据已更新的数据状态参数获取排序列表,即排序列表中包括N个索引数据。各索引数据可以的组成方式可以是“数据状态参数的地址”、“排序号码;数据状态参数的地址”或者是“排序号码;歌曲名称;数据状态参数的地址”等等,具体可以根据实际需要进行设定。根据索引数据可以直接获取与索引数据相应的数据状态参数,或者根据该索引数据可以获取与索引数据相应的主数据,再根据获取的主数据获取相应的数据状态参数,例如,根据歌曲名称获取到与该歌曲名称对应的点击量、下载量、歌词等所需数据状态参数等。
该排序列表对应的N个数据状态参数可以称为TOP N数据状态参数。
步骤202,判断标识信息集中包含的标识信息的数目是否小于预设阈值,当判断结果为是时,执行步骤203,否则执行步骤204。
本实施例的预设阈值可以根据实际需要进行设定,预设阈值不小于N。具体地,可以根据实际需要将排序列表中的TOP N索引数据的个数设置为N。在之前已删除过TOP N索引数据中的索引数据,但并未在TOP N索引数据中增加新的索引数据时,TOP N索引数据的个数小于预设阈值。
步骤203,将已更新的数据状态参数的标识信息直接加入排序列表。
具体可以按照预设的排序规则将已更新的数据状态参数的标识信息直接加入排序列表。
步骤204,将已更新的数据状态参数与标识信息集中的第N个标识信息对应的数据状态参数进行比较,根据比较结果判断是否更新排序列表,当判断结果为是时,执行步骤205,否则停止操作。
将所述已更新的数据状态参数与所述标识信息集中最后一个标识信息对应的数据状态参数进行比较,即可以判断出是否需将该已更新的数据状态参数的索引数据加入排序列表中。这里的最后一个标识信息即是标识信息集中按照预设规则进行排序的之后,位于末位的标识信息。
例如,当已更新的数据状态参数为“点击量”时,相应的TOP N排序索引为“点击量最多的前N首歌曲”,排序列表中包括点击量最多的前N首歌对应的标识信息,数据状态参数为歌曲点击量,排序规则为按照点击量从大到小进行排列。当已更新的数据状态参数变为200,且TOP N索引数据集中最后一个TOP N索引数据对应的数据状态参数为500时,通过比较可以得知已更新的数据状态参数小于该最后一个TOP N索引数据对应的数据状态参数,又由于排序规则为点击量从大到小进行排序,则可以判断出不需要将已更新的数据对应的索引数据加入TOP N索引数据中;当已更新的数据状态参数为600,且TOP N索引数据集中最后一个索引数据对应的数据状态参数为500时,通过比较得知已更新的数据状态参数大于TOP N索引数据集中最后一个索引数据对应的数据状态参数,又由于排序规则为点击量从大到小进行排序,则说明该已更新的数据状态参数对应的索引数据应该加入到排序列表中,完成排序列表的更新。
步骤205,当根据比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据,当判断结果为是时,执行步骤206的操作,否则,执行步骤207的操作。
步骤206,按照预设的排序规则调整已更新的数据状态参数的标识信息的在排序列表中的位置。
当排序列表中的标识信息对应的主数据包含已更新的数据状态参数对应的主数据时,仅需要按照预设规则,根据数据状态参数的值,对排序列表中的标识信息进行重新排序。
步骤207,删除排序列表中最后一个标识信息,并将与已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到排序列表中。
根据本实施例排序的方法,通过将已更新的数据状态参数与TOP N索引数据中最后一个索引数据对应的数据状态参数进行比较,即可判断出是否需要将已更新的数据对应的索引数据加入TOP N索引数据集中,重新排序也仅是对已更新的数据和TOP N索引数据集对应的数据状态参数进行排序,需要操作的数据较少,减轻了排序系统的负担。此外,由于排序列表是位于排序装置的内存中的,排序列表中可包括的标识信息和/或每个标识信息对应的数据状态参数也是位于排序装置的内存中的,可以尽量减少磁盘读写操作。
此外,步骤202也可以放在步骤204与步骤207之间进行。
需要指出的是,以上TOPN排排序索引、TOPN数据状态参数和TOPN索引数据均可以采用列表的方式,相应的TOP N主数据也可以采用列表(column)的方式,彼此之间可以采用映射的方式以根据某一项内容查找到所需的另外一项内容。这样,创建TOPN索引数据可使用如下的语言形式:
CREATE TOPN{topn_name}
ON{table|view}{(column[ASC|DESC][,...m])}
WITH N_VALUE{n}
{}:必选语法项,实际语句中不必键入大括号。
[]:可选语法项,实际语句中不必键入方括号。
{column[ASC |DESC],[,...m]}:表示可以使用多个column进行排序,各个column之间使用逗号分隔,可以为每个字段设定ASC(Ascending Order,升序排列)和DESC(Descending Order,降序排列)排序规则,不指定时默认使用ASC。关键字WITH N_VALUE后面指定了TOP N索引数据的个数,即N的值。
实施例三
本实施例基于实施例二的排序的方法做进一步举例说明。
数据库中的数据状态参数之一为“小说下载量”,预设的TOP N排序索引为“小说下载量最大的前3个小说”,相应的TOP N索引数据如排序列表1所示,本实施例的TOP N索引数据中每个索引数据均包括排序号码和数据状态参数的地址。
排序列表1
排序号码 |
数据状态参数的地址 |
1 |
数据状态参数的地址1 |
2 |
数据状态参数的地址2 |
3 |
数据状态参数的地址3 |
根据上述地址首先获取数据状态参数,然后根据数据状态参数获取到相应地书名。其中,地址1对应的书名为A,点击量为100;地址2对应的书名为B,点击量为50;地址3对应的书名为C,点击量为30,地址4对应的书名为D,其点击量为20,未列入该TOP N索引数据中。
当数据库某一书名的点击量发生变化时,例如D的点击量变为40时,判断对应的索引数据并不在预设的TOP N索引数据中,则先与C的点击量进行比较,发现其大于C的点击量,则删除C,比较A、B和D的点击量,按照从大到小的顺序进行排序。更新后的TOP N索引数据如排序列表2所示。
排序列表2
排序号码 |
数据状态参数的地址 |
1 |
数据状态参数的地址1 |
2 |
数据状态参数的地址2 |
3 |
数据状态参数的地址4 |
当数据库某一书名的点击量发生变化时,例如C的点击量变为35时,判断出C对应的索引数据位于预设的TOP N索引数据中,则将C的点击量分别与A和B的点击量进行比较。更新后的TOP N索引数据仍与排序列表1相同。
当数据库某一书名的点击量发生变化时,例如B的点击量变为120时,判断出B对应的索引数据位于预设的TOP N索引数据中,则可以将B的点击量仅与排在B之前的点击量进行比较,即仅与A进行比较,发现B的点击量已经超过A的点击量,则更新后的TOP N索引数据如排序列表3所示。
排序列表3
排序号码 |
数据状态参数的地址 |
1 |
数据状态参数的地址2 |
2 |
数据状态参数的地址1 |
3 |
数据状态参数的地址3 |
从以上内容可以看出,当某一书名的点击量发生变化时,排序系统不需要遍历数据库中所有书名对应的点击量进行排序,仅根据更新的点击量和预设的TOP N主数据的点击量进行排序,所操作的数据量小,排序速度快,且排序系统负担较轻。
实施例四
本实施例对上述实施例的排序的方法做进一步补充说明。
本实施例仅对发生删除主数据以及主数据对应的数据状态参数的操作进行具体说明。
当需删除的主数据的标识信息时,从排序列表中删除需删除主数据的标识信息,当更新排序列表时,可以采用以下任一方式进行更新:
方式一,惰性更新方式:遍历主数据所在的数据库中的数据状态参数并更新排序列表,以使标识信息集中所包含的标识信息的数目达到预设阈值。
从TOP N索引数据中删除需删除主数据的索引数据,此时不进行增加索引数据的操作,这样,TOP N索引数据中的索引数据的个数要小于预设阈值。当更新数据库中的数据状态参数时,首先判断该更新的主数据对应的索引数据是否位于TOP N索引数据中,当判断结果为否时,将已更新的数据的对应的索引数据加入TOP N索引数据中作为更新后的TOP N索引数据。
采用以上隋性更新方式,即TOP N索引数据的个数减少时,并不立即执行增加索引数据的操作,而是当数据库中的索引数据对应的数据状态参数更新且该索引数据不位于TOP N索引数据中时,将该索引数据加入TOP N索引数据中,补足TOP N索引数据中的索引数据的个数。虽然这种方式补入的索引数据不一定是真正的TOPN索引数据,但是可以避免对整个数据库的遍历。而且由于真正的TOP N索引数据都是最活跃的数据,其所对应的数据状态参数很快就会进行更新,这样真正应该位于TOP N索引数据中的索引数据很快就会被加入TOP N索引数据中。
方式二、快速更新方式:当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将所述已更新的数据状态参数对应的主数据的标识信息按照所述预设的排序规则加入到所述排序列表中。
从TOP N索引数据中删除需删除数据状态参数对应的索引数据,立即遍历数据库中的数据状态参数,找出应该进入TOP N数据状态参数中的数据状态参数,并将其对应的索引数据加入到TOP N索引数据中。当TOP N索引数据中的索引数据减少时,采用快速更新方式能够使用户每次都获得准确的TOP N主数据。
在实际运用中,可将预设的TOP N索引数据中索引数据的个数设置为N+S个,即预设阈值为N+S个,其中S为大于0的整数。用户在请求TOP N主数据时,根据TOP N索引数据向用户返回TOP N索引数据中的前N个索引数据对应的数据。这样,当发生删除操作时,例如删除M个索引数据,用户还是可以看到N个TOP N主数据,其中1≤M≤S且M为整数。
此外,TOP N索引数据中预设阈值一般不进行修改,当预设阈值减小时,删除TOP N索引数据中多余的索引数据,例如,当前预设阈值为10,将预设阈值修改为8时,删除TOP N索引数据中第9项索引数据和第10项索引数据。当预设阈值增大时,可以采用上面的惰性更新方式和快速更新方式来更新TOP N索引数据,在此不再赘述。
修改预设阈值可以采用如下的形式语言:
UPDATE TOPN{topn_name}
WITH N_VALUE{n}
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
实施例五
本实施例提供一种排序装置,用于执行实施例一的排序的方法。
如图3A所示,为根据本实施例的排序装置的结构示意图。该排序装置300包括第一获取单元301、第二获取单元302和第一更新单元303。
其中,第一获取单元301用于当更新数据库中的主数据的数据状态参数时,根据主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,排序列表包括按照预设的排序规则进行排序的标识信息集;
第二获取单元302用于根据所述第一获取单元301获取的标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
第一更新单元303用于根据所述已更新的数据状态参数以及所述第二获取单元302获取的数据状态参数,更新所述排序列表。
本实施例的排序装置300的具体操作与实施例一一致,在此不再赘述。
根据本实施例的排序装置300,当数据库中主数据的数据状态参数发生变化时,仅需要根据排序列表获取N个数据状态参数即可,并根据已更新的数据状态参数和排序列表对应的N个数据状态参数进行排序,以更新排序列表,克服了当主数据的数据状态参数进行更新时需要遍历整个数据库获取用户所关心的前N个主数据的运行效率低和处理时间长的问题,提升了用户的体验。
本实施例中,优选地将排序列表存在排序装置300的内存中,即根据已更新的数据状态参数获取预设的排序列表包括:根据已更新的数据状态参数获取在排序装置300的内存中预设的排序列表。这样能够尽量减少磁盘读写操作。
可选地,如图3B所示,本实施例的排序装置还包括判断预设阈值单元310,该判断预设阈值单元310用于:
判断所述第一获取单元301获取的标识信息集中所包含的标识信息的数目是否小于预设阈值;
若所述数目小于所述预设阈值时,则将所述已更新的数据状态参数的标识信息直接加入所述排序列表,否则,触发所述第一更新单元303。
实施例六
本实施例基于实施例五提供一种排序装置,用于执行实施例二、实施例三或实施例四的排序的方法。
如图4所示,为根据本实施例的排序装置的结构示意图。该排序装置300包括与实施例五一致的第一获取单元301、第二获取单元302和第一更新单元303,还可以包括判断预设阈值单元310,具体在此不再赘述。
其中,第一更新单元303包括比较子单元401和更新子单元402。比较子单元401用于将所述已更新的数据状态参数与所述第一获取单元301获取的标识信息集中最后一个标识信息对应的数据状态参数进行比较;更新子单元402用于当根据所述比较子单元401的比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,更新所述排序列表。
可选地,更新子单元402包括判断模块403和排序模块404。其中,判断模块403用于当根据所述比较子单元401的比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据,并当判断结果为否时,触发排序模块404;排序模块404用于删除所述标识信息集中最后一个标识信息,并将与所述已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到所述排序列表中。
可选地,本实施例的排序装置300还包括第二更新单元405,该第二更新单元405用于:
当需删除主数据的标识信息时,从所述排序列表中删除所述需删除的主数据的标识信息;
遍历所述数据库中的数据状态参数并更新所述排序列表,以使所标识信息集所包含的标识信息的个数达到所述预设阈值。
可选地,本实施例的排序装置还包括第三更新单元406,该第三更新单元406用于:
当需删除主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将所述已更新的数据状态参数对应的主数据的标识信息按照所述预设的排序规则加入到所述排序列表中。
需要指出的是,排序装置300可以只需要第二更新单元405和第三更新单元406中的一个,当然,第二更新单元405和第三更新单元406可以同时存在,具体根据实际需要确定启动哪一个更新单元。
本实施例的第一获取单元301可具体用于:
当更新主数据的数据状态参数时,根据已更新的数据状态参数获取在排序装置300的内存中的与已更新的数据状态参数对应的排序列表,排序列表包括按照预设的排序规则进行排序的标识信息集,标识信息集包括N个标识信息,根据该N个标识信息可以获取TOPN主数据,其中,N为大于0的整数。
本实施例的排序装置300的具体操作方式相应地与实施例二、实施例三或实施例四一致,在此不再赘述。
根据本实施例排序装置300,通过将已更新的数据与根据排序列表中最后一个标识信息获取的数据状态参数进行比较即可判断出是否需要将已更新的数据对应的索引数据加入排序列表中,重新排序也仅是对已更新的数据和排序列表对应的各数据状态参数进行排序,需要操作的数据较少,减轻了排序系统的负担。
实施例七
如图5A所示,为本发明实施例提供的另一种排序装置的结构图。该排序装置包括至少一个处理器601、通信总线602、存储器603以及至少一个通信接口604。
其中,所述通信总线602用于实现上述组件之间的连接并通信,所述通信接口604用于与外部设备连接并通信。
其中,所述存储器603用于存储需要执行的程序代码,这些程序代码具体可以包括:第一获取单元6301、第二获取单元6302和第一更新单元6303;所述处理器601用于执行所述存储器603中存储的单元,当上述单元被所述处理器601执行时,实现如下功能:
所第一获取单元6301用于当更新数据库中的主数据的数据状态参数时,根据主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,排序列表包括按照预设的排序规则进行排序的标识信息集;
第二获取单元6302用于根据所述第一获取单元6301获取的标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
第一更新单元6303用于根据所述已更新的数据状态参数以及所述第二获取单元6302获取的数据状态参数,更新所述排序列表。
根据本实施例的排序装置,当数据库中主数据的数据状态参数发生变化时,仅需要根据排序列表获取N个数据状态参数,并根据已更新的数据状态参数和排序列表中的N个数据状态参数进行排序,以更新排序列表即可,克服了当主数据的数据状态参数进行更新时需要遍历整个数据库获取用户所关心的前N个主数据的运行效率低和处理时间长的问题,提升了用户的体验。
可选地,如图5B所示,所述存储器603用于存储需要执行的程序代码还可以包括判断预设阈值单元6310,该判断预设阈值单元6310用于:
判断所述第一获取单元6301获取的标识信息集中所包含的标识信息的数目是否小于预设阈值;
若所述数目小于所述预设阈值时,则将所述已更新的数据状态参数的标识信息直接加入所述排序列表,否则,触发所述第一更新单元6303。
实施例八
本实施例为基于实施例七提供的又一种排序装置的结构。
如图6所示,该排序装置中存储器603中的第一更新单元6303包括比较子单元6401和更新子单元6402。
比较子单元6401用于将所述已更新的数据状态参数与所述第一获取单元6301获取的标识信息集中最后一个标识信息对应的数据状态参数进行比较;
更新子单元6402用于当根据所述比较子单元6401的比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,更新所述排序列表。
可选地,更新子单元6402包括判断模块6403和排序模块6404。其中,判断模块6403用于当根据所述比较子单元6401的比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据,并当判断结果为否时,触发排序模块6404;
排序模块6404用于删除所述标识信息集中最后一个标识信息,并与所述已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到所述排序列表中。
可选地,本实施例的排序装置中的存储器603还包括第二更新单元6405,该第二更新单元6405用于:
当需删除主数据的标识信息时,从所述排序列表中删除所述需删除的主数据的标识信息;
遍历所述数据库中的数据状态参数并更新所述排序列表,以使所标识信息集所包含的标识信息的个数达到所述预设阈值。
可选地,本实施例的排序装置中的存储器603还包括第三更新单元6406,该第三更新单元6406用于:
当需删除主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将所述已更新的数据状态参数对应的主数据的标识信息按照所述预设的排序规则加入到所述排序列表中。
本实施例的存储器603中的第一获取单元6301可具体用于:
当更新主数据的数据状态参数时,根据已更新的数据状态参数获取在排序装置的内存中的与已更新的数据状态参数对应的排序列表,排序列表包括按照预设的排序规则进排序的标识信息集,标识信息集包括N个标识信息,根据该N个标识信息可以获取TOP N主数据。
根据本实施例排序装置,通过将已更新的数据与根据排序列表中最后一个标识信息获取的数据状态参数进行比较即可判断出是否需要将更新的数据对应的索引数据加入排序列表中,重新排序也仅是对更新的数据和排序列表对应的各数据状态参数进行排序,需要操作的数据较少,减轻了排序系统的负担。
实施例九
本实施例还提供一种终端,其包括至少一个处理器,以及存储器,存储器用于存储可执行程序代码,其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于:
当更新数据库中主数据的数据状态参数时,根据所述主数据的已更新的数据状态参数,获取与所述已更新的数据状态参数对应的排序列表,所述排序列表包括按照预设的排序规则进行排序后的标识信息集;
根据所述标识信息集中的每个标识信息,获取与所述每个标识信息对应的数据状态参数;
根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表。
可选地,当处理器通过读取存储器中存储的可执行程序代码来执行根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,更新所述排序列表之前,还通过读取存储器中存储的可执行程序代码来执行:
判断所述标识信息集中所包含的标识信息的数目是否小于预设阈值;
若所述数目小于所述预设阈值,则将所述已更新的数据状态参数的标识信息直接加入所述排序列表,否则,根据所述已更新的数据状态参数以及与所述每个标识信息对应的数据状态参数,更新所述排序列表。
可选地,当处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于根据已更新的数据状态参数和N个已排序的数据状态参数更新排序列表时,具体可以是:
将所述已更新的数据状态参数与所述标识信息集中最后一个标识信息对应的数据状态参数进行比较;
当根据比较结果确定需根据所述已更新的数据状态参数以及所述与所述每个标识信息对应的数据状态参数,按照所述预设的排序规则进行排序时,更新所述排序列表。。
可选地,当处理器根据比较结果判断出需根据已更新的数据状态参数和根据每个标识信息获取到的数据状态参数按照预设的排序规则进行排序时,具体可以是:
判断与所述每个标识信息对应的主数据是否包含所述已更新的数据状态参数对应的主数据;
当与所述每个标识信息对应的主数据未包含所述已更新的数据状态参数对应的主数据,则删除所述标识信息集中最后一个标识信息,并将与所述已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到所述排序列表中。
可选地,处理器还可通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于:
当需删除主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
遍历所述数据库中的数据状态参数并更新所述排序列表,以使所述标识信息集所包含的标识信息的数目达到所述预设阈值;或者是:
当需删除的主数据的标识信息时,从所述排序列表中删除需删除的主数据的标识信息;
当更新所述排序列表时,判断所述每个标识信息对应的主数据中是否包含所述已更新的数据状态参数对应的主数据,当判断结果为否时,将已更新的数据状态参数对应的主数据的标识信息按照预设的排序规则加入到排序列表中。
本实施例的终端的操作方法与上述实施例中的排序的方法一致,在此不再赘述。
根据本实施例的终端,当数据库中主数据的数据状态参数发生变化时,仅需要根据排序列表获取N个数据状态参数即可,并根据已更新的数据状态参数和排序列表中的N个数据状态参数进行排序,以更新排序列表,克服了当主数据的数据状态参数进行更新时需要遍历整个数据库获取用户所关心的前N个主数据的运行效率低和处理时间长的问题,提升了用户的体验。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。