本申请涉及数据存储技术领域,特别是涉及一种数据存储方法及系统。
背景技术:
在数据存储技术领域,通常采用存储服务器进行数据的存储,而存储服务器主要通过各种性能的磁盘进行数据存储和读写。不同的磁盘采用不同的数据存储方法。
目前,通常包括两种数据存储方法。一种是将数据保存在hdd(harddiskdrive,硬盘驱动器)上,hdd容量大且价格较低,单容量成本低,能够存储大量数据。另一种是将数据保存在ssd(solidstatedrives,固态硬盘)上,ssd读写性能较高,便于快速读写数据。
然而,目前的两种数据存储方法中,采用hdd进行数据存储,虽然能够存储大量数据,但是数据的读写性能较差,从而导致存储服务器无法满足用户需求。采用ssd进行数据存储,虽然读写性能较高,但是ssd容量较小,导致存储服务器需要使用大量的ssd,占用的存储服务器空间较大且不便于维护。因此,目前的两种数据存储方法不能在数据的读写性能和运维方面达到平衡,数据存储的效率不够高。
技术实现要素:
本申请提供了一种数据存储方法及系统,以解决现有技术中的数据存储方法无法在数据读写性能和数据运维方面达到平衡,数据存储效率不够高的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种数据存储方法,应用于存储服务器中,所述存储服务器中包括ssd磁盘组和hdd磁盘组,所述方法包括:
s1:获取源数据;
s2:将所述源数据分割成带有时间指针的数据块;
s3:将所述数据块传输至ssd磁盘组;
s4:判断在设定的时间阈值内,是否有应用读取所述数据块;
s5:如果是,将所述数据块存储至ssd磁盘组;
s6:如果否,将所述数据块存储至hdd磁盘组;
s7:返回步骤s4。
可选地,所述步骤s5,包括:
s51:判断所述数据块被读取前是否存储在ssd磁盘组内;
s52:如果是,对所述数据块读取完毕后修改为当前时间指针,并将所述数据块继续存储在ssd磁盘组;
s53:如果否,对所述数据块读取完毕后修改为当前时间指针,并将所述数据块从hdd磁盘组转移至ssd磁盘组。
可选地,所述判断在设定的时间阈值内,是否有应用读取所述数据块的方法,具体为:
判断所述数据块的时间指针与当前时刻的差值是否小于或等于设定的时间阈值。
可选地,所述设定的时间阈值为24小时-72小时。
可选地,在设定的时间阈值内所读取的总存储容量小于所述ssd磁盘组的总存储容量。
一种数据存储系统,所述数据存储系统中包括ssd磁盘组、hdd磁盘组、源数据获取模块、数据处理模块、传输模块、判断模块以及存储控制模块,其中,
所述源数据获取模块,用于获取源数据;
所述数据处理模块,用于将所述源数据分割成带有时间指针的数据块;
所述传输模块,用于将所述数据块传输至ssd磁盘组;
所述判断模块,用于判断在设定的时间阈值内,是否有应用读取所述数据块;
所述存储控制模块,用于在设定的时间阈值内,当所述判断模块判定有应用读取所述数据块时,将所述数据块存储至ssd磁盘组,以及,当所述判断模块判定没有应用读取所述数据块时,将所述数据块存储至hdd磁盘组。
可选地,所述存储控制模块包括:
第一存储控制单元,用于在设定的时间阈值内,当所述判断模块判定有应用读取所述数据块时,将所述数据块存储至ssd磁盘组;
第二存储控制单元,用于在设定的时间阈值内,当所述判断模块判定没有应用读取所述数据块时,将所述数据块存储至hdd磁盘组。
可选地,所述第一存储控制单元包括:
判断子单元,用于判断所述数据块被读取前是否存储在ssd磁盘组内;
指针更新子单元,用于对所述数据块读取完毕后修改为当前时间指针;
转移子单元,用于当判断子单元判定所述数据块被读取前未存储在ssd磁盘组内时,将所述数据块从hdd磁盘组转移至ssd磁盘组。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种数据存储方法,该方法首先获取待存储的源数据;其次,对源数据进行处理,将其分割成带有时间指针的数据块,以便于后续利用时间确定热数据和冷数据,并将处理后的源数据传输至ssd磁盘组进行暂存;然后,判断在设定的时间阈值内是否有前端应用读取数据块;当设定时间阈值内有前端应用读取数据块时,将数据块存储至ssd磁盘组,作为热数据,否则将数据块存储至hdd磁盘组,作为冷数据。本实施例利用设定的时间阈值来判断将数据存储至ssd磁盘组还是hdd磁盘组,将在设定时间阈值内使用的数据作为热数据,放入ssd磁盘组,有利于数据的快速读取,提高数据存储和读取效率;将在设定时间阈值内未使用的数据作为冷数据,放入hdd磁盘组,充分利用hdd磁盘组容量大的优点,满足大量数据的存储,用利于数据存储的稳定性。通过将ssd磁盘组和hdd磁盘组有机结合,能够在数据的读写性能和运维方面达到平衡,大大提高数据存储的效率。本实施例利用设定的时间阈值来判断将数据存储至ssd磁盘组还是hdd磁盘组,即:利用设定的时间阈值来判断当前数据是热数据还是冷数据,具有一个明确的时间阈值,尤其适用于即存即用场景,以及数据读取与时间关联性较大的前端应用场景中。这种判断方法能够使数据更加合理地在ssd磁盘组和hdd磁盘组之间分配,充分发挥ssd磁盘组的高性能特点和hdd磁盘组的大容量特点,有利于提高资源利用率。
本申请还提供一种数据存储系统,该数据存储系统中除了ssd磁盘组和hdd磁盘组以外,还包括有源数据获取模块、数据处理模块、传输模块、判断模块和存储控制模块。通过源数据获取模块获取到源数据后,利用数据处理模块对源数据进行处理,分割成带有时间指针的数据块;通过传输模块将数据块传输至ssd磁盘组进行暂存,然后通过判断模块,判断在设定的时间阈值内是否有应用读取所述数据块,最后根据判断模块的判断结果,利用存储控制模块将热数据存储至ssd磁盘组,以便于提高读取效率,将冷数据存储至hdd磁盘组,以便于提高数据存储稳定性,从而实现数据的动态存储。本实施例通过判断模块和存储控制模块,能够将ssd磁盘组和hdd磁盘组合理搭配,有利于平衡数据的读写性能和运维效率,从而提高数据存储的效率,还能够降低成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据存储方法的流程示意图;
图2为本申请实施例所提供的一种数据存储系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图1,图1为本申请实施例所提供的一种数据存储方法的流程示意图。由图1可知,本实施例中的数据存储方法,主要包括如下过程:
s1:获取源数据。
本实施例中的数据存储方法主要应用于存储服务器中,且存储服务器中包括ssd磁盘组和hdd磁盘组。存储服务器通过网络获取源数据,或者,通过直连的存储设备获取源数据。
步骤s2:将源数据分割成带有时间指针的数据块。
获取到源数据之后,对其进行处理,本实施例对源数据的处理方法为:对源数据进行分割,将其分割成带有时间指针的数据块。本实施例中对源数据进行分割的方法,采用现有技术中的方法,在此不再赘述。
通过将源数据分割成带有时间指针的数据块,有利于后续根据时间指针快速判断设定的时间阈值内是否读取过数据块,从而提高数据读取效率。
s3:将数据块传输至ssd磁盘组。
本实施例对源数据进行处理后,将处理生成的数据块传输至ssd磁盘组内。由于ssd磁盘组的读取性能优于hdd磁盘组,因此,将处理后的数据块传输至ssd磁盘组内,当前默认为热数据,有利于提高数据块读取的效率。
s4:判断在设定的时间阈值内,是否有应用读取数据块。
具体地,步骤s4可采用如下的判断方法:
判断数据块的时间指针与当前时刻的差值是否小于或等于设定的时间阈值。
时间指针为数据块最新的存档时刻,可以时间指针作为数据块的索引,数据块的时间指针与当前时刻的差值,作为数据块在存储服务器磁盘内的存储时间。通过时间指针,能够非常方便快捷地将数据块的存储时间与设定的时间阈值进行比较,从而提高判断效率。
本实施例中设定的时间阈值与应用场景相关,可以根据不同的用户需求来设定不同的时间阈值。通常时间阈值可以设置为24小时-72小时,在可能的情况下,时间阈值越短越能够节省ssd磁盘组的使用量,有利于节省成本。
继续参见图1可知,通过步骤s4的判断,如果在设定的时间阈值内有应用读取数据块,执行步骤s5:将数据块存储至ssd磁盘组。
如果在设定的时间阈值内没有应用读取数据块,执行步骤s6:将数据块存储至hdd磁盘组。
由以上步骤s4-s6可知,本实施例通过设定时间阈值的方法,判断在设定的时间阈值内是否有前端应用读取数据块。如果在设定的时间阈值内,有前端应用读取数据块,则判定数据块为热数据,将其存储至性能较突出的ssd磁盘组内,有利于提高数据的读取效率。如果在设定的时间阈值内,没有前端应用读取数据块,则判定数据块为冷数据,将其存储至hdd磁盘组内,从而释放所占用的ssd磁盘空间,有利于提高ssd磁盘空间的利用率,从而提高数据的存储和读取效率。
也就是,当数据块的时间指针与当前时刻的差值≤设定的时间阈值时,判定有应用读取数据块,将此数据块判定为热数据;当数据块的时间指针与当前时刻的差值>设定的时间阈值时,判定没有应用读取数据块,将此数据块判定为冷数据。
本实施例中通过设定时间阈值,来判断将数据块存储至ssd磁盘组还是hdd磁盘组,即:通过设定时间阈值的方法来判断当前的数据块是热数据还是冷数据。假设设定的时间阈值为一周,那么一周以内打开该视频文件的话,将该视频文件视为热数据,超过一周打开该视频文件将其视为冷数据。
另外,本实施例中采用时间阈值来判断冷数据和热数据,能够依据每天的存储业务量大致估算需要在存储服务器中投入的ssd磁盘组容量,有利于根据实际情况灵活而合理地安排ssd磁盘组和hdd磁盘组的数量,实现两者的平衡,从而降低成本。采用时间阈值来判断冷数据和热数据的方式,尤其适用于即存即用的存储场景,以及数据读取业务具有相对固定的时间段的场景。
继续参见图1可知,本实施例中数据存储方法为动态存储,当根据数据的性质,将数据块存储至ssd磁盘组或者hdd磁盘组之后,返回步骤s4:判断在设定的时间阈值内,是否有应用读取数据块。以此循环往复,将热数据存储至ssd磁盘组,将冷数据存储至hdd磁盘组,有利于充分利用ssd磁盘组的高性能以及hdd磁盘组的大容量,从而提高数据存储和读取的效率。
采用本实施例中的数据存储方法时,需要注意的是步骤s5。当初次执行本实施例中的方法时,由于获取源数据,并将源数据处理后存放至ssd磁盘组内,当执行步骤s5时,就相当于将数据块继续保持存储在ssd磁盘组内。当循环执行本实施例中的方法时,由于此时ssd磁盘组和hdd磁盘组内均可能存储有数据块,因此,步骤s5又包括如下过程:
s51:判断数据块被读取前是否存储在ssd磁盘组内。
如果数据块被读取前存储在ssd磁盘组内,执行步骤s52:对数据块读取完毕后修改为当前时间指针,并将数据块继续存储在ssd磁盘组。
如果数据块被读取前未存储在ssd磁盘组内,即:存储在hdd磁盘组内,则执行步骤s53:对数据块读取完毕后修改为当前时间指针,并将数据块从hdd磁盘组转移至ssd磁盘组。
本实施例中在设定的时间阈值内所读取的总存储容量小于ssd磁盘组的总存储容量。这样能够确保在设定的时间阈值内所读取的数据块能够及时存储至ssd磁盘组内,从而提高数据读取的速率。否则,在设定的时间阈值内所读取的数据块总存储容量大于ssd磁盘组的总存储容量,会导致超过ssd磁盘组容量的数据块被自动存储至hdd磁盘组,作为冷数据,导致数据存储不够准确。
本实施例中可以设置hdd磁盘组的总存储容量大于ssd磁盘组的总存储容量,由于hdd磁盘组比ssd磁盘组的成本较低,在实现数据快速存储和读取的同时,这种容量配置,有利于降低存储服务器的总成本。
实施例二
在图1所示实施例的基础之上参见图2,图2为本申请实施例所提供的一种数据存储系统的结构示意图。由图2可知,本实施例中数据存储系统主要包括:ssd磁盘组、hdd磁盘组、源数据获取模块、数据处理模块、传输模块、判断模块和存储控制模块。其中,源数据获取模块用于获取源数据;数据处理模块用于将源数据分割成带有时间指针的数据块;传输模块用于将数据块传输至ssd磁盘组;判断模块用于判断在设定的时间阈值内,是否有应用读取数据块;存储控制模块用于在设定的时间阈值内,当判断模块判定有应用读取数据块时,将数据块存储至ssd磁盘组,以及,当判断模块判定没有应用读取数据块时,将数据块存储至hdd磁盘组。
进一步地,本实施例中存储控制模块包括:第一存储控制单元和第二存储控制单元。其中,第一存储控制单元用于在设定的时间阈值内,当判断模块判定有应用读取数据块时,将数据块存储至ssd磁盘组。第二存储控制单元用于在设定的时间阈值内,当判断模块判定没有应用读取数据块时,将数据块存储至hdd磁盘组。
第一存储控制单元又包括:判断子单元、指针更新子单元和转移子单元。其中,判断子单元用于判断数据块被读取前是否存储在ssd磁盘组内;指针更新子单元,用于对数据块读取完毕后修改为当前时间指针;转移子单元,用于当判断子单元判定数据块被读取前未存储在ssd磁盘组内时,将数据块从hdd磁盘组转移至ssd磁盘组。
该实施例中数据存储系统的工作原理和工作方法,在图1所示的实施例中已经详细阐述,两者可以互相参照,在此不再赘述。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。