CN109542612A - 一种热点关键字获取方法、装置及服务器 - Google Patents
一种热点关键字获取方法、装置及服务器 Download PDFInfo
- Publication number
- CN109542612A CN109542612A CN201710865548.6A CN201710865548A CN109542612A CN 109542612 A CN109542612 A CN 109542612A CN 201710865548 A CN201710865548 A CN 201710865548A CN 109542612 A CN109542612 A CN 109542612A
- Authority
- CN
- China
- Prior art keywords
- keyword
- access times
- chained list
- data block
- hot spot
- 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 94
- 238000005259 measurement Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 34
- 238000003860 storage Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种热点关键字获取方法、装置及服务器,该方法包括:在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,查询出与所述访问次数区间对应的链表;不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要确定热点关键字时,从链表中读取关键字的访问次数,根据关键字的访问次数确定热点关键字。通过本申请的技术方案,可以实现分布式***的负载均衡,提高***的稳定性和高效性,提升对热点关键字的数据请求的整体处理能力。
Description
技术领域
本申请涉及互联网领域,尤其是一种热点关键字获取方法、装置及服务器。
背景技术
分布式***是应对当下大数据存储需求的主流方案之一,在分布式***中,可以部署多个数据库服务器,各数据库服务器用于存储相同的数据。应用服务器在接收到客户端发送的数据请求后,采用hash算法确定数据库服务器,并向该数据库服务器发送数据请求。数据库服务器在接收到数据请求后,将与该数据请求对应的数据返回给应用服务器,以使应用服务器将该数据返回给客户端。
由于hash算法是固定的,因此,用于获取同一数据的数据请求会被定位到同一数据库服务器,从而导致无法实现负载均衡,分布式***的稳定性较差。
例如,应用服务器对数据标识进行hash处理,并根据处理结果确定数据库服务器,针对数据标识A的所有数据请求,被定位到数据库服务器A,针对数据标识B的所有数据请求,被定位到数据库服务器B。若数据标识A的数据请求数量远大于数据标识B的数据请求数量,则数据库服务器A的处理压力较大,数据库服务器B的处理压力较小,无法在数据库服务器之间实现负载均衡。
发明内容
本申请提供一种热点关键字获取方法,应用于数据库服务器,包括:
在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;
更新所述关键字的访问次数在所述链表中的位置;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种热点关键字获取方法,应用于数据库服务器,包括:
在统计周期内,获取关键字,通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;
从所述数据块位置对应的数据块中查询出访问次数,利用查询出的访问次数获得所述关键字的访问次数,将所述关键字的访问次数更新到所述数据块中;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种热点关键字获取方法,应用于数据库服务器,包括:
在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;
更新所述关键字的访问次数在所述链表中的位置;
在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,优先级最低的链表是最小的访问次数区间对应的链表;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种热点关键字获取装置,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,获取所述关键字的访问次数;
确定模块,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
所述确定模块,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种热点关键字获取装置,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,通过所述关键字查询哈希表,得到对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,利用查询出的访问次数获得所述关键字的访问次数,将所述关键字的访问次数更新到所述数据块中;
确定模块,用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
本申请提供一种热点关键字获取装置,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定模块,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
删除模块,用于在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,将所述优先级最低的链表的最后一个数据块中的内容删除;所述优先级最低的链表是最小的访问次数区间对应的链表;
所述确定模块,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
本申请提供一种数据库服务器,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种数据库服务器,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;其中,所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数,并将所述关键字的访问次数更新到所述数据块中;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
本申请提供一种数据库服务器,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,所述优先级最低的链表是最小的访问次数区间对应的链表;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于上述技术方案,本申请实施例中,数据库服务器可以统计出热点关键字,并将热点关键字通知给应用服务器,以使应用服务器对热点关键字的数据请求进行负载均衡处理,从而实现分布式***的负载均衡,提高***的稳定性和高效性,提升对热点关键字的数据请求的整体处理能力。而且,通过划分多个链表,且删除优先级最低的链表的数据块中内容,从而保留最有价值的数据。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的应用场景示意图;
图2A和图2B是本申请一种实施方式中的热点关键字获取方法的流程图;
图3是本申请一种实施方式中的哈希表与链表的数据结构示例;
图4是本申请另一种实施方式中的热点关键字获取方法的流程图;
图5是本申请另一种实施方式中的热点关键字获取方法的流程图;
图6是本申请一种实施方式中的热点关键字获取装置的结构图;
图7是本申请另一种实施方式中的热点关键字获取装置的结构图;
图8是本申请另一种实施方式中的热点关键字获取装置的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种热点关键字获取方法,该方法可以应用于分布式***。参见图1所示,为本申请实施例的应用场景示意图,分布式***可以包括多个数据库服务器、多个应用服务器。图1中以两个数据库服务器,三个应用服务器为例进行说明。在实际应用中,数据库服务器的数量,应用服务器的数量还可以更多,对此数据库服务器的数量,应用服务器的数量不做限制。
为了在数据库服务器之间实现负载均衡,则数据库服务器可以获取到热点关键字,并将热点关键字通知给应用服务器,以使应用服务器对热点关键字的数据请求进行负载均衡处理,从而可以实现数据库服务器之间的负载均衡,避免某些数据库服务器的处理压力较大,而其它数据库服务器的处理压力较小。
本申请实施例中,为了获取热点关键字,则数据库服务器可以统计关键字的访问次数,并基于关键字的访问次数确定该关键字是否为热点关键字。例如,当关键字的访问次数大于预设次数阈值时,则确定该关键字是热点关键字,当关键字的访问次数不大于预设次数阈值时,则确定该关键字不是热点关键字。
本申请实施例中,关键字(Key)是数据库服务器内存储的数据的唯一标识,应用服务器向数据库服务器发送数据请求时,该数据请求可以携带关键字,数据库服务器在接收到该数据请求后,通过这个关键字,就可以从数据库服务器中查询到与该关键字对应的数据,并将这个数据返回给应用服务器。其中,该关键字可以包括但不限于:数据标识、用户标识、商品标识等,对此关键字不做限制,只要基于该关键字,数据库服务器可以查询到本地存储的数据即可。例如,基于数据标识,数据库服务器可以查询到与该数据标识对应的数据,基于用户标识,数据库服务器可以查询到与该用户标识对应的数据。基于商品标识,数据库服务器可以查询到与该商品标识对应的数据。以此类推。
为了统计关键字的访问次数,数据库服务器可以设置统计周期,并在每个统计周期内统计关键字的访问次数。例如,统计周期的时长是1秒,则0-1秒是1个统计周期,1-2秒是1个统计周期,以此类推。在0-1秒这个统计周期内,数据库服务器统计关键字的访问次数,基于关键字的访问次数确定该关键字是否为热点关键字。在1-2秒这个统计周期内,数据库服务器重新统计关键字的访问次数,基于关键字的访问次数确定该关键字是否为热点关键字。以此类推。
在一个例子中,数据库服务器可以使用数据块存储关键字的访问次数,每个关键字占用一个数据块,如数据块1存储关键字1的访问次数,数据块2存储关键字2的访问次数,以此类推。此外,数据库服务器在统计周期内可能接收到大量关键字的数据请求,如几十万甚至上百万,每个关键字占用一个数据块时,则占用大量数据块,即为了存储关键字的访问次数,会占用大量数据块。
但是,热点关键字获取这个功能,只是数据库服务器的辅助功能,数据库服务器不会为这个功能分配大量数据块,即无法使用大量数据块存储关键字的访问次数,继而获取热点关键字。为此,提出了LRU(Least Recently Used,最近最少使用)算法,即基于少量数据块,采用LRU算法存储关键字的访问次数。
例如,数据库服务器为“热点关键字获取”功能分配100个数据块(以100个数据块为例进行说明,实际应用中,分配的数据块可以更多,对此不做限制)。
在统计周期内,若第1-101次接收到的是关键字1的数据请求,则在数据块1中记录关键字1的访问次数,并将数据块1更新为LRU链表的首个数据块。若第102次接收到的是关键字2的数据请求,则在数据块2中记录关键字2的访问次数,并将数据块2更新为LRU链表的首个数据块,将数据块1更新为LRU链表的第2个数据块。以此类推,若第200次接收到的是关键字100的数据请求,则在数据块100中记录关键字100的访问次数,并将数据块100更新为LRU链表的首个数据块,将数据块99更新为LRU链表的第2个数据块,以此类推,将数据块1更新为LRU链表的第100个数据块(LRU链表的最后一个数据块)。
若第201次接收到的是关键字101的数据请求,由于已经没有可用数据块,因此,数据库服务器从LRU链表中删除最后一个数据块记录的内容,即删除数据块1中记录的关键字1的访问次数,在数据块1中记录关键字101的访问次数,将数据块1更新为LRU链表的首个数据块,将数据块100更新为LRU链表的第2个数据块,将数据块99更新为LRU链表的第3个数据块,以此类推。
显然,在接收到关键字101的数据请求之前,数据块1中记录的关键字1的访问次数是最大的,关键字1可能是热点关键字,而在接收到关键字101的数据请求后,数据块1中记录的关键字1的访问次数被删除,导致热点关键字的访问次数无法保留到统计周期结束,也就无法统计出关键字1是热点关键字。
针对上述发现,本申请实施例中,可以划分多个访问次数区间,每个访问次数区间对应一个链表,且不同的访问次数区间对应不同的链表。其中,所述链表可以包括但不限于LRU链表,为了方便描述,后续以链表为例进行说明。
例如,链表1对应访问次数区间1,且所述访问次数区间1对应于(访问次数1-访问次数100);链表2对应访问次数区间2,且所述访问次数区间2对应于(访问次数101-访问次数200);链表3对应访问次数区间3,且所述访问次数区间3对应于(访问次数201-无穷大),即大于等于访问次数201即可。当然,上述示例是以三个链表、三个访问次数区间为例进行说明的,在实际应用中,链表的数量、访问次数区间的数量还可以更多,对此数量不做限制。此外,上述访问次数区间对应的数值,也只是本申请的一个示例,对此不做限制。
在上述应用场景下,参见图2A所示,为本申请实施例中提出的热点关键字获取方法的流程图,该方法可以应用于数据库服务器,且该方法可以包括:
步骤201,在统计周期内,获取关键字,并获取该关键字的访问次数。
在一个例子中,在每个统计周期内,数据库服务器均可以获取关键字,并获取该关键字的访问次数,为了方便描述,后续以一个统计周期为例进行说明。
在一个例子中,应用服务器(如APP服务器)在接收到客户端发送的数据请求后,可以采用hash算法确定数据库服务器,并向该数据库服务器发送数据请求。数据库服务器在接收到该数据请求后,从该数据请求中解析出关键字。
其中,该关键字可以包括但不限于:数据标识、用户标识、商品标识等,对此关键字不做限制,只要基于该关键字,数据库服务器可以查询到本地存储的数据即可。例如,基于数据标识,数据库服务器可以查询到与该数据标识对应的数据,基于用户标识,数据库服务器可以查询到与该用户标识对应的数据。
其中,该客户端可以是终端设备(如PC(Personal Computer,个人计算机)、笔记本电脑、移动终端等)的APP,也可以是终端设备的浏览器,对此客户端的类型不做限制,所有能够访问应用服务器的客户端,均在本申请保护范围内。
其中,应用服务器可以是为客户端提供服务的服务器,且所述应用服务器可以从数据库服务器获取到客户端请求的数据,并将该数据发送给客户端。如应用服务器可以是数据平台、电商平台等,对此应用服务器的类型不做限制。
其中,数据库服务器可以是存储数据的服务器,数据库服务器在接收到应用服务器发送的数据请求后,从该数据请求中解析出关键字,从本地查询出与该关键字对应的数据,将该数据发送给应用服务器,继而将数据返回给客户端。
参见图2B所示,针对“获取该关键字的访问次数”的过程,可以包括:
步骤2011,获取该关键字对应的数据块位置。
在一个例子中,针对“获取该关键字对应的数据块位置”的过程,可以包括但不限于如下方式:方式一、由于数据块可以记录关键字与访问次数的对应关系,因此,数据库服务器可以依次遍历每个数据块,若遍历到的数据块中记录有该关键字,则该数据块的数据块位置就是该关键字对应的数据块位置。方式二、数据库服务器可以存储哈希表,该哈希表用于记录关键字与数据块位置的对应关系;基于此哈希表,数据库服务器可以通过该关键字查询所述哈希表,若该哈希表中存在该关键字,则可以得到与该关键字对应的数据块位置。
在方式二中,由于数据库服务器不需要依次遍历每个数据块,只需要存储哈希表,就可以从哈希表中查询到与关键字对应的数据块位置,从而避免数据库服务器的遍历操作,减轻数据库服务器的处理压力,节省遍历操作的时间。
参见图3所示,为哈希表与链表的数据结构示例,该哈希表可以包括但不限于HashMap(哈希图)表,该链表可以包括但不限于N级的LRU链表。
在一个例子中,哈希表用于记录关键字与数据块位置的对应关系,数据库服务器在接收到数据请求后,可以从该数据请求中解析出关键字,并通过该关键字查询哈希表。若该哈希表中不存在该关键字,则数据库服务器为该关键字选取数据块,将该关键字的访问次数记录到选取的数据块中,并在哈希表中记录该关键字与选取的数据块的数据块位置的对应关系。若该哈希表中存在该关键字,则数据库服务器可以从哈希表中得到与该关键字对应的数据块位置。
在一个例子中,N级链表是指N个链表,每个链表对应一个访问次数区间,如链表1对应访问次数区间1(访问次数1-访问次数100),链表2对应访问次数区间2(访问次数101-访问次数200),链表3对应访问次数区间3(访问次数201-无穷大),这一情况可以表示:当数据块中记录的关键字的访问次数位于所述访问次数区间1时,则该数据块属于链表1;当数据块中记录的关键字的访问次数位于所述访问次数区间2时,则该数据块属于链表2;当数据块中记录的关键字的访问次数位于所述访问次数区间3时,则该数据块属于链表3。
在一个例子中,针对方式一,数据块用于记录关键字、该关键字的访问次数,针对方式二,数据块用于记录关键字的访问次数,当然,数据块也可以记录关键字。为了方便描述,以数据块记录关键字、该关键字的访问次数为例。
针对方式二,“获取该关键字对应的数据块位置”的示例可以为:数据库服务器在接收到关键字1的数据请求后,通过关键字1查询哈希表。若哈希表中不存在关键字1,则数据库服务器为关键字1选取数据块(如未被占用的数据块或者当前释放的数据块;未被占用的数据块是指:数据块还没有记录关键字、关键字的访问次数;当前释放的数据块是指:数据块已经记录关键字、关键字的访问次数,但是将这个数据块中记录的内容删除,后续过程介绍删除过程)。
假设为关键字1选取数据块80,则数据块80用于记录关键字1、关键字1的访问次数,并在哈希表中记录关键字1与数据块80的数据块位置的对应关系。
当数据库服务器再次接收到关键字1的数据请求后,通过关键字1查询哈希表,由于哈希表中已经存在关键字1,因此,数据库服务器可以直接从哈希表中得到与关键字1对应的数据块位置,也就是,数据块80的数据块位置。
步骤2012,从该数据块位置对应的数据块中查询出访问次数。
由于数据块用于记录关键字、关键字的访问次数,因此,数据库服务器在得到数据块位置后,可以从该数据块位置对应的数据块中查询出访问次数。
步骤2013,利用查询出的访问次数获得关键字的访问次数。
其中,针对“利用查询出的访问次数获得关键字的访问次数”的过程,可以包括但不限于如下方式:确定该关键字的访问次数为查询出的访问次数加预设数值(如1);或者,获取该关键字对应的资源信息,并根据该资源信息确定该关键字的权重值,并确定该关键字的访问次数为查询出的访问次数加权重值。
步骤2014,将该关键字的访问次数更新到该数据块位置对应的数据块中。
其中,从数据块中查询出的访问次数,是上一次更新该数据块时,记录到该数据块中的关键字的访问次数,为了方便描述,后续过程中,将该访问次数称为关键字的第一访问次数。当前获得的关键字的访问次数,是本次更新该数据块时,记录到该数据块中的关键字的访问次数,为了方便描述,后续过程中,将该访问次数称为关键字的第二访问次数。显然,在下一次需要更新该数据块时,第二访问次数也就变成了记录到该数据块中的关键字的第一访问次数。
在一个例子中,每次获得关键字(如关键字1)后,从数据块位置对应的数据块(如数据块80)中读取关键字1的第一访问次数,并将第一访问次数加1,得到第二访问次数。例如,在第100次获得关键字1后,从数据块80中读取关键字1的第一访问次数99,将第一访问次数99加1,得到第二访问次数100,并将第二访问次数100更新到数据块80中。在第101次获得关键字后,从数据块80中读取关键字1的第一访问次数100,并将第一访问次数100加1,得到第二访问次数101,并将第二访问次数101更新到数据块80中。以此类推。
在另一个例子中,每次获得关键字(如关键字1)后,可以从数据块位置对应的数据块(如数据块80)中读取该关键字1的第一访问次数,并将该第一访问次数加权重值,从而得到第二访问次数。例如,以权重值是5为例进行说明,则在第100次获得关键字1后,可以从数据块80中读取关键字1的第一访问次数495,将第一访问次数495加权重值5,得到第二访问次数500,并将第二访问次数500更新到数据块80中。在第101次获得关键字后,可以从数据块80中读取关键字1的第一访问次数500,并将第一访问次数100加权重值5,得到第二访问次数505,并将第二访问次数505更新到数据块80中。以此类推。
为了获得关键字(如关键字1)的权重值(如上述权重值5),在每次获得关键字1后,可以获取关键字1对应的资源信息,并根据该资源信息确定关键字1的权重值。或者,在第一次获得关键字1后,可以获取关键字1对应的资源信息,并根据该资源信息确定关键字1的权重值;然后,将该权重值记录到数据块80,再次获得关键字1后,可以直接从数据块80中读取到该权重值。
在一个例子中,该资源信息可以包括但不限于:关键字对应数据的数据尺寸,和/或,关键字对应请求的处理时间。基于此,针对“根据资源信息确定关键字的权重值”的过程,可以包括但不限于如下方式:若资源信息包括关键字对应数据的数据尺寸,则可以根据数据尺寸与预设尺寸的关系,确定关键字的权重值。若资源信息包括关键字对应请求的处理时间,则可以根据处理时间与预设时间的关系,确定关键字的权重值。若资源信息包括关键字对应数据的数据尺寸和关键字对应请求的处理时间,则可以根据数据尺寸与预设尺寸的关系,确定关键字的第一子权重值;根据处理时间与预设时间的关系,确定关键字的第二子权重值;根据该第一子权重值和该第二子权重值确定关键字的权重值。
其中,针对“根据数据尺寸与预设尺寸的关系,确定关键字的权重值”的过程,包括:根据经验配置预设尺寸,若关键字对应数据的数据尺寸小于等于预设尺寸,确定关键字的权重值为1。若关键字对应数据的数据尺寸大于预设尺寸,确定关键字的权重值为“对数据尺寸除以预设尺寸向上取整”,如数据尺寸为8,预设尺寸为5时,权重值为“对8/5向上取整”,即权重值为2;数据尺寸为11,预设尺寸为5时,权重值为“对11/5向上取整”,即权重值为3。
其中,针对“根据处理时间与预设时间的关系,确定关键字的权重值”的过程,包括:根据经验配置预设时间,若关键字对应请求的处理时间小于等于预设时间,确定关键字的权重值为1。若关键字对应请求的处理时间大于预设时间,确定关键字的权重值为“对处理时间除以预设时间向上取整”,如处理时间为8,预设时间为5时,权重值为“对8/5向上取整”,即权重值为2;处理时间为11,预设时间为5时,权重值为“对11/5向上取整”,即权重值为3。
其中,针对“根据数据尺寸与预设尺寸的关系,确定关键字的第一子权重值”的过程,可以包括:若关键字对应数据的数据尺寸小于等于预设尺寸,则确定该关键字的第一子权重值为1。若关键字对应数据的数据尺寸大于预设尺寸,则确定该关键字的第一子权重值为“对数据尺寸除以预设尺寸向上取整”。
其中,针对“根据处理时间与预设时间的关系,确定关键字的第二子权重值”的过程,可以包括:若关键字对应请求的处理时间小于等于预设时间,则确定该关键字的第二子权重值为1。若关键字对应请求的处理时间大于预设时间,则确定该关键字的第二子权重值为“对处理时间除以预设时间向上取整”。
其中,针对“根据该第一子权重值和该第二子权重值确定关键字的权重值”的过程,可以包括:确定关键字的权重值为该第一子权重值加该第二子权重值。
例如,若数据尺寸为8,预设尺寸为5,处理时间为11,预设时间为5,则第一子权重值为“对8/5向上取整”,即第一子权重值为2;第二子权重值为“对11/5向上取整”,即第二子权重值为3;因此,关键字的权重值为2+3=5。
在上述实施例中,关键字对应数据的数据尺寸是指:假设应用服务器请求的是关键字1对应的数据A,则关键字1对应数据的数据尺寸是数据A的大小。由于数据库服务器存储有数据A,因此,数据库服务器可以获知数据A的大小。
在上述实施例中,关键字对应请求的处理时间是指:假设应用服务器请求的是关键字1对应的数据A,则关键字1对应请求的处理时间是,从数据库服务器接收到针对关键字1的数据请求,至数据库服务器向应用服务器返回携带数据A的响应的这段时间,而且,数据库服务器可以分析出这段时间的大小。
步骤202,确定该访问次数(即步骤201中获取到的访问次数)所在的访问次数区间,并查询出与该访问次数区间对应的链表(如LRU链表等)。
假设获取到的关键字的访问次数为105,则确定访问次数105位于访问次数区间2,且访问次数区间2对应链表2。假设获取到的关键字的访问次数为260,则确定访问次数206位于访问次数区间3,且访问次数区间3对应链表3。
步骤203,更新关键字的访问次数在链表(即访问次数区间对应的链表)中的位置,如可以将关键字的访问次数所在的数据块更新为该链表的首个数据块。
假设关键字1的访问次数为105,则可以将关键字1的访问次数105所在的数据块80更新为链表2的首个数据块。假设关键字1的访问次数为260,则可以将关键字1的访问次数260所在的数据块80更新为链表3的首个数据块。
假设链表1依次包括数据块1、数据块2、数据块80、数据块3-数据块79,链表2依次包括数据块81-数据块90,链表3依次包括数据块91-数据块100。
进一步的,在步骤201中,假设将数据块80记录的访问次数从100更新到105,在步骤202中,确定出链表为链表2,在步骤203中,可以将数据块80更新为链表2的首个数据块。也就是说,链表1依次包括数据块1-数据块79,链表2依次包括数据块80-数据块90,链表3依次包括数据块91-数据块100。
又例如,在步骤201中,假设将数据块60记录的访问次数从50更新到51,在步骤202中,确定出链表为链表1,即数据块60的链表并没有发生变化,在步骤203中,可以将数据块60更新为链表1的首个数据块。也就是说,链表1可以依次包括数据块60、数据块1-数据块59,数据块61-数据块79,链表2可以依次包括数据块80-数据块90,链表3可以依次包括数据块91-数据块100。
又例如,在步骤201中,假设将数据块90记录的访问次数从199更新到208,在步骤202中,确定出链表为链表3,即数据块90的链表发生了变化,在步骤203中,可以将数据块90更新为链表3的首个数据块。也就是说,链表1可以依次包括数据块60、数据块1-数据块59,数据块61-数据块79,链表2可以依次包括数据块80-数据块89,链表3可以依次包括数据块90-数据块100。
在一个例子中,在统计周期内,若需要删除数据块中的内容,则可以查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,所述优先级最低的链表是最小的访问次数区间对应的链表。
其中,数据库服务器在接收到应用服务器发送的数据请求时,若该数据请求携带的关键字是新关键字(即所有数据块中均没有记录该关键字的访问次数),且所有数据块均已经被占用,则确定需要删除一个数据块中的内容。
其中,本申请实施例中的多个链表,均具有优先级,优先级最低的链表是最小的访问次数区间对应的链表,优先级最高的链表是最大的访问次数区间对应的链表,访问次数区间越大时,则该访问次数区间对应的链表的优先级越高。
例如,由于访问次数区间3(访问次数201-无穷大)大于访问次数区间2(访问次数101-访问次数200),因此,确定访问次数区间3对应的链表3的优先级高于访问次数区间2对应的链表2的优先级。由于访问次数区间2大于访问次数区间1(访问次数1-访问次数100),因此,可以确定访问次数区间2对应的链表2的优先级高于访问次数区间1对应的链表1的优先级。综上所述,链表1的优先级可以最低,链表3的优先级可以最高,且链表2的优先级位于中间。
假设链表1依次包括数据块1-数据块79,链表2依次包括数据块80-数据块90,链表3依次包括数据块91-数据块100,则:在需要删除数据块中的内容时,可以查询出优先级最低的链表1,并将链表1的最后一个数据块(如数据块79)中的内容(如关键字、关键字的访问次数等)删除。这样,数据块79可以记录新关键字以及新关键字的访问次数。然后,将数据块79更新为链表1的首个数据块。也就是说,链表1可以依次包括数据块79、数据块1-数据块78,链表2依次包括数据块80-数据块90,链表3依次包括数据块91-数据块100。
在将链表1的数据块79中的内容(如关键字、关键字的访问次数等)删除之后,还可以从哈希表中删除数据块79中的关键字与数据块79的数据块位置的对应关系,并在哈希表中记录新关键字与数据块79的数据块位置的对应关系。
综上所述,优先级高的链表的各数据块,其中记录的访问次数较大,而优先级低的链表的各数据块,其中记录的访问次数较小,例如,优先级最高的链表3的各数据块,其中记录的访问次数大于等于201,如可以是10000,而优先级最低的链表3的各数据块,其中记录的访问次数小于等于100,如可以是1,因此,在需要删除数据块中的内容时,是删除优先级最低的链表1中的关键字,使得访问次数小的关键字被删除,而访问次数大的关键字不会被删除,即可能是热点关键字的关键字不会被删除,从而可以将热点关键字的访问次数保留到统计周期结束,这样,在统计热点关键字时,可以提高统计数据的有效性。
步骤204,在需要确定热点关键字时,从链表(如从链表的数据块)中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
其中,当统计周期结束后,则需要确定热点关键字,执行“根据关键字的访问次数确定热点关键字”的过程,然后,可以进入到下一个统计周期,并重新执行上述步骤201-步骤203。或者,当接收到用于确定热点关键字的指令时,则需要确定热点关键字,执行“根据关键字的访问次数确定热点关键字”的过程,然后,可以进入到下一个统计周期,并重新执行上述步骤201-步骤203。
其中,确定热点关键字后,还可以将所述热点关键字通知给应用服务器。
例如,在统计周期结束后,数据库服务器可以依次从每个数据块(如数据块1-数据块100)中读取关键字的访问次数,若关键字的访问次数大于预设次数阈值(可以根据经验进行配置),则可以确定该关键字是热点关键字,若关键字的访问次数不大于预设次数阈值,则可以确定该关键字不是热点关键字。
在一个例子中,针对“从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字”的过程,可以包括但不限于:按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;优先级最高的链表是最大的访问次数区间对应的链表,优先级最低的链表是最小的访问次数区间对应的链表。然后,若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字。在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块。
例如,假设链表1依次包括数据块1-数据块79,链表2依次包括数据块80-数据块90,链表3依次包括数据块91-数据块100,且预设次数阈值为210,则:按照优先级最高的链表到优先级最低的链表的顺序,数据库服务器先遍历链表3的每个数据块(如数据块91-数据块100),再遍历链表2的每个数据块(如数据块80-数据块90),再遍历链表1的每个数据块(如数据块1-数据块79)。
假设数据块91-数据块99中记录的访问次数大于预设次数阈值,而数据块100中记录的访问次数不大于预设次数阈值,则数据块91-数据块99中记录的关键字是热点关键字,而数据块100中记录的关键字不是热点关键字。而且,由于遍历到存在不是热点关键字的链表3,因此,停止遍历下一个链表的数据块,即不再遍历链表2的每个数据块,也不再遍历链表1的每个数据块,结束遍历。
显然,在上述方式中,只遍历链表3的每个数据块,而不再遍历链表2的每个数据块,不再遍历链表1的每个数据块,从而减轻数据库服务器的处理压力,节省数据库服务器的资源,可以加快数据块遍历的过程,节省处理时间。
在一个例子中,在统计周期结束后,还可以清除所有链表的数据块中的内容,并清除哈希表中的所有内容,这样,数据块、哈希表、链表均回到初始状态,即在初始状态下,重新执行上述步骤201-步骤203,对此过程不再赘述。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在一个例子中,数据库服务器在获取到热点关键字后,可以将热点关键字通知给应用服务器。应用服务器在获取到热点关键字后,可以在本地缓存热点关键字对应的数据。这样,应用服务器在接收到客户端发送的针对热点关键字的数据请求后,可以从本地查询到热点关键字对应的数据,并将热点关键字对应的数据发送给客户端,而不用到数据库服务器获取热点关键字对应的数据。
在另一个例子中,应用服务器在获取到热点关键字后,还可以改变针对热点关键字的hash算法,避免将针对热点关键字的数据请求都定位到同一个数据库服务器,从而实现负载均衡,提高分布式***的稳定性。例如,应用服务器在接收到客户端发送的针对热点关键字的数据请求后,通过定期改变hash算法,使得数据请求1-数据请求100发送给数据库服务器A,数据请求101-数据请求200发送给数据库服务器B,以此类推,从而实现数据库服务器之间的负载均衡。
例如,应用服务器每接收到100个针对热点关键字的数据请求后,就可以改变hash算法,从而变更数据库服务器,实现数据库服务器之间的负载均衡。
在另一个例子中,数据库服务器在获取到热点关键字后,还可以在数据库服务器的HotZone存储区域(即预先划分的用于存储热点数据的区域)缓存热点关键字对应的数据。这样,数据库服务器在接收到应用服务器发送的针对热点关键字的数据请求后,可以直接从HotZone存储区域查询到热点关键字对应的数据,并将热点关键字对应的数据发送给应用服务器,而不用到数据库服务器的数据存储介质获取热点关键字对应的数据,从而加快数据获取速度。
综上所述,则数据获取过程的一个示例可以为:应用服务器在接收到客户端发送的携带关键字的数据请求后,先从本地查询该关键字对应的数据;若本地存在该关键字对应的数据,则应用服务器直接将该关键字对应的数据发送给客户端;若本地不存在该关键字对应的数据,则应用服务器向数据库服务器发送携带该关键字的数据请求。数据库服务器在接收到应用服务器发送的携带关键字的数据请求后,从HotZone存储区域查询该关键字对应的数据;若HotZone存储区域存在该关键字对应的数据,则数据库服务器从HotZone存储区域获取该关键字对应的数据,并将该关键字对应的数据发送给应用服务器;若HotZone存储区域不存在该关键字对应的数据,则可以从数据库服务器的数据存储介质获取该关键字对应的数据,并将该关键字对应的数据发送给应用服务器。
在一个例子中,应用服务器在本地缓存热点关键字对应的数据后,还可以为该数据设置过期时间,在过期时间到达后,则从本地删除缓存的数据。数据库服务器在HotZone存储区域缓存热点关键字对应的数据后,还可以为该数据设置过期时间,在过期时间到达后,则从HotZone存储区域删除缓存的数据。
基于上述技术方案,本申请实施例中,数据库服务器可以统计出热点关键字,并将热点关键字通知给应用服务器,以使应用服务器对热点关键字的数据请求进行负载均衡处理,从而实现分布式***的负载均衡,提高***的稳定性和高效性,提升对热点关键字的数据请求的整体处理能力。而且,由于数据库服务器不需要依次遍历每个数据块,只需要存储哈希表,就可以从哈希表中查询到与关键字对应的数据块位置,从而避免数据库服务器的遍历操作,减轻数据库服务器的处理压力,节省遍历操作的时间。在需要删除数据块中的内容时,是删除优先级最低的链表中的关键字,使得访问次数小的关键字被删除,而访问次数大的关键字不会被删除,即可能是热点关键字的关键字不会被删除,从而可以将热点关键字的访问次数保留到统计周期结束,在统计热点关键字时,可以提高统计数据的有效性。可以只遍历优先级高的链表的每个数据块,而不再遍历优先级低的链表的每个数据块,就统计出热点关键字,从而减轻数据库服务器的处理压力,节省数据库服务器的资源,节省处理时间。
基于与上述方法同样的申请构思,参见图4所示,为另一种热点关键字获取方法的流程图,该方法可以应用于数据库服务器,且该方法可以包括:
步骤401,在统计周期内,获取关键字,并通过该关键字查询哈希表,得到与该关键字对应的数据块位置。其中,该哈希表用于记录关键字与数据块位置的对应关系,因此,可以从该哈希表中得到与该关键字对应的数据块位置。
步骤402,从该数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得关键字的访问次数,将该关键字的访问次数更新到该数据块中。
步骤403,在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
在一个例子中,在通过关键字查询哈希表之后,若哈希表中不存在该关键字,则为该关键字选取数据块;将该关键字的访问次数记录到选取的数据块中,并在哈希表中记录该关键字与选取的数据块的数据块位置的对应关系。
在一个例子中,针对“利用查询出的访问次数获得关键字的访问次数”的过程,可以包括但不限于如下方式:确定关键字的访问次数为查询出的访问次数加预设数值;或者,获取关键字对应的资源信息,根据资源信息确定关键字的权重值,并确定关键字的访问次数为查询出的访问次数加权重值;其中,该资源信息包括关键字对应数据的数据尺寸,和/或,关键字对应请求的处理时间。
其中,针对图4所示流程,与图2A所示流程类似,在此不再重复赘述。
基于与上述方法同样的申请构思,参见图5所示,为另一种热点关键字获取方法的流程图,该方法可以应用于数据库服务器,且该方法可以包括:
步骤501,在统计周期内,获取关键字,并获取该关键字的访问次数。
步骤502,确定该访问次数所在的访问次数区间,并查询出与该访问次数区间对应的链表;其中,不同的访问次数区间可以对应不同的链表。
步骤503,更新所述关键字的访问次数在该链表中的位置。
步骤504,在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将优先级最低的链表的最后一个数据块中的内容删除;其中,优先级最低的链表是最小的访问次数区间对应的链表。
步骤505,在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
在一个例子中,针对“从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字”的过程,可以包括但不限于:按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;其中,优先级最高的链表是最大的访问次数区间对应的链表,优先级最低的链表是最小的访问次数区间对应的链表;若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字;在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块。
其中,针对图5所示流程,与图2A所示流程类似,在此不再重复赘述。
基于与上述方法同样的申请构思,本申请实施例还提供一种热点关键字获取装置,应用于数据库服务器,如图6所示,为热点关键字获取装置的结构图。
获取模块601,用于在统计周期内,获取关键字,并获取关键字的访问次数;
确定模块602,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
所述确定模块602,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
所述获取模块601,具体用于在获取所述关键字的访问次数的过程中,获取所述关键字对应的数据块位置,并从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数;
其中,所述获取模块601,具体用于在获取所述关键字对应的数据块位置的过程中,通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;其中,所述哈希表用于记录关键字与数据块位置的对应关系;
在利用查询出的访问次数获得所述关键字的访问次数的过程中,确定所述关键字的访问次数为查询出的访问次数加预设数值;或者,获取所述关键字对应的资源信息,并根据所述资源信息确定所述关键字的权重值,并确定所述关键字的访问次数为查询出的访问次数加所述权重值;其中,所述资源信息包括:所述关键字对应数据的数据尺寸,和/或,所述关键字对应请求的处理时间。
在一个例子中,所述热点关键字获取装置还包括(在图中未视出):
删除模块,用于在需要删除数据块中的内容时,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;
所述确定模块602,具体用于在根据关键字的访问次数确定热点关键字的过程中,按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字;在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块;
其中,所述优先级最高的链表是最大的访问次数区间对应的链表,所述优先级最低的链表是最小的访问次数区间对应的链表。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据库服务器,所述数据库服务器包括:处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,可以应用于数据库服务器,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例还提供一种热点关键字获取装置,应用于数据库服务器,如图7所示,为热点关键字获取装置的结构图。
获取模块701,用于在统计周期内,获取关键字,通过所述关键字查询哈希表,得到对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块查询出访问次数,利用查询出的访问次数获得所述关键字的访问次数,将所述关键字的访问次数更新到所述数据块中;
确定模块702,用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据库服务器,所述数据库服务器包括:处理器,用于在统计周期内,获取关键字,并通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;其中,所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数,并将所述关键字的访问次数更新到所述数据块中;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,可以应用于数据库服务器,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:在统计周期内,获取关键字,并通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数,并将所述关键字的访问次数更新到所述数据块中;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例还提供一种热点关键字获取装置,应用于数据库服务器,如图8所示,为热点关键字获取装置的结构图。
获取模块801,用于在统计周期内,获取关键字,获取关键字的访问次数;
确定模块802,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
删除模块803,用于在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,将所述优先级最低的链表的最后一个数据块中的内容删除;优先级最低的链表是最小的访问次数区间对应的链表;
所述确定模块802,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据库服务器,所述数据库服务器包括:处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,所述优先级最低的链表是最小的访问次数区间对应的链表;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,可以应用于数据库服务器,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,所述优先级最低的链表是最小的访问次数区间对应的链表;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (24)
1.一种热点关键字获取方法,其特征在于,应用于数据库服务器,包括:
在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;
更新所述关键字的访问次数在所述链表中的位置;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
2.根据权利要求1所述的方法,其特征在于,
所述获取所述关键字的访问次数的过程,具体包括:
获取所述关键字对应的数据块位置;
从所述数据块位置对应的数据块中查询出访问次数;
利用查询出的访问次数获得所述关键字的访问次数。
3.根据权利要求2所述的方法,其特征在于,
所述获取所述关键字对应的数据块位置的过程,具体包括:
通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;
其中,所述哈希表用于记录关键字与数据块位置的对应关系。
4.根据权利要求3所述的方法,其特征在于,
所述通过所述关键字查询哈希表之后,所述方法还包括:
若所述哈希表中不存在所述关键字,则为所述关键字选取数据块;
将所述关键字的访问次数记录到选取的数据块中,并在所述哈希表中记录所述关键字与所述选取的数据块的数据块位置的对应关系。
5.根据权利要求2所述的方法,其特征在于,
所述利用查询出的访问次数获得所述关键字的访问次数的过程,具体包括:
确定所述关键字的访问次数为查询出的访问次数加预设数值;或者,
获取所述关键字对应的资源信息,并根据所述资源信息确定所述关键字的权重值,并确定所述关键字的访问次数为查询出的访问次数加所述权重值。
6.根据权利要求5所述的方法,其特征在于,所述资源信息包括:所述关键字对应数据的数据尺寸,和/或,所述关键字对应请求的处理时间;
所述根据所述资源信息确定所述关键字的权重值的过程,具体包括:
根据所述数据尺寸与预设尺寸的关系,确定所述关键字的权重值;或者,
根据所述处理时间与预设时间的关系,确定所述关键字的权重值;或者,
根据所述数据尺寸与预设尺寸的关系,确定所述关键字的第一子权重值;
根据所述处理时间与预设时间的关系,确定所述关键字的第二子权重值;
根据所述第一子权重值和所述第二子权重值确定所述关键字的权重值。
7.根据权利要求2所述的方法,其特征在于,所述利用查询出的访问次数获得所述关键字的访问次数之后,所述方法还包括:
将所述关键字的访问次数更新到所述数据块位置对应的数据块中。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在需要删除数据块中的内容时,查询出优先级最低的链表;
将所述优先级最低的链表的最后一个数据块中的内容删除;
其中,优先级最低的链表是最小的访问次数区间对应的链表。
9.根据权利要求1所述的方法,其特征在于,
所述更新所述关键字的访问次数在所述链表中的位置的过程,具体包括:
将所述关键字的访问次数所在的数据块更新为所述链表的首个数据块。
10.根据权利要求1所述的方法,其特征在于,
所述根据关键字的访问次数确定热点关键字的过程,具体包括:
按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;其中,所述优先级最高的链表是最大的访问次数区间对应的链表,所述优先级最低的链表是最小的访问次数区间对应的链表;
若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字;
在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在统计周期结束后,清除所有链表的数据块中的内容。
12.一种热点关键字获取方法,其特征在于,应用于数据库服务器,包括:
在统计周期内,获取关键字,通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;
从所述数据块位置对应的数据块中查询出访问次数,利用查询出的访问次数获得所述关键字的访问次数,将所述关键字的访问次数更新到所述数据块中;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
13.根据权利要求12所述的方法,其特征在于,
所述通过所述关键字查询哈希表之后,所述方法还包括:
若所述哈希表中不存在所述关键字,则为所述关键字选取数据块;
将所述关键字的访问次数记录到选取的数据块中,并在所述哈希表中记录所述关键字与所述选取的数据块的数据块位置的对应关系。
14.根据权利要求12所述的方法,其特征在于,
所述利用查询出的访问次数获得所述关键字的访问次数的过程,具体包括:
确定所述关键字的访问次数为查询出的访问次数加预设数值;或者,
获取所述关键字对应的资源信息,根据所述资源信息确定所述关键字的权重值,并确定所述关键字的访问次数为查询出的访问次数加所述权重值;所述资源信息包括关键字对应数据的数据尺寸,和/或,关键字对应请求的处理时间。
15.一种热点关键字获取方法,其特征在于,应用于数据库服务器,包括:
在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;
更新所述关键字的访问次数在所述链表中的位置;
在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,优先级最低的链表是最小的访问次数区间对应的链表;
在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
16.根据权利要求15所述的方法,其特征在于,
所述根据关键字的访问次数确定热点关键字的过程,具体包括:
按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;其中,所述优先级最高的链表是最大的访问次数区间对应的链表,所述优先级最低的链表是最小的访问次数区间对应的链表;
若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字;
在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块。
17.一种热点关键字获取装置,其特征在于,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,获取所述关键字的访问次数;
确定模块,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
所述确定模块,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
18.根据权利要求17所述的装置,其特征在于,
所述获取模块,具体用于在获取所述关键字的访问次数的过程中,获取所述关键字对应的数据块位置,并从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数;
其中,所述获取模块,具体用于在获取所述关键字对应的数据块位置的过程中,通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;其中,所述哈希表用于记录关键字与数据块位置的对应关系;
在利用查询出的访问次数获得所述关键字的访问次数的过程中,确定所述关键字的访问次数为查询出的访问次数加预设数值;或者,获取所述关键字对应的资源信息,并根据所述资源信息确定所述关键字的权重值,并确定所述关键字的访问次数为查询出的访问次数加所述权重值;其中,所述资源信息包括:所述关键字对应数据的数据尺寸,和/或,所述关键字对应请求的处理时间。
19.根据权利要求17所述的装置,其特征在于,还包括:
删除模块,用于在需要删除数据块中的内容时,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;
所述确定模块,具体用于在根据关键字的访问次数确定热点关键字的过程中,按照优先级最高的链表到优先级最低的链表的顺序,依次遍历链表的数据块;若遍历到的数据块中记录的关键字的访问次数大于预设次数阈值,则确定该关键字是热点关键字;否则,确定该关键字不是热点关键字;在遍历到存在不是热点关键字的链表后,停止遍历下一个链表的数据块;
其中,所述优先级最高的链表是最大的访问次数区间对应的链表,所述优先级最低的链表是最小的访问次数区间对应的链表。
20.一种热点关键字获取装置,其特征在于,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,通过所述关键字查询哈希表,得到对应的数据块位置;所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,利用查询出的访问次数获得所述关键字的访问次数,将所述关键字的访问次数更新到所述数据块中;
确定模块,用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
21.一种热点关键字获取装置,其特征在于,应用于数据库服务器,包括:
获取模块,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;
确定模块,用于确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;以及,更新所述关键字的访问次数在所述链表中的位置;
删除模块,用于在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,将所述优先级最低的链表的最后一个数据块中的内容删除;所述优先级最低的链表是最小的访问次数区间对应的链表;
所述确定模块,还用于在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据读取的关键字的访问次数确定热点关键字。
22.一种数据库服务器,其特征在于,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
23.一种数据库服务器,其特征在于,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并通过所述关键字查询哈希表,得到与所述关键字对应的数据块位置;其中,所述哈希表用于记录关键字与数据块位置的对应关系;从所述数据块位置对应的数据块中查询出访问次数,并利用查询出的访问次数获得所述关键字的访问次数,并将所述关键字的访问次数更新到所述数据块中;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
24.一种数据库服务器,其特征在于,所述数据库服务器包括:
处理器,用于在统计周期内,获取关键字,并获取所述关键字的访问次数;确定所述访问次数所在的访问次数区间,并查询出与所述访问次数区间对应的链表;其中,不同的访问次数区间对应不同的链表;更新所述关键字的访问次数在所述链表中的位置;在需要删除数据块中的内容时,根据访问次数区间与链表的对应关系,查询出优先级最低的链表,并将所述优先级最低的链表的最后一个数据块中的内容删除;其中,所述优先级最低的链表是最小的访问次数区间对应的链表;在需要确定热点关键字时,从链表中读取关键字的访问次数,并根据关键字的访问次数确定热点关键字。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865548.6A CN109542612A (zh) | 2017-09-22 | 2017-09-22 | 一种热点关键字获取方法、装置及服务器 |
PCT/CN2018/104799 WO2019056958A1 (zh) | 2017-09-22 | 2018-09-10 | 一种热点关键字获取方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710865548.6A CN109542612A (zh) | 2017-09-22 | 2017-09-22 | 一种热点关键字获取方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542612A true CN109542612A (zh) | 2019-03-29 |
Family
ID=65810693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710865548.6A Pending CN109542612A (zh) | 2017-09-22 | 2017-09-22 | 一种热点关键字获取方法、装置及服务器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109542612A (zh) |
WO (1) | WO2019056958A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110768894A (zh) * | 2019-09-02 | 2020-02-07 | 上海掌门科技有限公司 | 一种删除会话消息的方法与设备 |
CN111355580A (zh) * | 2020-05-25 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN111464629A (zh) * | 2020-03-31 | 2020-07-28 | 中国建设银行股份有限公司 | 热点数据确定方法及装置 |
CN112487326A (zh) * | 2020-11-27 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 数据缓存方法、***、存储介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN103178989A (zh) * | 2013-02-18 | 2013-06-26 | 中兴通讯股份有限公司 | 访问热度统计方法及装置 |
CN103559313A (zh) * | 2013-11-20 | 2014-02-05 | 北京奇虎科技有限公司 | 搜索方法及装置 |
US20160357851A1 (en) * | 2015-06-05 | 2016-12-08 | Mr. Buzz, Inc. dba WeOtta | Natural Language Search With Semantic Mapping And Classification |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101482756B1 (ko) * | 2013-08-07 | 2015-01-14 | 네이버 주식회사 | 의미적 지역을 기반으로 검색어를 추천하는 방법 및 시스템 |
CN104750873A (zh) * | 2015-04-22 | 2015-07-01 | 百度在线网络技术(北京)有限公司 | 流行搜索词推送方法和装置 |
-
2017
- 2017-09-22 CN CN201710865548.6A patent/CN109542612A/zh active Pending
-
2018
- 2018-09-10 WO PCT/CN2018/104799 patent/WO2019056958A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937993A (zh) * | 2012-11-09 | 2013-02-20 | 北京小米科技有限责任公司 | 一种用于访问关键字的方法及装置 |
CN103178989A (zh) * | 2013-02-18 | 2013-06-26 | 中兴通讯股份有限公司 | 访问热度统计方法及装置 |
CN103559313A (zh) * | 2013-11-20 | 2014-02-05 | 北京奇虎科技有限公司 | 搜索方法及装置 |
US20160357851A1 (en) * | 2015-06-05 | 2016-12-08 | Mr. Buzz, Inc. dba WeOtta | Natural Language Search With Semantic Mapping And Classification |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110768894A (zh) * | 2019-09-02 | 2020-02-07 | 上海掌门科技有限公司 | 一种删除会话消息的方法与设备 |
CN111464629A (zh) * | 2020-03-31 | 2020-07-28 | 中国建设银行股份有限公司 | 热点数据确定方法及装置 |
CN111355580A (zh) * | 2020-05-25 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN111355580B (zh) * | 2020-05-25 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 基于物联网的数据交互方法和装置 |
CN112487326A (zh) * | 2020-11-27 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 数据缓存方法、***、存储介质及设备 |
CN112487326B (zh) * | 2020-11-27 | 2024-03-19 | 杭州安恒信息技术股份有限公司 | 数据缓存方法、***、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2019056958A1 (zh) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107395659A (zh) | 一种业务受理及共识的方法及装置 | |
CN109542612A (zh) | 一种热点关键字获取方法、装置及服务器 | |
CN108683695A (zh) | 热点访问处理方法、缓存访问代理设备及分布式缓存*** | |
CN107450979A (zh) | 一种区块链共识方法及装置 | |
CN110162292A (zh) | 语音播报方法及装置 | |
CN106649401A (zh) | 分布式文件***中的数据写入方法和装置 | |
CN103970870A (zh) | 数据库查询方法和服务器 | |
US9135630B2 (en) | Systems and methods for large-scale link analysis | |
CN110472004B (zh) | 一种科技情报数据多级缓存管理的方法及*** | |
CN109299222A (zh) | 数据核对方法及装置 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
CN109284305A (zh) | 一种数据的更新方法、装置及*** | |
CN105468644B (zh) | 一种用于在数据库中进行查询的方法与设备 | |
CN108228110A (zh) | 一种迁移资源数据的方法和装置 | |
CN109947729A (zh) | 一种实时数据分析方法及装置 | |
CN107545050A (zh) | 数据查询方法及装置、电子设备 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN101635001B (zh) | 从数据库提取信息的方法和设备 | |
CN108470043A (zh) | 一种业务结果的获取方法及装置 | |
KR101243289B1 (ko) | 소셜 네트워크 서비스 정보 검색 시스템 | |
CN110909072B (zh) | 一种数据表建立方法、装置及设备 | |
CN109255001A (zh) | 接口实例库的维护方法及装置、电子设备 | |
CN109582476A (zh) | 数据处理方法、装置及*** | |
CN110334073A (zh) | 一种元数据预取方法、装置、终端、服务器及存储介质 | |
CN109976905A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190329 |
|
RJ01 | Rejection of invention patent application after publication |