System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于LSM-Tree的海量对象索引优化方法技术_技高网

一种基于LSM-Tree的海量对象索引优化方法技术

技术编号:41348192 阅读:7 留言:0更新日期:2024-05-20 10:02
本发明专利技术公开了一种基于LSM‑Tree的海量对象索引优化方法,属于分布式存储技术领域,其结合LSM‑Tree原理将索引数据存储至RGW对象中,将对象索引数据进行分层处理,逐步将索引数据记录存储到RGW的普通对象数据中;避免了使用RocksDB管理索引数据面临的问题,提升了存储系统的稳定性和运行效率;直接使用高速内存维护新增的索引数据,并逐步将其迁移存储至RGW对象中,可以高效处理大量索引,提高系统的性能;将索引数据存聚合存储在RGW普通对象中,能够以很高的带宽下载全量索引数据,并且索引数据量越多,导出速度优势越明显,使用Ceph自身的对象存储服务持久化存储索引数据,不依赖数据库等其他组件,减少了故障点,降低了系统的复杂度和维护成本。

【技术实现步骤摘要】

本专利技术属于分布式存储,尤其涉及一种基于lsm-tree的海量对象索引优化方法。


技术介绍

1、ceph作为一种常见的分布式存储系统可以结合对象存储网关(rgw)提供对象存储服务,用户通过rgw创建存储空间(bucket)来访问对象存储的资源。rgw通过bucket index存储bucket的索引数据,bucket index的数据存储在若干个shard文件中(主要以omap-keys方式存储在rocksdb中)。ceph的这种对象索引维护方式存在一些不足之处,例如随着对象数量增加,整个shard文件的体积也在不断增长,当shard文件体积过大就会引发严重的问题。首先是对bucket index pool进行scrub或deep-scrub操作时,过大的shard文件会极大消耗底层存储设备性能,造成io请求超时,从而影响到整个对象存储服务的可用性。其次是当存储bucket index数据的osd因故障而进行数据恢复时,rocksdb在恢复过大的shard文件数据时会因为耗尽存储节点的性能引起osd响应超时从而导致整个集群崩溃。最后,在按序导出全量对象索引数据的时候,当对象数量很多的情况下,受限于单线程操作的限制,整个导出操作耗时极长。

2、目前,一种ceph存储对象搜索方法、装置及存储设备:该专利描述了一种优化ceph对象索引方法,通过在数据库上额外存储一份对应的索引数据,并且根据分类来提高对象的查询效率。该专利引入数据库组件记录对象索引的做法增加了系统复杂性和维护成本,同时使用交叉分类的方式组织对象索引会提升存储成本。

3、一种ceph对象存储元数据处理的优化方法及装置:该专利专利技术了一种通过内存管理对象元数据(包括索引数据)的方法,额外增加一个元数据引擎访问内存中数据,虽然内存操作高效,但是其依赖key-value型数据库进行持久化操作,整个系统设计复杂,而且元数据引擎容易引起单点故障,维护成本高。

4、目前,有两种可行的办法可以解决ceph对象存储的海量对象索引带来的问题。第一种是使用indexless bucket,也就是说不维护存储空间的对象索引,此办法虽然避免了上述问题,但是用户将无法遍历对象,从而丧失了对数据的全局掌握。第二种办法是使用额外的组件(如数据库)维护对象索引,此办法虽然能达到bucket index同样的效果,并且可以解决其面临的问题,但是额外的组件会引入新的故障点,从而增加了系统复杂性和维护成本。因此,在海量对象场景下ceph对象存储服务的索引优化效果还有进一步提升的空间。


技术实现思路

1、本专利技术所要解决的技术问题是针对
技术介绍
的不足提供本专利技术提出一种基于lsm-tree的海量对象索引优化方法,其结合lsm-tree原理将索引数据存储至rgw对象中,避免了使用rocksdb管理索引数据面临的问题,提升了存储系统的稳定性和运行效率。

2、本专利技术为解决上述技术问题采用以下技术专利技术:

3、一种基于lsm-tree的海量对象索引优化方法,将对象索引数据进行分层处理,逐步将索引数据记录存储到rgw的普通对象数据中;具体包含如下步骤;

4、步骤1,将新增的对象索引写入内存,在内存中使用avl树的数据结构管理新增的对象索引,有序地维护索引数据,处理大量并发建立对象索引请求;

5、步骤2,将内存中的对象索引数据按序记录到rgw追加写对象中,当内存中记录的索引数据达到一定规模后,将其填充对齐后以追加写的方式按序记录到rgw对象中,索引数据写入rgw追加写对象后删除内存中的索引数据;

6、步骤3,将追加写对象记录的索引数据分级对齐压缩并将结果写入到rgw普通对象中;获取rgw中已有的普通对象存储的索引数据,将rgw追加写对象存储的索引数据和存在的rgw普通对象索引数据进行分级对齐压缩后记录到新的rgw普通对象中,删除rgw追加写对象和原来的rgw普通对象。

7、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤1中,基于lsm-tree原理管理对象索引数据,对象索引数据记录在内存和rgw对象中,新上传的对象索引先记录在内存中,索引数据内存部分使用avl树数据结构进行排序管理。

8、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤2,当内存中记录的索引数据规模到达设定阈值后,将其以追加写的方式按序记录到rgw追加写对象中,如果之前已经存在部分被记录的rgw对象数据,则将排序后的索引数据追加至未压缩索引数据后面,以未压缩索引数据的追加部分表示追加部分的索引数据。

9、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤2,rgw支持以指定postion的方式多次追加数据至一个对象,通过追加写方式上传的对象为追加写对象;当第一次上传数据时postion=0,后续上传数据时postion的值为追加写对象当时的大小。

10、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤2,未压缩索引数据和未压缩索引数据追加部分都是未经压缩的索引数据,存在重复的部分,如果重复上传名为chengdu的对象,则索引数据从内存记录到rgw对象后存在两条重复的索引分别位于未压缩索引数据和未压缩索引数据追加部分中。

11、整个追加写对象保存的索引数据是部分排序的,为了方便寻址,需要将其定期合并压缩为一份全部排序的普通对象索引数据。

12、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤2,将未压缩索引数据和未压缩索引数据追加部分所示的追加写对象数据与压缩索引数据所示的已有压缩完成后的有序索引数据进合并压缩,形成一份完整的排序后的对象索引数据,并将其存储在普通rgw对象中,如合并压缩索引数据所示,合并压缩完成后即可删除未压缩索引数据、未压缩索引数据追加部分和压缩索引数据所示的数据。

13、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤3中,数据分级对齐压缩,具体如下:

14、重复上传同一个对象会覆盖原有对象的数据,为了准确地建立对象索引,在未压缩索引数据和未压缩索引数据追加部分所示的追加写对象保存的索引数据重新排序合并到普通对象数据的过程中,需要去除重复的索引数据,且每个对象索引只保留最新的一条数据,此过程称为压缩;

15、在未压缩索引数据和未压缩索引数据追加部分中分别记录了对象名为chengdu的索引,将未压缩索引数据和未压缩索引数据追加部分和压缩索引数据的数据进行合并的时候,只保留chengdu对象最新的一条索引数据,即合并压缩索引数据。

16、作为本专利技术一种基于lsm-tree的海量对象索引优化方法的进一步优选专利技术,在步骤3中,将内存中的索引数据记追加写入rgw对象时进行对齐处理,具体如下:将每条索引数据的长度填充至一致;假设每条索引的本文档来自技高网...

【技术保护点】

1.一种基于LSM-Tree的海量对象索引优化方法,其特征在于:将对象索引数据进行分层处理,逐步将索引数据记录存储到RGW的普通对象数据中;具体包含如下步骤;

2.根据权利要求1所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤1中,基于LSM-Tree原理管理对象索引数据,对象索引数据记录在内存和RGW对象中,新上传的对象索引先记录在内存中,索引数据内存部分使用AVL树数据结构进行排序管理。

3.根据权利要求1所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤2,当内存中记录的索引数据规模到达设定阈值后,将其以追加写的方式按序记录到RGW追加写对象中,如果之前已经存在部分被记录的RGW对象数据,则将排序后的索引数据追加至未压缩索引数据后面,以未压缩索引数据的追加部分表示追加部分的索引数据。

4.根据权利要求3所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤2,RGW支持以指定postion的方式多次追加数据至一个对象,通过追加写方式上传的对象为追加写对象;当第一次上传数据时postion=0,后续上传数据时postion的值为追加写对象当时的大小。

5.根据权利要求1所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤2,未压缩索引数据和未压缩索引数据追加部分都是未经压缩的索引数据,存在重复的部分,如果重复上传名为chengdu的对象,则索引数据从内存记录到RGW对象后存在两条重复的索引分别位于未压缩索引数据和未压缩索引数据追加部分中;

6.根据权利要求5所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤2,将未压缩索引数据和未压缩索引数据追加部分所示的追加写对象数据与压缩索引数据所示的已有压缩完成后的有序索引数据进合并压缩,形成一份完整的排序后的对象索引数据,并将其存储在普通RGW对象中,如合并压缩索引数据所示,合并压缩完成后即可删除未压缩索引数据、未压缩索引数据追加部分和压缩索引数据所示的数据。

7.根据权利要求1所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤3中,数据分级对齐压缩,具体如下:

8.根据权利要求7所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤3中,将内存中的索引数据记追加写入RGW对象时进行对齐处理,具体如下:将每条索引数据的长度填充至一致;假设每条索引的长度固定为n字节,获取从offset字节开始的100个对象索引直接请求RGW获取对象[offset,offset+100*n]范围内的数据即可。

9.根据权利要求8所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤3中,将每条索引数据填充至固定长度会浪费存储空间,使用分级对齐的处理方法,设置多个长度区间,根据索引数据的长度所处的区间分别将其填充后存储在不同的RGW对象,将索引数据的长度划分为2个区间:

10.根据权利要求1所述的一种基于LSM-Tree的海量对象索引优化方法,其特征在于:在步骤3中,将索引数据进行分级对齐压缩后记录在RGW普通对象中,由于每个对象中的索引都是不重复而且严格有序的,而且每个索引的大小一致,通过稀疏索引可以快速锁定指定索引所在的数据范围;其中,RGW支持对象数据范围下载和拷贝的操作。

...

【技术特征摘要】

1.一种基于lsm-tree的海量对象索引优化方法,其特征在于:将对象索引数据进行分层处理,逐步将索引数据记录存储到rgw的普通对象数据中;具体包含如下步骤;

2.根据权利要求1所述的一种基于lsm-tree的海量对象索引优化方法,其特征在于:在步骤1中,基于lsm-tree原理管理对象索引数据,对象索引数据记录在内存和rgw对象中,新上传的对象索引先记录在内存中,索引数据内存部分使用avl树数据结构进行排序管理。

3.根据权利要求1所述的一种基于lsm-tree的海量对象索引优化方法,其特征在于:在步骤2,当内存中记录的索引数据规模到达设定阈值后,将其以追加写的方式按序记录到rgw追加写对象中,如果之前已经存在部分被记录的rgw对象数据,则将排序后的索引数据追加至未压缩索引数据后面,以未压缩索引数据的追加部分表示追加部分的索引数据。

4.根据权利要求3所述的一种基于lsm-tree的海量对象索引优化方法,其特征在于:在步骤2,rgw支持以指定postion的方式多次追加数据至一个对象,通过追加写方式上传的对象为追加写对象;当第一次上传数据时postion=0,后续上传数据时postion的值为追加写对象当时的大小。

5.根据权利要求1所述的一种基于lsm-tree的海量对象索引优化方法,其特征在于:在步骤2,未压缩索引数据和未压缩索引数据追加部分都是未经压缩的索引数据,存在重复的部分,如果重复上传名为chengdu的对象,则索引数据从内存记录到rgw对象后存在两条重复的索引分别位于未压缩索引数据和未压缩索引数据追加部分中;

6.根据权利要求5所述的一种基于lsm-tree的海量...

【专利技术属性】
技术研发人员:刘百川黄鹄林洁琬
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1