CN111083933B - 数据存储及获取方法和装置 - Google Patents
数据存储及获取方法和装置 Download PDFInfo
- Publication number
- CN111083933B CN111083933B CN201880013245.4A CN201880013245A CN111083933B CN 111083933 B CN111083933 B CN 111083933B CN 201880013245 A CN201880013245 A CN 201880013245A CN 111083933 B CN111083933 B CN 111083933B
- Authority
- CN
- China
- Prior art keywords
- data
- current data
- hit rate
- difference
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3002—Conversion to or from differential modulation
- H03M7/3044—Conversion to or from differential modulation with several bits only, i.e. the difference between successive samples being coded by more than one bit, e.g. differential pulse code modulation [DPCM]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3071—Prediction
- H03M7/3073—Time
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据存储及获取方法和装置,有助于节省存储开销。数据存储方法包括:存储设备获取当前数据和当前数据的历史数据(S100);存储设备使用该历史数据对当前数据进行预测,得到当前数据的预测数据,当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据(S101);存储设备获取当前数据与当前数据的预测数据的差量(S102);当该差量所占的存储空间小于当前数据所占的存储空间时,存储用于恢复述当前数据的信息;用于恢复所述当前数据的信息包括该差量或该差量经压缩得到的值。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及数据存储及获取方法和装置。
背景技术
随着人工智能(artificial intelligence,AI)、大数据、物联网等新兴应用的成熟,需要存储的数据在急剧增加。如果仅依靠提高存储设备的容量来存储急剧增加的数据,则会导致存储设备的采购成本和管理成本较高,且存储设备所占用的空间和耗能较大,这为企业带来了较大的成本负担。因此,需要提供有效的数据存储方案。
发明内容
本申请实施例提供了数据存储及获取方法和装置,有助于节省存储开销。另外,本申请实施例还提供了数据压缩及解压缩方法和装置,有助于节省压缩或解压缩时间。
第一方面,本申请实施例提供了一种数据存储方法,应用于存储设备,该方法可以包括:获取当前数据和当前数据的历史数据;使用该历史数据对当前数据进行预测,得到第一预测数据;第一预测数据是基于历史数据的变化规律对当前数据进行预测后的数据;获取当前数据与第一预测数据的第一差量;当第一差量所占的存储空间小于当前数据所占的存储空间时,存储用于恢复当前数据的信息;其中,用于恢复当前数据的信息包括第一差量或第一差量经压缩得到的值。
其中,差量是用于表征当前数据与当前数据的预测数据(如第一预测数据或下文中描述的第二预测数据)之间的差异的参数。例如该差量可以是差值、比值、倍数或百分比等。历史数据可以是至少两个待存储数据构成的序列中的在当前数据之前的一个或多个数据。待存储数据是指需要存储的原始数据。当前数据是至少两个待存储数据中的当前待存储数据。
本技术方案中,对于当前数据来说,实际存储的是用于恢复当前数据的信息如当前数据与当前数据的预测数据之间的差量或该差量经压缩得到的值。由于所存储的用于恢复当前数据的信息所占的存储空间小于当前数据的存储空间,因此相比现有技术中直接存储当前数据,可以节省存储开销。
在一种可能的设计中,执行预测所采用的算法包括AI神经算法。例如,AI神经算法的类型包括以下任一种:归一化最小均方自适应滤波(normalized least mean square,NLMS)类型、单层感知(single layer perceptron,SLP)类型、多层感知(multi-layerperceptron,MLP)类型、或循环神经网络(recurrent neural networks,RNN)类型等。
在一种可能的设计中,存储设备不存储当前数据的预测数据。这样可以节省存储开销。基于此,存储设备根据历史信息对当前数据进行预测,得到第一预测数据;然后,根据第一预测数据和所存储的用于恢复当前数据的信息,恢复当前数据,具体可以参考下述第二方面提供的技术方案。
在一种可能的设计中,执行压缩所采用的算法包括字典型压缩算法和/或重删算法。
在一种可能的设计中,执行压缩所采用的算法包括字典型压缩算法,字典型压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;每个集合对应一个命中率范围,不同集合对应的命中率范围不同。该方法还包括:获取第一差量的命中率;根据第一差量的命中率,在至少两个集合中确定目标集合;其中,第一差量的命中率用于确定第一差量所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;在目标集合的第一数据中查找第一差量,以确定与第一差量对应的第二数据;与第一差量对应的第二数据为第一差量经压缩得到的值。该技术方案中,将存储设备中包括的映射关系归为不同的集合,这样根据待压缩数据(即第一差量)的命中率可以直接锁定待压缩数据所在的集合,有助于缩小查找待压缩数据的范围,从而节省执行压缩的时间。
在一种可能的设计中,存储设备的存储介质包括缓存、内存和硬盘;执行压缩所采用的算法包括字典型压缩算法,字典型压缩算法的字典包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率。该方法还包括:获取第一差量的命中率;根据第一差量的命中率,确定目标存储介质;其中,第一差量的命中率用于确定第一差量所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;在目标存储介质的第一数据中查找第一差量,以确定第一差量对应的第二数据;与第一差量对应的第二数据为第一差量经压缩得到的值。该技术方案中,根据待压缩数据(具体是第一差量)的命中率和不同存储介质中存储的映射关系的命中率范围,可以直接锁定待压缩数据所在的读写性能最高的存储介质,缓存的读写性能高于内存的读写性能,内存的读写性能高于硬盘的读写性能。这样有助于缩小查找待压缩数据的范围,从而节省执行压缩的时间。
在一种可能的设计中,该方法还包括:当第一差量所占的存储空间大于或等于当前数据所占的存储空间时,存储当前数据或者存储当前数据经压缩得到的值。
在一种可能的设计中,该方法还包括:当第一差量所占的存储空间大于或等于当前数据所占的存储空间时,存储标识信息。该标识信息用于指示用于恢复当前数据的信息是第一差量或第一差量经压缩得到的值。可选的,该标识信息可以作为用于恢复当前数据的信息的标识信息,或者可以作为用于恢复当前数据的信息所携带的信息。该技术方案,有助于存储设备识别所存储的用于恢复当前数据的信息。
第二方面,本申请实施例提供了一种数据获取方法,应用于存储设备,该方法可以包括:读取用于恢复当前数据的信息;该用于恢复当前数据的信息包括差量或差量经压缩得到的值;该差量是当前数据与当前数据的预测数据的差量;该预测数据是基于历史数据的变化规律对当前数据进行预测后的数据;使用该历史数据对当前数据进行预测,得到该预测数据;根据该用于恢复当前数据的信息和该预测数据确定当前数据。例如,历史数据是已获取的一个或多个数据。
在一种可能的设计中,执行解压缩所采用的算法包括字典型解压缩算法和/或重删算法中的至少一种。
在一种可能的设计中,用于恢复当前数据的信息包括差量经压缩得到的值;根据用于恢复当前数据的信息和当前数据的预测数据确定当前数据包括:对差量经压缩得到的值进行解压缩得到差量;根据差量和当前数据的预测数据确定当前数据。
在一种可能的设计中,执行解压缩所采用的算法包括字典型解压缩算法,字典型解压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。对差量经压缩得到的值进行解压缩得到差量,可以包括:获取差量经压缩得到的值的命中率;根据差量经压缩得到的值的命中率,在至少两个集合中确定目标集合;差量经压缩得到的值的命中率用于确定差量经压缩得到的值所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;在目标集合的第二数据中查找差量经压缩得到的值,以确定与差量经压缩得到的值对应的第一数据;与差量经压缩得到的值对应的第一数据为差量。该技术方案中,将存储设备中包括的映射关系归为不同的集合,这样,根据待解压缩数据(具体是差量经压缩得到的值)的命中率可以直接锁定待解压缩数据所在的集合,有助于缩小查找待解压缩数据的范围,从而节省执行解压缩的时间。
在一种可能的设计中,存储设备的存储介质包括缓存、内存和硬盘;执行解压缩所采用的算法包括字典型解压缩算法,字典型解压缩算法的字典包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率。该情况下,对差量经压缩得到的值进行解压缩,得到差量,可以包括:获取差量经压缩得到的值的命中率;根据差量经压缩得到的值的命中率,确定目标存储介质;差量经压缩得到的值的命中率用于确定差量经压缩得到的值所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;在目标存储介质第二数据中查找差量经压缩得到的值,以确定与差量经压缩得到的值对应的第一数据;与差量经压缩得到的值对应的第一数据为差量。该技术方案中,根据待解压缩数据的命中率和不同存储介质中存储的映射关系的命中率,可以直接锁定待解压缩数据所在的读写性能最高的存储介质。这样有助于缩小查找待解压缩数据的范围,从而节省执行压缩的时间。
在一种可能的设计中,当存储设备所读取到的用于恢复当前数据的信息不携带标识信息时,说明用于恢复当前数据的信息包括差量或差量经压缩得到的值。关于标识信息的相关描述可以参考上述第一方面。
可以理解的,当存储设备所读取到的用于恢复当前数据的信息携带标识信息时,说明用于恢复当前数据的信息包括当前数据或当前数据经压缩得到的值。
基于此,第二方面提供的技术方案可以替换为如下方案1或方案2:
方案1:读取用于恢复当前数据的信息,用于恢复当前数据的信息携带标识信息,且用于恢复当前数据的信息包括当前数据。
方案2:读取用于恢复当前数据的信息,用于恢复当前数据的信息携带标识信息,且用于恢复当前数据的信息包括当前数据经压缩得到的值;然后,对当前数据经压缩得到的值进行解压缩,得到当前数据。
第二方面提供的技术方案与方案1/方案2可以结合,从而构成新的技术方案。
第二方面或第二方面的替换方案与第一方面提供的技术方案及其相应的设计方案相对应,因此其具体实现方式以及有益效果均可以参考第一方面中的描述。
第三方面,本申请实施例提供了一种数据存储方法,应用于存储设备,该方法可以包括:获取当前数据和当前数据的历史数据;使用该历史数据对当前数据进行预测,得到当前数据的预测数据,该预测数据是基于历史数据的变化规律对当前数据进行预测后的数据;获取该当前数据与该预测数据的差量;当该差量的绝对值小于等于预设阈值时,存储预设数据。可选的,预设数据所占的存储空间小于当前数据所占的存储空间。本技术方案中,由于预设数据所占的存储空间小于当前数据所占的存储空间,因此,相比现有技术中直接存储当前数据的技术方案,可以节省存储开销。
可选的,预设数据是存储设备预先定义的。可选的,预设数据可以是一个标识符,该标识符用于指示当前数据的预测数据可以作为(或近似作为)当前数据。可选的,预设数据所占的存储空间小于大部分或全部待存储数据所占的存储空间。
以差量是差值为例,当该差量的绝对值为0时,本技术方案中的压缩过程具体是无损压缩过程。当该差量的绝对值不为0时,本技术方案中的压缩过程具体是有损压缩过程。通过合理设置预设阈值,有助于实现将数据的损失率限制在一定范围内;换句话说,可以基于实际需求(例如可接受的有损压缩率需求)设置预设阈值。本技术方案可以应用于允许一定数据损失的场景中,例如播放视频等场景中。
在一种可能的设计中,该方法还包括:当差量的绝对值大于预设阈值时,存储当前数据或者当前数据经压缩得到的值。执行压缩所使用的算法可以例如但不限于是字典型压缩算法和/或重删算法等。
在一种可能的设计中,该方法还包括:当差量的绝对值大于预设阈值时,存储标识信息,该标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值;当存储当前数据时,标识信息用于指示所存储的用于恢复当前数据的信息是当前数据。其中,可以将该标识信息,作为用于恢复当前数据的信息的标识信息,或者是用于恢复当前数据的信息所携带的信息。该技术方案,有助于存储设备识别所存储的用于恢复当前数据的信息的类型,该类型可以是“预设数据”类型,或者“当前数据或当前数据经压缩得到的值”类型,从而有助于实现数据获取流程。
基于上文第一方面或第三方面提供的任一种技术方案,以下提供几种可能的设计:
在一种可能的设计中,该方法还包括:存储用于恢复当前数据的信息和执行预测所采用的AI神经算法的参数之间的对应关系。这样有助于正确恢复当前数据。例如,AI神经算法的参数每次更新之后,存储设备执行一次快照操作,以记录用于恢复当前数据的信息和执行预测所采用的AI神经算法的参数之间的对应关系。
在一种可能的设计中,在存储用于恢复当前数据的信息之后,该方法还包括:通过自适应学习更新AI神经算法的参数;根据更新后的AI神经算法的参数,更新用于恢复当前数据的信息。这样有助于正确恢复当前数据。
在一种可能的设计中,将上文中执行预测所采用的AI神经算法的参数标记为AI神经算法的第一参数,将AI神经算法的第一参数更新后得到的参数标记为AI神经算法的第二参数。基于此,根据更新后的AI神经算法的参数,更新用于恢复当前数据的信息,包括:读取用于恢复当前数据的信息;根据AI神经算法的第一参数(即更新前的AI神经算法的参数)、所读取的用于恢复当前数据的信息和当前数据的历史数据,恢复当前数据;根据AI神经算法的第二参数(即更新后的AI神经算法的参数)和当前数据的历史数据,对当前数据进行预测,得到第二预测数据;第二预测数据是基于历史数据的变化规律和AI神经算法的第二参数对当前数据进行预测后的数据;获取当前数据与第二预测数据的第二差量;当第二差量所占的存储空间小于当前数据所占的存储空间时,将所存储的用于恢复当前数据的信息更新为第二差量或者第二差量经压缩得到的值。
在一种可能的设计中,存储设备包括AI计算卡,上述使用历史数据对当前数据进行预测,得到第一预测数据,包括:通过AI计算卡使用历史数据对当前数据进行预测,得到第一预测数据。
在一种可能的设计中,存储设备包括内存。获取至少两个待存储数据中的当前数据和当前数据的历史数据,包括:从内存中获取至少两个待存储数据中的当前数据和当前数据的历史数据。
在一种可能的设计中,对任一待存储数据来说,在该待存储数据不作为其他待存储数据的历史数据的情况下,从内存中删除该待存储数据,以节省内存的存储开销。
第四方面,本申请实施例提供了一种数据获取方法,应用于存储设备,该方法可以包括:读取用于恢复当前数据的信息;当用于恢复当前数据的信息包括预设数据时,使用历史数据对当前数据进行预测,得到当前数据的预测数据,该预测数据是基于历史数据的变化规律对当前数据进行预测后的数据;将该预测数据作为当前数据。例如,历史数据是已获取的一个或多个数据。
在一种可能的设计中,当存储设备所读取到的用于恢复当前数据的信息不携带标识信息时,说明用于恢复当前数据的信息包括预设数据。关于标识信息的相关描述可以参考上述第三方面,此处不再赘述。
可以理解的,当存储设备所读取到的用于恢复当前数据的信息携带标识信息时,说明用于恢复当前数据的信息包括当前数据或当前数据经压缩得到的值。该情况下,第四方面可以替换为上文中描述的方案1或方案2。
第四方面提供的技术方案与方案1/方案2可以结合,从而构成新的技术方案。
第四方面或第四方面的替换方案与第三方面提供的技术方案及其相应的设计方案相对应,因此其实现方式以及有益效果均可以参考第三方面。
基于上文第二方面或第四方面提供的任一种技术方案,以下提供几种可能的设计:
在一种可能的设计中,存储设备包括内存,在使用历史数据对当前数据进行预测,得到当前数据的预测数据之前,该方法还包括:从内存中获取历史数据。
在一种可能的设计中,该方法还包括:存储设备将当前数据存储到内存中,以作为其他待获取数据的历史数据。
在一种可能的设计中,该方法还包括:当已获取数据不再作为待获取数据的历史数据时,存储设备可以从内存中删除该已获取数据,以节省内存的存储开销。
在一种可能的设计中,该方法还包括:根据该用于恢复当前数据的信息与AI神经算法的参数之间的对应关系,获取对当前数据进行预测所采用的AI神经算法的参数;所述使用该历史数据对当前数据进行预测,得到该预测数据,包括:根据获取的AI神经算法的参数,使用该历史数据对当前数据进行预测,得到该预测数据。
在一种可能的设计中,存储设备包括AI计算卡,上述使用该历史数据对当前数据进行预测,包括:通过AI计算卡使用该历史数据对当前数据进行预测。
第五方面,本申请实施例提供了一种数据压缩方法,应用于存储设备,存储设备中存储有至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。该方法可以包括:获取待压缩数据的命中率;根据待压缩数据的命中率,在至少两个集合中确定目标集合;待压缩数据的命中率用于确定待压缩数据所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;在目标集合的第一数据中查找待压缩数据,以确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。
第六方面,本申请实施例提供了一种数据解压缩方法,应用于存储设备,存储设备中存储有至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。该方法可以包括:获取待解压缩数据的命中率;根据待解压缩数据的命中率,在至少两个集合中确定目标集合;待解压缩数据的命中率用于确定待解压缩数据所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;在目标集合的第二数据中查找与待解压缩数据,以确定与待解压缩数据对应的第一数据,并将与待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。
第七方面,本申请实施例提供了一种数据压缩方法,应用于存储设备,存储设备的存储介质包括缓存、内存和硬盘;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间。该方法包括:获取待压缩数据的命中率;根据待压缩数据的命中率,确定目标存储介质;待压缩数据的命中率用于确定待压缩数据所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;在目标存储介质的第一数据中查找待压缩数据,以确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。
第八方面,本申请实施例提供了一种数据解压缩方法,应用于存储设备,存储设备的存储介质包括缓存、内存和硬盘;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间。该方法可以包括:获取待解压缩数据的命中率;根据待解压缩数据的命中率,确定目标存储介质;待解压缩数据的命中率用于确定待解压缩数据所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;在目标存储介质的第二数据中查找与待解压缩数据对应的第一数据,并将与待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。
需要说明的是,第五或第七方面提供的数据压缩方法所能达到的有益效果可以参考第一方面的描述。第六或第八方面提供的数据解压缩方法所能达到的有益效果可以参考第二方面的描述。作为一个示例,第五和第七方面中描述的映射关系可以是字典型压缩算法的字典中包含的映射关系。
第九方面,本申请实施例提供了一种存储设备,该存储设备可以用于执行上述第一至第八方面提供的任一种方法。
在一种可能的设计中,可以根据上述第一方面至第八方面提供的任一种方法对该存储设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
在另一种可能的设计中,该存储设备包括存储器和处理器,该存储器用于存储程序代码,处理器用于调用该程序代码,以执行第一方面至第八方面提供的任一方法。
应注意,本申请描述的存储器和处理器可以集成在一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
本申请实施例还提供了一种计算机可读存储介质,包括程序代码,该程序代码包括用于执行第一方面至第八方面提供的任一方法的部分或全部步骤的指令。
本申请实施例还提供了一种计算机可读存储介质,其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面至第八方面提供的任一种可能的方法。
本申请实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面至第八方面提供的任一方法被执行。
可以理解地,上述提供的任一种存储设备、计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1为可适用于本申请一实施例的系统架构的示意图;
图2为可适用于本申请一实施例的存储设备的硬件结构示意图;
图3为可适用于本申请另一实施例的存储设备的硬件结构示意图;
图4为可适用于本申请一实施例的AI神经算法的示意图;
图5为本申请实施例提供的一种数据存储方法的示意图一;
图5A为本申请实施例提供的一种待存储数据与实际存储的信息的示意图;
图6为本申请实施例提供的一种数据存储方法的示意图二;
图6A为本申请实施例提供的某一时刻内存和硬盘中存储的信息的示意图;
图7为本申请实施例提供的一种数据获取方法的示意图一;
图7A为本申请实施例提供的一种待获取数据与实际存储的信息的示意图;
图8为本申请实施例提供的一种数据获取方法的示意图二;
图9为本申请实施例提供的一种数据压缩方法的示意图一;
图10为本申请实施例提供的一种数据解压缩方法的示意图一;
图11为本申请实施例提供的一种数据压缩方法的示意图二;
图12为本申请实施例提供的一种数据解压缩方法的示意图二;
图13为本申请实施例提供的一种数据存储方法的示意图三;
图14为本申请实施例提供的一种数据获取方法的示意图三;
图15为本申请实施例提供的一种存储设备的示意图一;
图16为本申请实施例提供的一种存储设备的示意图二;
图17为本申请实施例提供的一种存储设备的示意图三;
图18为本申请实施例提供的一种存储设备的示意图四;
图19为本申请实施例提供的一种存储设备的示意图五;
图20为本申请实施例提供的一种存储设备的示意图六。
具体实施方式
如图1所示,为可适用于本申请一实施例的系统架构的示意图。图1所示的系统架构包括客户端100和存储设备200。
在写数据流程中,客户端100用于向存储设备200发送写请求,该写请求包括一个或多个待写数据,以及每个待写数据的地址信息。存储设备200接收到该写请求之后,依次将每个待写数据存储到该待写数据的地址信息所指示的存储空间中,或者将对该待写数据进行处理(如下文中的预测、求差量、压缩等中的一种或多种)得到的数据存储到该待写数据的地址信息所指示的存储空间中。
在读数据流程中,客户端100用于向存储设备发送读请求,该读请求包括一个或多个待读数据的地址信息。存储设备200接收到该读请求之后,依次从每个待读数据的地址信息所指示的存储空间中读取数据,然后将所读取到的数据反馈给客户端100,或者将对所读取到的数据进行处理(如下文中的预测、求差量、解压等中的一种或多种)得到的数据反馈给客户端100。
需要说明的是,图1所示的系统架构仅为可适用于本申请实施例的系统架构的一个示例,其不对可适用于本申请实施例的系统架构构成限定。例如,可适用于本申请实施例的系统架构可以包括一个存储设备200以及多个客户端100;或者,包括一个客户端以及多个存储设备200等。
可以理解的,客户端100是一个逻辑功能模块,该逻辑功能模块可实现的功能的示例可以参考上文。图1中是以客户端100是独立于存储设备200为例进行说明的。该情况下,在硬件实现上,客户端100可以集成在独立于存储设备200的一个设备上。另外,在一些实施例中,例如在超融合场景或存储计算一体机中,客户端100可以作为存储设备200中的一个逻辑功能模块。该情况下,在硬件实现上,客户端100可以是由存储设备200中的存储介质(如内存)和处理器(如中央处理器(central processing unit,CPU))共同实现的。具体的,该存储介质中存储有程序指令,当该程序指令被该处理器调用时,使得该处理器执行客户端100可实现的功能。当然,客户端100还可以是由存储设备200中的存储介质(如内存)、处理器以及其他硬件共同实现的,本申请实施例对此不进行限定。如果不加说明,下文中均是以本申请实施例提供的技术方案应用于图1所示的系统架构为例进行说明。
如图2所示,为可适用于本申请一实施例的存储设备200的硬件结构示意图。图2所示的存储设备包括:接口卡201、处理器202、主存储器(例如内存memory)203、辅助存储器204(例如硬盘等)、协议转换模块205和总线206。这些器件之间的连接关系可以参见图2。本申请实施例中,硬盘包括但不限于硬盘驱动器(hard disk drive,HDD)或固态硬盘(solid-state disk,SSD)等存储介质。需要说明的是,下文中均是以主存储器203是内存(标记为内存203),且辅助存储器204具体是硬盘(标记为硬盘204),协议转换模块205具体是硬盘协议转换模块(标记为硬盘协议转换模块205)为例进行说明的。在此统一说明,下文不再赘述。
其中,接口卡201、处理器202、内存203、硬盘204和硬盘协议转换模块205可以通过总线206相互连接。总线206可以包括以下至少一种:外设部件互连标准(peripheralcomponent interconnect,PCI)总线、PCIE(PCI express)总线、串行连接SCSI(serialattached SCSI,SAS)、SATA串口硬盘(serial advanced technology attachment,SATA)、扩展工业标准结构(extended industry standard architecture,EISA)总线等。SCSI是小型计算机系统接口(small computer system interface)的英文缩写。总线206可以包括地址总线、数据总线和控制总线等中的一种或多种。为便于表示,图2中使用带箭头的线表示总线206,但并不表示仅有一根总线或一种类型的总线。
接口卡201,也可以称为前端协议转换模块,用于对接收到的信息进行传输协议转换。例如,将采用光网络通信协议或以太网通信协议接收到来自客户端100的信息转换为采用PCIE协议的信息。又如,将采用PCIE协议接收到来自处理器202的信息转换为采用光网络通信协议或以太网通信协议的信息。接口卡201可以包括以下至少一种:光纤通道(fibrechannel,FC)接口卡、千兆以太网(gigabit ethernet,GE)接口卡、接口总线(interfacebus,IB)接口卡等。
处理器202是存储设备200的控制中心,可以用于控制存储设备200中的其他器件如内存203、硬盘204和硬盘协议转换模块205等器件工作,从而实现本申请实施例提供的技术方案,具体示例可以参考下文。
可选的,处理器202可以包括CPU,具体可以包括一个或多个CPU。
可选的,处理器202可以包括CPU和缓存(即CPU缓存)。其中,缓存是介于CPU和内存203之间的高速存储器,主要用于提升存储设备200的读写性能。例如,缓存中存储的数据可以是内存203中存储的数据的一部分。若缓存中包括待访问数据(如待读数据或对待读数据进行处理后得到的数据等),则CPU可以从缓存中获取该待访问数据,而不用从内存203中获取该待访问数据,从而加快了数据读取速率。
内存203,一方面可以用于对来自接口卡201的信息(如写请求或读请求携带的信息)进行缓存,以便于处理器202调用内存203中缓存的信息,从而实现本申请实施例提供的技术方案;或者,用于对来自于处理器202的信息(如待读数据等)进行缓存,以便于处理器202调用内存203中缓存的信息,并发送给接口卡201,使得接口卡201依次对缓存的信息进行传输协议转换。另一方面,内存203是介于处理器202和硬盘204之间的存储器,用于提升存储设备200的读写性能。例如,内存203中存储的数据可以是硬盘203中存储的数据的一部分。若内存中包括待访问数据,则CPU可以从内存203中获取该待访问数据,而不用从硬盘204中获取该待访问数据,从而加快了数据读取速率。
硬盘204,用于存储数据。按照所支持的传输协议进行分类,硬盘204可以包括以下至少一种:SAS硬盘(或SAS级联框)、PCIE硬盘、SATA硬盘等。
硬盘协议转换模块205,也可以称为后端协议转换模块,介于处理器202与硬盘204之间,用于对接收到的信息进行传输协议转换。例如,将采用PCIE协议接收到的来自处理器202的信息转换为,采用可适用于硬盘204的协议如SAS协议或SATA协议等的信息。又如,将采用SAS协议或SATA协议等接收到的来自硬盘204的信息转换为,采用可适用于处理器202的协议如PCIE协议等的信息。以硬盘204是SAS硬盘为例,硬盘协议转换模块205具体可以是:SAS协议转换芯片,或SAS接口卡等。
在图2所示的存储设备200中,处理器202可以用于执行下文中描述的预测、求差量、压缩解压缩等步骤,具体示例可以参考下文。该情况下,可以认为处理器202通过调用程序来执行预测、求差量、压缩解压缩等步骤。
需要说明的是,图2所示的存储设备200仅为可适用于本申请实施例的存储设备的一个示例,其不对可适用于本申请实施例的存储设备构成限定。可适用于本申请实施例的存储设备还可以包括比存储设备200中更多或更少的器件。
例如,若处理器202和硬盘204所采用的协议相同,例如均是PCIE协议,则存储设备200可以不包括硬盘协议转换模块205。
再如,如图3所示,在图2所示的存储设备200的基础上,存储设备200还可以包括AI计算卡207,AI计算卡207用于在处理器202的控制下,实现AI计算功能,如下文中描述的执行预测和求差量等步骤,具体示例可以参考下文。AI计算卡例如可以是AI计算芯片,当然本申请实施例不限于此。该示例中,当AI计算卡用于执行预测和求差量等步骤时,处理器202可以不需要执行预测和求差量等步骤。
又如,存储设备200还可以包括压缩解压缩模块,用于在处理器202的控制下,执行压缩解压缩等步骤,具体示例可以参考下文。该示例中,处理器202可以不需要执行压缩解压缩等步骤。这里描述的压缩解压缩模块可以是一个硬件如芯片等。
可以理解的,在不冲突的情况下,上述任意两个或两个以上示例可以结合使用,从而构成存储设备200的新的硬件架构。例如,存储设备200可以既包括AI计算卡207又包括压缩解压缩模块。
上文中描述的存储设备200的硬件结构均是基于图1所示的系统架构为例进行说明的。在客户端100是存储设备200中的一个逻辑功能模块的实施例中,上文提供的任一种存储设备200的硬件结构可以不包括接口卡201以及接口卡201与处理器202之间的总线206。用于实现客户端100的功能的处理器与上述处理器202可以是同一个处理器,也可以是不同的处理器。
以下简单介绍本申请实施例涉及的相关技术。
1)、AI神经算法
如图4所示,为可适用于本申请一实施例的AI神经算法的示意图。在图4中,AI神经算法可以包括输入层31、隐含层32和输出层33。其中:
输入层31用于接收输入变量的取值,并将接收到的输入变量的取值直接或者经过处理后发送到隐含层32。其中,处理的作用是为了获得隐含层32能够识别的信息。输入变量是待预测数据之前的一个或多个数据。输入层31的输入变量的个数及输入变量具体是待预测数据之前的哪些数据可以根据预测精度要求进行灵活调整。例如,若待预测数据是第n个数据,标记为X(n),则输入变量可以是在待预测数据X(n)之前的n-1个数据(标记为X(1)、X(2)……X(n-1))中任意一个或多个数据。n≥1,n是整数。
隐含层32用于根据接收到来自输入层31的输入变量的取值对待预测数据进行预测,并将预测结果发送到输出层33。隐含层32由y层神经网络构成,y≥1,y是整数。y的取值可以根据预测精度要求进行调整。每层神经网络包括一个或多个神经元,不同层神经网络包括的神经元的个数可以相同,也可以不相同。第1层神经网络包括的神经元可以表示为S11、S12、S13……,第2层神经网络包括的神经元可以表示为S21、S22、S23……,第y层神经网络包括的神经元可以表示为Sy1、Sy2、Sy3……。隐含层包括的任意两个神经元之间可以有连线, 也可以没有连线。每个连线具有一个权重,第i个连线的权重可以表示为wi。i≥1,i是整数。作为一个示例,y、wi和每层神经网络包括的神经元个数等参数可以在存储设备启动时进行初始化赋值。初始化所赋的值可以是通过离线机器在一定预测精度要求下,对被存储数据(如大量的被存储数据)进行训练、验证所得。另外在数据存储过程中可以根据实际业务需求,选择性开启在线学习从而调整y、wi以及每层神经网络包括的神经元个数等中的一个或多个参数的取值,进而提升预测精度。
输出层33用于将隐含层32的预测结果直接或经过处理后输出。其中,处理的作用是为了获得接收该预测结果的器件/模块能够识别的信息。预测结果包括对待预测数据进行预测得到的预测数据。
在本申请实施例中,AI神经算法的类型可以包括以下任一种:NLMS类型、SLP类型、MLP类型或RNN类型等。其中,RNN类型的AI神经算法可以包括google的快速准确的图像超分辨率(rapid and accurate image super-resolution,RAISR)算法,或者,智能驾驶中的物体运动轨迹预测技术与算法如百度的Apollo(阿波罗)智能驾驶算法等。以下通过简单介绍这两种算法,来说明AI神经算法的应用示例。
google的RAISR算法可以描述为:通过机器学习图片,获得图片变化的内在规律,其中,该内在规律可以通过该算法中的参数(如上述y、wi以及每层神经网络包括的神经元个数等中的一项或多项)的取值来表征;然后,通过所获得的参数的取值和图片中已知的像素值,预测图片中每个丢失像素在原始高分辨率图片中的像素值,从而将低分辨率图片恢复为高分辨图片。对计算机而言就是计算机内部的一组二进制数据中有缺失部分,而google的RAISR算法的作用是通过机器学习预测该缺失部分。
百度的Apollo智能驾驶算法可以描述为:通过机器学习物体的运动参数,获得物体运动参数变化的内在规律,其中,该内在规律可以通过该算法中的参数(如上述y、wi以及每层神经网络包括的神经元个数等中的一项或多项)的取值来表征;然后,通过所获得的参数的取值和物体当前和/或历史的运动参数,预测物体将来的运动参数。对计算机而言就是预测一组已知二进制数据在将来的二进制数据里面出现位置变化或具体值的变化。
由此类推,本申请实施例所采用的AI神经算法可以描述为:通过机器学习被存储数据,获得被存储数据变化的内在规律,其中,该内在规律可以通过该算法中的参数(如上述y、wi以及每层神经网络包括的神经元个数等中的一项或多项)的取值来表征;然后,通过所获得的参数的取值和已知的被存储数据,预测未知的被存储数据。对计算机而言就是使用一组已知二进制数据预测将来出现的二进制数据的值。
2)、字典型压缩技术(或算法)、字典型解压缩技术(或算法)
字典型压缩技术是目前业界公认的高效存储技术,其基本原理为:在存储设备中预存一个字典,该字典包括至少两个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,其中,每个映射关系的第一数据所占的存储空间大于该映射关系的第二数据所占的存储空间。换句话说,每个映射关系是一个复杂符号(或复杂数据)与一个简单符号(或简单数据)之间的映射关系。一般地,字典中的任意两个第一数据不同,且任意两个第二数据不同。当有待压缩数据(如待写数据)需要压缩时,存储设备可以将待压缩数据与字典中的第一数据进行对比,如果字典中的第一数据中包括待压缩数据,则存储待压缩数据对应的第二数据;如果字典中的第一数据中不包括待压缩数据,则存储待压缩数据本身。
例如,假设字典中存储的第一数据和第二数据之间的对应关系如表1所示:
表1
第一数据 | 第二数据 |
Chinese | 00 |
people | 01 |
China | 02 |
并且,假设需要对如下待压缩数据进行压缩:I am a Chinese people,I am fromChina,那么,基于表1所示的字典执行字典型压缩之后,存储设备中存储的信息(即用于恢复该待压缩数据的信息)可以是:I am a 00 01,I am from 02。
字典型解压缩技术的基本原理为:存储设备将待解压缩数据(如从存储空间中读取的数据)与字典中的第二数据进行对比,如果字典中的第二数据中包括待解压缩数据,则将待解压缩数据对应的第一数据作为解压后的数据;如果字典中的第二数据中不包括待解压缩数据,则将待解压缩数据本身作为解压后的数据。
另外,本申请中的术语“多个”是指两个或两个以上。本申请中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。当字符“/”用在公式中时,一般表示前后关联对象是一种“相除”的关系。例如,公式A/B表示A除以B。本申请中的术语“第一”、“第二”等是为了区分不同的对象,并不限定该不同对象的顺序。
以下,结合附图说明本申请实施例提供的存储及获取数据的方法。
如图5所示,为本申请实施例提供的一种数据存储方法的示意图。图5所示的方法可以包括如下步骤:
S100:存储设备获取当前数据和当前数据的历史数据。
例如,存储设备获取至少两个待存储数据中的当前数据(即当前待存储数据)和当前数据的历史数据(即历史待存储数据);该历史数据是至少两个待存储数据构成的序列中的在当前数据之前的一个或多个数据。
S101:存储设备使用该历史数据对当前数据进行预测,得到当前数据的预测数据。当前数据的预测数据是基于该历史数据的变化规律对当前数据进行预测后的数据。
其中,历史数据的变化规律具体是历史数据的内容或值的变化规律。
例如,假设序列中的各数据(即待存储数据)依次为:X(1)、X(2)、X(3)……X(n)……X(N),其中,1≤n≤N,且N≥2,n和N均是整数。那么,当当前数据是X(n)时,历史数据可以是在X(n)之前的任意一个或多个数据。可选的,历史数据是从X(n-1)开始的且在X(n-1)之前的连续的预设数量个数据。例如,假设预设数量是10,那么,当n=50时,历史数据可以是数据X(40)~X(49);当n=51时,历史数据可以是数据X(41)~X(50)。当然,历史数据是从X(n-1)开始的且在X(n-1)之前的不连续的多个数据。
当前数据的历史数据具体是当前数据之前的哪个或哪些数据可以是与执行S101中的预测所采用的算法相关。本申请实施例对执行预测所采用的算法不进行限定。例如,该算法可以包括AI神经算法。该情况下,S101中所采用的历史数据具体是当前数据之前的哪个或哪些数据可以是依据图4所示的AI神经算法的输入变量确定的。例如,若图4所示的AI神经算法的输入变量是从X(n-1)开始的且在X(n-1)之前的连续的10个数据,则当当前数据是X(n)且n=50时,历史数据是X(40)~X(49)。又如,若图4所示的AI神经算法的输入变量是X(n-2)、X(n-4)、X(n-6)、X(n-8)和X(n-10),则当当前数据是X(n)且n=50时,历史数据是X(48)、X(46)、X(44)、X(42)和X(40)。
关于AI神经算法的具体实现可以参考上文,此处不再赘述。需要说明的是,执行S101之前,存储设备已经获得AI神经算法的各参数(上述如y、wi和每层神经网络包括的神经元的个数等)的取值。AI神经算法的各参数的取值可以是通过离线和/或在线训练被存储数据得到的。执行S101时,存储设备可以根据已获得的AI神经算法的各参数的取值以及历史数据对当前数据进行预测,以得到当前数据的预测数据。
作为一个示例,存储设备可以在接收到客户端发送的一个或多个写请求之后,根据该一个或多个写请求携带的待写数据得到至少两个待存储数据,其中,该一个或多个写请求所携带的待写数据是针对同一个或同一类主体的数据,例如,该主体可以是同一篇文章,或者同一个图片,或者同一类型的多个图片等。然后,对该至少两个待存储数据进行排序,得到该至少两个待存储数据构成的序列,接着,依次将该序列中的部分或全部待存储数据中的每个待存储数据作为当前数据,执行S100~S105。
其中,根据该一个或多个写请求携带的待写数据得到至少两个待存储数据可以包括:将该一个或多个写请求携带的每个待写数据作为一个待存储数据,或者将一个或多个写请求携带的待写数据进行重新组合和/或分割成至少两个待存储数据。也就是说,存储设备接收到的待写数据的粒度与存储设备处理(包括预测、求差量、存储等中的一项或多项)的粒度可以相同,也可以不同。例如,若该一个或多个写请求包括的每个待写数据是8比特,则当每个待存储数据是8比特时,每个待写数据是一个待存储数据;当每个待存储数据是16比特时,每个待存储数据可以是由2个待写数据组合得到;当每个待存储数据是4比特时,每2个待存储数据可以是由一个待写数据分割得到。为了便于描述,下文中均是以每个待写数据作为一个待存储数据为例进行说明。
本申请实施例对本示例中根据何种方式对至少两个待存储数据进行排序不进行限定。通常,本示例中执行排序所依据的排序规则与执行预测所采用的预测算法如AI神经算法相关。例如,本示例中执行排序所依据的排序规则,与存储设备获得AI神经算法的各参数(上述y、wi和每层神经网络包括的神经元的个数等)的取值的过程中,参与训练时被存储数据所依据的排序规则相同。例如,假设参与训练时被存储数据是针对同一篇文章的,则该排序规则可以是该文章中的各字符在该文章中的顺序或该顺序的倒序。又如,假设参与训练的被存储数据是针对同一个图片的,则该排序规则可以是该图片中的各像素点逐行或逐列进行排序的规则,或者将该图片分割为多个部分,并将相似部分进行组合后得到的新图片中的各像素点逐行或逐列进行排序的规则。
作为一个示例,存储设备可以在接收到客户端发送的一个或多个写请求之后,将该写请求携带的待写数据得到至少两个待存储数据,并将该至少两个待写数据的先后顺序构成的序列作为至少两个待存储数据构成的序列;然后,依次将该序列中的部分或全部待存储数据中的每个待存储数据作为当前数据,执行S101~S105。本示例中,存储设备可以不执行对待写数据的排序步骤。本示例的一种应用场景可以为:存储设备获得AI神经算法的各参数(如上述y、wi和每层神经网络包括的神经元的个数等)的取值的过程中,参与训练时被存储数据的顺序,为存储设备接收到客户端发送的被存储数据的顺序。本示例中相关参数的解释及实现方式可以参考上文。
需要说明的是,关于预测步骤,本申请实施例支持以下技术方案:
方案一:对于某个或某些待存储数据来说,预测步骤可以是缺省的。例如,假设历史数据是从X(n-1)开始的且在X(n-1)之前的连续的10个数据,则对于第1~10个待存储数据来说,预测步骤可以是缺省的。
基于方案一,存储设备可以按照现有技术中提供的技术方案对该存储数据进行存储,如直接存储,或者按照字典型压缩算法和/或重删算法等算法进行压缩理后进行存储。可以理解的,该情况下,S102~S104也可以是缺省的。
方案二:存储设备对不同待存储数据进行预测时,所采用的预测算法的各参数可以相同,也可以不相同。例如,对于第5~10个待存储数据来说,AI神经算法的输入变量可以是从X(n-1)开始的且在X(n-1)之前的连续的5个数据,也就是说,输入变量的个数是5;对于第10个及之后的待存储数据来说,AI神经算法的输入变量可以是从X(n-1)开始的且在X(n-1)之前的连续的10个数据,也就是说,输入变量的个数是6。
S102:存储设备获取当前数据与当前数据的预测数据的差量。
该差量是用于表征当前数据与当前数据的预测数据之间的差异的参数。例如,该差量可以是差值、比值、倍数或百分比等,当然本申请实施例不限于此。
例如,若差量是差值,则该差值可以是当前数据减去当前数据的预测数据得到的差值,或当前数据的预测数据减去当前数据得到的差值。具体是哪种差值可以是预定义的,本申请实施例不限于此。可以理解的,由于当前数据的预测数据可能大于、等于或小于当前数据,因此,该差值可以是大于、等于或小于0的值。差量是比值、倍数或百分比等时,差量的具体实现方式以及取值的原理与此类似,此处不再一一列举。
S103:存储设备判断该差量所占用的存储空间是否小于当前数据所占用的存储空间。若是,则执行S104;若否,则执行S105。
S103可以通过以下方式之一实现:
方式1:存储设备判断该差量的比特数是否小于当前数据的比特数。
方式2:存储设备对该差量和当前数据分别进行压缩(如采用字典型压缩算法或重删算法进行压缩),并判断该差量经压缩得到的值的比特数是否小于当前数据经压缩得到的值的比特数。
基于方式1和方式2任一种,若判断结果为“是”,说明差量所占用的存储空间小于当前数据所占用的存储空间;若判断结果为“否”,说明差量所占用的存储空间大于或等于当前数据所占用的存储空间。
S104:存储设备存储该差量或者存储该差量经压缩得到的值。其中,具体存储差量经压缩得到的值还是存储差量可以是预定义的,当然本申请实施例不限于此。
本申请实施例对执行压缩所采用的压缩算法不进行限定,例如可以包括字典型压缩算法和重删算法中的至少一种。具体采用使用哪个或哪些算法可以是预定义的,当然本申请实施例不限于此。
执行S104之后,针对当前数据的存储过程结束。
S105:存储设备存储当前数据或者存储当前数据经压缩得到的值。具体存储当前数据经压缩得到的值还是存储当前数据可以是预定义的,当然本申请实施例不限于此。
作为一个示例,执行S105时,存储设备采用的压缩算法与S104中的压缩所使用采用的压缩算法是一致的,当然本申请实施例不限于此。
执行S105之后,针对当前数据的存储过程结束。
为了便于存储设备区分所存储的用于恢复当前数据的信息是“经压缩得到的值或者差量”还是“经压缩得到的值或者当前数据”,从而在读数据流程中,确定待读数据,可选的,若执行S105,则该方法还可以包括以下S105A:
S105A:存储设备存储第一标识信息,第一标识信息用于指示所存储的用于恢复当前数据的信息是S105中所存储的信息(即当前数据或者当前数据经压缩得到的值)。第一标识信息可以作为用于恢复当前数据的信息的标识信息,或者是用于恢复当前数据的信息携带的信息。
可以理解的,S105A可以被替换为在执行S104之后,执行以下S104A;或者,可以在执行S105A的情况下,在执行S104之后,还执行以下S104A:
S104A:存储设备存储第二标识信息,第二标识信息用于指示所存储的用于恢复当前数据的信息是S104中所存储的信息(即差量或者差量经压缩得到的值)。
由于通过调整预测算法的参数的取值,可以实现待存储数据的预测数据逼近待存储数据,从而有助于实现大部分待存储数据的预测数据与待存储数据之间的差量所占的存储空间小于该待存储数据所占的存储空间;因此,具体实现时,执行S105A且不执行S104A(即存储第一标识信息且不存储第二标识信息)可以在实现使存储设备区分所存储的用于恢复当前数据的信息是“差量经压缩得到的值或者差量”还是“当前数据经压缩得到的值或者当前数据”的同时,节省存储开销。下文中图6~图8所示的实施例均是基于数据存储方法中执行S105A且不执行S104A为例进行说明的。
本申请实施例提供的数据存储方法中,使用历史数据对当前数据进行预测,并且在当前数据与当前数据的预测数据的差量所占的存储空间小于当前数据所占的存储空间时,存储差量或者存储差量经压缩得到的值。由于差量所占的存储空间小于当前数据所占的存储空间,因此,预测和求差量的过程可以被认为是数据压缩过程,这样,相比现有技术,无论直接存储差量还是存储差量经压缩得到的值,均可以节省存储开销。另外,通过使用合适的预测算法或调整预测算法中的参数,有助于实现当前数据的预测数据逼近当前数据,从而使得差量所占的存储空间远小于当前数据所占的存储空间,从而更有效地节省存储开销。此外,存储差量经压缩得到的值的技术方案可以进一步节省存储开销。
图5所示的存储差量经压缩得到的值的技术方案,可以理解为:在采用传统压缩算法对数据处理之前,引入预测算法,其中,预测算法是基于数据内容规律、发展趋势、内在关系等构建的;使用预测算法和已经输入存储设备的数据对将要输入存储设备的数据的内容进行预测(或者对已经输入存储设备的多个数据构成的序列中的在前数据对在后数据进行预测),然后,对预测准确内容或相似内容,只调用传统数据压缩算法压缩真实值与预测值之间的差量,而不存储预测准确内容或相似内容。从而达成增加压缩率、主动减少传统压缩算法输入值的波动范围目标,实现当前压缩算法在解压缩率、解压缩速度方面优化突破。
例如,虽然对于存储设备端来说,存储对象是二进制的序列,但是将序列恢复成可理解的语义时会发现其内部蕴含着一些变化规律。如将二进制序列Xn={10,101,1010,10001,11010,100101,110010,1000001,1010010,1100101,1111010,10010001,10101011}转换为十进制后得到Xn'={2,5,10,17,26,37,50,65,82,101,122,145,171};经分析可以发现Xn'中的前12个数据满足如下变化规律:x2+1,且x=1~12。
基于此,对于Xn'来说,存储设备根据预测算法x2+1以及图5所示的实施例,实际存储的序列可以为{10,101,1010,0,0,0,0,0,0,0,0,0,01}。其中,对于Xn'中的前3个数据来说,预测步骤是缺省的。结合S105A可知,对于这3个数据来说,存储设备还可以分别存储第一标识信息。所存储的“01”为待存储数据171与该待存储数据的预测数据170之间的差值。由此可见,需要压缩存储的数据的范围显著降低,其数据的重复概率明显增加。因此可以显著提升数据压缩比及压缩效率。
需要说明的是,对于多个待存储数据来说,由于每个待存储数据均可以按照图5所示的数据存储方法进行存储,而每个待存储数据与该待存储数据的预测数据相比可能出现以下情形之一:完全相同,部分相同,完全不同;对于完全相同或部分相同的情形,可以节省存储空间;对于完全不同的情形,与现有技术中所使用对应的方法的效果等同。因此,总体来说,可以节省存储空间。并且,对于存储经压缩得到的值的技术方案,可以显著提升数据压缩比及压缩效率。
如图5A所示,为本申请实施例提供的一种待存储数据与实际存储的信息(即用于恢复待存储数据的信息)的示意图。图5A中是以历史数据是当前数据之前的,且从当前数据的前一个待存储数据开始的连续5个待存储数据为例进行说明的,因此,对于序列的前5个待存储数据来说,所对应的实际存储的信息分别为待存储数据(或待存储数据经压缩得到的值)以及第一标识信息。每个阴影小方格表示一个待存储数据对应的实际存储的信息,且对应关系如虚线箭头所示。“A”表示第一标识信息。
结合图2所示的存储设备,图5所示的数据存储方法的一个示例可以如图6所示。图6所示的方法可以包括如下步骤:
S201:存储设备通过接口卡接收客户端发送的写请求,该写请求中包括至少两个待写数据和至少两个待写数据中的每个待写数据的地址信息。
S202:接口卡将对该至少两个待写数据和每个待写数据的地址信息进行传输协议转换,例如将采用以太网通信协议的这些信息转换为采用PCIE协议的信息。
S203:接口卡将传输协议转换后得到的至少两个待写数据和每个待写数据的地址信息发送给处理器。
S204:处理器将接收到的来自接口卡的至少两个待写数据中的每个待写数据作为一个待存储数据,并对所得到的至少两个待存储数据进行排序。
S205:处理器将排序后得到的序列和每个待存储数据(即每个待写数据)的地址信息存储到内存中。后续,处理器可以依次将该序列中的部分或全部待存储数据中的每个待存储数据作为当前数据,执行以下S206~S219。可以理解的,对于该序列中的任意两个待存储数据来说,在该序列中所处的位置靠前的待存储数据可以作为位置靠后的待存储数据的历史数据。
可选的,S204和S205可以替换为:处理器将接收到的来自接口卡的至少两个待写数据作为一个待存储数据,并将所得到的待存储数据和待存储数据的地址信息写入内存中。然后,处理器可以对写入内存的至少两个待存储数据进行排序;或者,处理器可以依次将接收到接口卡发送的至少两个待写数据的先后顺序作为至少两个待存储数据的先后顺序,从而构成一个序列,并依次将该序列中的部分或全部待存储数据中的每个待存储数据作为当前数据,执行以下S206~S219。
可以理解的,由于序列中所处的位置靠前的待存储数据可以作为位置靠后的待存储数据的历史数据,然而,根据上文中的描述可知,并非在一个待存储数据之前的所有待存储数据均会被用作该待存储数据的历史数据。基于此,可选的,对任意一个待存储数据来说,处理器可以在该待存储数据不再作为其他待存储数据的历史数据的情况下,从内存中删除该待存储数据,以节省内存的存储开销。
如图6A所示,为某一时刻内存和硬盘中存储的信息的示意图。图6A是基于图5A进行绘制的,因此,图6A中的各种图形或箭头等的解释可以参见图5A。由图6A可知,某一时刻,内存中的待存储数据构成的序列可以仅包含当前数据的历史数据、当前数据以及当前数据之后的待存储数据,这样可以节省内存的存储开销。
S206:处理器从内存中获取当前数据和该当前数据的历史数据。
S207:处理器使用历史数据对当前数据进行预测,得到当前数据的预测数据。
S208:处理器获取当前数据与当前数据的预测数据的差量。
S209:处理器判断差量所占的存储空间是否小于当前数据所占的存储空间。
若是,则执行S210;若否,则执行S215。
S210:处理器对差量进行压缩。
S211:处理器将差量经压缩得到的值和从内存中获取的当前数据的地址信息发送给硬盘协议转换模块。
S212:硬盘协议转换模块对接收到的差量经压缩得到的值和当前数据的地址信息进行传输协议转换,例如由PCIE协议转换为SAS协议。
S213:硬盘协议转换模块将经传输协议转换后的差量经压缩得到的值和当前数据的地址信息发送给硬盘如SAS硬盘。
S214:硬盘在当前数据的地址信息所指示的存储空间中存储差量经压缩得到的值。执行S214之后,针对当前数据的存储过程结束。
S215:处理器对当前数据进行压缩。
S216:处理器将第一标识信息、当前数据经压缩得到的值和从内存中获取的当前数据的地址信息发送给硬盘协议转换模块。第一标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值。
S217:硬盘协议转换模块对接收到的第一标识信息、当前数据经压缩得到的值和当前数据的地址信息进行传输协议转换,例如由PCIE协议转换为SAS协议。
S218:硬盘协议转换模块将经传输协议转换后的第一标识信息、当前数据经压缩得到的值和当前数据的地址信息发送给硬盘(如SAS硬盘)。
S219:硬盘在当前数据的地址信息所指示的存储空间中存储第一标识信息和当前数据经压缩得到的值。执行S219之后,针对当前数据的存储过程结束。
结合图3所示的存储设备,图5所示的数据存储方法的一个示例可以是对上述图6所示的实施例进行如下几点修改得到的实施例:第一,上述S207~S209是由AI计算卡执行的。第二,在执行S206之后且执行S207之前,上述方法还包括:处理器将从内存中获取的历史数据和当前数据发送给AI计算卡。第三,在执行S209之后且执行S210之前,上述方法还包括:AI计算卡将差量发送给处理器。第四,在执行S209之后且执行S215之前,上述方法还包括:AI计算卡将当前数据发送给处理器。
如图7所示,为本申请实施例提供的一种数据获取方法的示意图。本实施例与图5所示的数据存储方法相对应,因此,本实施例中相关内容的解释可以参考图5所示的实施例。图7所示的方法可以包括如下步骤:
S301:存储设备读取用于恢复当前数据(即当前待获取数据)的信息。用于恢复当前数据的信息包括“差量或差量经压缩得到的值”或者“当前数据或当前数据经压缩得到的值”。差量是当前数据与当前数据的预测数据的差量。当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据。
其中,历史数据是已获取的一个或多个数据。
例如,存储设备可以在接收到客户端发送的一个或多个读请求之后,根据该一个或多个读请求所请求的待读数据得到至少两个待获取数据的地址信息,然后,根据该至少两个待获取数据的地址信息,读取用于恢复该至少两个待获取数据的信息。其中,该一个或多个读请求所请求的数据是针对同一个主体的数据,关于该主体的相关描述可以参考上述图5所示的实施例。其中,待读数据的粒度与待获取数据的粒度可以相同,也可以不同,例如,若一个待读数据是8比特,则一个待获取数据可以是4比特、8比特或16比特等。为了便于描述,下文中均是以每个待读数据是一个待获取数据为例进行说明。待读数据与待获取数据之间的对应关系,可以参考上文中待写数据与待存储数据之间的对应关系,此处不再赘述。存储设备可以将该至少两个待获取数据中的每个待获取数据可以作为当前数据,从而执行S301~S306。
若用于恢复当前数据的信息包括“差量或差量经压缩得到的值”,那么具体包括差量还是差量经压缩得到的值可以是预定义的,当然本申请不限于此。
若用于恢复当前数据的信息包括“当前数据或当前数据经压缩得到的值”,那么具体包括当前数据还是当前数据经压缩得到的值可以是预定义的,当然本申不限于此。
S302:存储设备判断用于恢复当前数据的信息是否携带第一标识信息。
根据上述图5所示的实施例中的描述可知:
若S302的判断结果为否,则说明用于恢复当前数据的信息包括差量或差量经压缩得到的值。基于此,当用于恢复当前数据的信息是差量经压缩得到的值时,执行S303;当用于恢复当前数据的信息是差量时,执行S304。
若S302的判断结果为是,说明用于恢复当前数据的信息包括当前数据或当前数据经压缩得到的值。基于此,当用于恢复当前数据的信息是当前数据经压缩得到的值时,执行S306;当用于恢复当前数据的信息是当前数据时,针对当前数据的获取过程结束。
S303:存储设备对差量经压缩得到的值进行解压缩,得到差量。
可以理解的,S303中执行解压缩所采用的解压缩算法与上述S104中执行压缩所采用的压缩算法相对应。例如,若S104中执行压缩所采用的是字典型压缩算法,则S303中执行解压缩所采用的是字典型解压缩算法。又如,若S104中执行压缩所采用的是重删算法,则S303中执行解压缩所采用的是重删算法。
S304:存储设备使用历史数据对当前数据进行预测,得到当前数据的预测数据。
其中,历史数据是存储设备已获取的一个或多个数据。历史数据具体是已获取的一个还是多个数据,以及具体是哪一个或多个数据与预测算法相关。其具体实现方式可以参考图5所示的实施例,此处不再赘述。
如图7A所示,为本申请实施例提供的一种待获取数据与实际存储的信息(即用于恢复待获取数据的信息)的示意图。图7A中的实际存储的信息与图5A中所示的实际存储的信息相同,因此相关图形或箭头等的解释可以图5A。
本申请实施例对S303和S304的执行顺序不进行限定。例如,可以先执行S303再执行S304,或者先执行S304再执行S303,或者同时执行S303和S304。
S305:存储设备根据差量和当前数据的预测数据,确定当前数据。
例如,若差量是当前数据减去当前数据的预测数据得到的差值,则在S305中,将差量与当前数据的预测数据之和作为当前数据。例如,若差量是当前数据除以当前数据的预测数据得到的比值,则在S305中,将差量与当前数据的预测数据的乘积作为当前数据。其他示例不再一一列举。
执行S305之后,针对当前数据的获取过程结束。
S306:存储设备对当前数据经压缩得到的值进行解压缩,得到当前数据。
执行S306之后,针对当前数据的获取过程结束。
本实施例提供的数据获取方法与图5所示的数据存储方法相对应,因此,本实施例中的有益效果可以参考图5所示的实施例中所描述的有益效果,此处不再赘述。
结合图2所示的存储设备,图7所示的数据存储方法的一个示例可以如图8所示。图8所示的方法可以包括如下步骤:
S401:存储设备通过接口卡接收客户端发送的读请求,该读请求中包括一个或多个待读数据的地址信息。
S402:接口卡对该一个或多个待读数据的地址信息进行传输协议转换,例如将采用以太网通信协议的该一个或多个待读数据的地址信息转换为采用PCIE协议的信息。
S403:接口卡将经传输协议转换的一个或多个待读数据的地址信息发送给处理器。
S404:处理器将接收到的一个或多个待读数据的地址信息中的每个待读数据的地址信息作为一个待获取数据的地址信息。
S405:处理器将每个待获取数据的地址信息存储到内存中。
后续,处理器可以依次将部分或全部待获取数据中的每个待获取数据作为当前数据,执行S406~S415。并且,处理器在获取到每个当前数据时,可以将该当前数据存储在内存中,以便于后续将该当前数据作为其他当前数据的历史数据。
S406:处理器从硬盘的当前数据的地址信息所指示的存储空间中读取用于恢复当前数据的信息,并将所读取到的用于恢复当前数据的信息发送给硬盘协议转换模块进行传输协议转换,如将采用SAS协议的用于恢复当前数据的信息转换为采用PCIE协议的信息。
S407:处理器判断用于恢复当前数据的信息是否携带第一标识信息。
若否,说明用于恢复当前数据的信息包括差量或差量经压缩得到的值,则基于此,当用于恢复当前数据的信息是差量经压缩得到的值时,则执行S408;当用于恢复当前数据的信息是差量时,执行S409。
若是,说明用于恢复当前数据的信息包括当前数据或当前数据经压缩得到的值,则基于此,当用于恢复当前数据的信息是当前数据经压缩得到的值时,执行S412;当用于恢复当前数据的信息是当前数据时,执行S413。
S408:处理器对差量经压缩得到的值进行解压缩,得到差量。
S409:处理器从内存中获取历史数据。
S410:处理器使用历史数据对当前数据进行预测,得到当前数据的预测数据。
S411:处理器根据差量和当前数据的预测数据,确定当前数据。
执行S411之后,执行S413。
S412:处理器对当前数据经压缩得到的值进行解压缩,得到当前数据。
S413:处理器将当前数据发送给接口卡。
可选的,处理器还可以将当前数据存储到内存中,以作为其他待获取数据的历史数据。进一步可选的,当已获取数据不再作为待获取数据的历史数据时,处理器可以从内存中删除该已获的取数据,以节省内存的存储开销。例如,假设当前数据是X(n),历史数据是从X(n-1)开始的且在X(n-1)之前的连续的10个数据(即X(n-10)~X(n-1)),那么,X(n-11)及之前的数据均不再作为待获取数据的历史数据,因此,处理器可以从内存中删除该已获的取数据。
S414:接口卡对当前数据进行传输协议转换,例如将PCIE协议转换为以太网通信协议。
S415:接口卡将采用以太网通信协议的当前数据反馈给客户端。
至此,针对当前数据的获取过程结束。
结合图3所示的存储设备,图7所示的数据存储方法的一个示例可以是是对上述图8所示的实施例进行如下几点修改得到的实施例:第一,上述S410~S411是由AI计算卡执行的。第二,在执行S409之后且执行S410之前,上述方法还包括:处理器将从内存中获取历史数据发送给AI计算卡。第三,在执行S411之后且执行S413之前,上述方法还包括:AI计算卡将当前数据发送给处理器。
目前,字典型压缩(或解压缩)算法的字典中的各映射关系是按照命中率由高到低进行排列的。通常,当需要对待压缩数据进行压缩时,按照映射关系的命中率由高到低的顺序在字典的第一数据中查找待压缩数据,并将待压缩数据对应的第二数据作为待压缩数据压缩后得到的值。当需要对待解压缩数据进行解压时,按照映射关系的命中率由高到低的顺序在字典的第二数据中查找待解压缩数据,并将待解压缩数据对应的第一数据作为待解压缩数据解压缩后得到的值。这样,当待压缩/待解压缩数据所在的映射关系的命中率较低时,执行压缩/解压缩的时间较长。
为此,本申请实施例提供了设计方案一:存储设备中存储有至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,每个映射关系的第一数据所占的存储空间大于该映射关系的第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同,每个集合中的映射关系的命中率属于该集合对应的命中率范围。
其中,存储设备包括的集合的个数,以及每个集合对应的命中率范围可以是预定义的,也可以根据被存储数据更新。另外,映射关系也可以更新。
示例的,每个映射关系可以是字典型压缩算法的字典中的一个映射关系。该至少两个集合所包含的映射关系可以是字典中的部分或全部映射关系。例如,该至少两个集合所包含的映射关系可以是存储设备中任意一个存储介质(如缓存、内存或硬盘)所存储的映射关系。如果该存储介质是缓存或内存,则该至少两个集合所包含的映射关系可以是字典中的部分映射关系;如果该存储介质是硬盘,则该至少两个集合所包含的映射关系可以是字典中的全部映射关系。
例如,字典中存储的各集合及其对应的命中率范围可以如表2所示:
表2
集合 | 命中率范围 |
集合1 | (80%,100%] |
集合2 | (50%,80%] |
集合3 | (20%,50%] |
集合4 | [0%,20%] |
在一些实施例中,对于数据压缩来说,每个映射关系的命中率可以是该映射关系的第一数据的命中率,例如第一数据的命中率可以是根据预设时间段内该第一数据的被压缩次数除以执行被压缩总次数得到的值。对于数据解压缩来说,每个映射关系的命中率可以是该映射关系的第二数据的命中率,例如第二数据的命中率可以是根据预设时间段内该第二数据的被解压缩次数除以执行被解压缩总次数得到的值。
该实施例中,应用于数据压缩场景和解压缩场景时,同一个映射关系的命中率的获取机制不同。因此,设计方案一应用于数据压缩场景和解压缩场景中时,存储设备包括的集合可以相同,也可以不同;且同一集合对应的命中率范围可以相同,也可以不同。例如,假设存储设备包括100个映射关系,应用于数据压缩场景中,这100个映射关系中的每个映射关系可以归属于集合A1和集合A2的其中之一;应用于数据解压缩场景时,这100个映射关系中的每个映射关系可以归属于集合B1、集合B2和集合B3的其中之一。
在另一些实施例中,对于数据压缩和解压缩来说,每个映射关系的命中率可以是根据该映射关系的第一数据的命中率和该映射关系的第二数据的命中率得到。例如,假设存储设备写数据和读数据的比例是3:7,且对于某一映射关系来说,在写数据的过程中,该映射关系的第一数据的命中率是10%,在读数据的过程中,该映射关系的第二数据的命中率是50%,则该映射关系的命中率可以根据0.3*10%+0.7*50%得到。当然本申请实施例不限于此。
该实施例中,应用于数据压缩场景和解压缩场景时,同一个映射关系的命中率的获取机制不同。因此,设计方案一应用于数据压缩和解压缩场景中时,存储设备包括的集合相同,且同一集合对应的命中率解压缩场景范围相同。例如,假设存储设备包括100个映射关系,应用于数据压缩场景和解压缩场景中时,这100个映射关系中的每个映射关系可以归属于集合A1和集合A2的其中之一。
基于上述设计方案一,如图9所示,为本申请实施例提供的一种数据压缩方法的示意图。图9所示的方法可以包括如下步骤:
S501:存储设备获取待压缩数据的命中率。待压缩数据的命中率的获取方式可以参考上文中的第一数据的命中率的获取方式,当然本申请实施例不限于此。
例如,待压缩数据可以是上文中的差量或当前数据,当然本申请实施例不限于此。
S502:存储设备根据待压缩数据的命中率,在至少两个集合中确定目标集合。待压缩数据的命中率用于确定待压缩数据所在的映射关系(下文中称为目标映射关系)的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围。
根据上文中的描述可知,应用于数据压缩场景中时,映射关系的命中率可以是该映射关系的第一数据的命中率,或者是根据该映射关系的第一数据的命中率和第二数据的命中率得到的等。为了方便描述,下文中数据压缩方法的实施例中均是以映射关系的命中率可以是该映射关系的第一数据的命中率为例进行说明的。
例如,若待压缩数据的命中率是75%,则待压缩数据所在的目标映射关系的命中率可以是75%,该情况下,参见表2可以得出目标集合是集合2。
S503:存储设备在目标集合的第一数据中查找待压缩数据,从而查找待压缩数据所在的映射关系,以根据该映射关系确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。
例如,基于S502中的示例,存储设备可以直接从集合2的第一数据中查找待压缩数据,从而实现对待压缩数据的压缩。而不用如现有技术中一样按照映射关系的命中率由高到低顺序依次从第一数据中查找差量,这样可以节省执行压缩的时间。
例如,如果待压缩数据是上文中的差量,则待压缩数据对应的第二数据可以是上文中描述的差量经压缩得到的值。如果待压缩数据是上文中的当前数据,则待压缩数据对应的第二数据可以是上文中描述的当前数据经压缩得到的值。
本实施例提供的数据压缩方法中,将存储设备包括的映射关系归为不同的集合,这样,根据待压缩数据的命中率可以直接锁定待压缩数据所在的集合,与现有技术相比,缩小了查找待压缩数据的范围,因此,可以节省执行压缩的时间。
基于上述设计方案一,如图10所示,为本申请实施例提供的一种数据解压缩方法的示意图。图10所示的方法可以包括如下步骤:
S601:存储设备获取待解压缩数据的命中率。待解压缩数据的命中率的获取方式可以参考上文中的第二数据的命中率的获取方式,当然本申请实施例不限于此。
例如,待解压缩数据可以是上文中描述的差量经压缩得到的值,或当前数据经压缩得到的值,当然本申请实施例不限于此。
S602:存储设备根据待解压缩数据的命中率,在至少两个集合中确定目标集合;待解压缩数据的命中率用于确定差量经压缩得到的值所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围。
根据上文中的描述可知,应用于数据解压缩场景中时,映射关系的命中率可以是该映射关系的第二数据的命中率,或者是根据该映射关系的第一数据的命中率和第二数据的命中率得到的等。为了方便描述,下文中解数据压缩方法的实施例中均是以映射关系的命中率可以是该映射关系的第二数据的命中率为例进行说明的。
例如,若待解压缩数据的命中率是75%,则待解压缩数据所在的目标映射关系的命中率可以是75%,该情况下,参见表2可以得出目标集合是集合2。
S603:存储设备在目标集合的第二数据中查找待解压缩数据,从而查找待解压缩数据所在的映射关系,以根据该映射关系确定待解压缩数据对应的第一数据,并将待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。
例如,如果待解压缩数据是上文中的差量经压缩得到的值,则待解压缩数据对应的第一数据可以是上文中描述的差量。如果待解压缩数据是上文中的当前数据经压缩得到的值,则待解压缩数据对应的第一数据可以是上文中描述的当前数据。
本实施例提供的数据解压缩方法中,将存储设备中包括的映射关系归为不同的集合,这样,根据待解压缩数据的命中率可以直接锁定待解压缩数据所在的集合,与现有技术相比,缩小了查找待解压缩数据的范围,因此,可以节省数据解压缩时间。
参见图2可知,存储设备的存储介质可以包括缓存、内存和硬盘。其中,缓存中存储的数据是内存中存储的一部分数据,内存中存储的数据是硬盘中存储的数据的一部分。目前,CPU读取数据的过程具体为:CPU先从缓存中查找待访问数据,查找到则直接读取;若没有查找到,则从内存中查找该待访问数据。进一步的,若查找到则直接读取,若没有查找到,则从硬盘中查找该待访问数据。其中,以存储技术是字典型压缩技术为例,缓存、内存和硬盘中存储的数据可以是字典中的映射关系。这样,当某一存储介质(如缓存或内存)中包含的映射关系的数量较多,而待压缩/待解压缩数据所在的映射关系不在该存储介质中时,执行压缩/解压缩的时间较长。
为此,本申请实施例提供了设计方案二:存储设备的存储介质包括缓存、内存和硬盘;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间。其中,每种存储介质中的映射关系的命中率所在的范围可以是预设的,也可以根据被存储数据更新。
示例的,每个映射关系可以是字典型压缩算法的字典中的一个映射关系。例如,存储设备的各存储介质及其对应的命中率范围可以如表3所示。
表3
存储介质 | 命中率范围 |
缓存 | (80%,100%] |
内存 | (50%,100%] |
硬盘 | [0%,100%] |
基于上述设计方案二,如图11所示,为本申请实施例提供的一种数据压缩方法的示意图。图11所示的方法可以包括如下步骤:
S701:存储设备获取待压缩数据的命中率。
S702:存储设备根据待压缩数据的命中率,确定目标存储介质。其中,待压缩数据的命中率用于确定待压缩数据所在的目标映射关系的命中率。当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘。
例如,若待压缩数据的命中率是90%,则待压缩数据所在的目标映射关系的命中率可以是90%,该情况下,参见表3可以得出,目标存储介质是缓存。类似的,若待压缩数据的命中率是60%,则目标存储介质可以是内存;若待压缩数据的命中率是30%,则目标存储介质可以是硬盘。
S703:存储设备在目标存储介质的第一数据中查找待压缩数据,从而查找待压缩数据所在的映射关系,以根据该映射关系确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。
例如,如果目标存储介质中包括的映射关系如上述设计方案一所示,则S703的具体实现过程可以参考上述S501~S503。当然,S703也可以根据现有技术中的方法实现。
本实施例中的待压缩数据以及对待压缩数据进行压缩得到的值的示例可以参考上述图9所示的实施例。
如果存储设备在目标存储介质的第一数据中没有查找到待压缩数据,那么:当存储设备中不存在目标存储介质的下一级存储介质时,将该待压缩数据本身作为待压缩数据经压缩得到的值;当存储设备中存在目标存储介质的下一级存储介质时,可以在目标存储介质的下一级存储介质中查找待压缩数据,依次类推,直至查找到待压缩数据,或者在存储介质的最后一级存储介质的第一数据中没有查找到待压缩数据为止。其中,缓存的下一级存储介质是内存,内存的下一级存储介质是硬盘。
本实施例提供的数据压缩方法中,根据待压缩数据的命中率和不同存储介质中存储的映射关系的命中率,可以直接锁定待压缩数据所在的读写性能最高的存储介质,缓存的读写性能高于内存的读写性能,内存的读写性能高于硬盘的读写性能。与现有技术相比,缩小了查找待压缩数据的范围,因此,可以节省数据压缩时间。
基于上述设计方案二,如图12所示,为本申请实施例提供的一种数据解压缩方法的示意图。图12所示的方法可以包括如下步骤:
S801:存储设备获取待解压缩数据的命中率。
S802:存储设备根据待解压缩数据的命中率,确定目标存储介质。其中,待解压缩数据的命中率用于确定待解压缩数据所在的目标映射关系的命中率。当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘。
例如,若待解压缩数据的命中率是90%,则待解压缩数据所在的目标映射关系的命中率可以是90%,该情况下,参见表3可以得出,目标存储介质是缓存。类似的,若待解压缩数据的命中率是60%,则目标存储介质可以是内存;若待解压缩数据的命中率是30%,则目标存储介质可以是硬盘。
S803:存储设备在目标存储介质的第二数据中查找待解压缩数据,从而查找待解压缩数据所在的映射关系,以根据该映射关系确定待解压缩数据对应的第一数据,将待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。
例如,如果目标存储介质中包括的映射关系如上述设计方案一所示,则S803的具体实现过程可以参考上述S601~S603。当然,S803也可以根据现有技术中的方法实现。
本实施例中的待解压缩数据以及对待解压缩数据进行解压缩得到的值的示例可以参考上述图10所示的实施例。
本实施例提供的数据解压缩方法中,根据待解压缩数据的命中率和不同存储介质中存储的映射关系的命中率,可以直接锁定待解压缩数据所在的读写性能最高的存储介质,缓存的读写性能高于内存的读写性能,内存的读写性能高于硬盘的读写性能。与现有技术相比,缩小了查找待解压缩数据的范围,因此,可以节省数据解压缩时间。
如图13所示,为本申请实施例提供的一种数据存储方法的示意图。图13所示的方法可以包括如下步骤:
S900:存储设备获取至少两个待存储数据中的当前数据(即当前待存储数据)和当前数据的历史数据(即历史待存储数据);历史数据是至少两个待存储数据构成的序列中的在当前数据之前的一个或多个数据。
S901:存储设备使用历史数据对当前数据进行预测,得到当前数据的预测数据。当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据。
S902:存储设备获取当前数据与当前数据的预测数据的差量。
关于S900~S902的实现方式可以参考上文对S100~S102实现方式的描述。
S903:存储设备判断该差量的绝对值是否小于或等于预设阈值。例如,假设差量是a,则差量的绝对值可以表示为|a|。
若是,则执行S904;若否,则执行S905。
S904:存储设备存储预设数据。示例的,预设数据所占的存储空间小于当前数据所占的存储空间。
可选的,预设数据是存储设备预先定义的。可选的,预设数据可以是一个标识符,该标识符用于指示当前数据的预测数据可以作为(或近似作为)当前数据。例如,预设数据是二进制数“0”或“1”等。
可选的,预设数据所占的存储空间小于大部分或全部待存储数据所占的存储空间。
需要说明的是,执行数据存储流程时,存储设备可以不需要判断预设数据所占的存储空间与当前数据所占的存储空间之间的大小关系。而是存储设备可以在预先定义预设数据时,基于“预设数据所占的存储空间小于大部分或全部待存储数据所占的存储空间”这一原则,将预设数据设置成所占存储空间较小的标识符。这样,即使对于某个当前数据来说,不满足“预设数据所占的存储空间小于当前数据所占的存储空间”,但是,从对多个待存储数据执行数据存储流程这一整体上来看,仍然可能满足“预设数据所占的存储空间小于大部分或全部待存储数据所占的存储空间”,因此,与现有技术相比,有助于节省存储空间。
可选的,存储设备可以基于存储开销等因素预先定义预设数据。
以差量是差值为例,当该差量的绝对值为0时,本技术方案中的压缩过程具体是无损压缩过程。当该差量的绝对值不为0时,本技术方案中的压缩过程具体是有损压缩过程。通过合理设置预设阈值,有助于实现将数据的损失率限制在一定范围内;换句话说,可以基于实际需求(例如可接受的有损压缩率需求)设置预设阈值。
执行S904之后,针对当前数据的存储过程结束。
S905:存储设备存储当前数据或者存储当前数据经压缩得到的值。
关于S905的实现方式,可以参考上文对S105实现方式的描述。
执行S905之后,针对当前数据的存储过程结束。
为了便于存储设备区分所存储的用于恢复当前数据的信息是“预设数据”还是“经压缩得到的值或者存储当前数据”,从而在读数据流程中,确定待读数据,可选的,若执行S905,则该方法还可以包括以下S905A:
S905A:当差量的绝对值大于预设阈值时,存储标识信息,该标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值。当差量的绝对值大于预设阈值时,存储标识信息,该标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值;当存储当前数据时,标识信息用于指示所存储的用于恢复当前数据的信息是当前数据。其中,可以将该标识信息,作为用于恢复当前数据的信息的标识信息,或者是用于恢复当前数据的信息所携带的信息。
关于S905A的可替换方式以及有益效果的描述均可以参考上述对S105A的可替换方式以及有益效果得到,此处不再赘述。
本申请实施例提供了的数据存储方法中,使用历史数据对当前数据进行预测,并且在当前数据与当前数据的预测数据的差量的绝对值小于或等于预设阈值时,存储预设数据。由于预设数据所占的存储空间小于当前数据所占的存储空间,因此,相比现有技术中直接存储当前数据的技术方案,可以节省存储开销。本技术方案可以应用于允许一定数据损失的场景中,例如播放视频等场景中。
例如,对于待存储数据构成的序列Xn={2,5,10,17,26,37,50,65,82,101,122,145,171}来说,假设差量具体是待存储数据与待存储数据的预测数据之差,且预设阈值为2,那么,存储设备根据预测算法x2+1以及图13所示的实施例,实际存储的数据构成的序列可以为{10,101,1010,α,α,α,α,α,α,α,α,α,α}。其中,α为预设数据。对于Xn'中的前3个数据来说,预测步骤是缺省的。结合S905A可知,对于这3个数据来说,存储设备还可以分别存储第一标识信息。由此可见,需要压缩存储的数据规模显著降低,其数据的重复概率明显增加。因此可以显著提升数据压缩比及压缩效率。
如图14所示,为本申请实施例提供的一种数据获取方法的示意图。图14所示的方法可以包括如下步骤:
S1001:存储设备读取用于恢复当前数据的信息。用于恢复当前数据的信息包括“预设数据”或者“当前数据或当前数据经压缩得到的值”。
其中,当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据;历史数据是已获取的一个或多个数据。
S1002:存储设备判断用于恢复当前数据的信息是否携带标识信息。
根据上述图13所示的实施例中的描述可知:若S1002的判断结果为否,说明用于恢复当前数据的信息包括预设数据,则执行S1003。若S1002的判断结果为是,说明用于恢复当前数据的信息包括当前数据或当前数据经压缩得到的值;当用于恢复当前数据的信息是当前数据经压缩得到的值时,执行S1004;当用于恢复当前数据的信息是当前数据时,针对当前数据的获取过程结束。
S1003:存储设备使用历史数据对当前数据进行预测,得到当前数据的预测数据,并将当前数据的预测数据作为当前数据;历史数据是已获取的一个或多个数据。
执行S1003之后,针对当前数据的获取过程结束。
S1004:存储设备对当前数据经压缩得到的值进行解压缩,得到当前数据。
执行S1004之后,针对当前数据的获取过程结束。
本实施例提供的数据获取方法与图13所示的数据存储方法相对应,因此,本实施例中的有益效果可以参考图13所示的实施例中所描述的有益效果,此处不再赘述。
需要说明的是,对于同一个数据来说,执行数据存储流程和数据获取流程的过程中,如果需要执行预测,则预测时采用同一个预测算法(即预测算法的参数的取值相同)。当预测算法是AI神经算法时,由于AI神经算法的参数的取值可以进行更新,因此,为了在数据获取流程中成功获取该数据,在数据存储流程中,本申请实施例提供了以下可选的实现方式:
可选的实现方式1:存储设备还可以存储AI神经算法的参数的取值与用于恢复数据的信息之间的对应关系。示例的,存储设备可以在AI神经算法的参数每次更新之后,执行一次快照操作,以记录用于恢复当前数据的信息和执行预测所采用的AI神经算法的参数之间的对应关系。当然本申请实施例不限于此。
例如,假设初始时刻是t1时刻,t1时刻AI神经算法的参数是第一参数,t2时刻AI神经算法的参数由第一参数更新为第二参数;并且,从t1时刻到t2时刻这一时间段、以及t2时刻之后的时间段所存储的用于恢复当前数据的信息是信息分别是:信息1~100、信息101~500;那么,存储设备可以存储信息1~100与第一参数之间的对应关系,以及存储信息101~500与第二参数之间的对应关系。
可选的实现方式2:在存储用于恢复当前数据的信息之后,通过自适应学习更新AI神经算法的参数;根据更新后的AI神经算法的参数更新用于恢复当前数据的信息。
例如,假设将上文中执行预测(例如S101或S901中的预测等)所采用的AI神经算法的参数标记为AI神经算法的第一参数,将AI神经算法的第一参数更新后得到的参数标记为AI神经算法的第二参数;那么:根据更新后的AI神经算法的参数,更新用于恢复当前数据的信息包括:读取用于恢复当前数据的信息;根据AI神经算法的第一参数(即更新前的AI神经算法的参数)、所读取的用于恢复当前数据的信息和当前数据的历史数据,恢复当前数据;根据AI神经算法的第二参数(即更新后的AI神经算法的参数)和当前数据的历史数据,对当前数据进行预测,得到第二预测数据;第二预测数据是基于历史数据的变化规律和AI神经算法的第二参数对当前数据进行预测后的数据;获取当前数据与第二预测数据的第二差量;当第二差量所占的存储空间小于当前数据所占的存储空间时,将所存储的用于恢复当前数据的信息更新为第二差量或者第二差量经压缩得到的值(或者当前数据或者当前数据经压缩得到的值或者预设数据等,具体存储何种信息可以参考上文如图5或图13所示的方法)。也就是说,利用更新前的AI神经算法的参数执行一次数据获取流程,获取到当前数据之后,再利用更新后的AI神经算法的参数执行一次数据存储流程,这样有助于实现针对当前数据执行数据存储流程时所使用的AI神经算法的参数是最新的参数。
基于该可选的实现方式2,存储设备还可以存储AI神经算法的第二参数。或者,将所存储的AI神经算法的第一参数更新为第二参数,也就是说,存储设备中存储的是AI神经算法的最新的参数。
这两种可选的实现方式可以应用于上文如图5或图13所示的数据存储流程。对比这两种可选的实现方式,可选的实现方式1可以应用于存储设备中已存储的数据较多的场景中;可选的实现方式2可以应用于存储设备中已存储的数据较少的场景中,并且,随着AI神经算法的参数的更新,有助于使得当前数据的预测数据更接近于当前数据,因此,使用该可选的实现方式2可以进一步提高数据的压缩效率。具体实现的过程中,上述可选的实现方式1、2可以结合使用,从而构成新的技术方案。例如,针对已存储的部分数据,存储设备可以执行上述可选的实现方式1;针对已存储的另一部分数据,存储设备可以执行上述实现方式2。
基于上述可选的实现方式1,在数据获取流程中,存储设备可以根据该用于恢复当前数据的信息与AI神经算法的参数之间的对应关系,获取对当前数据进行预测所采用的AI神经算法的参数。该情况下,使用历史数据对当前数据进行预测,得到当前数据的预测数据,可以包括:根据所获取的AI神经算法的参数,使用历史数据对当前数据进行预测,得到当前数据的预测数据。
其中,根据上述可选的实现方式1中的描述可知,该对应关系中的“AI神经算法的参数”,是指存储该对应关系中的“用于恢复当前数据的信息”的过程中所采用的AI神经算法的参数。所获取的“对当前数据进行预测所采用的AI神经算法的参数”是该映射关系中的“AI神经算法的参数”。例如基于上述可选的实现方式1中的示例,若用于恢复当前数据的信息是信息99,则该对应关系中的“AI神经算法的参数”是第一参数;假设若用于恢复当前数据的信息是信息200,则该对应关系中的“AI神经算法的参数”是第二参数。
另外,如果上述可选的实现方式1应用于图5所示的数据存储流程,则在数据获取流程中,存储设备可以按照上文图7所示的实施例获取当前数据。如果上述可选的实现方式1应用于图13所示的数据存储流程,则在数据获取流程中,存储设备可以按照上文提供的图14所示的实施例获取当前数据。
基于上述可选的实现方式2,在数据获取流程中,存储设备可以根据所存储的AI神经算法的最新的参数,执行上述图7或图14所示的实施例。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对存储设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图15所示,为本申请实施例提供的存储设备的结构示意图。图15所示的存储设备150可以用于执行图5或图6所示的数据存储方法。存储设备150可以包括:第一获取单元1500、预测单元1501、第二获取单元1502和存储单元1503。其中,第一获取单元1500、用于获取当前数据和当前数据的历史数据。预测单元1501,用于使用该历史数据对当前数据进行预测,得到当前数据的第一预测数据。第二获取单元1502,用于获取当前数据与第一预测数据的差量第一差量。存储单元1503,用于当差量第一差量所占的存储空间小于当前数据所占的存储空间时,存储差量第一差量或者存储差量第一差量经压缩得到的值。例如,结合图5,第一获取单元1500可以用于执行S100,预测单元1501可以用于执行S101。第二获取单元1502可以用于执行S102。存储单元1503可以用于执行S104。
可选的,第一获取单元1500具体用于从存储设备150的内存中获取当前数据和该历史数据。
可选的,存储单元1503还用于,存储所述用于恢复当前数据的信息和执行预测所采用的AI神经算法的参数之间的对应关系。
可选的,存储设备150还包括更新单元1504,用于通过自适应学习更新AI神经算法的参数;根据更新后的AI神经算法的参数,更新用于恢复当前数据的信息。
可选的,更新单元1504具体用于:读取用于恢复当前数据的信息;根据执行预测所采用的AI神经算法的参数、用于恢复当前数据的信息和当前数据的该历史数据,恢复当前数据;根据更新后的AI神经算法的参数和当前数据的该历史数据,对当前数据进行预测,得到第二预测数据;第二预测数据是基于该历史数据的变化规律和更新后的AI神经算法的参数对当前数据进行预测后的数据;获取当前数据与第二预测数据的第二差量;当第二差量所占的存储空间小于当前数据所占的存储空间时,将所存储的用于恢复当前数据的信息更新为第二差量或者第二差量经压缩得到的值。
可选的,存储设备150包括AI计算卡,预测单元1501具体用于:通过AI计算卡使用该历史数据对当前数据进行预测,得到第一预测数据。
可选的,执行压缩所采用的算法包括字典型压缩算法,字典型压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;每个集合对应一个命中率范围,不同集合对应的命中率范围不同;存储设备150还包括:第三获取单元1505,用于获取差量第一差量的命中率;确定单元1506,用于根据差量第一差量的命中率,在至少两个集合中确定目标集合;其中,差量第一差量的命中率用于确定差量第一差量所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;压缩单元1507,用于在目标集合的第一数据中查找差量第一差量,以确定与差量第一差量对应的第二数据;与差量第一差量对应的第二数据为差量第一差量经压缩得到的值。
可选的,存储设备150的存储介质包括缓存、内存和硬盘;执行压缩所采用的算法包括字典型压缩算法,字典型压缩算法的字典包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;存储设备150还包括:第三获取单元1505,用于获取差量第一差量的命中率;确定单元1506,用于根据差量第一差量的命中率,确定目标存储介质;差量第一差量的命中率用于确定差量第一差量所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;压缩单元1507,用于在目标存储介质的第一数据中查找差量第一差量,以确定差量第一差量对应的第二数据;与差量第一差量对应的第二数据为差量第一差量经压缩得到的值。
可选的,存储单元1503还用于,当第一差量所占的存储空间大于或等于当前数据所占的存储空间时,存储当前数据或者存储当前数据经压缩得到的值。例如,结合图5,存储单元1503可以用于执行S105。
可选的,存储单元1503还用于,当第一差量所占的存储空间大于或等于当前数据所占的存储空间时,存储标识信息;其中,当存储当前数据经压缩得到的值时,标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值;当存储当前数据时,标识信息用于指示所存储的用于恢复当前数据的信息是当前数据。例如结合图5,存储单元1503可以用于执行S105A。
例如,结合图2,第一获取单元1500、预测单元1501、第二获取单元1502、更新单元1504、第三获取单元1505、确定单元1506和压缩单元1507均可以通过处理器202实现。存储单元1503可以通过硬盘204实现。又如,结合图3,预测单元1501可以通过AI计算卡207实现。第一获取单元1500、第二获取单元1502、更新单元1504、第三获取单元1505、确定单元1506和压缩单元1507均可以通过处理器202实现。存储单元1503可以通过硬盘204实现。
如图16所示,为本申请实施例提供的存储设备160的结构示意图。图16所示的存储设备160可以用于执行图7或图8所示的数据获取方法。存储设备160可以包括读取单元1601、预测单元1602和确定单元1603。读取单元1601,用于读取用于恢复当前数据的信息;用于恢复当前数据的信息包括差量或差量经压缩得到的值;差量是当前数据与当前数据的预测数据的差量;当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据。预测单元1602,用于使用历史数据对当前数据进行预测,得到当前数据的预测数据。确定单元1603,用于根据用于恢复当前数据的信息和当前数据的预测数据确定当前数据。例如,结合图7,读取单元1601可以用于执行S301。预测单元1602可以用于执行S304。确定单元1603可以用于执行S305。
可选的,存储设备160还包括获取单元1604,用于从存储设备150的内存中获取历史数据。
可选的,存储设备160还包括获取单元1604,用于根据用于恢复当前数据的信息与AI神经算法的参数之间的对应关系,获取对当前数据进行预测所采用的AI神经算法的参数。预测单元1602具体用于:根据获取的AI神经算法的参数,使用该历史数据对当前数据进行预测,得到当前数据的预测数据。
可选的,存储设备160包括AI计算卡,预测单元1602具体用于:通过AI计算卡使用该历史数据对当前数据进行预测,得到当前数据的预测数据。
可选的,用于恢复当前数据的信息包括差量经压缩得到的值。该情况下,确定单元1603包括:解压缩模块1603-1,用于对差量经压缩得到的值进行解压缩,得到差量;确定模块1603-2,用于根据差量和当前数据的预测数据,确定当前数据。例如,结合图7,解压缩模块1603-1可以用于执行S303。确定模块1603-2可以用于执行S304。
可选的,执行解压缩所采用的算法包括字典型解压缩算法,字典型解压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。该情况下,解压缩模块1603-1具体用于:获取差量经压缩得到的值的命中率;根据差量经压缩得到的值的命中率,在至少两个集合中确定目标集合;差量经压缩得到的值的命中率用于确定差量经压缩得到的值所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围;在目标集合的第二数据中查找差量经压缩得到的值,以确定与差量经压缩得到的值对应的第一数据;与差量经压缩得到的值对应的第一数据为差量。
可选的,存储设备160的存储介质包括缓存、内存和硬盘;执行解压缩所采用的算法包括字典型解压缩算法,字典型解压缩算法的字典包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率。该情况下,解压缩模块1603-1具体用于:获取差量经压缩得到的值的命中率;根据差量经压缩得到的值的命中率,确定目标存储介质;其中,差量经压缩得到的值的命中率用于确定差量经压缩得到的值所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘;在目标存储介质第二数据中查找差量经压缩得到的值,以确定与差量经压缩得到的值对应的第一数据;与差量经压缩得到的值对应的第一数据为差量。
例如,结合图2,读取单元1601、预测单元1602和确定单元1603均可以通过处理器202实现。又如,结合图3,预测单元1501可以通过AI计算卡207实现。读取单元1601和确定单元1603均可以通过处理器202实现。
如图17所示,为本申请实施例提供的存储设备170的结构示意图。图17所示的存储设备170可以用于执行图9或图11所示的数据压缩方法。存储设备170可以包括获取单元1701、确定单元1702和压缩单元1703。
在一种可能的设计中,存储设备170中存储有至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。获取单元1701用于获取待压缩数据的命中率。确定单元1702用于根据待压缩数据的命中率,在至少两个集合中确定目标集合;待压缩数据的命中率用于确定待压缩数据所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围。压缩单元1703用于在目标集合的第一数据中查找待压缩数据,以确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。例如,结合图9,获取单元1701可以用于执行S501,和/或本申请实施例提供的其他步骤。确定单元1702可以用于执行S502,和/或本申请实施例提供的其他步骤。压缩单元1703可以用于执行S503,和/或本申请实施例提供的其他步骤。
在另一种可能的设计中,存储设备170的存储介质包括缓存、内存和硬盘;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间。获取单元1701用于获取待压缩数据的命中率。确定单元1702,用于根据待压缩数据的命中率,确定目标存储介质;待压缩数据的命中率用于确定待压缩数据所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘。压缩单元1703,用于在目标存储介质的第一数据中查找待压缩数据,以确定待压缩数据对应的第二数据,并将待压缩数据对应的第二数据作为待压缩数据经压缩得到的值。例如,结合图11,获取单元1701可以用于执行S701和/或本申请实施例提供的其他步骤。确定单元1702可以用于执行S702和/或本申请实施例提供的其他步骤。压缩单元1703可以用于执行S703和/或本申请实施例提供的其他步骤。
例如,结合图2或图3,获取单元1701、确定单元1702和压缩单元1703均可以通过处理器202实现。
如图18所示,为本申请实施例提供的存储设备180的结构示意图。图18所示的存储设备180可以用于执行图10或图12所示的数据解压缩方法。存储设备180可以包括获取单元1801、确定单元1802和解压缩单元1803。
在一种可能的设计中,存储设备180中存储有至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同。获取单元1801用于获取待解压缩数据的命中率。确定单元1802用于根据待解压缩数据的命中率,在至少两个集合中确定目标集合;待解压缩数据的命中率用于确定待解压缩数据所在的目标映射关系的命中率,所确定的目标映射关系的命中率属于目标集合对应的命中率范围。解压缩单元1803用于在目标集合的第二数据中查找与待解压缩数据,以确定与待解压缩数据对应的第一数据,并将与待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。例如,结合图10,获取单元1801可以用于执行S601,和/或本申请实施例提供的其他步骤。确定单元1802可以用于执行S602,和/或本申请实施例提供的其他步骤。解压缩单元1803可以用于执行S603,和/或本申请实施例提供的其他步骤。
在一种可能的设计中,存储设备180的存储介质包括缓存、内存和硬盘;缓存中的映射关系的命中率大于或等于内存中的映射关系的命中率,内存中的映射关系的命中率大于或等于硬盘中的映射关系的命中率;每个映射关系是指一个第一数据与一个第二数据之间的映射关系,第一数据所占的存储空间大于第二数据所占的存储空间。获取单元1801用于获取待解压缩数据的命中率。确定单元1802用于根据待解压缩数据的命中率,确定目标存储介质;待解压缩数据的命中率用于确定待解压缩数据所在的目标映射关系的命中率,当所确定的目标映射关系的命中率属于缓存中的映射关系的命中率范围时,目标存储介质是缓存;当所确定的目标映射关系的命中率不属于缓存中的映射关系的命中率范围,但属于内存中的映射关系的命中率范围时,目标存储介质是内存;当所确定的目标映射关系的命中率不属于内存中的映射关系的命中率范围时,目标存储介质是硬盘。解压缩单元1803用于在目标存储介质的第二数据中查找与待解压缩数据对应的第一数据,将与待解压缩数据对应的第一数据作为待解压缩数据经解压缩得到的值。例如,结合图12,获取单元1801可以用于执行S801和/或本申请实施例提供的其他步骤。确定单元1802可以用于执行S802和/或本申请实施例提供的其他步骤。解压缩单元1803可以用于执行S803和/或本申请实施例提供的其他步骤。
例如,结合图2或图3,获取单元1801、确定单元1802和解压缩单元1803均可以通过处理器202实现。
如图19所示,为本申请实施例提供的存储设备190的结构示意图。图19所示的存储设备190可以用于执行图13所示的数据存储方法。存储设备190可以包括预测单元1901、获取单元1902和存储单元1903。获取单元1902用于获取当前数据和当前数据的历史数据。预测单元1901用于使用该历史数据对当前数据进行预测,得到当前数据的第一预测数据。获取单元1902还用于获取当前数据与当前数据的第一预测数据的第一差量。存储单元1903,用于当该第一差量的绝对值小于等于预设阈值时,存储预设数据。可选的,预设数据所占的存储空间小于当前数据所占的存储空间。例如,结合图13,预测单元1901可以用于执行S901。获取单元1902可以用于执行S901和S902。存储单元1903可以用于执行S904。
可选的,存储单元1903还用于,存储所述用于恢复当前数据的信息和执行预测所采用的AI神经算法的参数之间的对应关系。
可选的,存储设备190还包括更新单元1904,用于通过自适应学习更新AI神经算法的参数;根据更新后的AI神经算法的参数,更新用于恢复当前数据的信息。
可选的,更新单元1904具体用于:读取用于恢复当前数据的信息;根据执行预测所采用的AI神经算法的参数、用于恢复当前数据的信息和当前数据的该历史数据,恢复当前数据;根据更新后的AI神经算法的参数和当前数据的该历史数据,对当前数据进行预测,得到第二预测数据;第二预测数据是基于该历史数据的变化规律和更新后的AI神经算法的参数对当前数据进行预测后的数据;获取当前数据与第二预测数据的第二差量;当第二差量所占的存储空间小于当前数据所占的存储空间时,将所存储的用于恢复当前数据的信息更新为第二差量或者第二差量经压缩得到的值。
可选的,存储设备150包括AI计算卡,预测单元1501具体用于:通过AI计算卡使用该历史数据对当前数据进行预测,得到第一预测数据。
可选的,存储单元1903还用于当第一差量的绝对值大于预设阈值时,存储当前数据或者当前数据经压缩得到的值。例如,结合图13,存储单元1903可以用于执行S905。
可选的,存储单元1903还用于,当第一差量的绝对值大于预设阈值时,存储标识信息,该标识信息用于指示所存储的用于恢复当前数据的信息是当前数据经压缩得到的值;当存储当前数据时,标识信息用于指示所存储的用于恢复当前数据的信息是当前数据。例如,结合图13,存储单元1903可以用于执行S905A。
例如,结合图2,预测单元1901和获取单元1902均可以通过处理器202实现,存储单元1903可以通过硬盘204实现。又如,结合图3,预测单元1901可以通过AI计算卡207实现。获取单元1902可以通过处理器202实现。存储单元1903可以通过硬盘204实现。
如图20所示,为本申请实施例提供的存储设备210的结构示意图。图20所示的存储设备210可以用于执行图14所示的数据获取方法。存储设备210可以包括:读取单元2101、预测单元2102和确定单元2103。读取单元2101用于读取用于恢复当前数据的信息,当前数据的预测数据是基于历史数据的变化规律对当前数据进行预测后的数据。预测单元2102用于当用于恢复当前数据的信息包括预设数据时,使用历史数据对当前数据进行预测,得到当前数据的预测数据。确定单元2103用于将当前数据的预测数据作为当前数据。例如,结合图14,读取单元2101可以用于执行S1001。预测单元2102可以用于执行S1003中的预测步骤。确定单元2103可以用于执行S1003中的确定当前数据的步骤。
可选的,存储设备210还包括获取单元2104,用于根据用于恢复当前数据的信息与AI神经算法的参数之间的对应关系,获取对当前数据进行预测所采用的AI神经算法的参数。预测单元2102具体用于:根据获取的AI神经算法的参数,使用该历史数据对当前数据进行预测,得到当前数据的预测数据。
可选的,存储设备210包括AI计算卡,预测单元2102具体用于:通过AI计算卡使用该历史数据对当前数据进行预测,得到当前数据的预测数据。
例如,结合图2,读取单元2101、预测单元2102和确定单元2103均可以通过处理器202实现。又如,结合图3,读取单元2101和确定单元2103均可以通过处理器202实现,预测单元2102可以通过AI计算卡207实现。
如图15~20提供的任一种存储设备的实现方式及有益效果的描述均可以参考上述对应的方法实施例,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (26)
1.一种数据存储方法,其特征在于,应用于存储设备,所述方法包括:
获取当前数据和所述当前数据的历史数据;
使用所述历史数据对所述当前数据进行预测,得到第一预测数据;所述第一预测数据是基于所述历史数据的变化规律对所述当前数据进行预测后的数据;
获取所述当前数据与所述第一预测数据的第一差量;
判断所述第一差量所占的存储空间是否小于所述当前数据所占的存储空间;
当所述第一差量所占的存储空间大于或等于所述当前数据所占的存储空间时,存储所述当前数据,或者,存储所述当前数据经压缩得到的值,或者,存储标识信息,所述标识信息用于指示用于恢复所述当前数据的信息是所述第一差量或所述第一差量经压缩得到的值;
当所述第一差量所占的存储空间小于所述当前数据所占的存储空间时,存储用于恢复所述当前数据的信息;其中,所述用于恢复所述当前数据的信息包括所述第一差量或所述第一差量经压缩得到的值,执行所述压缩所采用的算法包括字典型压缩算法,所述字典型压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,所述第一数据所占的存储空间大于所述第二数据所占的存储空间;每个集合对应一个命中率范围,不同集合对应的命中率范围不同;
所述方法还包括:
获取所述第一差量的命中率;
根据所述第一差量的命中率,在所述至少两个集合中确定目标集合;所述第一差量的命中率用于确定所述第一差量所在的目标映射关系的命中率,所述确定的目标映射关系的命中率属于所述目标集合对应的命中率范围;
在所述目标集合的第一数据中查找所述第一差量,以确定与所述第一差量对应的第二数据;与所述第一差量对应的第二数据为所述第一差量经压缩得到的值。
2.根据权利要求1所述的数据存储方法,其特征在于,执行所述预测所采用的算法包括人工智能AI神经算法。
3.根据权利要求2所述的数据存储方法,其特征在于,所述AI神经算法的类型包括以下任一种:归一化最小均方自适应滤波NLMS类型、单层感知SLP类型、多层感知MLP类型或循环神经网络RNN类型。
4.根据权利要求2或3所述的数据存储方法,其特征在于,所述方法还包括:
存储所述用于恢复所述当前数据的信息和执行所述预测所采用的所述AI神经算法的参数之间的对应关系。
5.根据权利要求2或3所述的数据存储方法,其特征在于,在所述存储用于恢复所述当前数据的信息之后,所述方法还包括:
通过自适应学习更新所述AI神经算法的参数;
根据更新后的所述AI神经算法的参数,更新所述用于恢复所述当前数据的信息。
6.根据权利要求5所述的数据存储方法,其特征在于,所述根据更新后的所述AI神经算法的参数,更新所述用于恢复所述当前数据的信息,包括:
读取所述用于恢复所述当前数据的信息;
根据执行所述预测所采用的所述AI神经算法的参数、所述用于恢复所述当前数据的信息和所述当前数据的历史数据,恢复所述当前数据;
根据更新后的所述AI神经算法的参数和所述当前数据的历史数据,对所述当前数据进行预测,得到第二预测数据;所述第二预测数据是基于所述历史数据的变化规律和更新后的所述AI神经算法的参数对所述当前数据进行预测后的数据;
获取所述当前数据与所述第二预测数据的第二差量;
当所述第二差量所占的存储空间小于所述当前数据所占的存储空间时,将所存储的所述用于恢复所述当前数据的信息更新为所述第二差量或者所述第二差量经压缩得到的值。
7.根据权利要求2所述的数据存储方法,其特征在于,所述存储设备包括AI计算卡,所述使用所述历史数据对所述当前数据进行预测,得到第一预测数据,包括:
通过所述AI计算卡使用所述历史数据对所述当前数据进行预测,得到所述第一预测数据。
8.根据权利要求1所述的数据存储方法,其特征在于,所述存储设备的存储介质包括缓存、内存和硬盘;所述缓存中的映射关系的命中率大于或等于所述内存中的映射关系的命中率,所述内存中的映射关系的命中率大于或等于所述硬盘中的映射关系的命中率;所述方法还包括:
获取所述第一差量的命中率;
根据所述第一差量的命中率,确定目标存储介质;其中,所述第一差量的命中率用于确定所述第一差量所在的目标映射关系的命中率;当所述确定的目标映射关系的命中率属于所述缓存中的映射关系的命中率范围时,所述目标存储介质是所述缓存;当所述确定的目标映射关系的命中率不属于所述缓存中的映射关系的命中率范围,但属于所述内存中的映射关系的命中率范围时,所述目标存储介质是所述内存;当所述确定的目标映射关系的命中率不属于所述内存中的映射关系的命中率范围时,所述目标存储介质是所述硬盘;
在所述目标存储介质的第一数据中查找所述第一差量,以确定所述第一差量对应的第二数据;与所述第一差量对应的第二数据为所述第一差量经压缩得到的值。
9.一种数据获取方法,其特征在于,应用于存储设备,所述方法包括:
读取用于恢复当前数据的信息;所述用于恢复当前数据的信息包括:差量或差量经压缩得到的值,所述当前数据、所述当前数据经压缩得到的值或者标识信息;所述差量是所述当前数据与所述当前数据的预测数据的差量;所述预测数据是基于历史数据的变化规律对所述当前数据进行预测后的数据;所述标识信息用于指示用于恢复所述当前数据的信息是所述差量或所述差量经压缩得到的值;
使用所述历史数据对所述当前数据进行预测,得到所述预测数据;
根据所述用于恢复当前数据的信息确定所述差量,并根据所述差量和所述预测数据确定所述当前数据;
若所述用于恢复当前数据的信息包括所述差量经压缩得到的值,则所述确定所述差量通过以下方式实现:
对所述差量经压缩得到的值进行解压缩,得到所述差量;执行所述解压缩所采用的算法包括字典型解压缩算法,所述字典型解压缩算法的字典包括至少两个集合,每个所述集合包括一个或多个映射关系,每个所述映射关系是指一个第一数据与一个第二数据之间的映射关系,所述第一数据所占的存储空间大于所述第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同;
所述对所述差量经压缩得到的值进行解压缩,得到所述差量,包括:
获取所述差量经压缩得到的值的命中率;
根据所述差量经压缩得到的值的命中率,在所述至少两个集合中确定目标集合;所述差量经压缩得到的值的命中率用于确定所述差量经压缩得到的值所在的目标映射关系的命中率,所述确定的目标映射关系的命中率属于所述目标集合对应的命中率范围;
在所述目标集合的第二数据中查找所述差量经压缩得到的值,以确定与所述差量经压缩得到的值对应的第一数据;与所述差量经压缩得到的值对应的第一数据为所述差量。
10.根据权利要求9所述的数据获取方法,其特征在于,执行所述预测所采用的算法包括人工智能AI神经算法。
11.根据权利要求10所述的数据获取方法,其特征在于,所述AI神经算法的类型包括以下任一种:归一化最小均方自适应滤波NLMS类型、单层感知SLP类型、多层感知MLP类型或循环神经网络RNN类型。
12.根据权利要求10或11所述的数据获取方法,其特征在于,所述方法还包括:
根据所述用于恢复当前数据的信息与所述AI神经算法的参数之间的对应关系,获取对所述当前数据进行预测所采用的所述AI神经算法的参数;
所述使用所述历史数据对所述当前数据进行预测,得到所述预测数据,包括:
根据所述获取的所述AI神经算法的参数,使用所述历史数据对所述当前数据进行预测,得到所述预测数据。
13.根据权利要求10所述的数据获取方法,其特征在于,所述存储设备包括AI计算卡,所述使用所述历史数据对所述当前数据进行预测,得到所述预测数据,包括:
通过AI计算卡使用所述历史数据对所述当前数据进行预测,得到所述预测数据。
14.根据权利要求9所述的数据获取方法,其特征在于,所述存储设备的存储介质包括缓存、内存和硬盘;所述缓存中的映射关系的命中率大于或等于所述内存中的映射关系的命中率,所述内存中的映射关系的命中率大于或等于所述硬盘中的映射关系的命中率;所述对所述差量经压缩得到的值进行解压缩,得到所述差量,包括:
获取所述差量经压缩得到的值的命中率;
根据所述差量经压缩得到的值的命中率,确定目标存储介质;其中,所述差量经压缩得到的值的命中率用于确定所述差量经压缩得到的值所在的目标映射关系的命中率,当所述确定的目标映射关系的命中率属于所述缓存中的映射关系的命中率范围时,所述目标存储介质是所述缓存;当所述确定的目标映射关系的命中率不属于所述缓存中的映射关系的命中率范围,但属于所述内存中的映射关系的命中率范围时,所述目标存储介质是所述内存;当所述确定的目标映射关系的命中率不属于所述内存中的映射关系的命中率范围时,所述目标存储介质是所述硬盘;
在所述目标存储介质第二数据中查找所述差量经压缩得到的值,以确定与所述差量经压缩得到的值对应的第一数据;与所述差量经压缩得到的值对应的第一数据为所述差量。
15.一种存储设备,其特征在于,包括:
第一获取单元,用于获取当前数据和所述当前数据的历史数据;
预测单元,用于使用所述历史数据对所述当前数据进行预测,得到第一预测数据;所述第一预测数据是基于所述历史数据的变化规律对所述当前数据进行预测后的数据;
第二获取单元,用于获取所述当前数据与所述第一预测数据的第一差量;
存储单元,用于当所述第一差量所占的存储空间大于或等于所述当前数据所占的存储空间时,存储所述当前数据,或者,存储所述当前数据经压缩得到的值,或者,存储标识信息,所述标识信息用于指示用于恢复所述当前数据的信息是所述第一差量或所述第一差量经压缩得到的值;
所述存储单元,还用于判断所述第一差量所占的存储空间是否小于所述当前数据所占的存储空间,当所述第一差量所占的存储空间小于所述当前数据所占的存储空间时,存储用于恢复所述当前数据的信息;其中,所述用于恢复所述当前数据的信息包括所述第一差量或所述第一差量经压缩得到的值;执行所述压缩所采用的算法包括字典型压缩算法,所述字典型压缩算法的字典包括至少两个集合,每个集合包括一个或多个映射关系,每个映射关系是指一个第一数据与一个第二数据之间的映射关系,所述第一数据所占的存储空间大于所述第二数据所占的存储空间;每个集合对应一个命中率范围,不同集合对应的命中率范围不同;
第三获取单元,用于获取所述第一差量的命中率;
确定单元,用于根据所述第一差量的命中率,在所述至少两个集合中确定目标集合;所述第一差量的命中率用于确定所述第一差量所在的目标映射关系的命中率,所述确定的目标映射关系的命中率属于所述目标集合对应的命中率范围;
压缩单元,用于在所述目标集合的第一数据中查找所述第一差量,以确定与所述第一差量对应的第二数据;与所述第一差量对应的第二数据为所述第一差量经压缩得到的值。
16.根据权利要求15所述的存储设备,其特征在于,执行所述预测所采用的算法包括人工智能AI神经算法。
17.根据权利要求16所述的存储设备,其特征在于,所述AI神经算法的类型包括以下任一种:归一化最小均方自适应滤波NLMS类型、单层感知SLP类型、多层感知MLP类型或循环神经网络RNN类型。
18.根据权利要求16或17所述的存储设备,其特征在于,
所述存储单元还用于,存储所述用于恢复所述当前数据的信息和执行所述预测所采用的所述AI神经算法的参数之间的对应关系。
19.根据权利要求16或17所述的存储设备,其特征在于,所述存储设备还包括:
更新单元,用于通过自适应学习更新所述AI神经算法的参数,并根据更新后的所述AI神经算法的参数,更新所述用于恢复所述当前数据的信息。
20.根据权利要求19所述的存储设备,其特征在于,所述更新单元具体用于:
读取所述用于恢复所述当前数据的信息;
根据执行所述预测所采用的所述AI神经算法的参数、所述用于恢复所述当前数据的信息和所述当前数据的历史数据,恢复所述当前数据;
根据更新后的所述AI神经算法的参数和所述当前数据的历史数据,对所述当前数据进行预测,得到第二预测数据;所述第二预测数据是基于所述历史数据的变化规律和更新后的所述AI神经算法的参数对所述当前数据进行预测后的数据;
获取所述当前数据与所述第二预测数据的第二差量;
当所述第二差量所占的存储空间小于所述当前数据所占的存储空间时,将所存储的所述用于恢复所述当前数据的信息更新为所述第二差量或者所述第二差量经压缩得到的值。
21.根据权利要求16所述的存储设备,其特征在于,所述存储设备包括AI计算卡;所述预测单元具体用于:通过所述AI计算卡使用所述历史数据对所述当前数据进行预测,得到所述第一预测数据。
22.一种存储设备,其特征在于,包括:
读取单元,用于读取用于恢复当前数据的信息;所述用于恢复当前数据的信息包括:差量或差量经压缩得到的值,所述当前数据、所述当前数据经压缩得到的值或者标识信息;所述差量是所述当前数据与所述当前数据与预测数据的差量;所述预测数据是基于历史数据的变化规律对所述当前数据进行预测后的数据;所述标识信息用于指示用于恢复所述当前数据的信息是所述差量或所述差量经压缩得到的值;
预测单元,用于使用所述历史数据对所述当前数据进行预测,得到所述预测数据;
确定单元,用于根据所述用于恢复当前数据的信息和所述预测数据确定所述当前数据;
所述用于恢复当前数据的信息包括所述差量经压缩得到的值;所述确定单元包括:解压缩模块,用于对所述差量经压缩得到的值进行解压缩,得到所述差量;确定模块,用于根据所述差量和所述预测数据,确定所述当前数据;
执行所述解压缩所采用的算法包括字典型解压缩算法,所述字典型解压缩算法的字典包括至少两个集合,每个所述集合包括一个或多个映射关系,每个所述映射关系是指一个第一数据与一个第二数据之间的映射关系,所述第一数据所占的存储空间大于所述第二数据所占的存储空间,每个集合对应一个命中率范围,不同集合对应的命中率范围不同;
所述解压缩模块,具体用于:获取所述差量经压缩得到的值的命中率;根据所述差量经压缩得到的值的命中率,在所述至少两个集合中确定目标集合;所述差量经压缩得到的值的命中率用于确定所述差量经压缩得到的值所在的目标映射关系的命中率,所述确定的目标映射关系的命中率属于所述目标集合对应的命中率范围;以及,在所述目标集合的第二数据中查找所述差量经压缩得到的值,以确定与所述差量经压缩得到的值对应的第一数据;与所述差量经压缩得到的值对应的第一数据为所述差量。
23.根据权利要求22所述的存储设备,其特征在于,执行所述预测所采用的算法包括人工智能AI神经算法。
24.根据权利要求23所述的存储设备,其特征在于,所述AI神经算法的类型包括以下任一种:归一化最小均方自适应滤波NLMS类型、单层感知SLP类型、多层感知MLP类型或循环神经网络RNN类型。
25.根据权利要求23或24所述的存储设备,其特征在于,所述存储设备还包括:
获取单元,用于根据所述用于恢复当前数据的信息与所述AI神经算法的参数之间的对应关系,获取对所述当前数据进行预测所采用的所述AI神经算法的参数;
所述预测单元具体用于:根据所述获取的所述AI神经算法的参数,使用所述历史数据对所述当前数据进行预测,得到所述预测数据。
26.根据权利要求22所述的存储设备,其特征在于,所述存储设备包括AI计算卡;所述预测单元具体用于:通过AI计算卡使用所述历史数据对所述当前数据进行预测,得到所述预测数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/101597 WO2020037511A1 (zh) | 2018-08-21 | 2018-08-21 | 数据存储及获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111083933A CN111083933A (zh) | 2020-04-28 |
CN111083933B true CN111083933B (zh) | 2023-02-03 |
Family
ID=69592335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880013245.4A Active CN111083933B (zh) | 2018-08-21 | 2018-08-21 | 数据存储及获取方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11960467B2 (zh) |
EP (1) | EP3822795B1 (zh) |
JP (1) | JP7108784B2 (zh) |
CN (1) | CN111083933B (zh) |
WO (1) | WO2020037511A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587557B (zh) * | 2019-01-11 | 2022-03-08 | 京东方科技集团股份有限公司 | 数据传输方法及装置、显示装置 |
CN111817722A (zh) * | 2020-07-09 | 2020-10-23 | 北京奥星贝斯科技有限公司 | 数据压缩方法、装置及计算机设备 |
EP4038486A4 (en) * | 2020-11-17 | 2023-02-22 | Zhejiang Dahua Technology Co., Ltd | DATA STORAGE AND PROCESSING SYSTEMS AND PROCEDURES |
CN114095033B (zh) * | 2021-11-16 | 2024-05-14 | 上海交通大学 | 基于上下文的图卷积的目标交互关系语义无损压缩系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323922A (zh) * | 2010-05-11 | 2012-01-18 | 达索系统公司 | 数值数据的压缩和解压缩 |
CN104462422A (zh) * | 2014-12-15 | 2015-03-25 | 北京百度网讯科技有限公司 | 对象的处理方法及装置 |
CN105556566A (zh) * | 2013-10-25 | 2016-05-04 | 株式会社和冠 | 动态手写验证、基于手写的用户认证、手写数据生成和手写数据保存 |
CN106909990A (zh) * | 2017-03-01 | 2017-06-30 | 腾讯科技(深圳)有限公司 | 一种基于历史数据的预测方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2995037B2 (ja) * | 1997-07-04 | 1999-12-27 | 三洋電機株式会社 | 音声符号化復号化装置 |
US7509356B2 (en) * | 2001-09-06 | 2009-03-24 | Iron Mountain Incorporated | Data backup |
US7225208B2 (en) * | 2003-09-30 | 2007-05-29 | Iron Mountain Incorporated | Systems and methods for backing up data files |
JP2006259937A (ja) | 2005-03-15 | 2006-09-28 | Omron Corp | データ収集装置およびデータ復元装置 |
CN101499094B (zh) * | 2009-03-10 | 2010-09-29 | 焦点科技股份有限公司 | 一种数据压缩存储并检索的方法及系统 |
US20100293147A1 (en) * | 2009-05-12 | 2010-11-18 | Harvey Snow | System and method for providing automated electronic information backup, storage and recovery |
CN105025298B (zh) * | 2010-01-19 | 2019-04-16 | 三星电子株式会社 | 对图像进行编码/解码的方法和设备 |
WO2011129819A1 (en) * | 2010-04-13 | 2011-10-20 | Empire Technology Development Llc | Combined-model data compression |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
CN102760250B (zh) * | 2011-04-28 | 2016-03-30 | 国际商业机器公司 | 用于选择碳排放预测方案的方法、设备和系统 |
CN102222085B (zh) * | 2011-05-17 | 2012-08-22 | 华中科技大学 | 一种基于相似性与局部性结合的重复数据删除方法 |
US9026505B1 (en) * | 2011-12-16 | 2015-05-05 | Emc Corporation | Storing differences between precompressed and recompressed data files |
CN104636272A (zh) * | 2015-02-25 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种基于差值预测算法的Cache替换策略 |
CN105205014B (zh) * | 2015-09-28 | 2018-12-07 | 北京百度网讯科技有限公司 | 一种数据存储方法和装置 |
US9902506B2 (en) | 2016-03-10 | 2018-02-27 | General Electric Company | Using aircraft data recorded during flight to predict aircraft engine behavior |
CN107357764B (zh) | 2017-06-23 | 2020-10-27 | 联想(北京)有限公司 | 数据分析方法、电子设备及计算机存储介质 |
-
2018
- 2018-08-21 JP JP2021509809A patent/JP7108784B2/ja active Active
- 2018-08-21 WO PCT/CN2018/101597 patent/WO2020037511A1/zh unknown
- 2018-08-21 CN CN201880013245.4A patent/CN111083933B/zh active Active
- 2018-08-21 EP EP18931202.8A patent/EP3822795B1/en active Active
-
2021
- 2021-02-19 US US17/179,591 patent/US11960467B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323922A (zh) * | 2010-05-11 | 2012-01-18 | 达索系统公司 | 数值数据的压缩和解压缩 |
CN105556566A (zh) * | 2013-10-25 | 2016-05-04 | 株式会社和冠 | 动态手写验证、基于手写的用户认证、手写数据生成和手写数据保存 |
CN104462422A (zh) * | 2014-12-15 | 2015-03-25 | 北京百度网讯科技有限公司 | 对象的处理方法及装置 |
CN106909990A (zh) * | 2017-03-01 | 2017-06-30 | 腾讯科技(深圳)有限公司 | 一种基于历史数据的预测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020037511A1 (zh) | 2020-02-27 |
EP3822795A4 (en) | 2021-08-04 |
US11960467B2 (en) | 2024-04-16 |
EP3822795A1 (en) | 2021-05-19 |
CN111083933A (zh) | 2020-04-28 |
JP2021534505A (ja) | 2021-12-09 |
US20210173824A1 (en) | 2021-06-10 |
EP3822795B1 (en) | 2023-07-26 |
JP7108784B2 (ja) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083933B (zh) | 数据存储及获取方法和装置 | |
US9048862B2 (en) | Systems and methods for selecting data compression for storage data in a storage system | |
KR102007070B1 (ko) | 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법 | |
JP2019053772A (ja) | オブジェクトネットワークをモデル化するシステム及び方法 | |
EP3376393B1 (en) | Data storage method and apparatus | |
WO2021129445A1 (zh) | 数据压缩方法及计算设备 | |
CN112667528A (zh) | 一种数据预取的方法及相关设备 | |
WO2021012162A1 (zh) | 存储系统数据压缩的方法、装置、设备及可读存储介质 | |
CN112104725A (zh) | 容器镜像去重方法、系统、计算机设备及存储介质 | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN115483935A (zh) | 一种数据处理方法及装置 | |
WO2021190501A1 (zh) | 数据预取方法、装置以及存储设备 | |
CN117369731A (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
WO2023246754A1 (zh) | 一种数据重删方法及相关系统 | |
CN115470157A (zh) | 预取方法、电子设备、存储介质及程序产品 | |
CN110688097A (zh) | 高可靠高可用高性能融合型软件定义存储系统及方法 | |
US10067678B1 (en) | Probabilistic eviction of partial aggregation results from constrained results storage | |
CN114168084A (zh) | 文件合并方法、文件合并装置、电子设备以及存储介质 | |
CN115203133A (zh) | 数据处理方法、装置、归约服务器及映射服务器 | |
WO2017186049A1 (zh) | 信息处理方法和装置 | |
US11966393B2 (en) | Adaptive data prefetch | |
CN117235088B (zh) | 一种存储系统的缓存更新方法、装置、设备、介质及平台 | |
CN113806249B (zh) | 一种对象存储有序列举方法、装置、终端及存储介质 | |
CN117331514B (zh) | 一种基于区域划分的固态盘数据压缩系统及方法 | |
EP4261712A1 (en) | Data elimination method and apparatus, cache node, and cache system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |