本发明涉及计算机存储技术领域,特别是涉及一种数据存储方法及装置。
背景技术:
计算机系统目前正逐渐从“以计算为中心”向“以数据为中心”的方向转变,现在PB级别甚至是EB级别的海量数据存储与处理已经不仅仅局限在专业的科学研究领域,开始大量地出现在很多民用和商用领域中。随着个性化信息服务的不断发展,因为服务对象基数庞大,民用和商用领域的数据量还有超过专业领域的趋势。例如,在专业科学领域中,地球物理勘探、气象数值预报、模拟仿真等等都需要进行大规模数据处理。
现有技术中,对数据进行存储后,则该数据就会固定存储至当前的存储区域。如果该数据存储至级别较低的存储层(读取速度较慢的存储层),而该数据的访问频率很大,则对该数据进行读取时,读取速度就会很慢,浪费时间;或者如果该数据存储至级别较高的存储层(读取速度较快的存储层),而该数据的访问频率却很小,则对该数据进行读取时,虽然读取速度很快,但是该数据长期占用了级别较高的存储层,浪费级别较高的存储层的存储空间;或者有的数据在一段时间内,访问频率很大,而另外的一段时间内,访问频率又很小,如果把该数据存储至级别较高的存储层,则在访问频率很小的那段时间浪费级别较高的存储层的存储空间,如果把该数据存储至级别较低的存储层,则在访问频率很大的那段时间,对该数据进行读取时,读取速度就会很慢,浪费时间。
由此可见,如何根据数据的访问频率对数据的存储区域进行动态变化从而更加合理利用存储空间是本领域技术人员亟待解决地问题。
技术实现要素:
本发明的目的是提供一种数据存储方法及装置,用于根据数据的访问频率对数据的存储区域进行动态变化从而更加合理利用存储空间。
为解决上述技术问题,本发明提供一种数据存储方法,包括:
在接收到存储请求后,将待存储数据存储至最高级别的存储层;
周期性地分析所述最高级别的存储层中存储的各数据的I/O占用比;
判断各数据的I/O占用比是否超过第一阈值;
如果是,则将对应的数据继续存储在所述最高级别的存储层;
如果否,则将对应的数据存储至所述最高级别以下的存储层。
优选地,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,所述将对应的数据存储至所述最高级别以下的存储层具体包括:
将对应的数据存储至所述二级存储层。
优选地,还包括:
判断所述二级存储层中存储的各数据的I/O占用比是否超过第二阈值;
如果是,则将对应的数据继续存储在所述二级存储层;
如果否,则将对应的数据存储至所述三级存储层。
优选地,所述将待存储数据存储至最高级别的存储层之前还包括:
在接收到存储请求后,判断所述存储请求中所需的存储空间是否小于或等于所述最高级别的存储层的剩余存储空间;
其中,如果是,则将待存储数据存储至所述最高级别的存储层;
如果否,则筛选出所述最高级别的存储层中I/O占用比最小的数据,并将该数据存储至所述最高级别以下的存储层。
优选地,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,所述将该数据存储至所述最高级别以下的存储层具体包括:
将该数据存储至所述二级存储层。
优选地,还包括:
周期性地分析所述二级存储层中存储的各数据的I/O占用比;
判断各数据的I/O占用比是否高于所述第一阈值;
如果是,则将对应的数据存储至所述一级存储层;
如果否,则将对应的数据继续存储至所述二级存储层。
优选地,还包括:
周期性地分析所述三级存储层中存储的各数据的I/O占用比;
判断各数据的I/O占用比是否高于所述第二阈值;
如果是,则将对应的数据存储至所述二级存储层;
如果否,则将对应的数据继续存储至所述三级存储层。
优选地,所述周期性地分析所述最高级别的存储层中存储的各待存储数据的I/O占用比具体为:每隔24小时分析所述最高级别的存储层中存储的各待存储数据的I/O占用比。
为解决上述技术问题,本发明提供一种数据存储装置,包括:
初始存储控制模块,用于在接收到存储请求后,将待存储数据存储至最高级别的存储层;
分析模块,用于周期性地分析所述最高级别的存储层中存储的各数据的I/O占用比;
判断模块,用于判断各数据的I/O占用比是否超过第一阈值;其中,如果是,将对应的数据继续存储在所述最高级别的存储层,如果否,触发数据转移模块;
所述数据转移模块,用于将对应的数据存储至所述最高级别以下的存储层。
优选地,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,所述数据转移模块具体用于将对应的数据存储至所述二级存储层。
本发明所提供的数据存储方法及装置,该方法包括,将待存储数据均先存储至最高级别的存储层,然后周期性地分析最高级别的存储层中各数据的I/O占用比,如果一个数据的I/O占用比大于第一阈值,则将该数据继续存储在最高级别的存储层,如果一个数据的I/O占用比低于第一阈值,则将该数据存储至最高级别以下的存储。由此可见,通过上述方法,可以将I/O占用比较高的数据存储在最高级别的存储层,从而在读取这些数据时,缩短读取时间,而将I/O占用比较高的数据存储在最高级别以下的存储层,从而节约最高级别的存储层的存储空间,很显然,该方法实现了数据的动态存储,更加合理。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的流程图;
图2为本发明实施例提供的另一种数据存储方法的流程图;
图3为本发明实施例提供的另一种数据存储方法的流程图;
图4为本发明实施例提供的一种数据存储装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种数据存储方法及装置。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种数据存储方法的流程图。如图1所示,数据存储方法包括:
S10:在接收到存储请求后,将待存储数据存储至最高级别的存储层。
本实施例中,任意的存储请求对应的数据均存储至最高级别的存储层,可以理解地是,存储层最少包含两个存储层。如果有两个存储层,则最高级别的存储层相对于次高级别的存储层的读取速度要快,即如果数据存储在最高级别的存储层,则当需要读取该数据时,读取的速度更快。
S11:周期性地分析最高级别的存储层中存储的各数据的I/O占用比。
在系统运行中,会有大量的存储请求,如果全部的存储请求的数据都存储在最高级别的存储层中,则最高级别的存储层剩余的存储空间就会越来越少,甚至存储空间为0,导致无法存储数据。因此,需要定期地分析最高级别的存储层中存储的各个数据的I/O占用比与第一阈值的关系。
S12:判断各数据的I/O占用比是否超过第一阈值。如果是,进入步骤S13,如果否,进入步骤S14。
S13:将对应的数据继续存储在最高级别的存储层。
S14:将对应的数据存储至最高级别以下的存储层。
可以理解地是,如果存储在最高级别的存储层的部分数据的I/O占用比较低,即这部分数据不会经常被访问属于冷数据,那么这部分数据也就没有必要占用最高级别的存储层。同样的,如果存储在最高级别的存储层的部分数据的I/O占用比较高,即这部分数据经常被访问属于热数据,那么这部分数据就有必要占用最高级别的存储层,使得在访问这些数据时,读取速度更快。可以理解地是,第一阈值可以根据实际情况设定,可以是永久固定的值,也可以随着系统的运行状态改变。
本实施例提供的数据存储方法,将待存储数据均先存储至最高级别的存储层,然后周期性地分析最高级别的存储层中各数据的I/O占用比,如果一个数据的I/O占用比大于第一阈值,则将该数据继续存储在最高级别的存储层,如果一个数据的I/O占用比低于第一阈值,则将该数据存储至最高级别以下的存储。由此可见,通过上述方法,可以将I/O占用比较高的数据存储在最高级别的存储层,从而在读取这些数据时,缩短读取时间,而将I/O占用比较高的数据存储在最高级别以下的存储层,从而节约最高级别的存储层的存储空间,很显然,该方法实现了数据的动态存储,更加合理。
图2为本发明实施例提供的另一种数据存储方法的流程图。如图2所示,在上述实施例的基础上,作为优选地实施方式,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,将对应的数据存储至最高级别以下的存储层具体包括:
S20:将对应的数据存储至二级存储层。
在具体实施中,可以将存储层分为三层,如果一级存储层为最高级别的存储层的话,则上述步骤S14在本实施例中就是步骤S20,即将对应的数据存储至二级存储层。本实施例的存储方式可以避免数据的跨层存储。
如图2所示,在上述实施例的基础上,作为优选地实施方式,还包括:
S21:判断二级存储层中存储的各数据的I/O占用比是否超过第二阈值。如果是,则进入步骤S22,如果否,则进入步骤S23。
S22:将对应的数据继续存储在二级存储层。
S23:将对应的数据存储至三级存储层。
可以理解地是,如果存储在二级存储层的部分数据的I/O占用比较低,即这部分数据不会经常被访问属于冷数据,那么这部分数据也就没有必要占用二级存储层。同样的,如果存储在二级存储层的部分数据的I/O占用比较高,即这部分数据经常被访问属于热数据,那么这部分数据就有必要占用二级存储层,使得在访问这些数据时,读取速度更快。可以理解地是,第二阈值可以根据实际情况设定,可以是永久固定的值,也可以随着系统的运行状态改变。
可以理解的是,第二阈值小于第一阈值。
图3为本发明实施例提供的另一种数据存储方法的流程图。如图3所示,在上述实施例的基础上,作为优选地实施方式,步骤S10之前还包括:
S30:判断存储请求中所需的存储空间是否小于或等于最高级别的存储层的剩余存储空间;
其中,如果是,进入步骤S10;如果否,则进入步骤S31。
S31:筛选出最高级别的存储层中I/O占用比最小的数据,并将该数据存储至最高级别以下的存储层。
本实施例中考虑到当有待存储数据需要存储时,可能当前最高级别的存储的存储空间不满足所需的空间,此时要将最高级别的存储层中I/O占用比最小的数据存储至最高级别以下的存储层。可以理解的是,如果将I/O占用比最小的数据存储至最高级别以下的存储层后,最高级别的存储空间仍然不满足所需的空间,则需要继续进行步骤S31直到满足为止。
在上述实施例的基础上,作为优选地实施方式,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,将该数据存储至最高级别以下的存储层具体包括:将该数据存储至二级存储层。
在具体实施中,可以将存储层分为三层,如果一级存储层为最高级别的存储层的话,则上述步骤S31在本实施例中就是将对应的数据存储至二级存储层。本实施例的存储方式可以避免数据的跨层存储。
在上述实施例的基础上,作为优选地实施方式,还包括:
周期性地分析二级存储层中存储的各数据的I/O占用比。
判断各数据的I/O占用比是否高于第一阈值。进入步骤S42,进入步骤S43。
如果是,则将对应的数据存储至一级存储层。
如果否,则将对应的数据继续存储至二级存储层。
在具体实施中,一个数据的I/O占用比并不是固定不变的,可能这段时间的访问频率较低,导致存储至二级存储层,但是过一段时间的访问频率较高,此时,如果该数据依然存储在二级存储层,则在读取该数据时,读取速度较慢,浪费时间。因此,对于这样的数据,本实施例中,将该数据再次存储至一级存储层,从而实现动态的存储过程。
作为优选地实施方式,还包括:
周期性地分析三级存储层中存储的各数据的I/O占用比。
判断各数据的I/O占用比是否高于第二阈值。如果是,则将对应的数据存储至二级存储层。
如果否,则将对应的数据继续存储至三级存储层。
在具体实施中,一个数据的I/O占用比并不是固定不变的,可能这段时间的访问频率较低,导致存储至三级存储层,但是过一段时间的访问频率较高,此时,如果该数据依然存储在三级存储层,则在读取该数据时,读取速度较慢,浪费时间。因此,对于这样的数据,本实施例中,将该数据存储至二级存储层,从而实现动态的存储过程。
在上述实施例的基础上,作为优选地实施方式,周期性地分析最高级别的存储层中存储的各待存储数据的I/O占用比具体为:每隔24小时分析最高级别的存储层中存储的各待存储数据的I/O占用比。
可以理解地是,周期可以根据实际情况设定,可以是24小时,也可以是48小时,或者10小时等。在具体实施中,如果周期设置的过短,则导致数据存储的位置变化较多,不利于管理,如果周期设置的过长,则导致动态存储不能更好地发挥作用。
图4为本发明实施例提供的一种数据存储装置的结构图。如图4所示,数据存储装置包括:
初始存储控制模块10,用于在接收到存储请求后,将待存储数据存储至最高级别的存储层;
分析模块11,用于周期性地分析最高级别的存储层中存储的各数据的I/O占用比;
判断模块12,用于判断各数据的I/O占用比是否超过第一阈值;其中,如果是,将对应的数据继续存储在最高级别的存储层,如果否,触发数据转移模块;
数据转移模块13,用于将对应的数据存储至最高级别以下的存储层。
在上述实施例的基础上,作为优选地实施方式,存储层包括三层,级别由高到低分别为一级存储层、二级存储层和三级存储层,数据转移模块具体用于将对应的数据存储至二级存储层。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例提供的数据存储装置,将待存储数据均先存储至最高级别的存储层,然后周期性地分析最高级别的存储层中各数据的I/O占用比,如果一个数据的I/O占用比大于第一阈值,则将该数据继续存储在最高级别的存储层,如果一个数据的I/O占用比低于第一阈值,则将该数据存储至最高级别以下的存储。由此可见,通过上述过程,可以将I/O占用比较高的数据存储在最高级别的存储层,从而在读取这些数据时,缩短读取时间,而将I/O占用比较高的数据存储在最高级别以下的存储层,从而节约最高级别的存储层的存储空间,很显然,该装置实现了数据的动态存储,更加合理。
以上对本发明所提供的数据存储方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。