一种数据存储方法及装置转让专利
申请号 : CN201611159962.7
文献号 : CN108234552B
文献日 : 2021-11-05
发明人 : 潘晓东 , 胡林红 , 莫衍
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种数据存储方法,其特征在于,所述方法包括:对当前需要存储的数据进行数据分块,得到至少一个数据块;
获取各个所述数据块的数据标识;
根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组;
根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器;
确定所述置放群组所包含的所有数据块的数据量总和;
当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配的压缩算法,其中,所述预置数据量范围和压缩算法的对应关系为预先建立;
通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;
通过若干个第二线程,将所述压缩数据存储到所述压缩数据关联的对象存储器中。
2.如权利要求1所述的方法,其特征在于,所述对当前需要存储的数据进行数据分块,得到至少一个数据块,包括:
根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
3.如权利要求1所述的方法,其特征在于,所述通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之后,还包括:
生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数据块对应的压缩数据所采用的压缩算法。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:接收数据获取请求,所述数据获取请求携带数据标识;
获取所述数据标识所对应数据的索引信息;
根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法;
根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块;
根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。
5.一种数据存储装置,其特征在于,所述装置包括:数据分块单元,用于对当前需要存储的数据进行数据分块,得到至少一个数据块;
确定单元,用于获取各个所述数据块的数据标识;根据预置消息摘要算法对各个所述数据块的数据标识进行处理,得到各个所述数据块所属的置放群组;根据所述预置消息摘要算法对所述置放群组的群组标识进行处理,得到所述置放群组所包含的数据块关联的对象存储器;确定所述置放群组所包含的所有数据块的数据量总和;当所述数据量总和位于预置数据量范围内时,将所述预置数据量范围对应的压缩算法作为与所述置放群组所包含的数据块关联的对象存储器匹配的压缩算法,其中,所述预置数据量范围和压缩算法的对应关系为预先建立;
压缩单元,用于通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据;
存储单元,用于通过若干个第二线程,将所述压缩数据存储到所述压缩数据关联的对象存储器中。
6.如权利要求5所述的装置,其特征在于,所述数据分块单元,具体用于:根据预置数据量对所述数据进行数据分块,得到至少一个数据块,其中所述至少一个数据块中的最后一个数据块的数据量小于或者等于所述预置数据量,所述至少一个数据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
7.如权利要求5所述的装置,其特征在于,所述装置还包括:索引信息生成单元,用于所述压缩单元通过若干个第一线程,根据与所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对象存储器关联的压缩数据之后,生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数据块对应的压缩数据所采用的压缩算法。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:获取请求接收单元,用于接收数据获取请求,所述数据获取请求携带数据标识;
索引信息获取单元,用于获取所述数据标识所对应数据的索引信息;
所述确定单元,还用于根据所述索引信息所包含的各个所述数据块对应的压缩数据所采用的压缩算法,确定各个所述压缩数据所需的解压缩算法;
所述装置还包括:
解压缩单元,用于根据各个所述压缩数据所需的解压缩算法对所述压缩数据进行解压缩,得到各个所述压缩数据对应的数据块;
组装单元,用于根据各个所述数据块的偏移,对各个所述数据块进行组装得到所述数据。
9.一种客户端,其特征在于,所述客户端包括:存储器,用于存储程序代码;
处理器,用于调用所述存储器中存储的所述程序代码,执行如权利要求1至4任一项所述的数据存储方法。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序当被客户端执行时使所述客户端执行如权利要求1至4任一项所述的数据存储方法。
说明书 :
一种数据存储方法及装置
技术领域
背景技术
存储方法可以是通过中央处理器(Central Processing Unit,CPU)将当前需要存储的数据
进行云存储,例如将当前需要存储的数据存储到Ceph(可扩展存储空间)集群中。然而随着
技术的发展,CPU的处理速度越来越快,而输入/输出端口(input/output,I/O)的处理性能
并未得到明显提升,若当前需要存储的数据的数据量较大,则I/O的负载较高,降低存储性
能。
发明内容
器关联的数据块进行压缩,得到对象存储器关联的压缩数据,将压缩数据存储到压缩数据
关联的对象存储器中,可提升网络性能。
附图说明
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图;
具体实施方式
本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
与对象存储器匹配的压缩算法,对对象存储器关联的数据块进行压缩,得到对象存储器关
联的压缩数据,进而通过I/O模块将压缩数据存储到压缩数据关联的对象存储器中。相对传
统的数据存储方法直接对数据进行存储,本发明实施例将数据进行数据分块得到至少一个
数据块,对各个数据块进行压缩得到压缩数据,并对各个压缩数据进行存储,可减少I/O负
载,提升存储性能。
文件系统)系统等。
限定。
据块中除最后一个数据块以外的其他数据块的数据量均等于预置数据量。例如,当前需要
存储的数据的数据量为16MB,预置数据量为4MB,则客户端可以将该数据进行数据分块,得
到4个数据块,各个数据块的数据量为4MB,其中各个数据块的数据量与预置数据量相同。又
如,当前需要存储的数据的数据量为18MB,预置数据量为4MB,则客户端可以将该数据进行
数据分块,得到5个数据块,即第一数据块、第二数据块、第三数据块、第四数据块以及第五
数据块,其中第一数据块、第二数据块、第三数据块以及第四数据块的数据量均为4MB,第五
数据块的数据量为2MB,其中最后一个数据块(即第四数据块)的数据量小于预置数据量,其
他数据块的数据量均等于预置数据量。
如File)之后,可以对该数据进行数据分块,得到至少一个对象(例如Objects),进而客户端
可以根据预设规则确定各个数据块关联的对象存储器(Object‑based Storage Device,
OSD)。其中,云存储系统可以包括多个对象存储器,云存储系统可以包括一个主OSD和多个
备份OSD,客户端可以预先确定与各个对象存储器匹配的压缩算法,不同对象存储器匹配的
压缩算法中的压缩方式或者压缩比例可以不相同,例如第一对象存储器匹配的压缩算法中
的压缩方式为快速压缩,压缩比例为5:4;第二对象存储器匹配的压缩算法中的压缩方式为
标准压缩,压缩比例为2:1。
置放群组的群组标识进行处理,得到置放群组所包含的数据块关联的对象存储器。
预置消息摘要算法对各个对象的数据标识以及修正参数进行处理,得到该对象所属的PG。
示例性的,对象的数据标识可以是该对象的身份标识号(identification,ID)。预置消息摘
要算法可以包括安全哈希算法(Secure Hash Algorithm,SHA)或者消息摘要算法第五版
(Message Digest Algorithm MD5)等。进一步的,客户端确定对象所属的PG之后,还可以通
过预置消息摘要算法对云存储系统当前的运行状态和该PG的群组标识进行处理,得到该PG
所包含的数据块关联的对象存储器。其中,PG的群组标识可以是该PG的ID。云存储系统中
OSD集群所包含的OSD是根据物理节点的容错区域(比如机架或者机房等)进行划分的。进一
步的,客户端在PG到OSD的映射完成以后,可以根据与对象存储器匹配的压缩算法,对对象
存储器关联的数据块进行压缩,得到对象存储器关联的压缩数据。
储器,与第三对象存储器匹配的压缩算法为第三压缩算法,则客户端可以根据第三压缩算
法,对第一数据块进行压缩,得到第三对象存储器关联的压缩数据,该压缩数据为第一数据
块对应的压缩数据。又如,第二数据块关联的对象存储器为第一对象存储器,与第一对象存
储器匹配的压缩算法为第一压缩算法,则客户端可以根据第一压缩算法,对第二数据块进
行压缩,得到第一对象存储器关联的压缩数据,该压缩数据为第二数据块对应的压缩数据。
的数据量总和,当数据量总和位于预置数据量范围内时,客户端可以将预置数据量范围对
应的压缩算法作为与置放群组所包含的数据块关联的对象存储器匹配的压缩算法。
应的压缩算法为第二压缩算法;数据量范围为(5MB,10MB]时,对应的压缩算法为第三压缩
算法。客户端确定第一置放群组包含第一数据块和第二数据块,第一数据块的数据量为
3MB,第二数据块的数据量为5MB,则客户端可以确定第一置放群组所包含的所有数据块的
数据量总和为8MB,该数据量总和位于数据量范围(5MB,10MB]内,该数据量范围对应的压缩
算法为第二压缩算法,则客户端可以将第二压缩算法作为第一数据块关联的对象存储器匹
配的压缩算法,客户端也可以将第二压缩算法作为第二数据块关联的对象存储器匹配的压
缩算法,其中第一数据块关联的对象存储器可以和第二数据块关联的对象存储器相同。
息可以包括各个数据块的偏移,以及各个数据块对应的压缩数据所采用的压缩算法。
对该数据进行数据分块得到的各个数据块的数据量及其偏移。以图3所示的索引信息的示
意图为例,客户端可以在数据的头部,设计1KB的数据空间,用于存储索引信息。其中索引信
息可以包括索引头部和针对数据块的索引两部分,索引头部用于存储数据的数据量或者数
据块的数量等,针对数据块的索引区域用于存储压缩数据的压缩算法或者压缩数据的数据
量等。
客户端对数据进行数据分块得到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个数据块的索引的数据量。进一步
的,客户端可以根据各个数据块的偏移,在数据的偏移处,写入压缩数据。
示数据块对应的压缩数据的数据量。
该压缩数据存储到第三对象存储器中。又如,客户端根据第一压缩算法,对第二数据块进行
压缩,得到第一对象存储器关联的压缩数据之后,可以将该压缩数据存储到第一对象存储
器中。
缩数据进行存储。例如,客户端可以在对第二数据块进行压缩的同时,对压缩得到的第一数
据块对应的压缩数据进行存储,可提高数据存储效率。
压缩算法,确定各个压缩数据所需的解压缩算法,根据各个压缩数据所需的解压缩算法对
压缩数据进行解压缩,得到各个压缩数据对应的数据块,根据各个数据块的偏移,对各个数
据块进行组装得到数据。例如,客户端通过索引信息确定需要读取的数据进行数据分块得
到两个数据块,第一数据块对应的压缩数据的压缩算法为第三压缩算法,客户端可以通过
第三压缩算法对应的第三解压缩算法对第一数据块对应的压缩数据进行解压缩得到第一
数据块;第二数据块对应的压缩数据的压缩算法为第一压缩算法,客户端可以通过第一压
缩算法对应的第一解压缩算法对第二数据块对应的压缩数据进行解压缩得到第二数据块,
进而根据各个数据块的偏移对第一数据块和第二数据块进行组装得到需要读取的数据。
器关联的数据块进行压缩,得到对象存储器关联的压缩数据,将压缩数据存储到压缩数据
关联的对象存储器中,可提升网络性能。
实施例中的数据存储装置至少可以包括数据分块单元401、确定单元402、压缩单元403以及
存储单元404,其中:
数据之前,确定所述置放群组所包含的所有数据块的数据量总和。
的压缩算法。
据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
后,生成所述数据的索引信息,所述索引信息包括各个所述数据块的偏移,以及各个所述数
据块对应的压缩数据所采用的压缩算法。
所述对象存储器匹配的压缩算法,对所述对象存储器关联的数据块进行压缩,得到所述对
象存储器关联的压缩数据,存储单元404将所述压缩数据存储到所述压缩数据关联的对象
存储器中,可提高存储性能。
明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1所示的本发
明实施例。
些组件之间的连接通信。其中,输入装置503具体可以为网络接口等,用于接收数据获取请
求。其中,输出装置504具体可以为网络接口等,用于将所述压缩数据存储到所述压缩数据
关联的对象存储器中。其中,存储器505可能包含高速RAM存储器,也可能还包括非不稳定的
存储器,例如至少一个磁盘存储器,具体用于存储对象存储器匹配的压缩算法等。存储器
505可选的可以包含至少一个位于远离前述处理器501的存储装置。存储器505中存储一组
程序代码,且处理器501、输入装置503以及输出装置504调用存储器505中存储的程序代码,
用于执行以下操作:
据块中除所述最后一个数据块以外的其他数据块的数据量均等于所述预置数据量。
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁
碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access
Memory,RAM)等。