基于区块链的数据读写分离存取方法、系统及装置与流程

文档序号:35018091发布日期:2023-08-04 08:56阅读:53来源:国知局
基于区块链的数据读写分离存取方法、系统及装置与流程

本发明涉及区块链领域,尤其涉及一种基于区块链的数据读写分离存取方法、系统及装置。


背景技术:

1、在区块链系统中,数据的存储一直是一个重要的问题。由于区块链的分布式性质和不可篡改的特点,使得区块链数据存储的要求十分高。rocksdb是一个高性能、嵌入式的键值存储引擎,具有快速的数据读写能力、高效的存储空间利用率和可靠的数据一致性。因此,采用rocksdb作为区块链的数据存储引擎,可以提高数据的读写效率和存储空间利用率。

2、然而rocksdb的特性适应于快速存储,而当区块链的操作为读写密集型操作,则会造成区块链性能的下降,而在区块链的操作中,通常不是只读或者只写入的操作,一般都是读写结合,此时会面临两个问题:

3、1.如果我们需要在程序内缓存,那什么样的数据需要缓存,缓存多少,在什么场景下缓存,怎么样配置淘汰策略更合理。

4、2.如果在链启动初期就有大量的读操作,是否会造成此时读过于多,而写性能大幅下降。

5、针对读操作过于密集造成的区块链整体性能下降、读写速率低问题,本发明提出了一个有效的解决方法。


技术实现思路

1、为解决上述问题,本发明提供一种基于区块链的数据读写分离存取方法、系统及装置,通过缓存库和预加载数据的方式,结合区块链高tps情况下数据的访问特性,快速读取已上链的数据及快速大批量的写入磁盘已上链数据,以解决现有技术中整体性能下降及读写速率低的问题。

2、为达到上述目的,本发明提供了一种基于区块链的数据读写分离存取方法,包括:获取写请求或读请求;当获取到写请求时,在过滤器中保存所述写请求对应的待写入数据的标记,判断所述待写入数据的类型是否为高频数据类型,若是,则将所述待写入数据同时写入到缓存库及数据库;否则,将所述待写入数据写入到所述数据库中;其中,所述过滤器预先根据所述数据库构建;当获取到读请求时,根据所述过滤器中的标记判断所述读请求对应的待读取数据是否存在,若不存在,则返回空值,读请求结束;否则,根据所述待读取数据的类型选择从本地缓存、所述缓存库或数据库中读取所述待读取数据。

3、进一步可选的,所述根据所述待读取数据的类型选择从本地缓存、所述缓存库或数据库中读取所述待读取数据,包括:当所述待读取数据的类型不是高频数据类型时,从所述数据库中读取所述待读取数据;当所述待读取数据的类型是高频数据类型时,在所述本地缓存中查询所述待读取数据,若所述本地缓存中存在所述待读取数据,则读取所述待读取数据;否则,在所述缓存库中查询所述待读取数据,若所述缓存库中存在所述待读取数据,则读取所述待读取数据,否则,从所述数据库中读取所述待读取数据。

4、进一步可选的,若所述缓存库中存在所述待读取数据,则读取所述待读取数据,否则,从所述数据库中读取所述待读取数据,包括:当所述缓存库中存在所述待读取数据时,读取所述待读取数据并将所述待读取数据的命中次数加一;比较所述命中次数与第一预设命中次数阈值,若所述命中次数大于所述第一预设命中次数阈值,则将对应的待读取数据存储到所述本地缓存中;当所述数据库中存在所述待读取数据时,读取所述待读取数据并将所述待读取数据的命中次数加一;比较所述命中次数与第二预设命中次数阈值,若所述命中次数大于所述第二预设命中次数阈值,则将对应的待读取数据存储到所述缓存库中。

5、进一步可选的,所述将对应的待读取数据存储到所述本地缓存中包括:统计所述本地缓存中的当前数据数量及各数据对应的命中次数;比较所述当前数据数量与预设数量阈值,若所述当前数据数量小于所述预设数量阈值,将所述对应的待读取数据存储到所述本地缓存中;若所述当前数据数量等于所述预设数量阈值,则删除所述本地缓存中命中次数最低的数据后将所述对应的待读取数据存储到所述本地缓存中。

6、另一方面,本发明提供了一种基于区块链的数据读写分离存取系统,包括:请求获取模块,用于获取写请求或读请求;数据写入模块,用于当获取到写请求时,在过滤器中保存所述写请求对应的待写入数据的标记,判断所述待写入数据的类型是否为高频数据类型,若是,则将所述待写入数据同时写入到缓存库及数据库;否则,将所述待写入数据写入到所述数据库中;其中,所述过滤器预先根据所述数据库构建;数据读取模块,用于当获取到读请求时,根据所述过滤器中的标记判断所述读请求对应的待读取数据是否存在,若不存在,则返回空值,读请求结束;否则,根据所述待读取数据的类型选择从本地缓存、所述缓存库或数据库中读取所述待读取数据。

7、进一步可选的,所述数据读取模块包括:第一数据读取子模块,用于当所述待读取数据的类型不是高频数据类型时,从所述数据库中读取所述待读取数据;第二数据读取子模块,用于当所述待读取数据的类型是高频数据类型时,在所述本地缓存中查询所述待读取数据,若所述本地缓存中存在所述待读取数据,则读取所述待读取数据;否则,在所述缓存库中查询所述待读取数据,若所述缓存库中存在所述待读取数据,则读取所述待读取数据,否则,从所述数据库中读取所述待读取数据。

8、进一步可选的,所述第二数据读取子模块包括:第一计数单元,用于当所述缓存库中存在所述待读取数据时,读取所述待读取数据并将所述待读取数据的命中次数加一;第一数据升级单元,用于比较所述命中次数与第一预设命中次数阈值,若所述命中次数大于所述第一预设命中次数阈值,则将对应的待读取数据存储到所述本地缓存中;第二计数单元,用于当所述数据库中存在所述待读取数据时,读取所述待读取数据并将所述待读取数据的命中次数加一;第二数据升级单元,用于比较所述命中次数与第二预设命中次数阈值,若所述命中次数大于所述预设命中次数阈值,则将对应的待读取数据存储到所述缓存库中。

9、进一步可选的,所述第一数据升级单元包括:统计子单元,用于统计所述本地缓存中的当前数据数量及各数据对应的命中次数;数据删除子单元,用于比较所述当前数据数量与预设数量阈值,若所述当前数据数量小于所述预设数量阈值,将所述对应的待读取数据存储到所述本地缓存中;若所述当前数据数量等于所述预设数量阈值,则删除所述本地缓存中命中次数最低的数据后将所述对应的待读取数据存储到所述本地缓存中。

10、另一方面,本发明提供了一种基于区块链的数据读写分离存取装置,包括上述的基于区块链的数据读写分离存取系统。

11、另一方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程度,所述程序被处理器执行时实现上述的基于区块链的数据读写分离存取方法。

12、上述技术方案具有如下有益效果:在写入过程中,将高频访问的数据写入缓存库中,解决区块链数据高频读取的效率问题;增加了过滤器,通过过滤器中的标记快速判断数据库中是否存在目标数据,进而提升数据访问效率;此外,另外增设一级本地缓存,通过命中次数来衡量数据是否为更高一级的高频数据,并将该数据存入本地缓存中,进一步提高区块链的读写能力及整体性能。



技术特征:

1.一种基于区块链的数据读写分离存取方法,其特征在于,包括:

2.根据权利要求1所述的基于区块链的数据读写分离存取方法,其特征在于,所述根据所述待读取数据的类型选择从本地缓存、所述缓存库或数据库中读取所述待读取数据,包括:

3.根据权利要求2所述的基于区块链的数据读写分离存取方法,其特征在于,所述若所述缓存库中存在所述待读取数据,则读取所述待读取数据,否则,从所述数据库中读取所述待读取数据,包括:

4.根据权利要求3所述的基于区块链的数据读写分离存取方法,其特征在于,所述将对应的待读取数据存储到所述本地缓存中包括:

5.一种基于区块链的数据读写分离存取系统,其特征在于,包括:

6.根据权利要求5所述的基于区块链的数据读写分离存取系统,其特征在于,所述数据读取模块包括:

7.根据权利要求6所述的基于区块链的数据读写分离存取系统,其特征在于,所述第二数据读取子模块包括:

8.根据权利要求7所述的基于区块链的数据读写分离存取系统,其特征在于,所述第一数据升级单元还包括:

9.一种基于区块链的数据读写分离存取装置,其特征在于,包括如权利要求5-8任一项所述基于区块链的数据读写分离存取系统。

10.一种计算机可读存储介质,其上存储有计算机程度,其特征在于,所述程序被处理器执行时实现如权利要求1-4任一项所述的基于区块链的数据读写分离存取方法。


技术总结
本发明实施例公开了一种基于区块链的数据读写分离存取方法、系统及装置,其中,该方法包括:获取写请求或读请求;当获取到写请求时,在过滤器中保存写请求对应的待写入数据的标记,判断待写入数据的类型是否为高频数据类型,若是,则将待写入数据同时写入到缓存库及数据库;否则,将待写入数据写入到数据库中;其中,过滤器预先根据数据库构建;当获取到读请求时,根据过滤器中的标记判断读请求对应的待读取数据是否存在,若不存在,则返回空值,读请求结束;否则,根据待读取数据的类型选择从本地缓存、缓存库或数据库中读取待读取数据。提升了区块链的读写能力及整体性能。

技术研发人员:段荣伟,兰春嘉
受保护的技术使用者:上海零数众合信息科技有限公司
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1