System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及存储,尤其涉及一种分布式对象存储系统中对象版本索引方法、装置和设备。
技术介绍
1、分布式对象存储以对象为单位存储和管理数据。对象存储采用扁平的命名空间,使用唯一的对象id来标识数据。目前应用比较广泛的分布式对象存储系统包括简单存储服务(simple storage service,s3)对象存储系统、openstack swift对象存储系统、ceph对象存储系统等。
2、在分布式对象存储中,每个数据对象在存储系统中都会关联一些元数据,元数据用于描述对象的属性和特征,元数据通常包括对象的存储位置信息、对象大小、创建/修改时间、访问权限、对象的相关标签等。对象元数据的管理可以通过数据库、索引结构等方式来实现,以便快速查询和检索对象的属性。
3、在对象存储系统中,对对象的版本通常使用版本控制机制进行控制和管理。版本控制机制允许存储系统为每个对象维护一个或多个不同的版本,以便记录并追踪对象的变化历史。数据对象的版本控制机制可以防止对象因为误删或误覆盖导致原有对象丢失,在多版本功能的保护下,对象被删除或多次覆盖后,历史对象仍然可以被找到。桶的多版本状态有开启、暂停和未开启三种状态。
4、以s3对象存储系统为例,s3中规定多版本功能开启状态下,重复上传的对象通过包含随机字符串的版本号进行区分,删除一个对象会生成一个带有删除标识的版本。在多版本功能暂停状态下,新上传的对象版本号是空(null),一个对象最多只会有一个null版本。多版本功能下的桶中有普通多版本对象、null版本对象和删除标
5、在现有的分布式对象存储系统中,多版本对象的主要使用场景有以下几种:
6、场景1、遍历对象历史版本,将遍历到的对象历史版本按照版本生成时间的先后顺序返回对象的历史版本信息;
7、场景2、删除当前的对象版本,删除后会将最近的历史版本变成当前版本;
8、场景3、操作指定历史版本的对象数据、属性等。
9、对象存储系统中一个数据对象主要包括对象数据和对象元数据两个部分,对象数据和对象元数据可以是分开存储在不同区域,为了提高对象的读取速度,多版本对象通常通过两个索引(即下面的索引一和索引二)分别实现多版本对象的遍历和读取等操作。之所以使用两个索引,是由多版本对象的使用场景决定的,通常情况下,索引通常以键值对即<key,value>的形式存放。
10、对象的索引通常存储在专门的索引池中,通过索引可以快速获取到不同版本对象的元数据。索引中根据使用场景通常包括对象名称+版本号,或包括对象名称+序列号+版本号。其中对象名称表示对象的唯一标识,版本号用于标识对象的版本,序列号用于标识版本的生成顺序。
11、索引一的主要作用是按照对象上传的先后顺序遍历出对象的所有历史版本,它的关键字key的组成通常是由<对象名称><序列><版本号>三个字段值组成的字符串(本专利技术中以“<字段名>”来指代索引中“字段名”对应字段的字段值),其中,“序列”即序列号,是有序的,版本越老“序列”值越大,有序遍历对象的历史版本可以通过“序列”实现有序排列。例如,客户端遍历一个对象的所有历史版本,客户端发送的遍历请求中会携带对象名称,服务端从请求中获取到对象名称后,从索引池中遍历出该对象名称的所有索引一,由于索引一的key中包括序列号字段值,<序列>以字典顺序排列,与版本生成的先后顺序一致,所以将对象的所有索引一按照字典序返回给客户端后,客户端展示的就是该对象的有序的历史版本,客户端会展示历史版本的版本号字段值。该场景下对象名用来查找索引一,序号用来排序,版本号用来展示。
12、索引二的主要作用是读取历史版本对象,它的key组成通常是由<对象名称><版本号>组成的字符串,当指定历史版本号读取或删除数据时,可以通过对象名称和版本号构造出索引二的key,从而获取到该对象指定版本号对应的元数据信息,进而可以根据元数据读取或删除指定版本号的对象数据。
13、例如,客户端发送请求获取指定版本号的历史版本对象数据或修改历史版本对象的属性等,由于通过索引一返回给客户端的对象信息包括“对象名”和“版本号”字段的值,因此客户端发送的该请求中会携带“对象名称”和“版本号”字段的值,服务端收到请求后,使用“对象名称”和“版本号”字段值拼出索引二的关键字key,然后去索引池中查到索引二的<key,value>,通过索引二的value值就可以获取到该对象指定版本号的历史版本对象的元数据信息了,进而就可以根据元数据信息进行相应的操作。
14、现有技术中,通过索引一和索引二的配合可实现对象存储系统(如s3)中对象历史版本的有序遍历(对象版本索引)和历史版本的读取、删除(对象版本管理)等功能。然而,现有对象版本索引及控制功能的实现方式需要为每个版本存储两个索引,同时在更新元数据的过程中还要保证两个索引保持一致,会占用过多索引池空间以及实现较为复杂。
技术实现思路
1、为解决现有技术中的技术问题,本专利技术提供一种分布式对象存储系统中对象版本索引方法、装置和设备,以提高对象版本的索引效率以及存储空间利用率。
2、基于本专利技术实施例的一方面,本专利技术提供一种对象版本索引方法,该方法包括:
3、在更新对象时,将更新前的对象及对象的版本索引转变成历史对象及历史版本索引,为更新后的对象生成当前版本索引,所述对象的版本索引包括索引关键字和索引值,索引关键字至少包括:对象名称、索引字符串和随机字符串;
4、当接收到遍历指定对象的历史版本请求时,从索引池中获取指定对象的所有版本索引,基于预定的生成规则使用版本索引中的序列字符串和随机字符串生成各版本的历史版本号,将包括对象名称和历史版本号的记录内容返回给请求端。
5、进一步地,所述基于预定的生成规则使用版本索引中的序列字符串和随机字符串生成各历史版本的历史版本号的方法为:
6、按预设字符混排规则将序列字符串和随机字符串混排,生成版本索引对应的历史版本号,以使生成的历史版本号呈现随机特性。
7、进一步地,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
8、按预设的插入位置将序列字符串插入到随机字符串中,生成历史版本号。
9、进一步地,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
10、将序列字符串打散,按位依序将序列字符串的字符插入到随机字符串的字符间隔当中,生成历史版本号。
11、进一步地,在按预设字符混排规则将序列字符串和随机字符串混排之前,还包括:采用预设可逆加密方式对序列字符串进行加密;
12、所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:按预设字符混排规则将加密后的序列字符串和随机字符串混排,生成版本索引对应的历史版本号。本文档来自技高网...
【技术保护点】
1.一种对象版本索引方法,其特征在于,该方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于预定的生成规则使用版本索引中的序列字符串和随机字符串生成各历史版本的历史版本号的方法为:
3.根据权利要求1所述的方法,其特征在于,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
4.根据权利要求1所述的方法,其特征在于,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
5.根据权利要求3或4所述的方法,其特征在于,
6.根据权利要求5所述的方法,其特征在于,所述采用预设可逆加密方式对序列字符串进行加密的方法为:
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
9.根据权利要求1所述的方法,其特征在于,
10.一种对象版本索引装置,其特征在于,该装置包括:
11.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过
12.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至9中任一项所述的方法。
...【技术特征摘要】
1.一种对象版本索引方法,其特征在于,该方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于预定的生成规则使用版本索引中的序列字符串和随机字符串生成各历史版本的历史版本号的方法为:
3.根据权利要求1所述的方法,其特征在于,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
4.根据权利要求1所述的方法,其特征在于,所述按预设字符混排规则将序列字符串和随机字符串混排的方法为:
5.根据权利要求3或4所述的方法,其特征在于,
6.根据权利要求5所述的方法,其特征在于,所述采用预设可逆加密方式对序列...
【专利技术属性】
技术研发人员:张治民,
申请(专利权)人:新华三云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。