一种数据存储方法及装置转让专利

申请号 : CN201611159962.7

文献号 : CN108234552B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 潘晓东胡林红莫衍

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明实施例公开了一种数据存储方法及装置,所述方法包括:对当前需要存储的数据进行数据分块,得到至少一个数据块,确定各个数据块关联的对象存储器,根据与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据,将压缩数据存储到压缩数据关联的对象存储器中。采用本发明实施例,可提高存储性能。

权利要求 :

1.一种数据存储方法,其特征在于,所述方法包括:对当前需要存储的数据进行数据分块,得到至少一个数据块;

获取各个所述数据块的数据标识;

根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组;

根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器;

确定所述置放群组所包含的所有数据块的数据量总和;

当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配的压缩算法,其中,所述预置数据量范围和压缩算法的对应关系为预先建立;

通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;

通过若干个第二线程,将所述压缩数据存储到所述压缩数据关联的对象存储器中。

2.如权利要求1所述的方法,其特征在于,所述对当前需要存储的数据进行数据分块,得到至少一个数据块,包括:

根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。

3.如权利要求1所述的方法,其特征在于,所述通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之后,还包括:

生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数据块对应的压缩数据所采用的压缩算法。

4.如权利要求3所述的方法,其特征在于,所述方法还包括:接收数据获取请求,所述数据获取请求携带数据标识;

获取所述数据标识所对应数据的索引信息;

根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法;

根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块;

根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。

5.一种数据存储装置,其特征在于,所述装置包括:数据分块单元,用于对当前需要存储的数据进行数据分块,得到至少一个数据块;

确定单元,用于获取各个所述数据块的数据标识;根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组;根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器;确定所述置放群组所包含的所有数据块的数据量总和;当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配的压缩算法,其中,所述预置数据量范围和压缩算法的对应关系为预先建立;

压缩单元,用于通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;

存储单元,用于通过若干个第二线程,将所述压缩数据存储到所述压缩数据关联的对象存储器中。

6.如权利要求5所述的装置,其特征在于,所述数据分块单元,具体用于:根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。

7.如权利要求5所述的装置,其特征在于,所述装置还包括:索引信息生成单元,用于所述压缩单元通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之后,生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数据块对应的压缩数据所采用的压缩算法。

8.如权利要求7所述的装置,其特征在于,所述装置还包括:获取请求接收单元,用于接收数据获取请求,所述数据获取请求携带数据标识;

索引信息获取单元,用于获取所述数据标识所对应数据的索引信息;

所述确定单元,还用于根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法;

所述装置还包括:

解压缩单元,用于根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块;

组装单元,用于根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。

9.一种客户端,其特征在于,所述客户端包括:存储器,用于存储程序代码;

处理器,用于调用所述存储器中存储的所述程序代码,执行如权利要求1至4任一项所述的数据存储方法。

10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序当被客户端执行时使所述客户端执行如权利要求1至4任一项所述的数据存储方法。

说明书 :

一种数据存储方法及装置

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种数据存储方法及装置。

背景技术

[0002] 在云计算环境中,计算、存储以及网络是云计算的三大功能。云存储是一种新兴的存储方案,其作为虚拟机的存储后端,可以保证虚拟机数据的稳定和高可用性。传统的数据
存储方法可以是通过中央处理器(Central Processing Unit,CPU)将当前需要存储的数据
进行云存储,例如将当前需要存储的数据存储到Ceph(可扩展存储空间)集群中。然而随着
技术的发展,CPU的处理速度越来越快,而输入/输出端口(input/output,I/O)的处理性能
并未得到明显提升,若当前需要存储的数据的数据量较大,则I/O的负载较高,降低存储性
能。

发明内容

[0003] 本发明实施例所要解决的技术问题在于,提供一种数据存储方法及装置,可提升存储性能。
[0004] 为了解决上述技术问题,本发明实施例提供了一种数据存储方法,所述方法包括:
[0005] 对当前需要存储的数据进行数据分块,得到至少一个数据块;
[0006] 确定各个所述数据块关联的对象存储器;
[0007] 根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;
[0008] 将所述压缩数据存储到所述压缩数据关联的对象存储器中。
[0009] 相应地,本发明实施例还提供了一种数据存储装置,所述装置包括:
[0010] 数据分块单元,用于对当前需要存储的数据进行数据分块,得到至少一个数据块;
[0011] 确定单元,用于确定各个所述数据块关联的对象存储器;
[0012] 压缩单元,用于根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;
[0013] 存储单元,用于将所述压缩数据存储到所述压缩数据关联的对象存储器中。
[0014] 实施本发明实施例,通过对当前需要存储的数据进行数据分块,得到至少一个数据块,确定各个数据块关联的对象存储器,根据与对象存储器匹配的压缩算法,对对象存储
器关联的数据块进行压缩,得到对象存储器关联的压缩数据,将压缩数据存储到压缩数据
关联的对象存储器中,可提升网络性能。

附图说明

[0015] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图;
[0016] 图1是本发明实施例中提供的一种数据存储方法的流程示意图;
[0017] 图2是本发明实施例中提供的一种数据存储系统的架构示意图;
[0018] 图3是本发明实施例中提供的一种索引信息的示意图;
[0019] 图4是本发明实施例中提供的一种数据存储装置的结构示意图;
[0020] 图5是本发明实施例中提供的一种客户端的结构示意图。

具体实施方式

[0021] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0022] 本发明实施例提供了一种数据存储方法,客户端可以通过CPU模块对当前需要存储的数据进行数据分块,得到至少一个数据块,确定各个数据块关联的对象存储器,并根据
与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关
联的压缩数据,进而通过I/O模块将压缩数据存储到压缩数据关联的对象存储器中。相对传
统的数据存储方法直接对数据进行存储,本发明实施例将数据进行数据分块得到至少一个
数据块,对各个数据块进行压缩得到压缩数据,并对各个压缩数据进行存储,可减少I/O负
载,提升存储性能。
[0023] 上述数据存储方法可以运行在客户端中,客户端可以安装在云存储系统中。示例性的,客户端可以为虚拟机,云存储系统可以包括Ceph系统或者GlusterFS(开源的分布式
文件系统)系统等。
[0024] 本发明实施例公开了图1所示的一种数据存储方法的流程示意图。如图1所示,该数据存储方法可以包括以下步骤:
[0025] S101,对当前需要存储的数据进行数据分块,得到至少一个数据块。
[0026] 客户端可以对当前需要存储的数据进行数据分块,得到至少一个数据块。其中,当前需要存储的数据可以包括文本、图像、音频、视频或者动画等,具体不受本发明实施例的
限定。
[0027] 可选的,客户端可以根据预置数据量对数据进行数据分块,得到至少一个数据块,其中至少一个数据块中的最后一个数据块的数据量小于或者等于预置数据量,至少一个数
据块中除最后一个数据块以外的其他数据块的数据量均等于预置数据量。例如,当前需要
存储的数据的数据量为16MB,预置数据量为4MB,则客户端可以将该数据进行数据分块,得
到4个数据块,各个数据块的数据量为4MB,其中各个数据块的数据量与预置数据量相同。又
如,当前需要存储的数据的数据量为18MB,预置数据量为4MB,则客户端可以将该数据进行
数据分块,得到5个数据块,即第一数据块、第二数据块、第三数据块、第四数据块以及第五
数据块,其中第一数据块、第二数据块、第三数据块以及第四数据块的数据量均为4MB,第五
数据块的数据量为2MB,其中最后一个数据块(即第四数据块)的数据量小于预置数据量,其
他数据块的数据量均等于预置数据量。
[0028] 需要说明的是,预置数据量可以是预先设置的数据块长度,研发人员可以结合不同应用场景进行相应的修改,具体不受本发明实施例的限定。
[0029] S102,确定各个数据块关联的对象存储器。
[0030] 客户端对上述数据进行数据分块得到至少一个数据块之后,可以确定各个数据块关联的对象存储器。以图2所示的数据存储系统的架构示意图为例,客户端获取到数据(例
如File)之后,可以对该数据进行数据分块,得到至少一个对象(例如Objects),进而客户端
可以根据预设规则确定各个数据块关联的对象存储器(Object‑based Storage Device,
OSD)。其中,云存储系统可以包括多个对象存储器,云存储系统可以包括一个主OSD和多个
备份OSD,客户端可以预先确定与各个对象存储器匹配的压缩算法,不同对象存储器匹配的
压缩算法中的压缩方式或者压缩比例可以不相同,例如第一对象存储器匹配的压缩算法中
的压缩方式为快速压缩,压缩比例为5:4;第二对象存储器匹配的压缩算法中的压缩方式为
标准压缩,压缩比例为2:1。
[0031] 可选的,客户端可以获取各个数据块的数据标识,根据预置消息摘要算法对各个数据块的数据标识进行处理,得到各个数据块所属的置放群组,根据预置消息摘要算法对
置放群组的群组标识进行处理,得到置放群组所包含的数据块关联的对象存储器。
[0032] 具体实现中,置放群组(PlaccmentGroup,PG)是对象的逻辑集合,PG是云存储系统向OSD分发数据的基本单位,同一PG所包含的对象将被分发到同一OSD中。客户端可以通过
预置消息摘要算法对各个对象的数据标识以及修正参数进行处理,得到该对象所属的PG。
示例性的,对象的数据标识可以是该对象的身份标识号(identification,ID)。预置消息摘
要算法可以包括安全哈希算法(Secure Hash Algorithm,SHA)或者消息摘要算法第五版
(Message Digest Algorithm MD5)等。进一步的,客户端确定对象所属的PG之后,还可以通
过预置消息摘要算法对云存储系统当前的运行状态和该PG的群组标识进行处理,得到该PG
所包含的数据块关联的对象存储器。其中,PG的群组标识可以是该PG的ID。云存储系统中
OSD集群所包含的OSD是根据物理节点的容错区域(比如机架或者机房等)进行划分的。进一
步的,客户端在PG到OSD的映射完成以后,可以根据与对象存储器匹配的压缩算法,对对象
存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据。
[0033] S103,根据与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据。
[0034] 客户端可以根据与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据。例如,第一数据块关联的对象存储器为第三对象存
储器,与第三对象存储器匹配的压缩算法为第三压缩算法,则客户端可以根据第三压缩算
法,对第一数据块进行压缩,得到第三对象存储器关联的压缩数据,该压缩数据为第一数据
块对应的压缩数据。又如,第二数据块关联的对象存储器为第一对象存储器,与第一对象存
储器匹配的压缩算法为第一压缩算法,则客户端可以根据第一压缩算法,对第二数据块进
行压缩,得到第一对象存储器关联的压缩数据,该压缩数据为第二数据块对应的压缩数据。
[0035] 可选的,客户端根据与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据之前,可以确定置放群组所包含的所有数据块
的数据量总和,当数据量总和位于预置数据量范围内时,客户端可以将预置数据量范围对
应的压缩算法作为与置放群组所包含的数据块关联的对象存储器匹配的压缩算法。
[0036] 具体实现中,客户端可以预先建立数据量范围和压缩算法的对应关系,例如数据量范围为(0MB,5MB]时,对应的压缩算法为第一压缩算法;数据量范围为(5MB,10MB]时,对
应的压缩算法为第二压缩算法;数据量范围为(5MB,10MB]时,对应的压缩算法为第三压缩
算法。客户端确定第一置放群组包含第一数据块和第二数据块,第一数据块的数据量为
3MB,第二数据块的数据量为5MB,则客户端可以确定第一置放群组所包含的所有数据块的
数据量总和为8MB,该数据量总和位于数据量范围(5MB,10MB]内,该数据量范围对应的压缩
算法为第二压缩算法,则客户端可以将第二压缩算法作为第一数据块关联的对象存储器匹
配的压缩算法,客户端也可以将第二压缩算法作为第二数据块关联的对象存储器匹配的压
缩算法,其中第一数据块关联的对象存储器可以和第二数据块关联的对象存储器相同。
[0037] 可选的,客户端根据与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据之后,可以生成数据的索引信息。其中,索引信
息可以包括各个数据块的偏移,以及各个数据块对应的压缩数据所采用的压缩算法。
[0038] 具体实现中,由于各个数据块所采用的的压缩算法不完全相同,则压缩得到的压缩数据的数据量也不完全相同,客户端可以生成该数据的索引信息,该索引信息用于记录
对该数据进行数据分块得到的各个数据块的数据量及其偏移。以图3所示的索引信息的示
意图为例,客户端可以在数据的头部,设计1KB的数据空间,用于存储索引信息。其中索引信
息可以包括索引头部和针对数据块的索引两部分,索引头部用于存储数据的数据量或者数
据块的数量等,针对数据块的索引区域用于存储压缩数据的压缩算法或者压缩数据的数据
量等。
[0039] 示例性的,客户端发起数据写入请求,当数据的数据量大于4MB时,客户端可以对数据进行数据分块,得到至少一个数据块,并对至少一个数据块设置从小到大的编号,例如
客户端对数据进行数据分块得到i+2个数据块,则客户端可以配置第一数据块的编号为
block 0,第i个数据块的编号为block i‑1,第i+1个数据块的编号为block i,第i+2个数据
块的编号为block i+1。进一步的,客户端可以将数据的数据量总和写入到索引头部的最前
面origi_size位置,采用64bit保存,兼容大文件,客户端还可以将数据块的数量写入索引
头部的block_num位置。进一步的,客户端可以对各个数据块进行压缩得到压缩数据,压缩
数据的数据量为block_len,客户端可以将第i+1个数据块对应的压缩数据写入到block i
的block_len位置。进一步的,客户端可以获取各个数据块的偏移offset,将第i+1个数据块
的偏移写入到block i的offset位置。其中,若索引头部的数据量为1KB,则第一个数据块的
偏移为1KB。若第一个数据块的索引的数据量为2KB,则第二个数据块的偏移为1+2=3KB,同
理,第i个数据块的偏移为第i‑1个数据块的偏移与第i‑1个数据块的索引的数据量。进一步
的,客户端可以根据各个数据块的偏移,在数据的偏移处,写入压缩数据。
[0040] 示例性的,索引信息中的索引头部可以按照64bits进行对齐。索引信息的数据结构可以如表1所示:
[0041] 表1
[0042] block_size block_num offset block_len … offset block_len64bits 64bits 64bits 64bits … 64bits 64bits
[0043] 其中,block_size可以用于表示数据的数据量,block_num可以用于表示数据分块得到的至少一个数据块的数量,offset可以用于表示数据块的偏移,block_len可以用于表
示数据块对应的压缩数据的数据量。
[0044] 需要说明的是,为了支持超大文件和数据对齐,索引信息中的各个参数采用了64bit进行长度存储。
[0045] S104,将压缩数据存储到压缩数据关联的对象存储器中。
[0046] 客户端可以将压缩数据存储到压缩数据关联的对象存储器中。例如,客户端根据第三压缩算法,对第一数据块进行压缩,得到第三对象存储器关联的压缩数据之后,可以将
该压缩数据存储到第三对象存储器中。又如,客户端根据第一压缩算法,对第二数据块进行
压缩,得到第一对象存储器关联的压缩数据之后,可以将该压缩数据存储到第一对象存储
器中。
[0047] 可选的,客户端可以采用流式压缩和流式存储的方式对各个压缩数据进行存储,例如客户端可以通过若干个线程对数据进行压缩得到压缩数据,同时通过若干个线程对压
缩数据进行存储。例如,客户端可以在对第二数据块进行压缩的同时,对压缩得到的第一数
据块对应的压缩数据进行存储,可提高数据存储效率。
[0048] 可选的,客户端还可以接收数据获取请求,数据获取请求携带数据标识,获取数据标识所对应数据的索引信息,根据索引信息所包含的各个数据块对应的压缩数据所采用的
压缩算法,确定各个压缩数据所需的解压缩算法,根据各个压缩数据所需的解压缩算法对
压缩数据进行解压缩,得到各个压缩数据对应的数据块,根据各个数据块的偏移,对各个数
据块进行组装得到数据。例如,客户端通过索引信息确定需要读取的数据进行数据分块得
到两个数据块,第一数据块对应的压缩数据的压缩算法为第三压缩算法,客户端可以通过
第三压缩算法对应的第三解压缩算法对第一数据块对应的压缩数据进行解压缩得到第一
数据块;第二数据块对应的压缩数据的压缩算法为第一压缩算法,客户端可以通过第一压
缩算法对应的第一解压缩算法对第二数据块对应的压缩数据进行解压缩得到第二数据块,
进而根据各个数据块的偏移对第一数据块和第二数据块进行组装得到需要读取的数据。
[0049] 本发明实施例中,客户端对当前需要存储的数据进行数据分块,得到至少一个数据块,确定各个数据块关联的对象存储器,根据与对象存储器匹配的压缩算法,对对象存储
器关联的数据块进行压缩,得到对象存储器关联的压缩数据,将压缩数据存储到压缩数据
关联的对象存储器中,可提升网络性能。
[0050] 请参见图4,图4是本发明实施例中提供的一种数据存储装置的结构示意图,所述数据存储装置可以用于实施结合图1所示的方法实施例中的部分或全部步骤,如图所示本
实施例中的数据存储装置至少可以包括数据分块单元401、确定单元402、压缩单元403以及
存储单元404,其中:
[0051] 数据分块单元401,用于对当前需要存储的数据进行数据分块,得到至少一个数据块。
[0052] 确定单元402,用于确定各个所述数据块关联的对象存储器。
[0053] 压缩单元403,用于根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据。
[0054] 存储单元404,用于将所述压缩数据存储到所述压缩数据关联的对象存储器中。
[0055] 可选的,所述确定单元402,具体用于:
[0056] 获取各个所述数据块的数据标识。
[0057] 根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组。
[0058] 根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器。
[0059] 可选的,所述确定单元402,还用于所述压缩单元403根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩
数据之前,确定所述置放群组所包含的所有数据块的数据量总和。
[0060] 所述确定单元,还用于当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配
的压缩算法。
[0061] 可选的,所述数据分块单元401,具体用于:
[0062] 根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数
据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
[0063] 可选的,本发明实施例中的数据存储装置还可以包括:
[0064] 索引信息生成单元405,用于所述压缩单元403根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之
后,生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数
据块对应的压缩数据所采用的压缩算法。
[0065] 可选的,本发明实施例中的数据存储装置还可以包括:
[0066] 获取请求接收单元406,用于接收数据获取请求,所述数据获取请求携带数据标识。
[0067] 索引信息获取单元407,用于获取所述数据标识所对应数据的索引信息。
[0068] 所述确定单元402,还用于根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法。
[0069] 进一步的,本发明实施例中的数据存储装置还可以包括:
[0070] 解压缩单元408,用于根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块。
[0071] 组装单元409,用于根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。
[0072] 本发明实施例中,数据分块单元401对当前需要存储的数据进行数据分块,得到至少一个数据块,确定单元402确定各个所述数据块关联的对象存储器,压缩单元403根据与
所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对
象存储器关联的压缩数据,存储单元404将所述压缩数据存储到所述压缩数据关联的对象
存储器中,可提高存储性能。
[0073] 请参见图5,图5是本发明另一实施例中提供的一种客户端的结构示意图,本发明实施例提供的客户端可以用于实施上述图1所示的本发明实施例实现的方法,为了便于说
明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1所示的本发
明实施例。
[0074] 如图5所示,该客户端包括:至少一个处理器501,例如CPU,至少一个输入装置503,至少一个输出装置504,存储器505,至少一个通信总线502。其中,通信总线502用于实现这
些组件之间的连接通信。其中,输入装置503具体可以为网络接口等,用于接收数据获取请
求。其中,输出装置504具体可以为网络接口等,用于将所述压缩数据存储到所述压缩数据
关联的对象存储器中。其中,存储器505可能包含高速RAM存储器,也可能还包括非不稳定的
存储器,例如至少一个磁盘存储器,具体用于存储对象存储器匹配的压缩算法等。存储器
505可选的可以包含至少一个位于远离前述处理器501的存储装置。存储器505中存储一组
程序代码,且处理器501、输入装置503以及输出装置504调用存储器505中存储的程序代码,
用于执行以下操作:
[0075] 处理器501对当前需要存储的数据进行数据分块,得到至少一个数据块。
[0076] 处理器501确定各个所述数据块关联的对象存储器。
[0077] 处理器501根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据。
[0078] 输出装置504将所述压缩数据存储到所述压缩数据关联的对象存储器中。
[0079] 可选的,处理器501确定各个所述数据块关联的对象存储器,包括:
[0080] 获取各个所述数据块的数据标识。
[0081] 根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组。
[0082] 根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器。
[0083] 可选的,所述处理器501根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之前,还包括:
[0084] 确定所述置放群组所包含的所有数据块的数据量总和。
[0085] 当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配的压缩算法。
[0086] 可选的,所述处理器501对当前需要存储的数据进行数据分块,得到至少一个数据块,包括:
[0087] 根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数
据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
[0088] 可选的,所述处理器501根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之后,还包括:
[0089] 生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数据块对应的压缩数据所采用的压缩算法。
[0090] 可选的,所述方法还包括:
[0091] 接收数据获取请求,所述数据获取请求携带数据标识。
[0092] 获取所述数据标识所对应数据的索引信息。
[0093] 根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法。
[0094] 根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块。
[0095] 根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。
[0096] 具体的,本发明实施例中介绍的客户端可以用以实施本发明结合图1介绍的方法实施例中的部分或全部流程。
[0097] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁
碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access 
Memory,RAM)等。
[0098] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。