一种区块链数据存储方法及装置与流程

文档序号:18939100发布日期:2019-10-23 01:00阅读:132来源:国知局
一种区块链数据存储方法及装置与流程

本说明书实施例涉及信息技术领域,尤其涉及一种区块链数据存储方法及装置。



背景技术:

众所周知,区块链网络中的各节点需要分别存储一致的区块链数据。对于区块链网络中的任一节点而言,该节点可以选择采用分布式存储方式,以满足海量区块链数据存储的需求。其中,分布式存储方式是指将需要存储的数据分散存储在多台存储设备上,利用多台存储设备分担存储负荷。

在实践中,以区块链网络中的任一节点为例,从属于该节点的有些存储设备的存储介质可能是机械硬盘(harddiskdrive,hdd),而另一些存储设备可能是固态硬盘(solidstatedrives,ssd)。采用hdd的成本较低,但是数据读写速度也较慢;采用ssd的成本较高,但是数据读写速度也较快。

基于现有技术,需要一种更高效的区块链数据存储方法。



技术实现要素:

为了解决现有的区块链数据存储方法比较低效的问题,本说明书实施例提供一种区块链数据存储方法及装置,技术方案如下:

根据本说明书实施例的第1方面,提供一种基于分布式存储的区块链数据存储方法,针对区块链网络的任一节点,将为该节点部署的多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘,所述低性能设备组中的每个存储设备的存储介质为机械硬盘;

所述方法包括:

该节点当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储;

以及

将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储;所述过期的区块链数据为,存储于所述高性能设备组的时长大于预设时长的区块链数据。

根据本说明书实施例的第2方面,提供一种基于分布式存储的区块链数据存储装置,所述装置为区块链网络的任一节点;

将为所述装置部署的多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘,所述低性能设备组中的每个存储设备的存储介质为机械硬盘;

所述装置包括:

初始化存储模块,当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储;

转移存储模块,将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储;所述过期的区块链数据为,存储于所述高性能设备组的时长大于预设时长的区块链数据。

根据本说明书实施例的第3方面,提供一种基于分布式存储的区块链数据存储系统,包括由多个节点组成的区块链网络以及为每个节点部署的多个节点设备;

针对所述区块链网络的任一节点,将所述多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘,所述低性能设备组中的每个存储设备的存储介质为机械硬盘;

所述区块链网络的任一节点,当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储;以及将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储;所述过期的区块链数据为,存储于所述高性能设备组的时长大于预设时长的区块链数据。

本说明书实施例所提供的技术方案,针对区块链网络的任一节点,将为该节点部署的多个存储设备划分为高性能设备组和低性能设备组。高性能设备组中的每个存储设备的存储介质是固态硬盘,低性能设备组中的每个存储设备的存储介质是机械硬盘。对于待存储的区块链数据,该节点会将其分配给高性能设备组进行存储;而对于已经存储了一段时间的过期的区块链数据,该节点会将其由高性能设备组转移至低性能设备组进行存储。

通过本说明书实施例,由于一方面,新产生的区块链数据需要尽快存储(即尽快发布至区块链),另一方面,固态硬盘的数据写入速度较快,因此,将以固态硬盘为存储介质的存储设备集中用于新产生的区块链数据的存储,可以充分发挥固态硬盘的高性能优势,提升区块链数据的上链速度。此外,将过期的区块链数据迁移至低性能设备组进行存储,也即将成本较低的机械硬盘用于过期的区块链数据的存储,也优化了存储分配。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要通过的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是现有的区块链数据存储方法的示意图;

图2是本说明书实施例提供的区块链数据存储方法的示意图;

图3是本说明书实施例提供的一种区块链数据存储方法的流程示意图;

图4是本说明书实施例提供的一种区块链数据存储装置的结构示意图;

图5是用于配置本说明书实施例装置的一种计算机设备的结构示意图。

具体实施方式

图1是现有的区块链数据存储方法的示意图。如图1所示,区块链网络由节点1~4组成。以节点4为例(节点1~3类似),为节点4部署5个存储设备,以便节点4存储区块链网络产生的区块链数据。5个存储设备中,有2个以ssd为存储介质的存储设备,有3个以hdd为存储介质的存储设备。节点4当获取到待存储的区块链数据时,需要对区块链数据进行分片(分成5个数据碎片),然后将各数据碎片分别存储于5个存储设备。

继续参见图1,显然,以ssd为存储介质的存储设备写入数据碎片的速度较快,而以hdd为存储介质的存储设备写入数据碎片的速度较慢。在实践中,在存储成本固定(即不增加以ssd为存储介质的存储设备)的前提下,提升区块链数据上链的速度,是个丞待解决的技术问题。

在存储成本固定的前提下,为解决上述技术问题,可以通过提升对已有的以ssd为存储介质的存储设备的性能利用率,来提升区块链数据上链的速度。

图2是本说明书实施例提供的区块链数据存储方法的示意图。如图2所示,可以将已有的多个存储设备进行分组,将以ssd为存储介质的存储设备集中用于待存储的区块链数据的存储,而将过期的区块链数据(已经被存储了一段时间的区块链数据)转移给以hdd为存储介质的存储设备继续存储。

也就是说,对于新产生的区块链数据,仅由ssd存储设备进行存储写入,使得新产生的区块链数据尽快上链;对于被存储了一段时间的区块链数据,转移至hdd存储设备进行存储,以便腾出宝贵的ssd存储空间,用于写入更多新产生的区块链数据。

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

以下结合附图,详细说明本说明书各实施例提供的技术方案。

图3是本说明书实施例提供的一种区块链数据存储方法的流程示意图,包括如下步骤:

s300:针对区块链网络的任一节点,该节点当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储。

在本说明书实施例中,针对区块链网络的任一节点,将为该节点部署的多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘ssd,所述低性能设备组中的每个存储设备的存储介质为机械硬盘hdd。

需要说明的是,为该节点部署的多个存储设备中既包括至少一个存储介质为ssd的存储设备,也包括至少一个存储介质为hdd的存储设备。而本发明的目的在于,在成本固定的前提下,即在不再增加存储设备的前提下,提升新产生的区块链数据的上链速度。这就需要提升对存储介质为ssd的存储设备的性能利用率,将ssd集中用于存储新产生的区块链数据,避免ssd所支持的高速数据读写性能被闲置。

需要说明的是,在本文中,数据写入是指将数据存储于存储设备的硬盘中,或者,对存储设备的硬盘中存储的数据进行修改,或者,对存储设备的硬盘中存储的数据进行删除。数据读取是指将存储设备的硬盘中存储的数据读取出来。ssd的数据读写速度较高,意味着将数据存储于以ssd为硬盘的存储设备的效率较高,对以ssd为硬盘的存储设备所存储的数据进行修改的效率较高,读取以ssd为硬盘的存储设备所存储的数据的效率也较高。

在本说明书实施例中,针对区块链网络的任一节点,该节点获取待存储的区块链数据,具体可以是获取待发布至区块链的区块与基于所述区块确定的用于对区块链世界状态进行更新的状态更新数据,作为待存储的区块链数据。此外,在有些场景下,待存储的区块链数据也可以仅包括待发布至区块链的区块。

在实际应用中,节点将区块存入本地,就意味着将区块发布至区块链。区块发布至区块链的速度越快,就可以越早向用户反馈确定性的业务处理结果。

由于高性能设备组中的每个存储设备的存储介质都是ssd,因此,可以支持区块链数据的高速写入,可以尽快完成区块链数据的持久化存储。

s302:将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储。

由于ssd的成本较高,可以提供的存储空间也是有限的。因此,随着区块链数据的累积,有限的ssd存储空间不足以存储更多的区块链数据。为此,在本说明书实施例中,将存储于所述高性能设备组的时长大于预设时长的区块链数据作为过期的区块链数据,将过期的区块链数据迁移到低性能设备组进行存储。

其中,高性能设备组中存储设备的数量越多,说明ssd存储空间越大,可以存储的区块链数据就越多,这也就意味着,所述预设时长可以更长。

由于过期的区块链数据已经发布至区块链,不可被删除与修改,并且,读取过期的区块链数据的频率也不高,因此,过期的区块链数据没有必要占用宝贵的ssd存储空间,将过期的区块链数据迁移到hdd存储空间中进行存储,可以优化存储配置。

此外需要说明的是,在本说明书实施例中,节点可以每当满足指定条件时,触发对过期的区块链数据的转移存储。例如,节点可以每当经过指定周期时,从存储于所述高性能设备组的区块链数据中确定过期的区块链数据,并将确定的过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储。

通过图3所示的方法,由于一方面,新产生的区块链数据需要尽快存储(即尽快发布至区块链),另一方面,固态硬盘的数据写入速度较快,因此,将以固态硬盘为存储介质的存储设备集中用于新产生的区块链数据的存储,可以充分发挥固态硬盘的高性能优势,提升区块链数据的上链速度。此外,将过期的区块链数据迁移至低性能设备组进行存储,也即将成本较低的机械硬盘用于过期的区块链数据的存储,也优化了存储分配。

此外,在实际应用中,一般而言,对近期写入的区块链数据的读取频率要大于对过期的区块链数据的读取频率。例如,在用户间转账的场景下,区块链网络中的节点会将每笔转账的转账记录以及进行转账的两个用户的账户余额的变动情况作为区块链数据进行存储。对于每笔转账而言,用户一般会在这笔转账发生不久后查看转账记录,以确保转账成功;用户一般很少在这笔转账发生较长时间后再查看转账记录。

因此,在本说明书实施例中,将近期的区块链数据存储于高性能设备组,以便用户可以高速读取进去的区块链数据;将过期的区块链数据存储于低性能设备组,如果偶尔需要读取过期的区块链数据,那么较低的数据读取速度在实践中也是可以接受的。

图4是本说明书实施例提供的一种区块链数据存储装置的结构示意图,所述装置为区块链网络的任一节点;

将为所述装置部署的多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘,所述低性能设备组中的每个存储设备的存储介质为机械硬盘;

所述装置包括:

初始化存储模块401,当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储;

转移存储模块402,将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储;所述过期的区块链数据为,存储于所述高性能设备组的时长大于预设时长的区块链数据。

所述初始化存储模块401,获取待发布至区块链的区块与基于所述区块确定的用于对区块链世界状态进行更新的状态更新数据,作为待存储的区块链数据。

所述转移存储模块402,每当经过指定周期时,从存储于所述高性能设备组的区块链数据中确定过期的区块链数据,并将确定的过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储。

所述预设时长与所述高性能设备组中存储设备的数量正相关。

一种区块链数据存储系统,包括由多个节点组成的区块链网络以及为每个节点部署的多个节点设备;

针对所述区块链网络的任一节点,将所述多个存储设备划分为高性能设备组与低性能设备组,其中,所述高性能设备组中的每个存储设备的存储介质为固态硬盘,所述低性能设备组中的每个存储设备的存储介质为机械硬盘;

所述区块链网络的任一节点,当获取到待存储的区块链数据时,将待存储的区块链数据分配给所述高性能设备组进行存储;以及将过期的区块链数据从所述高性能设备组转移至所述低性能设备组进行存储;所述过期的区块链数据为,存储于所述高性能设备组的时长大于预设时长的区块链数据。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图3所示方法的功能。

图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1410、存储器1420、输入/输出接口1430、通信接口1440和总线1450。其中处理器1410、存储器1420、输入/输出接口1430和通信接口1440通过总线1450实现彼此之间在设备内部的通信连接。

处理器1410可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1420可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1420中,并由处理器1410来调用执行。

输入/输出接口1430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1450包括一通路,在设备的各个组件(例如处理器1410、存储器1420、输入/输出接口1430和通信接口1440)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1410、存储器1420、输入/输出接口1430、通信接口1440以及总线1450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图3所示方法的功能。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1