本说明书涉及计算机领域,尤其涉及一种数据存储的方法及装置。
背景技术:
随着互联网的快速发展,互联网中的用户数目急剧增加,因此,服务平台存储的数据量也就越来越多,服务平台面临的存储压力也随之越来越大。
在现有技术中,服务平台采用若干个数据存储节点对数据进行存储,由于在有序存储的情况下,较多数据会集中在其中一些数据存储节点,随着用户量的增多,这些数据存储节点中的数据量会越来越庞大。这样一来,这些数据存储节点的存储压力就会很大,随之,也会导致服务平台的性能下降,而仅仅进行扩容并不能改善这些数据存储节点的存储压力。
所以,如何能够在保证性能良好的情况下,将庞大的数据进行存储,则是一个亟待解决的问题。
技术实现要素:
本说明书提供一种数据存储的方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种数据存储的方法,包括:
针对每个数据存储节点,确定该数据存储节点对应的数据范围;
根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量;
若所述预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中所述当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
可选地,根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量,具体包括:
根据位于所述数据范围内的历史业务数据量,预测所述设定时间后位于所述数据范围内的数据增量;
根据所述历史业务数据量,确定针对所述数据范围的误差值;
根据所述数据增量、所述误差值以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
可选地,根据所述数据增量、所述误差值以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,具体包括:
根据所述数据增量以及所述误差值,确定修正后的数据增量;
根据修正后的数据增量以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
可选地,所述方法还包括:
根据各数据范围所对应的预测业务数据量,确定用于表征各数据范围对应业务数据量的数据量分布函数。
可选地,创建至少一个数据存储节点,具体包括:
根据所述预测业务数据量以及该数据存储节点对应的第一数据存储量阈值,确定待创建的数据存储节点的节点数量,并创建所述节点数量的数据存储节点。
可选地,创建所述节点数量的数据存储节点,具体包括:
根据所述节点数量,对该数据存储节点对应的数据范围进行划分,得到各子数据范围;
将该数据存储节点中当前存储的至少部分业务数据转移到至少一个新增数据节点中进行存储,具体包括:
针对每个新增数据节点,从该数据存储节点中确定出该新增数据节点对应的子数据范围内的业务数据,作为待转移业务数据;
将所述待转移业务数据转移到该新增数据节点中进行存储。
可选地,所述方法还包括:
若所述预测业务数据量不超过该数据存储节点对应的第二数据存储量阈值,从与该数据存储节点相邻的其他数据存储节点中确定至少一个满足预设条件的数据存储节点,作为目标数据存储节点,其中,针对每个与该数据存储节点相邻的其他数据存储节点,若该其他数据存储节点对应的预测业务数据量与该数据存储节点对应的预测业务数据量的和值不超过所述第一数据存储量阈值,确定该其他数据存储节点满足预设条件;
将所述目标数据存储节点中存储的业务数据转移到该数据存储节点中进行存储,并根据所述目标数据存储节点对应的数据范围,调整该数据存储节点对应的数据范围。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据存储的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据存储的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
从上述方法中可以看出,针对每个数据存储节点,确定该数据存储节点对应的数据范围,而后,根据位于该数据范围内的历史业务数据量以及该数据范围对应的当前业务数据量,预测设定时间后位于该数据范围内的业务数据量,作为预测业务数据量,若是该预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
从上述方法中可以看出,服务平台可以针对每个数据存储节点,根据预测出的设定时间后该数据存储节点的业务数据量,预测该数据存储节点是否在设定时间后面临存储压力,若是预测出该数据存储节点在设定时间后面临存储压力,则可以通过创建新的数据存储节点来分担该数据存储节点的存储压力。相对于现有技术,本说明书提供的数据存储的方法可以提前对数据存储节点即将出现的存储问题进行应对,从而有效保证了数据存储节点的数据存储性能以及数据存储效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种数据存储的方法的流程示意图;
图2为本说明书提供的一种自回归图的示意图;
图3为本说明书提供的一种偏自回归图的示意图;
图4为本说明书提供的服务平台拟合出数据量分布函数的曲线的示意图;
图5为本说明书提供的一种数据存储的装置示意图;
图6为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中一种数据存储的方法的流程示意图,具体包括以下步骤:
s101:针对每个数据存储节点,确定该数据存储节点对应的数据范围。
由于互联网中用户数量的急剧增加,用户所产生的业务数据也在不断激增。而为了应对不断激增的业务数据的存储问题,在实际应用中,服务平台中可以设置多个数据存储节点,这些数据存储节点可以用于不同数据范围的业务数据进行存储。
上述提到的数据范围可以按照不同的业务维度来进行划分。例如,服务平台可以用户积分作为业务维度进行数据范围的划分。其中,可以根据实际的业务需求,每隔100积分划分出一个数据范围,从而得到0积分~100积分、101积分~200积分、201积分~300积分等划分出的各数据范围。进一步地,服务平台可以为划分出的每个数据范围分别分配相应的数据存储节点。即,对于每个数据范围来说,用户积分位于该数据范围内的用户的用户数据可以存储在该数据范围对应的数据存储节点中。
再例如,在网购的业务场景下,服务平台可以用户的年网购金额作为业务维度进行数据范围的划分。其中,可以每隔1000金额划分出一个数据范围,从而得到0~1000、1001~2000、2001~3000等划分出的各数据范围。而对于这些数据范围,服务平台可以为每个数据范围分配一个对应的数据存储节点。这样一来,当获取到一个用户的业务数据后,可以确定出该用户的年网购金额,并确定出该用户的年网购金额所落入的数据范围,进而将该用户的业务数据存储在该数据范围对应的数据存储节点中。而通过其他业务维度来划分各数据范围的情况在此就不详细举例说明了。
在本说明书中,可以在诸如服务器、数据库等具有数据存储功能的设备中划分出的一个或多个数据存储节点。进一步地,服务平台为保证可以有效的控制各数据存储节点的存储压力,可以在后续过程中,对每个数据存储节点在未来一段时间内所存储的业务数据的业务数据量进行预测。
s102:根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量。
在本说明书中,服务平台可以针对每个数据存储节点,基于该数据存储节点的历史业务数据量以及该数据存储节点的当前业务数据量,预测设定时间后位于该数据范围内的业务数据量,作为预测业务数据量。进而在后续过程中,根据该预测业务数据量,来判断是否需要额外创建数据存储节点,以应对未来的数据存储压力。
具体的,服务平台可以根据位于该数据存储节点对应的数据范围内的历史业务数据量,预测设定时间后位于该数据范围内的数据增量以及误差值。其中,这里提到的数据增量用于表征预测出的设定时间后的业务数据量与当前业务数据量之间的增量。误差值则主要用于表示预测业务数据量与实际的业务数据量之间所估计出的误差。
在确定出上述数据增量以及估计出误差值后,可以进一步地根据确定出的数据增量以及误差值,确定出修正后的数据增量。服务平台可以根据修正后的数据增量以及当前业务数据量,预测出设定时间后位于该数据范围内的业务数据量。这里提到的设定时间可以根据实际需求而定,例如一天、一周、一个月等。
在本说明书中,服务平台可以基于差分整合移动平均自回归模型(autoregressiveintegratedmovingaveragemodel,arima)来确定上述提到的修改后的数据增量,具体可以参考如下公式。
其中,δyt为修正后的数据增量,u为p个历史单位时间对应的数据增量的均值,γi为自回归系数,δyt-i为第t-i个历史单位时间对应的数据增量,∈t为白噪声序列,θi为偏自回归系数,∈t-i为第t-i个历史单位时间对应的误差值。在该公式中,前一求和项:
由于在通过arima模型来进行数据分析时,需要保证获取到的历史业务数据量在时序上是稳定的。这是因为基于历史业务数据量和当前业务数据量来预测未来某一时间点的业务数据量,需要假设历史业务数据量和当前业务数据量具有一定的代表性和延续性。也就是说,预测出的未来某一时间点的业务数据量相比于历史业务数据量和当前业务数据量,需要在数据特征上保持同步。
因此,所谓的在时序上是稳定的可以是指获取到的各历史单位时间对应的历史业务数据量和当前业务数据量在时间序列上的方差、均值、协方差等不会出现明显的变化。
在实际应用中,各历史单位时间对应的历史业务数据量和当前业务数据量在时间序列上往往是不稳定的,所以可以通过差分的方式,将其转化成在时间序列上稳定的形式。基于此,在通过上述arima进行数据预测之前,可以通过差分的方式,将获取到的各历史单位时间对应的历史业务数据量以及当前业务历史数据量在时间序列上转化成稳定的形式。然后在使用arima模型进行数据预测。
通过上述arima模型进行数据预测时,需要先分别确定出自回归项数p以及移动平均项数q。在确定出这两个项数后,才能确定出上述公式中自回归项所对应的历史单位时间以及移动平均项所对应的历史单位时间。在本说明书中,可以通过自回归函数(autocorrelationfunction,acf)图,来确定自回归项数p,如图2所示。
图2为本说明书提供的acf图的示意图。
acf图主要用于表征当前业务数据量yt与历史业务数据量yt-i之间的相关度。其中,当前业务数据量yt与历史业务数据量yt-i之间的相关度是受yt-1、yt-2、yt-3、…、yt-i 1这些历史业务数据量的影响。在图2所示的acf图中,纵坐标表示相关度,横坐标用于表示滞后值。滞后值用于表示历史单位时间,例如,假设当前业务数据量表示的是今天的业务数据量,基于此,若是滞后值为1,则称之为一阶滞后,滞后值1所对应的纵坐标用于表示今天的业务数据量与昨天的业务数据量之间的相关度,而若是滞后值为2,则称之为二阶滞后,滞后值2所对应的纵坐标用于表示今天的业务数据量与前天的业务数据量之间的相关度。图2中上下两条虚线用于划分出acf图中的置信度区间,而从图2所示的acf图中可以看出,在滞后值1之后,其他滞后值的相关度均在两个虚线之间的置信区间震荡并逐渐衰弱,则可以确定出p的取值为1。
相应的,服务平台可以通过偏自回归函数(partialautocorrelationfunction,pacf)图,来确定移动平均项数q,如图3所示。
图3为本说明书提供的pacf图的示意图。
偏自回归图主要用于表示当前业务数据量yt与历史业务数据量yt-i之间的直接相关性,所谓的直接相关性即是指除去yt-1、yt-2、yt-3、…、yt-i 1这些历史业务数据量的影响下,当前业务数据量yt与历史业务数据量yt-i之间的相关性。而在图3所示的pacf图中,上下两条虚线用于划分出pacf图中的置信度区间。从图3所示的pacf图中可以看出,在滞后值1之后,其他滞后值的相关度均在两个虚线之间的置信区间震荡,则可以确定出q的取值为1。
在本说明书中,服务平台可以根据获取到的历史业务数据量以及当前业务数据量确定出上述公式中u、γi、∈t、θi、∈t-i、δyt-i、p以及q这些数值。这些数值的具体确定方法为现有的常规确定方法,在此不再详细赘述了。
需要说明的是,服务平台确定出上述自回归项数p以及移动平均项数q后,需要进行检验,以验证这两项数值的合理性。其中,具体可以通过诸如赤池信息准则(akaikeinformaticacriterion,aic)、施瓦茨准则(schwartzbayesiancriterion,sbc)等进行检验。若确定这两项数值通过检验,则可以通过这两项数值,确定出上述公式的具体形式,进而通过该公式进行数据预测。而若是确定这两项数值未通过检验,则需要重新确定这两项数值。具体的检验过程为现有的常规方式,在此就不详细举例说明了。
在本说明书中,服务平台除了可以通过上述arima模型来进行数据预测外,还可以通过其他的方式来进行数据预测。例如,可以通过自回归移动平均模型(autoregressivemovingaverage,arma)进行数据预测,也可以通过线性回归模型进行数据预测,抑或是通过最小方差估计进行数据预测,在此就不详细举例说明了。
服务平台确定出该数据范围对应的预测业务数据量后,可以在后续过程中,根据该数据范围对应的预测业务数据量,确定是否针对该数据范围对应的业务数据增加数据存储节点,以保证该数据范围内对应的业务数据能够进行顺利的存储。
在本说明书中,服务平台也可以根据确定出的各数据范围所对应的预测业务数据量,拟合出用于表征各数据范围对应业务数据量的数据量分布函数,进而可以实时根据该数据量分布函数,确定出任意数据范围对应的预测业务数据量,如图4所示。
图4为本说明书提供的服务平台拟合出数据量分布函数的曲线的示意图。
在图4中,横坐标用于表示数据范围,纵坐标用于表示业务数据量。图4中所示的曲线即为服务平台拟合出的数据量分布函数的曲线。需要指出的是,服务平台不仅能够根据该数据量分布函数,确定出当前各数据范围所对应的业务数据量,并且,由于后续能够需要进行数据存储节点的增加,所以,原有的数据范围可能会发生变化,而服务平台可以通过该数据量分布函数,确定出变化后的数据范围所对应的业务数据量。
s103:若所述预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中所述当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
服务平台在上述过程中确定出位于该数据范围内的预测业务数据量,若是该预测业务数据量非常大,则说明服务平台预测出在设定时间后,该数据范围所对应的数据存储节点面临的存储压力非常大。因此服务平台可以根据实际情况创建新的数据存储节点,创建出的数据存储节点可以分担该数据范围所对应的数据存储节点的部分存储压力。
具体的,若该预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,服务平台可以创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中当前业务数据量对应的至少部分业务数据,转移到创建出的至少一个新增数据节点中进行存储。其中,服务平台可以根据该数据存储节点所能容纳的最大数据量,确定该第一数据存储量阈值,当然也可以根据实际需求确定一个较大的数据存储量作为该第一数据存储量阈值。
服务平台在确定新增数据节点的数量时,可以根据该预测业务数据量以及该数据存储节点对应的第一数据存储量阈值,确定待创建的数据存储节点的节点数量,进而创建该节点数量的数据存储节点,作为新增数据节点。其中,确定该数据节点数量时可以具体参考如下公式:
在该公式中,npredict表示服务平台针对一个数据范围所得到的预测业务数据量,nmax为该数据范围对应的数据存储节点的第一数据存储量阈值,n表示服务平台最终确定出的需要创建的数据存储节点的节点数量。
需要说明的是,上述公式只是以示例的形式说明了如何来确定需要创建的数据存储节点的节点数量,而实际上,确定该节点数量所采用的具体公式可以有多种,在此就不详细举例说明了。
进一步地,服务平台创建该节点数量的数据存储节点时,可以根据该节点数量,对该数据存储节点对应的数据范围进行划分,得到各子数据范围,每个子数据范围对应一个新增数据节点。服务平台可以针对每个新增数据节点,从该数据存储节点中确定出该新增数据节点对应的子数据范围内的业务数据,作为待转移业务数据,并将该待转移业务数据转移至该新增数据节点中进行存储,将各待转移业务数据转移至各新增数据节点中后,可以将该数据存储节点中的各待转移业务数据进行删除。
例如,假设对于一个数据存储节点来说,该数据存储节点用于存储用户积分在[101,200]这一用户积分范围(即数据范围)内的用户的业务数据。服务平台通过预测,未来一段时间内这一用户积分范围内的用户的业务数据将显著增加,因此需要针对这一用户积分范围,进行数据存储节点的创建。其中,服务平台可以预测出的该用户积分范围的预测业务数据量以及该数据存储节点对应的第一数据存储量阈值,确定出需要针对该用户积分范围创建一个数据存储节点,也就是说,在该用户积分范围对应的原有的数据存储节点的基础上,需要额外创建出一个数据存储节点,用于对该用户积分范围的业务数据进行存储。
服务平台可以根据确定出的节点数量:1,将这一用户积分范围进行划分,得到[101,150]和[151,200]这两个子用户积分范围(即,子数据范围),并从该数据存储节点中,确定出[151,200]这一子用户积分范围对应的业务数据,进而将[151,200]这一子用户积分范围对应的业务数据转移至创建的数据存储节点中,并将其在原有的数据存储节点中删除。当然,服务平台也可以保留[151,200]这一子用户积分范围对应的业务数据在原有的数据存储节点中,而是将[101,150]这一子用户积分范围对应的业务数据转移至创建的数据存储节点中,并将其在原有的数据存储节点中删除。
需要说明的是,上述过程是在确定出的上述预测业务数据量过大的情况下,服务平台需要对该数据范围所对应的数据存储节点做出调整。然而,在实际应用中,当确定出的该预测业务数据量过小时,使用一个独立的数据存储节点来存储该预测业务数据量的业务数据,也可能会造成存储资源的浪费。因此当该预测业务数据量过小时,也可以视情况确定是否将该数据范围所对应的数据存储节点合并到其他数据范围对应的数据存储节点中进行存储。
具体的,若该预测业务数据量不超过该数据存储节点对应的第二数据存储量阈值,从与该数据存储节点相邻的其他数据存储节点中确定至少一个满足预设条件的数据存储节点,作为目标数据存储节点。其中,针对每个与该数据存储节点相邻的其他数据存储节点,若该其他数据存储节点对应的预测业务数据量与该数据存储节点对应的预测业务数据量的和值不超过该数据存储节点对应的第一数据存储量阈值,则确定该其他数据存储节点满足预设条件。该第二数据存储量阈值可以是服务平台根据实际情况确定的一个较小的数据存储量值。
服务平台可以将该目标数据存储节点中存储的业务数据转移至该数据存储节点中进行存储,并根据该目标数据存储节点对应的数据范围,调整该数据存储节点对应的数据范围。
例如,假设,服务平台确定出存储[101,200]这一用户积分范围内的用户的业务数据所对应的数据存储节点a在未来一段时间内的预测业务数据量不超过该数据存储节点a对应的第二数据存储量阈值,则可以确定出该数据存储节点a的相邻数据存储节点的当前业务数据量。这里提到的相邻数据存储节点是指在用户积分范围上与该数据存储节点相邻的数据存储节点,即,[0,100]这一用户积分范围所对应的数据存储节点b,以及[201,300]这一用户积分范围所对应的数据存储节点c。
若是服务平台进一步地确定出数据存储节点c满足上述预设条件,则可以将数据存储节点c作为目标数据存储节点,进而将数据存储节点c(即目标数据存储节点)当前存储的业务数据转移至数据存储节点a中,并将数据存储节点a所对应的用户积分范围调整为[101,300]。相应的,服务平台可以将数据存节点c进行删除。
需要指出的是,服务平台也可以将该数据存储节点中当前存储的业务数据转移至该目标数据存储节点中,并根据该数据存储节点对应的数据范围,调整该目标数据存储节点对应的数据范围,进而将该数据存储节点删除。
相应的,上述预设条件也需要进行改变,针对每个与该数据存储节点相邻的其他数据存储节点,若该其他数据存储节点对应的预测业务数据量与该数据存储节点对应的预测业务数据量的和值不超过该其他数据存储节点对应的第一数据存储量阈值,则可以确定该其他数据存储节点满足预设条件。
从上述方法中可以看出,服务平台能够通过预测数据存储节点设定时间后的业务数据量,对数据存储节点进行调整,来缓解该数据存储节点未来可能会面对的存储压力。并且,服务平台由于可以根据预测出的业务数据量的实际情况,来确定是否需要创建数据存储节点,或是将数据存储节点进行合并,因此,可以有效的对服务平台的数据存储资源进行分配,提高了数据存储资源的利用率。
以上为本说明书的一个或多个实施例提供的数据存储的方法,基于同样的思路,本说明书还提供了相应的数据存储的装置,如图5所示。
图5为本说明书提供的一种数据存储的装置示意图,具体包括:
确定模块501,用于针对每个数据存储节点,确定该数据存储节点对应的数据范围;
预测模块502,用于根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量;
存储模块503,若所述预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中所述当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
可选地,所述预测模块502具体用于,根据位于所述数据范围内的历史业务数据量,预测所述设定时间后位于所述数据范围内的数据增量;根据所述历史业务数据量,确定针对所述数据范围的误差值;根据所述数据增量、所述误差值以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
可选地,所述预测模块502具体用于,根据所述数据增量以及所述误差值,确定修正后的数据增量;根据修正后的数据增量以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
可选地,所述预测模块502具体用于,根据各数据范围所对应的预测业务数据量,确定用于表征各数据范围对应业务数据量的数据量分布函数。
可选地,所述存储模块503具体用于,根据所述预测业务数据量以及该数据存储节点对应的第一数据存储量阈值,确定待创建的数据存储节点的节点数量,并创建所述节点数量的数据存储节点。
可选地,所述存储模块503具体用于,根据所述节点数量,对该数据存储节点对应的数据范围进行划分,得到各子数据范围;针对每个新增数据节点,从该数据存储节点中确定出该新增数据节点对应的子数据范围内的业务数据,作为待转移业务数据;将所述待转移业务数据转移到该新增数据节点中进行存储。
可选地,所述存储模块503具体用于,若所述预测业务数据量不超过该数据存储节点对应的第二数据存储量阈值,从与该数据存储节点相邻的其他数据存储节点中确定至少一个满足预设条件的数据存储节点,作为目标数据存储节点,其中,针对每个与该数据存储节点相邻的其他数据存储节点,若该其他数据存储节点对应的预测业务数据量与该数据存储节点对应的预测业务数据量的和值不超过所述第一数据存储量阈值,确定该其他数据存储节点满足预设条件;将所述目标数据存储节点中存储的业务数据转移到该数据存储节点中进行存储,并根据所述目标数据存储节点对应的数据范围,调整该数据存储节点对应的数据范围。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的数据存储的方法。
本说明书还提供了图6所示的电子设备的示意结构图。如图6所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的数据存储的方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
1.一种数据存储的方法,其特征在于,包括:
针对每个数据存储节点,确定该数据存储节点对应的数据范围;
根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量;
若所述预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中所述当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
2.如权利要求1所述的方法,其特征在于,根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量,具体包括:
根据位于所述数据范围内的历史业务数据量,预测所述设定时间后位于所述数据范围内的数据增量;
根据所述历史业务数据量,确定针对所述数据范围的误差值;
根据所述数据增量、所述误差值以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
3.如权利要求2所述的方法,其特征在于,根据所述数据增量、所述误差值以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,具体包括:
根据所述数据增量以及所述误差值,确定修正后的数据增量;
根据修正后的数据增量以及所述当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量。
4.如权利要求1~3任一项所述的方法,其特征在于,所述方法还包括:
根据各数据范围所对应的预测业务数据量,确定用于表征各数据范围对应业务数据量的数据量分布函数。
5.如权利要求1所述的方法,其特征在于,创建至少一个数据存储节点,具体包括:
根据所述预测业务数据量以及该数据存储节点对应的第一数据存储量阈值,确定待创建的数据存储节点的节点数量,并创建所述节点数量的数据存储节点。
6.如权利要求5所述的方法,其特征在于,创建所述节点数量的数据存储节点,具体包括:
根据所述节点数量,对该数据存储节点对应的数据范围进行划分,得到各子数据范围;
将该数据存储节点中当前存储的至少部分业务数据转移到至少一个新增数据节点中进行存储,具体包括:
针对每个新增数据节点,从该数据存储节点中确定出该新增数据节点对应的子数据范围内的业务数据,作为待转移业务数据;
将所述待转移业务数据转移到该新增数据节点中进行存储。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述预测业务数据量不超过该数据存储节点对应的第二数据存储量阈值,从与该数据存储节点相邻的其他数据存储节点中确定至少一个满足预设条件的数据存储节点,作为目标数据存储节点,其中,针对每个与该数据存储节点相邻的其他数据存储节点,若该其他数据存储节点对应的预测业务数据量与该数据存储节点对应的预测业务数据量的和值不超过所述第一数据存储量阈值,确定该其他数据存储节点满足预设条件;
将所述目标数据存储节点中存储的业务数据转移到该数据存储节点中进行存储,并根据所述目标数据存储节点对应的数据范围,调整该数据存储节点对应的数据范围。
8.一种数据存储的装置,其特征在于,包括:
确定模块,用于针对每个数据存储节点,确定该数据存储节点对应的数据范围;
预测模块,用于根据位于所述数据范围内的历史业务数据量以及所述数据范围对应的当前业务数据量,预测设定时间后位于所述数据范围内的业务数据量,作为预测业务数据量;
存储模块,用于若所述预测业务数据量超过该数据存储节点对应的第一数据存储量阈值,创建至少一个数据存储节点,作为新增数据节点,并将该数据存储节点中所述当前业务数据量对应的至少部分业务数据转移到至少一个新增数据节点中进行存储。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
技术总结