System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据库,尤其是涉及一种ipfs的键值对存储扩展系统和方法。
技术介绍
1、星际文件系统ipfs是一个去中心化的、内容寻址的、多版本的点对点文件系统,采用了默克尔有向无环图结构和分布式哈希表技术,实现了全球范围内的文件存储和共享。由于其存储空间大、多版本、不存储重复数据等优势,ipfs在互联网等各个领域都具有极高的应用价值。
2、作为一个存储系统,ipfs的i/o性能至关重要。然而,ipfs的i/o性能并不够优秀,其底层的存储机制和路由机制使得i/o操作的响应时间较高。另外,ipfs只提供了文件读写接口,无法被上层应用直接调用,这阻碍了其应用生态圈的进一步扩大。所以,i/o性能不高和接口类型单一是ipfs亟待优化的两点不足。
技术实现思路
1、针对现有技术中存在的问题,本专利技术提供了一种ipfs的键值对存储扩展系统和方法,至少部分的解决现有技术中存在的i/o性能不高和接口类型单一的问题。
2、第一方面,本公开实施例提供了一种ipfs的键值对存储扩展系统,包括内存数据库模块、ssdag读写模块、ssdag合并模块、版本管理模块和缓存系统模块;
3、所述内存数据库模块包括冻结跳表,所述内存数据库模块,用于调用ssdag读写模块将冻结跳表中的数据进行刷盘,刷盘后冻结跳表被释放;
4、所述ssdag读写模块,用于提供读和写两个操作结构,当内存数据达到设定阈值时,写操作结构将内存数据排序并迭代,从而生成数据块,最后形成ssdag存
5、所述ssdag合并模块,用于将硬盘上的ssdag进行合并,将读操作的执行控制在常数时间;
6、所述版本管理模块,用于自定义的版本控制模型;
7、所述缓存系统模块,用于将访问次数超过设定访问阈值的块缓存在内存中,以此来加速读操作。
8、可选的,所述内存数据库模块还包括活跃跳表。
9、可选的,所述述内存数据库模块发生写请求时,内存数据库先将键值对数据驻留在活跃跳表中,等到活跃跳表的数据达到设定跃跳阈值后,活跃跳表的数据被转换成只读的冻结跳表,并新建立空活跃跳表处理写操作。
10、可选的,读操作是写操作的逆操作,当需要读取ssdag时,读操作结构将读取索引块,根据索引块的索引信息确定要读取的数据块,ssdag一次读取1到2个数据块。
11、可选的,所述ssdag合并模块定期检测硬盘的ssdag的状态,当某一层ssdag过多时,选定符合要求的ssdag进行多路归并排序操作,并将新生成的ssdag写入硬盘,最后将合并的版本增量写入版本管理模块的元数据表。
12、可选的,所述版本管理模块将各个节点最新生成的版本块发送到网络中,网络的节点收到版本块后依据设定的策略将该版本块的内容合并到节点的元数据表中。
13、可选的,所述缓存系统模块为基于lru算法的缓存模块,所述缓存系统模块将被访问次数达到设定数值的数据块以哈希表的形式缓存在内存中,并采用lru算法管理数据块的更新。
14、第二方面,本公开实施例还提供了一种ipfs的键值对存储扩展方法,应用于第一方面任一所述的系统,包括:
15、输入数据以跳表的形式存储到内存数据库模块中;
16、内存中的数据达到阈值时,以ssdag的形式序列化到ipfs底层存储中;
17、将ssdag的元数据添加到内存中的元数据表;
18、每次元数据表的更新生成一个对应的版本块,多个版本块之间形成链式结构。
19、可选的,内存中的数据达到阈值时,以ssdag的形式序列化到ipfs底层存储中,包括:每个ssdag包含了多个数据块和一个索引数据块;
20、数据块存储键值对数据,索引数据块存储各个数据块的索引信息;
21、读取ssdag时,获取索引块的内容地址并根据内容地址获取索引块,索引块包含了所有数据块的索引信息,基于索引信息判断该ssdag中是否包含要寻找的键;
22、数据块中的数据按从小到大排列,再根据索引信息查找数据块。
23、可选的,所述索引信息,包括内容地址、最大键和最小键。
24、本专利技术提供的ipfs的键值对存储扩展系统和方法。其中该ipfs的键值对存储扩展系统,通过设置内存数据库模块、ssdag读写模块、ssdag合并模块、版本管理模块和缓存系统模块,扩展了简单易用的接口,从而达到提高i/o性能和丰富接口类型的目的。
本文档来自技高网...【技术保护点】
1.一种IPFS的键值对存储扩展系统,其特征在于,包括内存数据库模块、SSDAG读写模块、SSDAG合并模块、版本管理模块和缓存系统模块;
2.根据权利要求1所述的IPFS的键值对存储扩展系统,其特征在于,所述内存数据库模块还包括活跃跳表。
3.根据权利要求2所述的IPFS的键值对存储扩展系统,其特征在于,所述述内存数据库模块发生写请求时,内存数据库先将键值对数据驻留在活跃跳表中,等到活跃跳表的数据达到设定跃跳阈值后,活跃跳表的数据被转换成只读的冻结跳表,并新建立空活跃跳表处理写操作。
4.根据权利要求2所述的IPFS的键值对存储扩展系统,其特征在于,读操作是写操作的逆操作,当需要读取SSDAG时,读操作结构将读取索引块,根据索引块的索引信息确定要读取的数据块,SSDAG一次读取1到2个数据块。
5.根据权利要求2所述的IPFS的键值对存储扩展系统,其特征在于,
6.根据权利要求2所述的IPFS的键值对存储扩展系统,其特征在于,
7.根据权利要求2所述的IPFS的键值对存储扩展系统,其特征在于,
9.根据权利要求8所述的IPFS的键值对存储扩展方法,其特征在于,内存中的数据达到阈值时,以SSDAG的形式序列化到IPFS底层存储中,包括:每个SSDAG包含了多个数据块和一个索引数据块;
10.根据权利要求9所述的IPFS的键值对存储扩展方法,其特征在于,所述索引信息,包括内容地址、最大键和最小键。
...【技术特征摘要】
1.一种ipfs的键值对存储扩展系统,其特征在于,包括内存数据库模块、ssdag读写模块、ssdag合并模块、版本管理模块和缓存系统模块;
2.根据权利要求1所述的ipfs的键值对存储扩展系统,其特征在于,所述内存数据库模块还包括活跃跳表。
3.根据权利要求2所述的ipfs的键值对存储扩展系统,其特征在于,所述述内存数据库模块发生写请求时,内存数据库先将键值对数据驻留在活跃跳表中,等到活跃跳表的数据达到设定跃跳阈值后,活跃跳表的数据被转换成只读的冻结跳表,并新建立空活跃跳表处理写操作。
4.根据权利要求2所述的ipfs的键值对存储扩展系统,其特征在于,读操作是写操作的逆操作,当需要读取ssdag时,读操作结构将读取索引块,根据索引块的索引信息确定要读取的数据块,s...
【专利技术属性】
技术研发人员:江晶,
申请(专利权)人:上海丛云信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。