本发明涉及数据处理技术领域,特别是涉及一种数据存储方法及装置。
背景技术:
如今数据爆发的情势下,人们将目光转向大数据,同时数据的存储也成为人们关注的焦点之一。现有的数据存储方法为:根据固有的压缩算法将目标数据进行压缩,获得压缩数据;将上述压缩数据储至用户指定的存储介质上。
但是,由于现有数据存储方法根据固有压缩算法对数据进行处理,并由用户指定存储介质,因此现有存储方法过于固化,易导致存储资源分配不合理的问题。例如,用户指定将a数据存储至读取速率较低的介质1上,将b数据存储至读取速率较高的介质2上,而实际应用中对a数据访问率高、b数据访问率低,依据现有技术的方法,由于已经约定了a数据的存储介质,虽然之后对a数据的访问率高,但是依然只能将a数据存储到介质1中,显然这样资源分配不合理,会影响后期数据访问的效率。
技术实现要素:
本发明实施例的目的在于提供一种数据存储方法及装置,以合理分配存储资源。具体技术方案如下:
第一方面,本发明实施例提供了一种数据存储方法,所述方法包括:
获得目标数据;
估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延;
获得所述目标数据的访问频率;
当所述访问频率不低于第一阈值时,将数值最小的计算时延对应的存储方式确定为第一目标存储方式;否则,分别基于预设的每一种存储方式的计算时延,估算该存储方式的存储代价,并将数值最小的存储代价对应的存储方式确定为第一目标存储方式;
将所述目标数据按照所述第一目标存储方式进行存储。
可选的,所述存储方式中包括压缩算法和存储介质两种要素;
所述估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延的步骤,包括:
按照以下方式估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延:
估算以第一目标压缩算法对所述目标数据进行压缩、解压时需要的压缩时间和解压时间,其中,所述第一目标压缩算法为第二目标存储方式中包含的压缩算法,所述第二目标存储方式为预设的存储方式中的一种;
估算从第一目标存储介质中读取第一目标压缩数据需要的读取时间,其中,所述第一目标存储介质为:所述第二目标存储方式中包括的存储介质,所述第一目标压缩数据为:以所述第一目标压缩算法对所述目标数据进行压缩得到的数据;
根据所述压缩时间、所述解压时间和所述读取时间,估算所述目标数据按照所述第二目标存储方式存储时所消耗的计算时延。
可选的,所述存储方式的要素还包括数据格式;
所述方法还包括:
估算所述目标数据按照第一目标数据格式进行存储时需要的计数时间,其中,所述计数时间为:统计所述目标数据中用户所选定数据的出现次数所需要的时间,所述第一目标数据格式为:第二目标存储方式所包含的数据格式;
所述根据所述压缩时间、所述解压时间和所述读取时间,估算所述目标数据按照所述第二目标存储方式存储时所消耗的计算时延的步骤,包括:
根据所述压缩时间、所述解压时间、所述读取时间和所述计数时间,估算所述第二目标存储方式对应的计算时延。
可选的,所述分别基于预设的每一种存储方式的计算时延,估算该存储方式的存储代价的步骤,包括:
分别基于预设的每一种存储方式的计算时延,按照以下方式,估算该存储方式的存储代价:
获取第二目标压缩数据所占用的存储空间,其中,所述第二目标压缩数据为将所述目标数据按照第三目标存储方式中的压缩算法压缩后得到的数据,所述第三目标存储方式为预设的存储方式中的一种;
分别获得所述存储空间的第一权重和所述计算时延的第二权重;
根据所述存储空间及其第一权重、所述计算时延及其第二权重以及所述访问频率,估算所述第三目标存储方式的存储代价。
可选的,在所述估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延的步骤之前,还包括:
判断所述目标数据的数据重要程度级别是否低于第二阈值,当判断结果为是,执行所述估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延的步骤。
可选的,所述目标数据的访问频率为按照预设时间间隔统计的访问频率。
可选的,所述目标数据包括:未在本地存储的数据和已在本地存储的数据。
第二方面,本发明实施例提供了一种数据存储装置,所述装置包括:
第一获得模块,用于获得目标数据;
第一估算模块,用于估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延;
第二获得模块,用于获得所述目标数据的访问频率;
确定模块,用于当所述访问频率不低于第一阈值时,将数值最小的计算时延对应的存储方式确定为第一目标存储方式;否则,分别基于预设的每一种存储方式的计算时延,估算该存储方式的存储代价,并将数值最小的存储代价对应的存储方式确定为第一目标存储方式;
存储模块,用于将所述目标数据按照所述第一目标存储方式进行存储。
可选的,所述存储方式中包括压缩算法和存储介质两种要素;
所述第一估算模块,包括:
第一估算子模块,用于估算以第一目标压缩算法对所述目标数据进行压缩、解压时需要的压缩时间和解压时间,其中,所述第一目标压缩算法为第二目标存储方式中包含的压缩算法,所述第二目标存储方式为预设的存储方式中的一种;
第二估算子模块,用于估算从第一目标存储介质中读取第一目标压缩数据需要的读取时间,其中,所述第一目标存储介质为:所述第二目标存储方式中包括的存储介质,所述第一目标压缩数据为:以所述第一目标压缩算法对所述目标数据进行压缩得到的数据;
第三估算子模块,用于根据所述压缩时间、所述解压时间和所述读取时间,估算所述目标数据按照所述第二目标存储方式存储时所消耗的计算时延。
可选的,所述存储方式的要素还包括数据格式;
所述装置还包括:
第二估算模块,用于估算所述目标数据按照第一目标数据格式进行存储时需要的计数时间,其中,所述计数时间为:统计所述目标数据中用户所选定数据的出现次数所需要的时间,所述第一目标数据格式为:第二目标存储方式所包含的数据格式;
所述第一估算模块,具体用于:
根据所述压缩时间、所述解压时间、所述读取时间和所述计数时间,估算所述第二目标存储方式对应的计算时延。
可选的,所述确定模块,包括:
第一获取子模块,用于获取第二目标压缩数据所占用的存储空间,其中,所述第二目标压缩数据为将所述目标数据按照第三目标存储方式中的压缩算法压缩后得到的数据,所述第三目标存储方式为预设的存储方式中的一种;
第二获取子模块,用于分别获得所述存储空间的第一权重和所述计算时延的第二权重;
第四估算子模块,用于根据所述存储空间及其第一权重、所述计算时延及其第二权重以及所述访问频率,估算所述第三目标存储方式的存储代价。
可选的,在触发所述第一估算模块之前,所述装置还包括:
判断模块,用于判断所述目标数据的数据重要程度级别是否低于第二阈值,当判断结果为是,执行所述估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延的步骤。
可选的,所述目标数据的访问频率为按照预设时间间隔统计的访问频率。
可选的,所述目标数据包括:未在本地存储的数据和已在本地存储的数据。
本发明实施例提供的一种数据存储方法及装置,所述方法估算目标数据按照预设的不同存储方式存储时所消耗的计算时延,当目标数据的访问频率高于第一阈值,将目标数据以所消耗的计算时延最小的存储方式进行存储;否则,估算目标数据按照预设的不同存储方式存储时所消耗的存储代价,将目标数据按照存储代价最小的存储方式进行存储。相较于现有技术中按固有的规定存储数据的方法,本发明实施例提供的数据存储方法根据目标数据的访问频率等参数确定存储方式进而存储数据,可以合理分配存储资源,进一步地,能够提高后期数据访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的步骤流程图;
图2为本发明实施例提供的一种数据存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据存储方法及装置,以下分别作详细介绍。
首先,介绍本发明实施例提供的一种数据存储方法,上述方法应用于电子设备,该电子设备可以为智能手机、台式计算机、笔记本电脑、平板电脑等终端设备,还可以为具有较强数据处理功能的服务设备,例如大型计算机等。具体的,上述方法还可以应用于安装在电子设备上的应用程序,该应用程序可以为专门优化存储空间的应用程序;还可以为相关应用程序的功能插件,例如可以为电脑防护软件的插件、杀毒软件的插件,该装置还可以做为功能插件安插在操作系统中。
如图1所示,本发明实施例提供的一种数据存储方法,包括如下步骤:
s101:获得目标数据;
上述目标数据可以为未在本地存储的数据。
当然,当需要对本地存储空间进行优化,或由于使用环境的改变不得不转换本地数据的存储方式时,目标数据还可以为已在本地存储的数据。使用环境的改变可以包括计算机硬件的更换、数据访问频率的改变等。
s102:估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延;
需要说明的是,要素是构成存储方式的最小单位,要素可以为存储数据时所使用的压缩算法、存储介质等,或者还可以为数据本身的数据格式。一种存储方式中可以包括1个、2个甚至多个要素,任意两种预设的存储方式之间至少有1个要素不同。
由于存储数据时要对数据进行计算处理,例如压缩、读取等,计算处理会产生计算时延,当采用不同存储方式存储数据时,所产生的计算时延不同。由于计算时延导致用户在存储数据或者读取数据时等待相应时间,所以需要对不同存储方案的计算时延进行估算,进而了解数据按照不同存储方案存储时致使用户等待的时间。具体的,可以通过以下两种方式估算计算时延。
在一种实现方式中,存储方式中包括压缩算法、存储介质两种要素。压缩算法可以为rar、zip、bzip2、gzip等算法。存储介质包括但不限于内存、ssd(固态硬盘,solidstatedrives)、sas(串行连接硬盘,serialattachedscsi)、sata(串口硬盘,serialata)。
当存储方式包括压缩算法和存储介质两种要素时,可选的,可以通过以下步骤估算目标数据按照每一种预设的不同存储方式存储时所消耗的计算时延:估算以第一目标压缩算法对目标数据进行压缩、解压时需要的压缩时间和解压时间,其中,第一目标压缩算法为第二目标存储方式中包含的压缩算法,第二目标存储方式为预设的存储方式中的一种;估算从第一目标存储介质中读取第一目标压缩数据需要的读取时间,其中,第一目标存储介质为:第二目标存储方式中包括的存储介质,第一目标压缩数据为:以上述第一目标压缩算法对目标数据进行压缩得到的数据;根据上述压缩时间、上述解压时间和上述读取时间,估算目标数据按照上述第二目标存储方式存储时所消耗的计算时延。需要说明的是,由于数据的解压过程为数据压缩的逆过程,因此,在本文中,以第一目标压缩算法对数据进行处理可以包括:对数据进行压缩处理和解压处理两个过程。
具体的,压缩时间可以由压缩速度和数据大小两个因素确定,例如,可以由压缩速度乘以数据大小获得,压缩速度可以由本领域技术人员根据以往的经验进行确定,或者还可以由第三方的专门针对数据进行统计的数据管理系统所提供。数据大小可以由上述数据管理系统进行估算,当然还可以由执行本发明实施例提供的方法的执行主体进行估算。假设以zip压缩算法对目标数据进行压缩处理,获取第三方数据管理系统提供的zip压缩算法的压缩速度、以及第三方系统所估算的目标数据的大小,将两者相乘,进而可以估算出以zip压缩算法压缩目标数据所耗费的压缩时间。
具体的,解压时间可以由解压速度和数据大小两个因素确定,例如,可以由解压缩度和数据大小相乘而得。解压速度可以由本领域技术人员根据以往的经验进行确定,或者还可以由第三方的专门针对数据进行统计的数据管理系统所提供。
具体的,读取时间可以由读取速度和数据大小两个因素确定,例如,可以由读取速度和数据大小相乘而得。读取速度可以由本领域技术人员根据以往的经验进行确定,或者还可以由第三方的专门针对数据进行统计的数据管理系统所提供。
具体的,计算时延由压缩时间、解压时间、读取时间确定,例如将压缩时间、解压时间和读取时间相加,获得目标数据按照第二目标存储方式存储时所消耗的计算时延,以完成估算。
实际应用过程中,在存储数据时,需要对数据中的内容进行某种计数统计,以进行数据分析。例如,存储数据时需要对数据中的某一类数据的出现次数进行计数统计,再如,当数据为某一平台的访问记录时,存储上述记录之前需要统计用户数量(用户数量需要摒除同一用户多次访问平台的情况),此时需要对用户个数进行计数统计。
包括上述两种情况在内的计数统计会耗费相应的计数时间。由于以不同存储格式进行存储的数据所耗费的计数时间不同,进而计算时延不同,因此,在另一种实现方式中,当需要对数据中的某一类数据进行计数统计时,存储方式除包括压缩算法和存储介质两种要素外,还包括数据格式。数据格式可以为行存储、列式存储(比如apacheorc、parquet)等文件格式。
当存储方式包括压缩算法、存储介质和数据格式三种要素时,除估算压缩时间、解压时间、读取时间外,还估算目标数据按照第一目标数据格式进行存储时需要的计数时间,其中,计数时间为:统计所述目标数据中用户所选定的数据的出现次数所需要的时间,第一目标数据格式为:第二目标存储方式所包含的数据格式;并根据压缩时间、解压时间、读取时间和上述计数时间,估算第二目标存储方式对应的计算时延。
具体的,计算时延由压缩时间、解压时间、读取时间和计数时间确定,例如将压缩时间、解压时间、读取时间和计数时间相加,获得目标数据按照第二目标存储方式存储时所消耗的计算时延,以完成估算。
可选的,计数时间由计数速度和数据大小确定,例如,由计数速度乘以数据大小获得。计数速度可以由本领域技术人员根据以往的经验进行确定,或者还可以由第三方的专门针对数据进行统计的数据管理系统所提供。
s103:获得所述目标数据的访问频率;
其中,访问频率可以从本地获得,当然也可以从第三方服务器获得,上述第三方服务器可以为用于统计数据的服务器。
可选的,可以将目标数据在过去一定时期内的历史访问量确定为访问频率;当目标数据为新产生的数据,无法直接获得访问频率,还可以根据目标数据所反应的信息的历史访问量,估算目标数据的访问频率。例如,获得的目标数据所反映的信息为一部侦探类的电影,则根据过去一段时间内侦探类电影的历史访问量估算所获得的目标数据的访问量。
较佳的,为了确保所获取的访问频率能够准确反映数据的访问量,本发明实施例所获取的访问频率为按照预设时间间隔统计的访问频率。也就是说,每隔预设时间间隔,重新获得目标数据的访问频率。
s104:当所述访问频率不低于第一阈值时,将数值最小的计算时延对应的存储方式确定为第一目标存储方式;否则,分别基于预设的每一种存储方式的计算时延,估算该存储方式的存储代价,并将数值最小的存储代价对应的存储方式确定为第一目标存储方式;
当完成对所有存储方式的计算时延的估算后获得多个计算时延,判断目标数据的访问频率是否不低于(大于或者等于)第一阈值,当访问频率不低于第一阈值时,将各计算时延进行比较,确定出数值最小的计算时延,并将数值最小的计算时延对应的存储方式确定为第一目标存储方式。可以理解的是,确定出计算时延最小的存储方式后,当目标数据按照该方式存储时,可以将计算时延缩短至最小。对于第一阈值的大小,可以根据实际使用需求进行设定,本发明实施例不做具体限定。
当目标数据的访问频率低于第一阈值时,根据各存储方式的计算时延,估算该存储方式的存储代价。可选的,按照以下方式,估算每一种存储方式的存储代价:获取第二目标压缩数据所占用的存储空间,其中,第二目标压缩数据为将上述目标数据按照第三目标存储方式中的压缩算法压缩后得到的数据,第三目标存储方式为预设的存储方式中的一种;分别获得上述存储空间的第一权重和上述计算时延的第二权重;根据存储空间及其第一权重、计算时延及其第二权重以及访问频率,估算所述第三目标存储方式的存储代价。其中,第三目标存储方式可以为s102中的第二目标存储方式,进而第二目标压缩数据为第一目标压缩数据、第三目标存储方式中的压缩算法为第一目标压缩算法;当然第三目标存储方式还可以为预设存储方式中除第二目标存储方式以外的存储方式。其中,存储空间可以为将目标数据以某一种数据格式,通过某种压缩算法压缩后所占用存储介质的空间,可选的,可以通过存储空间计算函数sizeofbytes()计算而得。
具体通过以下公式计算存储代价:存储代价=存储空间*第一权重+计算时延*第二权重*访问频率。
估算出所有存储方式的存储代价后,将所得出的各存储代价进行比较,确定数值最小的存储代价,将数值最小的存储代价对应的存储方式确定为第一目标存储方式。确定出存储代价最小的存储方式后,当目标数据按照该方式进行存储时,可以将存储代价缩减至最小。
需要说明的是,第一权重、第二权重可以体现为用户对存储空间以及计算时延的需求,某些用户可能更加注重节省存储空间,而对于另外一些客户而言,其可能更加注重减少计算时延,而关注点不同会导致存储代价的改变,因此引入权重满足不同用户的需求。第一权重、第二权重的来源,可以依据应用场景的不同,从不同第三方数据库获得,或者还可以由用户自行设定,上述第三方数据库用于存储用户在不同需求下注重存储空间(计算时延)的程度。在一种应用场景中,第三方数据库为资产管理数据库,第一权重可以为单位字节占用存储介质所耗费的费用,第二权重可以为单位时间内占用cpu(中央处理器,centralprocessingunit)所耗费的费用,那么在此应用场景中,存储代价被具体为包括使用存储介质产生的费用、使用cpu产生的费用在内的总费用。
s105:将所述目标数据按照所述第一目标存储方式进行存储。
在一种可选实施方式中,通过以下方式,将目标数据按照第一目标存储方式进行存储:将目标数据根据第一目标存储方式中的压缩算法进行压缩,获得第三目标压缩数据;将第三目标压缩数据存储至第一目标存储方式中所规定的存储介质。
在另一种可选实施方式中,将目标数据以第一目标存储方式中的数据格式,通过第一目标存储方式中的压缩算法进行压缩,获得第三目标压缩数据;将第三目标压缩数据存储至第一目标存储方式中所规定的存储介质。
本发明实施例提供的一种数据存储方法,估算目标数据按照预设的不同存储方式存储时所消耗的计算时延,当目标数据的访问频率高于第一阈值,将目标数据以所消耗的计算时延最小的存储方式进行存储;否则,估算目标数据按照预设的不同存储方式存储时所消耗的存储代价,将目标数据按照存储代价最小的存储方式进行存储。相较于现有技术中按固有的规定存储数据的方法,本发明实施例提供的数据存储方法根据目标数据的访问频率等参数确定存储方式进而存储数据,可以合理分配存储资源,进一步地,能够提高后期数据访问效率。
较佳的,在实际应用中,由于个别数据对用户非常重要,不能任意存储,因此本发明实施例还可以对数据的重要程度级别进行判定,过程可以包括以下步骤:判断目标数据的数据重要程度级别是否低于第二阈值,当判断结果为是,执行步骤s102;当判断结果为否,根据用户所指定的存储方式进行存储。上述第二阈值由用户根据需求进行设定,本发明实施例不做具体限定。
相应于上述方法实施例,如图2所示,本发明实施例还提供了一种数据存储装置,所述装置包括:
第一获得模块210,用于获得目标数据;
第一估算模块220,用于估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延;
第二获得模块230,用于获得所述目标数据的访问频率;
确定模块240,用于当所述访问频率不低于第一阈值时,将数值最小的计算时延对应的存储方式确定为第一目标存储方式;否则,分别基于预设的每一种存储方式的计算时延,估算该存储方式的存储代价,并将数值最小的存储代价对应的存储方式确定为第一目标存储方式;
存储模块250,用于将所述目标数据按照所述第一目标存储方式进行存储。
可选的,所述存储方式中包括压缩算法和存储介质两种要素;
所述第一估算模块220,包括:
第一估算子模块,用于估算以第一目标压缩算法对所述目标数据进行压缩、解压时需要的压缩时间和解压时间,其中,所述第一目标压缩算法为第二目标存储方式中包含的压缩算法,所述第二目标存储方式为预设的存储方式中的一种;
第二估算子模块,用于估算从第一目标存储介质中读取第一目标压缩数据需要的读取时间,其中,所述第一目标存储介质为:所述第二目标存储方式中包括的存储介质,所述第一目标压缩数据为:以所述第一目标压缩算法对所述目标数据进行压缩得到的数据;
第三估算子模块,用于根据所述压缩时间、所述解压时间和所述读取时间,估算所述目标数据按照所述第二目标存储方式存储时所消耗的计算时延。
可选的,所述存储方式的要素还包括数据格式;
所述装置还包括:
第二估算模块,用于估算所述目标数据按照第一目标数据格式进行存储时需要的计数时间,其中,所述计数时间为:统计所述目标数据中用户所选定数据的出现次数所需要的时间,所述第一目标数据格式为:第二目标存储方式所包含的数据格式;
所述第一估算模块220,具体用于:
根据所述压缩时间、所述解压时间、所述读取时间和所述计数时间,估算所述第二目标存储方式对应的计算时延。
可选的,所述确定模块240,包括:
第一获取子模块,用于获取第二目标压缩数据所占用的存储空间,其中,所述第二目标压缩数据为将所述目标数据按照第三目标存储方式中的压缩算法压缩后得到的数据,所述第三目标存储方式为预设的存储方式中的一种;
第二获取子模块,用于分别获得所述存储空间的第一权重和所述计算时延的第二权重;
第四估算子模块,用于根据所述存储空间及其第一权重、所述计算时延及其第二权重以及所述访问频率,估算所述第三目标存储方式的存储代价。
可选的,在触发所述第一估算模块220之前,所述装置还包括:
判断模块,用于判断所述目标数据的数据重要程度级别是否低于第二阈值,当判断结果为是,执行所述估算所述目标数据按照预设的不同存储方式存储时所消耗的计算时延的步骤。
可选的,所述目标数据的访问频率为按照预设时间间隔统计的访问频率。
可选的,所述目标数据包括:未在本地存储的数据和已在本地存储的数据。
本发明实施例提供的一种数据存储装置,估算目标数据按照预设的不同存储方式存储时所消耗的计算时延,当目标数据的访问频率高于第一阈值,将目标数据以所消耗的计算时延最小的存储方式进行存储;否则,估算目标数据按照预设的不同存储方式存储时所消耗的存储代价,将目标数据按照存储代价最小的存储方式进行存储。相较于现有技术,本发明实施例提供的数据存储装置根据目标数据的访问频率等参数确定存储方式进而存储数据,可以合理分配存储资源,进一步地,能够提高后期数据访问效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。