基于对象存储的随机读写对象的方法和系统技术方案

技术编号:19388886 阅读:24 留言:0更新日期:2018-11-10 02:01
本发明专利技术提出一种基于对象存储的随机读写对象的方法和系统。在一个实施例中,一个完整对象由一个索引对象和至少一个数据对象构成,数据对象用于存储数据,索引对象用于提供对象的索引信息,其中索引头信息记录该完整对象的基本信息,数据段信息记录每个数据段与数据对象中的数据对应关系。在写入对象时,修改或新增的数据会以数据对象存储到存储设备中,同时更新索引对象内容。在读取对象时,从索引对象中的数据段信息获取对应的数据对象信息,匹配到对应的数据对象,读取数据对象获取所需数据。利用本发明专利技术的方法能够对对象进行快速随机读写,特别是针对非常大的对象,能够显著降低随机读写对象中资源的消耗,极大地提升读写效率。

Method and system for random read and write objects based on object storage

The invention proposes a method and system for random read and write objects based on object storage. In one embodiment, a complete object consists of an index object and at least one data object, which is used to store data, and an index object is used to provide index information of the object, in which index header information records the basic information of the complete object, and data segment information records the basic information of each data segment and data object. Data correspondence. When writing to an object, the modified or newly added data is stored in the storage device as a data object, and the index object content is updated at the same time. When reading the object, the corresponding data object information is acquired from the data segment information in the index object, matched to the corresponding data object, and read the data object to obtain the required data. The method of the present invention can rapidly read and write random objects, especially for very large objects, can significantly reduce the consumption of resources in random read and write objects, and greatly improve the reading and writing efficiency.

【技术实现步骤摘要】
基于对象存储的随机读写对象的方法和系统
本专利技术属于对象存储
,具体涉及一种随机读写对象的方法和系统。
技术介绍
随着互联网、Web2.0的快速发展,Web应用创建出数百亿的小文件;人们上传海量的照片、视频、音乐,Facebook每天都新增数十亿条内容,人们每天发送数千亿封电子邮件。据IDC统计未来在10年间数据将增长44倍,到2020年全球数据将增加到35ZB,其中80%是非结构化数据,且大部分是非活跃数据。面对如此庞大的数据量,仅具备PB级扩展能力的块存储(例如SAN架构)和文件存储(例如NAS架构)显得有些无能为力:通常SAN存储的一个LUN(逻辑单元号)容量仅数TB,单个文件系统最优性能情况下支持的文件数量通常也只在百万级别。人们需要一种全新架构的存储系统,这种存储系统需要具备极高的可扩展性,能够满足人们对存储容量TB到EB规模的扩展需求,于是对象存储应运而生。对象存储是一种基于对象的存储形态,在基于对象存储的存储系统或服务中,对象(Object)是存储的基本数据单位,用户上传的数据以对象的形式存储在一个或多个容器(Bucket,桶)中。对象存储采用扁平化结构管理所有数据,容器和对象都有一个全局唯一的ID,用户/应用经过认证接入后,只需要根据ID就可以访问容器/对象及相关的数据(Data)、元数据(metadata)和对象属性(Attribute),解决了文件系统复杂目录树结构在海量数据情况下的数据查找耗时长的问题,这使得对象存储具备极强的扩展性。同时也能更好的满足特定非结构化数据(例如监控视频、话务中心录音、单据扫描图片等特定应用)的存储要求。REST(RepresentationalStateTransfer,表述性状态转移)风格的接口已成为对象存储的事实标准,支持简单的命令实现读写等操作。对象存储通常提供基于HTTP协议的RESTfulWebAPI,用户通过标准HTTP请求中的PUT和GET等操作进行数据的上传即写入和下载即读取,通过DELETE操作删除数据。对象存储和文件存储系统在接口上的本质区别是对象存储不支持随机位置写操作。如果要修改一个对象,只能先GET整个对象下来在本地修改,再重新PUT到象存储设备里,覆盖之前的对象或者形成一个新的版本。面对大量随机读写的场景,特别是针对GB和TB级别大小的对象,对象存储的缺点就暴露出来了,对CPU、内存和网络带宽的要求非常高,即使在资源条件很高的情况下,随机读写耗时也很长。
技术实现思路
专利技术目的:针对现有技术的不足,本专利技术提出一种基于对象存储的随机读写对象的方法,以索引对象和至少一个数据对象来构成一个向用户提供服务的完整对象,在索引对象中记录各个数据对象中的数据在整个数据段中的位置关系,基于这样的存储方式能够大大缩短随机读写时间。本专利技术的另一目的在于提供一种相应的支持快速随机读写的对象存储系统。技术方案:本专利技术所述的一种基于对象存储的对象写入方法,在创建新对象时包括以下步骤:判断待写入数据的大小是否大于预先设定的数据段分片粒度,如果是,则以数据段分片粒度为单位将数据分割为指定大小的数据段,如果小于则不分割;创建索引对象,根据数据分片结果创建至少一个数据对象,所述索引对象和所述至少一个数据对象构成一个完整对象,在索引对象中记录索引头信息和数据段信息,索引头信息包括该对象的基本信息,数据段信息包括数据段与数据对象中数据的对应关系。具体地,索引头信息包括:对象标识:表示该对象是否为索引对象,数据总长度:表示完整对象中所有数据对象的总长度,数据段个数:表示完整对象中数据段的个数;数据段信息包括:数据偏移:表示该数据段在整个数据中的偏移,数据对象中的偏移:表示该数据段在对应的数据对象中的偏移,数据段长度:表示该数据段的长度。基于此,在创建新对象过程中,数据对象的数据偏移从0开始递增,下一数据对象的数据偏移为上一数据对象的数据偏移和数据段长度之和,数据对象中的偏移均为0。在已写入的对象基础上修改对象包括以下步骤:判断待写入数据的大小是否大于当前对象中的数据段分片粒度,如果是,则以数据段分片粒度为单位将数据分割为指定大小的数据段,如果小于则不分割;根据分片结果创建相应数目的新的数据对象;修改索引对象:根据随机写的位置在已有数据段信息中增加一条或多条关于新数据对象的数据段信息,当写入位置位于已有数据对象中时,还需对被修改的数据对象及位置在其之后的数据对象的数据段信息进行修改,最后更新索引头信息中的数据总长度、数据段个数。基于上述对象写入方法实现的对象读取方法包括:先读索引对象,从索引对象中的数据段信息中获取对应的数据对象信息,根据数据偏移匹配到对应的数据对象,读取数据对象获取所需要的数据。相应地,对象删除方法包括:先读取索引对象,获取索引头信息和数据段信息,根据数据段信息删除所有的数据对象,最后删除索引对象。遍历对象时,只需要列出所有索引对象即可。一种支持快速随机读写的对象存储系统,包括客户端和对象存储设备,其中,客户端包括第一客户端和/或第二客户端,第一客户端为使用普通对象存储方式的标准客户端,第二客户端为支持本专利技术所述方法读写对象的客户端,当用户使用第一客户端时,所述系统还包括网关,第一客户端通过网关访问对象存储设备,根据用户需求对基于上述对象写入方法写入的对象进行读取、删除、遍历操作;当用户使用第二客户端时,第二客户端直接访问对象存储设备,根据用户需求使用上述写入、读取、删除、遍历方法进行相应的对象操作。具体地,网关包括请求分析模块、透传模块、SDK读取模块、SDK遍历模块和SDK删除模块,请求分析模块获取第一客户端的操作请求,根据请求类型和请求目标调用其他模块:1)当请求类型是读取、删除或遍历请求时,分析被请求的对象是否为索引对象,如果是,则调用相应的SDK读取模块、SDK遍历模块或SDK删除模块进行处理;如果被请求的对象为标准对象,对于读取请求直接通过透传模块获取数据,对于删除请求直接删除对象,对于遍历请求不做处理。2)如果请求类型是其他请求,则直接通过透传模块将请求透传到对象存储设备中,由对象存储设备来处理。SDK读取模块被调用后,先读取索引对象的数据,解析索引对象中的数据段信息,根据数据段信息再读取对应的数据对象中的数据,返回读取结果。SDK遍历模块被调用后遍历所有索引对象并列出结果,如果索引对象单独存放于指定容器,则直接遍历索引所在指定容器中的对象并返回遍历结果;如果索引对象和数据对象存放在同一个容器,则根据对象名前缀来判断是索引对象还是数据对象,列出所有的索引对象。SDK删除模块被调用后,先读取索引对象,通过索引对象中的数据段信息找到具体的数据对象并将其删除,待所有的数据对象被删除后,再删除索引对象。第二客户端包括SDK写入模块、SDK读取模块、SDK遍历模块和SDK删除模块,其中,SDK读取模块、SDK遍历模块和SDK删除模块完成的功能以及处理步骤与网关中相应模块相同,SDK写入模块用于以上述对象写入方法将数据写入对象存储设备。有益效果:与现有技术相比,本专利技术具有以下有益效果:1、本专利技术的方法在对象存储过程中对数据进行分片处理,利用至少两个对象提供服务,通过数据对象来存储数据,通过索引对象来记录数据段对应的分片对象的位置。本文档来自技高网
...

【技术保护点】
1.一种基于对象存储的对象写入方法,其特征在于,创建新对象包括:判断待写入数据的大小是否大于预先设定的数据段分片粒度,如果是,则以数据段分片粒度为单位将数据分割为指定大小的数据段,如果小于则不分割;创建索引对象,根据数据分片结果创建至少一个数据对象,所述索引对象和所述至少一个数据对象构成一个完整对象,在所述索引对象中记录索引头信息和数据段信息,所述索引头信息包括该对象的基本信息,所述数据段信息包括数据段与数据对象中数据的对应关系。

【技术特征摘要】
1.一种基于对象存储的对象写入方法,其特征在于,创建新对象包括:判断待写入数据的大小是否大于预先设定的数据段分片粒度,如果是,则以数据段分片粒度为单位将数据分割为指定大小的数据段,如果小于则不分割;创建索引对象,根据数据分片结果创建至少一个数据对象,所述索引对象和所述至少一个数据对象构成一个完整对象,在所述索引对象中记录索引头信息和数据段信息,所述索引头信息包括该对象的基本信息,所述数据段信息包括数据段与数据对象中数据的对应关系。2.根据权利要求1所述的对象写入方法,其特征在于,所述索引头信息包括:对象标识:表示该对象是否为索引对象;数据总长度:表示完整对象中所有数据对象的总长度;数据段个数:表示完整对象中数据段的个数;所述数据段信息包括:数据偏移:表示该数据段在整个数据中的偏移;数据对象中的偏移:表示该数据段在对应的数据对象中的偏移;数据段长度:表示该数据段的长度。3.根据权利要求2所述的对象写入方法,其特征在于,所述创建新对象过程中,数据对象的数据偏移从0开始递增,下一数据对象的数据偏移为上一数据对象的数据偏移和数据段长度之和,数据对象中的偏移均为0。4.根据权利要求2所述的对象写入方法,其特征在于,修改对象包括:判断待写入数据的大小是否大于当前对象中的数据段分片粒度,如果是,则以数据段分片粒度为单位将数据分割为指定大小的数据段,如果小于则不分割;根据分片结果创建相应数目的新的数据对象;修改索引对象:根据随机写的位置在已有数据段信息中增加一条或多条关于新数据对象的数据段信息,当写入位置位于已有数据对象中时,对该被修改的数据对象及其之后的数据对象的数据段信息进行修改,最后更新索引头信息中的数据总长度、数据段个数。5.一种根据权利要求1-4中的任一项所述的对象写入方法实现的对象读取方法,其特征在于,包括:先读索引对象,从索引对象中的数据段信息获取对应的数据对象信息,根据数据偏移匹配到对应的数据对象,读取数据对象获取所需要的数据。6.一种根据权利要求1-4中的任一项所述的对象写入方法实现的对象删除方法,其特征在于,包括:先读取索引对象,获取索引头信息和数据段信息,根据数据段信息删除所有的数据对象,最后删除索引对象。7.一种支持快速随机读写的对象存储系...

【专利技术属性】
技术研发人员:V·W·陈蒋建涛盛滢吴永凯
申请(专利权)人:南京紫光云信息科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1