数据更新方法及装置
技术领域
本说明书涉及数据处理技术领域,特别涉及一种数据更新方法。本说明书同时涉及一种数据更新装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着计算机技术和网络技术的快速发展,游戏技术日益成熟,越来越多的游戏应运而生,已经成为大多数人必不可少的生活娱乐。玩家操作客户端玩游戏时,经常需要更新数据,因而可以在客户端需要更新数据时,向客户端发送预先存储的数据。
现有技术中,每次客户端申请更新数据时,往往是直接将预先存储的全量数据下发给客户端,即直接进行全量更新;或者,预先建立一个固定尺寸的缓冲池,将更新的数据存储在该缓冲池中,若客户端需要更新的数据在缓冲池中,则将缓冲池中客户端需要的该数据下发给该客户端,即缓冲池内的数据可以进行增量更新,若客户端需要更新的数据不在缓冲池中,则将缓冲池外的全量数据全部下发给客户端,即缓冲池外的数据进行全量更新。
然而,游戏里会包括有各种各样的道具,单个道具的交互数据并不大,但是游戏中可能会包括成千上万个道具,所有道具的交互数据就比较大了,全量更新会极大消耗网络流量和性能,更新效率低。并且,创建的缓冲池的尺寸固定,不能适应实际的数据更新过程,整个更新过程不符合实际的应用场景,更新效率低,进而需要更高效更灵活的方法进行数据更新的操作或者处理。
发明内容
有鉴于此,本说明书实施例提供了一种数据更新方法。本说明书同时涉及一种数据更新装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据更新方法,包括:
根据接收的更新请求确定待更新的目标数据;
若所述目标数据存储在缓冲池中,则确定更新命中;
计算第一预设时长内所述更新命中的百分比;
若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
可选的,所述扩展所述缓冲池的尺寸之后,还包括:
若第二预设时长内没有接收到更新请求,则缩减所述缓冲池的尺寸,缩减后的所述缓冲池的尺寸不小于所述缓冲池的初始尺寸。
可选的,所述计算第一预设时长内所述更新命中的百分比,包括:
将所述第一预设时长内接收到更新请求的次数确定为更新总次数;
统计所述第一预设时长内更新命中的次数;
将所述更新命中的次数除以更新总次数,计算出所述第一预设时长内所述更新命中的百分比。
可选的,所述方法还包括:
在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池;
将更新数据存储至所述缓冲池中。
可选的,所述根据所述全量数据的大小,创建缓冲池,包括:
将所述全量数据的大小的预设倍数确定为所述缓冲池的初始尺寸;
根据确定出的所述初始尺寸,创建所述缓冲池。
可选的,所述根据所述全量数据的大小,创建缓冲池之后,还包括:
根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸;
相应地,扩展所述缓冲池的尺寸的情况下,所述缓冲池的尺寸不大于所述最大尺寸。
可选的,所述确定更新命中之后,还包括:
返回所述缓冲池中的所述目标数据。
可选的,所述方法还包括:
若所述目标数据未存储在缓冲池中,则确定更新未命中,返回所述缓冲池外存储的全量数据。
根据本说明书实施例的第二方面,提供了一种数据更新装置,包括:
目标数据确定模块,被配置为根据接收的更新请求确定待更新的目标数据;
更新命中确定模块,被配置为若所述目标数据存储在缓冲池中,则确定更新命中;
计算模块,被配置为计算第一预设时长内所述更新命中的百分比;
扩展模块,被配置为若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
可选的,所述装置还包括:
缩减模块,被配置为若第二预设时长内没有接收到更新请求,则缩减所述缓冲池的尺寸,缩减后的所述缓冲池的尺寸不小于所述缓冲池的初始尺寸。
可选的,所述计算模块进一步被配置为:
将所述第一预设时长内接收到更新请求的次数确定为更新总次数;
统计所述第一预设时长内更新命中的次数;
将所述更新命中的次数除以更新总次数,计算出所述第一预设时长内所述更新命中的百分比。
可选的,所述装置还包括:
创建模块,被配置为在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池;
存储模块,被配置为将更新数据存储至所述缓冲池中。
可选的,所述创建模块进一步被配置为:
将所述全量数据的大小的预设倍数确定为所述缓冲池的初始尺寸;
根据确定出的所述初始尺寸,创建所述缓冲池。
可选的,所述装置还包括:
最大尺寸确定模块,被配置为根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸;
相应地,扩展所述缓冲池的尺寸的情况下,所述缓冲池的尺寸不大于所述最大尺寸。
可选的,所述装置还包括:
目标数据返回模块,被配置为返回所述缓冲池中的所述目标数据。
可选的,所述装置还包括:
全量数据返回模块,被配置为若所述目标数据未存储在缓冲池中,则确定更新未命中,返回所述缓冲池外存储的全量数据。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
根据接收的更新请求确定待更新的目标数据;
若所述目标数据存储在缓冲池中,则确定更新命中;
计算第一预设时长内所述更新命中的百分比;
若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意所述数据更新方法的步骤。
本说明书提供的数据更新方法,根据接收的更新请求确定待更新的目标数据,若所述目标数据存储在缓冲池中,则确定更新命中,计算第一预设时长内所述更新命中的百分比,若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。这种情况下,若第一预设时长内,更新命中的百分比过低,则会扩展缓冲池的尺寸,使缓冲池可以容纳更多的更新数据,从而提高更新命中率,优化了更新机制,可以根据实际应用场景中的更新命中百分比,动态调整缓冲池的大小,在内存、网络流量和性能之间做权衡,使得整个更新机制更适应实际的应用场景,减少了更新的网络流量消耗和性能消耗。
附图说明
图1是本说明书一实施例提供的一种数据更新方法的流程图;
图2是本说明书一实施例提供的另一种数据更新方法的流程图;
图3是本说明书一实施例提供的一种数据更新装置的结构示意图;
图4是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
更新命中:客户端访问缓冲池时,如果该缓冲池存储了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中。取数据的过程与用户访问是同步进行的,所以即使是重新取的新数据,用户也不会感觉到有延时。
更新命中的百分比:一段时间内,更新命中数占更新总数的百分比。
全量更新:待更新的目标数据没有存储在缓冲池中,需要将缓冲池外存储的全部数据都发送给请求方更新。增量更新:待更新的目标数据都在缓冲池内,只需要将缓冲池内的目标数据发送给请求方,进行更新即可。一次更新只可能是增量更新,或全量更新,不会同时都有。
接下来,对本说明书提供的数据更新方法的基本构思进行简述。
目前,每次客户端申请更新数据时,存在两种更新方式。一种是直接将预先存储的全量数据下发给客户端,进行全量更新;另一种是,预先建立一个固定尺寸的缓冲池,将更新的数据存储在该缓冲池中,若客户端需要更新的数据在缓冲池中,则将缓冲池中客户端需要的该数据下发给该客户端,即进行增量更新,若客户端需要更新的数据不在缓冲池中,则将缓冲池外的全量数据全部下发给客户端,即进行全量更新。
然而,创建的缓冲池的尺寸是固定的,只能存储固定大小的更新数据,因而大部分情况下,客户端需要更新的数据可能都没有存储在缓冲池中,也即是,大部分情况下可能还是需要进行全量更新。即使创建了缓冲池,实际的数据更新过程可能大部分都是全量更新,整个更新过程不能适应实际的应用场景,会极大消耗网络流量和性能,更新效率低。
为了解决现有技术中存在的上述问题,本说明书中提供了一种数据更新方法,可以根据接收的更新请求确定待更新的目标数据,若所述目标数据存储在缓冲池中,则确定更新命中,计算第一预设时长内所述更新命中的百分比,若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。也就是说,本说明书中若一段时间内,更新命中的百分比过低,则会扩展缓冲池的尺寸,使缓冲池可以容纳更多的更新数据,从而提高更新命中率,优化了更新机制,可以根据实际应用场景中的更新命中百分比,动态调整缓冲池的大小,在内存、网络流量和性能之间做权衡,使得整个更新机制更适应实际的应用场景,减少更新的网络流量消耗和性能消耗。
在本说明书中,提供了一种数据更新方法,本说明书同时涉及一种数据更新装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一实施例提供的一种数据更新方法的流程图,具体包括以下步骤:
步骤102:根据接收的更新请求确定待更新的目标数据。
在本实施例的一个或多个实施方式中,在接收更新请求之前,还可以创建一个缓冲池,用来存储发生变化的更新数据,具体实现过程可以为:
在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池;
将更新数据存储至所述缓冲池中。
在本实施例的一个或多个实施方式中,所述根据所述全量数据的大小,创建缓冲池,具体实现过程可以为:
将所述全量数据的大小的预设倍数确定为所述缓冲池的初始尺寸;
根据确定出的所述初始尺寸,创建所述缓冲池。
当全量数据的大小不同时,可以创建初始大小不同的缓冲池,并不是针对所有大小的全量数据,都创建一个固定初始大小的缓冲池,缓冲池的初始尺寸可以随着全量数据大小的不同而不同,缓冲池的初始尺寸可以视情况设定,更能适应实际应用场景。
在本实施例的一个或多个实施方式中,当缓冲池的尺寸扩展到一定大小时,占用内存就会过大,此时性能、网络流量和内存消耗一定不如全量更新划算,因而需要提前确定缓冲池的最大尺寸,后续当缓冲池的尺寸扩展到该最大尺寸时,就可以不再扩展,避免创建了缓冲池,增量更新反而比全量更新消耗更高,具体实现过程可以为:
根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸。
步骤104:若所述目标数据存储在缓冲池中,则确定更新命中。
具体的,在根据接收的更新请求确定待更新的目标数据的基础上,进一步的,若所述目标数据存储在缓冲池中,则将确定更新命中。
在本实施例的一个或多个实施方式中,确定更新命中后,还可以返回所述缓冲池中的所述目标数据。
在本实施例的一个或多个实施方式中,若所述目标数据未存储在缓冲池中,则确定更新未命中,返回所述缓冲池外存储的全量数据。
步骤106:计算第一预设时长内所述更新命中的百分比。
具体的,在确定更新命中的基础上,进一步的,将计算第一预设时长内所述更新命中的百分比。
在本实施例的一个或多个实施方式中,可以通过更新命中次数和更新总次数,来计算第一预设时长内所述更新命中的百分比,具体实现过程如下:
将所述第一预设时长内接收到更新请求的次数确定为更新总次数;
统计所述第一预设时长内更新命中的次数;
将所述更新命中的次数除以更新总次数,计算出所述第一预设时长内所述更新命中的百分比。
步骤108:若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
具体的,在计算第一预设时长内所述更新命中的百分比的基础上,进一步的,若所述更新命中的百分比低于第一预设阈值,则将扩展所述缓冲池的尺寸。
在本实施例的一个或多个实施方式中,扩展所述缓冲池的尺寸的情况下,所述缓冲池的尺寸不大于所述最大尺寸。
在本实施例的一个或多个实施方式中,扩展所述缓冲池之后,若一段时间内没有接收到更新请求,则还可以缩减所述缓冲池,以减少占用内存和维护缓冲池的消耗,具体实现过程如下:
若第二预设时长内没有接收到更新请求,则缩减所述缓冲池的尺寸,缩减后的所述缓冲池的尺寸不小于所述缓冲池的初始尺寸。
当第二预设时长内,没有接收到更新请求时,如果依旧维护较大尺寸的缓冲池,就会耗费较多性能,且占用较大内存,因而此时可以缩减缓冲池的尺寸,缓冲池的尺寸缩减后,可以减少占用的内存和维护的消耗。
本说明书提供的数据更新方法,根据接收的更新请求确定待更新的目标数据,若所述目标数据存储在缓冲池中,则确定更新命中,计算第一预设时长内所述更新命中的百分比,若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。这种情况下,若第一预设时长内,更新命中的百分比过低,则会扩展缓冲池的尺寸,使缓冲池可以容纳更多的更新数据,从而提高更新命中率,优化了更新机制,可以根据实际应用场景,动态调整缓冲池的大小,在内存、网络流量和性能之间做权衡,使得整个更新机制更适应实际的应用场景,减少了更新的网络流量消耗和性能消耗。
下述结合附图2,对图1所述的数据更新方法进行进一步说明。其中,图2示出了本说明书一实施例提供的另一种数据更新方法的流程图,具体包括以下步骤:
步骤202:在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池,将更新数据存储至所述缓冲池中。
具体的,全量数据是指游戏包括的所有场景地图中全部道具的数据,或者游戏中某场景地图中道具的数据,也即,可以对游戏包括的所有场景地图中包括的全部道具的数据进行统一处理,还可以对游戏中不同场景地图包括的道具的数据分地图进行处理。
另外,第二预设阈值是技术人员预先设置的一个数值,用于判断是否需要创建缓冲池。由于创建缓冲池需要占用一定的内存,而且维护缓冲池也需要消耗性能,因而在全量数据的大小小于第二预设阈值的情况下,说明全量数据较少,直接进行全量更新,消耗的性能可能比创建缓冲池消耗的性能要少,因而此情况下没有必要创建缓冲池,在客户端需要更新时,可以直接进行全量更新。而在全量数据的大小大于第二预设阈值的情况下,说明全量数据较多,进行全量更新性能消耗以及网络流量消耗会极大,创建和维护缓冲池的消耗相较来说就少的多,因而此时可以创建一个缓冲池,将发生变化的更新数据存储在所述缓冲池中。也就是说,第二预设阈值是一个分界线,当全量数据的大小小于第二预设阈值时,不创建缓冲池更划算,而当全量数据的大小大于第二预设阈值时,创建缓冲池更划算。
实际应用中,可以通过不断计算比较确定出第二预设阈值的具体数值,示例的,可以先确定创建和维护一个尺寸最小的缓冲池需要消耗的性能,然后将全量数据的大小从最小开始依次增大,并确定不同数据大小需要消耗的性能,多次比较,找到创建缓冲池消耗性能更少的分界线,将该分界线确定为第二预设阈值。
在创建缓冲池后,可以将发生变化的更新数据存储至该缓冲池中,由于缓冲池的尺寸是设定好的,在尺寸不变的情况下,缓冲池能够容纳的数据个数是有限的,当更新数据的个数超出缓冲池能够容纳的个数后,缓冲池中最先存储的更新数据(即最先进入缓冲池中的更新数据)就会被删除,不再存储,即缓冲池的存储规则为先进先出规则。
例如,共有1、2、3、4号等4个数据,依次变化了1、2、3号数据,假设缓冲池的尺寸是2,那么当1号数据发生更新时,缓冲池就会存储1号数据,2号数据发生更新时,缓冲池会继续存储2号数据,当3号数据发生更新时,缓冲池就会删除1号数据,存储3号数据,也即此时缓冲池中存储的数据为2号和3号数据。
在本实施例的一个或多个实施方式中,根据所述全量数据的大小,创建缓冲池的具体实现过程如下:
将所述全量数据的大小的预设倍数确定为所述缓冲池的初始尺寸;
根据确定出的所述初始尺寸,创建所述缓冲池。
具体的,预设倍数可以由技术人员预先设置,通过该预设倍数可以确定出缓冲池的初始尺寸,从而创建缓冲池,例如预设倍数可以为0.2,也即是,可以按照全量数据大小的20%创建缓冲池。
当全量数据的大小不同时,可以创建初始大小不同的缓冲池,并不是针对所有大小的全量数据,都创建一个固定初始大小的缓冲池,缓冲池的初始尺寸可以随着全量数据大小的不同而不同,缓冲池的初始尺寸可以视情况设定,更能适应实际应用场景。
步骤204:根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸。
具体的,在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池,将更新数据存储至所述缓冲池中的基础上,进一步的,将根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸。
实际应用中,当缓冲池的尺寸扩展到一定大小时,占用内存就会过大,此时性能、网络流量和内存消耗一定不如全量更新划算,因而需要提前确定缓冲池的最大尺寸,后续当缓冲池的尺寸扩展到该最大尺寸时,就可以不再扩展,避免创建了缓冲池,增量更新反而比全量更新消耗更高。具体实现时,也可以通过不断计算比较全量数据进行全量更新需要消耗的性能,和仅对更新数据进行增量更新需要消耗的性能,来确定出缓冲池的最大尺寸。也就是说,缓冲池的最大尺寸是一个限制尺寸,后续为了提高更新命中率,缓冲池最多可以扩展至最大尺寸。
需要说明的是,上述步骤202-204是创建缓冲池、将更新数据存储至缓冲池和确定该缓冲池的最大尺寸的操作步骤,均是数据更新的前期准备过程。
步骤206:根据接收的更新请求确定待更新的目标数据。
具体的,更新请求可以是客户端需要更新自身数据时发起的请求,该更新请求中可以携带发起该请求的客户端当前的数据版本,根据该数据版本可以确定出待更新的目标数据。
例如,有4个数据,依次更新了1、2、3号数据,即发生了3次更新,而客户端A当前的数据版本为版本1(即最早版本的数据,没有发生过数据更新),在接收到该客户端A发送的更新请求后,根据该更新请求中携带的版本1标识,确定出待更新的目标数据为1、2、3号数据。
步骤208:若所述目标数据存储在缓冲池中,则确定更新命中。
具体的,在根据接收的更新请求确定待更新的目标数据的基础上,进一步的,若所述目标数据存储在缓冲池中,将确定更新命中。
实际应用中,若所述目标数据存储在缓冲池中,则可以确定更新命中,后续直接将缓冲池中存储的目标数据返回给发送更新请求的客户端,即进行增量更新;若所述目标数据未存储在缓冲池中,则可以确定更新未命中,后续需要将缓冲池外存储的全量数据返回给发送更新请求的客户端,即进行全量更新。
另外,目标数据可以为一个或多个,在确定更新是否命中时,需要判断全部的目标数据是否均存储在缓冲池中,若是,则确定更新命中,若存在任意一个目标数据未存储在缓冲池中,则确定更新未命中。
例如,有4个数据,依次更新了1、2、3号数据,且缓冲池的尺寸是2,也即,缓冲池中存储的数据为2号和3号数据。假设客户端A当前的数据版本为版本1(即最早版本的数据,没有发生过数据更新),此时待更新的目标数据为1、2、3号数据,由于缓冲池中仅存储了2号和3号数据,没有存储1号数据,因而待处理的目标数据未全部存储在缓冲池中,确定更新未命中,此时需要将全量数据1、2、3、4号数据全部返回给客户端A。假设客户端A当前的数据版本为版本2(即更新过1次的版本),此时待更新的目标数据为2、3号数据,由于缓冲池中存储了2号和3号数据,因而待处理的目标数据全部存储在缓冲池中,确定更新命中,此时仅需要将缓冲池中的2号和3号数据返回给客户端A即可。
需要说明的是,步骤206-208是接收更新请求,确定是否更新命中的过程,上述过程可以循环执行,循环执行过程中,可以执行下述步骤210-214的操作步骤,确定是否需要调整缓冲池的尺寸。
步骤210:计算第一预设时长内所述更新命中的百分比。
具体的,第一预设时长是预先设置的一个时间段,如第一预设时长可以为5秒、10秒、15秒等。
在本实施例的一个或多个实施方式中,可以根据第一预设时长内更新命中次数和更新总次数,计算得到第一预设时长内所述更新命中的百分比,具体实现过程如下:
将所述第一预设时长内接收到更新请求的次数确定为更新总次数;
统计所述第一预设时长内更新命中的次数;
将所述更新命中的次数除以更新总次数,计算出所述第一预设时长内所述更新命中的百分比。
具体的,统计第一预设时长内接收到更新请求的次数时,接收到的更新请求可以来自同一客户端,也可以来自不同的客户端。
例如,15秒内共接收到10次更新请求,此时确定15秒内更新总次数为10次,假设15秒内更新命中次数为3次,此时用3除以10得到15秒内更新命中的百分比为30%。
步骤212:若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
具体的,在计算第一预设时长内所述更新命中的百分比的基础上,进一步的,若所述更新命中的百分比低于第一预设阈值,将扩展所述缓冲池的尺寸。
实际应用中,第一预设阈值可以由技术人员预先设定,该第一预设阈值用于判断更新命中百分比是否过低,如第一预设阈值可以为70%。
在本实施例的一个或多个实施方式中,扩展所述缓冲池的尺寸,具体实现过程可以为:将缓冲池的初始尺寸翻倍。具体实现时,可以将缓冲池的初始尺寸扩展至目标倍数,如2倍、3倍、4倍等,但扩展后的缓冲池的尺寸不能大于缓冲池的最大尺寸。
当第一预设时长内,更新命中百分比过低时,可以扩展缓冲池的尺寸,缓冲池的尺寸扩展后,可以容纳更多的更新数据,从而提高更新命中百分比,优化了更新机制,可以根据实际应用场景中的更新命中百分比,动态扩展缓冲池的大小。
步骤214:若第二预设时长内没有接收到更新请求,则缩减所述缓冲池的尺寸,缩减后的所述缓冲池的尺寸不小于所述缓冲池的初始尺寸。
具体的,第二预设时长可以是预先设置的一个时间段,如第二预设时长可以为30秒、60秒、90秒等。第二预设时长和第一预设时长可以不同,一般来说,第二预设时长长于第一预设时长。
在本实施例的一个或多个实施方式中,缩减所述缓冲池的尺寸,具体实现过程可以为:将缓冲池的当前尺寸缩减一半。具体实现时,也可以将缓冲池的初始尺寸缩减至目标倍数,如1/2倍、1/3倍、1/4倍等,但缩小后的缓冲池的尺寸不能小于缓冲池的初始尺寸。
当第二预设时长内,没有接收到更新请求时,如果依旧维护较大尺寸的缓冲池,就会耗费较多性能,且占用较大内存,因而此时可以缩减缓冲池的尺寸,缓冲池的尺寸缩减后,可以减少占用的内存和维护的消耗,优化了更新机制,可以根据实际应用场景,动态缩减缓冲池的大小。
需要说明的是,上述步骤210-214是动态调整缓冲池的尺寸的过程,可以一直循环执行,即每到达一次第一预设时长和第二预设时长,就执行一次相应的操作步骤,确定是否调整缓冲池的尺寸。
另外,上述步骤206-208是数据的更新过程,和步骤210-214并不矛盾,可以同步执行。也即是,只要接收到更新请求,就执行步骤206-208,进行数据更新操作,确定并记录是否更新命中。在这个过程中,进行计时,每达到第一预设时长和第二预设时长,就执行一次相应的操作步骤,确定是否调整缓冲池的尺寸。
本说明书提供的数据更新方法,根据接收的更新请求确定待更新的目标数据,若所述目标数据存储在缓冲池中,则确定更新命中,计算第一预设时长内所述更新命中的百分比,若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。这种情况下,若第一预设时长内,更新命中的百分比过低,则会扩展缓冲池的尺寸,使缓冲池可以容纳更多的更新数据,从而提高更新命中率;且第二预设时长内,没有接收到更新请求的情况下,会缩减缓冲池的尺寸,缓冲池的尺寸缩减后,可以减少占用的内存和维护的消耗。优化了更新机制,可以根据实际应用场景,动态调整缓冲池的大小,在内存、网络流量和性能之间做权衡,使得整个更新机制更适应实际的应用场景,减少了更新的网络流量消耗和性能消耗。
与上述方法实施例相对应,本说明书还提供了数据更新装置实施例,图3示出了本说明书一实施例提供的一种数据更新装置的结构示意图。如图3所示,该装置包括:
目标数据确定模块302,被配置为根据接收的更新请求确定待更新的目标数据;
更新命中确定模块304,被配置为若所述目标数据存储在缓冲池中,则确定更新命中;
计算模块306,被配置为计算第一预设时长内所述更新命中的百分比;
扩展模块308,被配置为若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
在本实施例的一个或多个实施例中,所述装置还包括:
缩减模块,被配置为若第二预设时长内没有接收到更新请求,则缩减所述缓冲池的尺寸,缩减后的所述缓冲池的尺寸不小于所述缓冲池的初始尺寸。
在本实施例的一个或多个实施例中,所述计算模块306进一步被配置为:
将所述第一预设时长内接收到更新请求的次数确定为更新总次数;
统计所述第一预设时长内更新命中的次数;
将所述更新命中的次数除以更新总次数,计算出所述第一预设时长内所述更新命中的百分比。
在本实施例的一个或多个实施例中,所述装置还包括:
创建模块,被配置为在全量数据的大小大于第二预设阈值的情况下,根据所述全量数据的大小,创建缓冲池;
存储模块,被配置为将更新数据存储至所述缓冲池中。
在本实施例的一个或多个实施例中,所述创建模块进一步被配置为:
将所述全量数据的大小的预设倍数确定为所述缓冲池的初始尺寸;
根据确定出的所述初始尺寸,创建所述缓冲池。
在本实施例的一个或多个实施例中,所述装置还包括:
最大尺寸确定模块,被配置为根据所述全量数据的大小和所述更新数据的大小,确定所述缓冲池的最大尺寸;
相应地,扩展所述缓冲池的尺寸的情况下,所述缓冲池的尺寸不大于所述最大尺寸。
在本实施例的一个或多个实施例中,所述装置还包括:
目标数据返回模块,被配置为返回所述缓冲池中的所述目标数据。
在本实施例的一个或多个实施例中,所述装置还包括:
全量数据返回模块,被配置为若所述目标数据未存储在缓冲池中,则确定更新未命中,返回所述缓冲池外存储的全量数据。
本说明书提供的数据更新装置,目标数据确定模块被配置为根据接收的更新请求确定待更新的目标数据;更新命中确定模块被配置为若所述目标数据存储在缓冲池中,则确定更新命中;计算模块被配置为计算第一预设时长内所述更新命中的百分比;扩展模块被配置为若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。这种情况下,若第一预设时长内,更新命中的百分比过低,则会扩展缓冲池的尺寸,使缓冲池可以容纳更多的更新数据,从而提高更新命中率;且第二预设时长内,没有接收到更新请求的情况下,会缩减缓冲池的尺寸,缓冲池的尺寸缩减后,可以减少占用的内存和维护的消耗。优化了更新机制,可以根据实际应用场景,动态调整缓冲池的大小,在内存、网络流量和性能之间做权衡,使得整个更新机制更适应实际的应用场景,减少了更新的网络流量消耗和性能消耗。
上述为本实施例的一种数据更新装置的示意性方案。需要说明的是,该数据更新装置的技术方案与上述的数据更新方法的技术方案属于同一构思,数据更新装置的技术方案未详细描述的细节内容,均可以参见上述数据更新方法的技术方案的描述。
图4示出了根据本说明书一实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
其中,处理器420用于执行如下计算机可执行指令:
根据接收的更新请求确定待更新的目标数据;
若所述目标数据存储在缓冲池中,则确定更新命中;
计算第一预设时长内所述更新命中的百分比;
若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据更新方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据更新方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
根据接收的更新请求确定待更新的目标数据;
若所述目标数据存储在缓冲池中,则确定更新命中;
计算第一预设时长内所述更新命中的百分比;
若所述更新命中的百分比低于第一预设阈值,则扩展所述缓冲池的尺寸。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据更新方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据更新方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。