基于IPFS的去中心化数据库解决方法与流程

文档序号:35001780发布日期:2023-08-04 01:32阅读:20来源:国知局
本发明涉及文件存储领域,具体来说,涉及基于ipfs的去中心化数据库解决方法。
背景技术
::1、ipfs是一个去中心化的文件存储系统,是web3技术栈中比较重要的一环,很多dapp去中心化应用的文件存储层,但是中间一般还需要有一个去中心化的数据库来充当业务数据的crud[crud是指在做计算处理时的增加(create)、读取(read)、更新(update)和删除(delete)几个单词的首字母简写]。这和传统web2是一样的分层方式。2、在web3中,基于ipfs构建的现有去中心化数据库方案有orbitdb、avondb和threaddb。这些现有技术的存储数据架构,可以理解为在去中心化网络中每个节点都有一个完整的数据副本copy,每个节点都可以进行crud,并且将这些数据更新通过ipfs的pubsub协议(类似gossip的p2p协议)同步到其他节点,其他节点收到更新数据请求后,会将更新数据合并到本节点的副本中。最终达到每个节点的副本数据的一致性。基本数据架构如图13-14。图13可以看到,每个节点都是有完整数据的一个副本,并且多个节点发生更新的时候,会互相同步到其他节点,图14可以看到最终同步完成后,每个节点都保持了最新的完整数据副本。3、基于ipfs的现有方案是每个节点保存了一个副本,在写入更新的时候通过pubsub协议进行去中心化网络数据传播同步。这个方案有如下几个缺点:4、1)存储容量存在单点瓶颈:因为每个节点都保存了完整的数据副本,所以数据量特别大的时候,很快会达到单节点的存储瓶颈。而且很多ipfs节点可能并不是一个服务器的形式,有可能服务器的性能、规格差异比较大,对于一些节点规格不高的情况下,影响很大。5、2)扩展性差:每当新加入一个节点,都需要完整拷贝一遍完整的数据副本到本地,性能低下。且新加入的节点可能规格比较小,这个时候扩展起来更慢。6、3)存储成本高:相同的数据被存储了n份,这个n就是加入到这个表格的p2p网络节点个数。例如一个10个节点的p2p网络创建一个有10g大小的testtable01,那么整个网络将存在10*10g的数据分布在每个节点上,严重浪费存储空间。7、4)同步性能差:每次插入一批数据的时候,需要把这批数据也同步到所有节点上,带宽浪费也比较严重。例如一个10个节点的p2p网络有一张testtable01表,插入1w行数据时,这1w行数据会分别分发数据到另外9个节点上,总的网络流通大概为1w*10次=10w行数据,对于网络的消耗也不可忽视。并且随着同步的数据量变大,其同步时间也必然随着数据量的增大而有所变慢。8、针对相关技术中的问题,目前尚未提出有效的解决方案。技术实现思路1、针对相关技术中的问题,本发明提出基于ipfs的去中心化数据库解决方法,以克服现有相关技术所存在的上述技术问题。2、为此,本发明采用的具体技术方案如下:3、基于ipfs的去中心化数据库解决方法,该方法包括以下步骤:4、s1、基于ipfs去中心化文件系统,抽象一层table数据的逻辑目录结构的表示格式;5、s2、基于ipfs的功能及有向无环图,对table数据的逻辑目录结构的元信息进行表示,并得到table数据的有向无环图元信息;6、s3、获取table数据的有向无环图元信息之后,每个节点保留table数据的逻辑目录结构的有向无环图元信息;7、s4、若一个节点的数据更新,则该节点的有向无环图的变更同步到其他节点。8、进一步的,所述table数据的逻辑目录结构中的逻辑文件对象被拆分为若干block并存储在ipfs去中心化文件系统上。9、进一步的,所述ipfs以key-value的形式存储数据,其中key与内容相关联,且若key相同,则data内容相同,同时在data内容保存其他key值,并形成一个链或者一个有向无环图。10、进一步的,所述获取table数据的有向无环图元信息之后,每个节点保留table数据的逻辑目录结构的有向无环图元信息包括以下步骤:11、处理数据时,对数据目录的有向无环图元信息进行管理,且使有向无环图的树最底下的节点指向一个文件节点;12、将文件切分为若干block分散存储在基于ipfs去中心化文件系统上;13、使p2p的每个节点保存部分的table数据的逻辑目录有向无环图元信息。14、进一步的,所述有向无环图获取后,且一张表插入数据之前,每个节点均有一张表的当前状态下的数据目录有向无环图1信息,且获取有向无环图1的tabledircid,并得到所有的子目录节点地址,同时查到这个表的所有逻辑目录下的各种子目录与子文件内容。15、进一步的,所述有向无环图获取后,若发生一张表插入更新数据并同步时,各个节点保持有向无环图2元信息。16、进一步的,所述若一个节点的数据更新,则该节点的有向无环图的变更同步到其他节点包括以下步骤:17、在插入数据前,当前table在所有节点的元数据均为有向无环图1;18、用户向节点1插入数据成功后,节点1的有向无环图1更新为有向无环图2;19、节点1向基于ipfs的整个p2p网络的其他节点发出同步变更信息,且消息事件为有向无环图1更新为有向无环图2;20、每个节点接收有向无环图更新消息后,将本地的有向无环图1同步变更为有向无环图2,使整个p2p网络达到一致性状态。21、进一步的,所述节点的有向无环图的变更同步到其他节点时,有向无环图所表示的数据存储在基于ipfs去中心化文件系统中。22、进一步的,所述将本地的有向无环图1同步变更为有向无环图2时,若出现冲突则根据具体情况进行解决。23、进一步的,所述若出现冲突则根据具体情况进行解决包括以下步骤:24、若节点的当前内容标识符等于旧内容标识符,则将当前内容标识符更新为旧内容标识符;25、若当前内容标识符、旧内容标识符及新内容标识符均不相等,且旧内容标识符及新内容标识符均位于历史内容标识符列表中,则忽略;26、若当前内容标识符等于新内容标识符,则忽略;27、若当前内容标识符、旧内容标识符及新内容标识符均不相等,且旧内容标识符及新内容标识符均不位于历史内容标识符列表中,则将当前内容标识符更新为新内容标识符。28、本发明的有益效果为:29、(1)本发明基于ipfs上设计的表逻辑元数据目录,使用有向无环图来表示它,并设计了表的curd过程的更新、合并策略,解决了现有技术方案的缺点,具有不容易达到单点容量瓶颈、扩展性很好、存储成本低、同步性能好的优点。30、(2)现有方案是每个节点保存了完整的数据副本,本发明只有少数目录信息表示,相比之下是比较难达到单节点的容量瓶颈。31、(3)本发明扩展性和元数据、数据存储的方式息息相关,本发明的node不需要存储完整副本的数据的情况下,扩容、缩容更加简单快速,同时存储成本也会降低。32、(4)本发明不管是新加入节点,还是插入数据,都只会同步一个dag元数据到其他节点,远远降低了数据同步的数据量,从而性能、延时也是大大提升。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1