CN109726202A - 一种区块链数据存储方法及计算机存储介质 - Google Patents

一种区块链数据存储方法及计算机存储介质 Download PDF

Info

Publication number
CN109726202A
CN109726202A CN201811553849.6A CN201811553849A CN109726202A CN 109726202 A CN109726202 A CN 109726202A CN 201811553849 A CN201811553849 A CN 201811553849A CN 109726202 A CN109726202 A CN 109726202A
Authority
CN
China
Prior art keywords
storage
key
server
value
block chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811553849.6A
Other languages
English (en)
Other versions
CN109726202B (zh
Inventor
高海刚
牛冬
王海平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xintang Sichuang Educational Technology Co Ltd
Original Assignee
Beijing Xintang Sichuang Educational Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Xintang Sichuang Educational Technology Co Ltd filed Critical Beijing Xintang Sichuang Educational Technology Co Ltd
Priority to CN201811553849.6A priority Critical patent/CN109726202B/zh
Publication of CN109726202A publication Critical patent/CN109726202A/zh
Application granted granted Critical
Publication of CN109726202B publication Critical patent/CN109726202B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种区块链数据存储方法及装置,首先接收区块链数据的存储请求,并根据存储请求从键值数据库中获得服务器范围信息;然后根据服务器范围信息,判断是否存在可用于存储区块链数据的存储服务器,如果是,则根据设定的筛选规则从存储服务器中选取目标服务器,并确定目标服务器的标识信息;从而根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息,以将区块链数据存储至目标服务器中。由于采用了键值数据库对存储服务器的标识信息和存储地址信息进行存储,使得存储系统扩展性好、数据查询速度快。

Description

一种区块链数据存储方法及计算机存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种区块链数据存储方法及计算机存储介质。
背景技术
区块链是一种利用了分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链分为三类,分别是:公有区块链、联盟区块链(也称联合区块链、行业区块链)和私有区块链三种。其中,公有区块链针对的是所有人;联盟区块链针对的是某个特定的群体以及有限的第三方;私有区块链针对的是个人。
以比特币采用的区块链技术来说,由于区块链网络中不存在中央控制方,每一个区块链节点都需要保存全部数据,随着近年来比特币交易的火热发展,比特币上的交易数据越来越多,到目前为止已经超过200G,并且还处于持续增加过程中,因此区块链数据存储对数据存取效率和存储服务器的可扩展性要求越来越高。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种区块链数据存储方法及计算机存储介质,用以克服现有技术中的区块链数据存储效率偏低,且存储服务器可扩展性不高的问题。
本发明实施例提供一种区块链数据存储方法,包括:
接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息;
根据所述服务器范围信息,判断是否存在可用于存储所述区块链数据的存储服务器;
如果是,则根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息;
根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中。
根据本发明实施例的另一个方面,还提供了一种计算机存储介质,所述计算机存储介质中存储有:
用于接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息的指令;
用于根据所述服务器范围信息,判断是否存在可用于存储所述区块链数据的存储服务器的指令;
用于如果是,则根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息的指令;
用于根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中的指令。
由以上技术方案可见,本发明实施例的区块链数据存储方案,首先接收区块链数据的存储请求,并根据存储请求从键值数据库中获得服务器范围信息;然后根据服务器范围信息,判断是否存在可用于存储区块链数据的存储服务器,如果是,则根据设定的筛选规则从存储服务器中选取目标服务器,并确定目标服务器的标识信息;从而根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息,以将区块链数据存储至目标服务器中。由于采用了键值数据库对存储服务器的标识信息和存储地址信息进行存储,使得存储系统扩展性好、数据查询速度快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了本发明的实施例一的区块链数据存储方法的流程图。
图2示出了本发明的实施例二的区块链数据存储方法的流程图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
区块链网络中包括多个区块链节点,根据区块链的共识机制,当区块链网络中的各区块链节点对一个业务请求达成共识后,需要将该业务请求的相关信息进行数字化处理,生成区块链数据并存储在各个区块链节点的存储服务器中,即每个区块链节点均会接收区块链数据的存储请求,并将区块链数据进行存储,因此本发明的实施例可应用于区块链网络中任一区块链节点对区块链数据的存储,各区块链节点可以是硬件形式的,也可以是诸如虚拟机等软件形式的。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
图1示出了本发明的实施例一的区块链数据存储方法的流程图。如图1所示,本发明的实施例的区块链数据存储方法包括以下步骤:
步骤S101:接收区块链数据的存储请求,并根据存储请求从键值数据库中获得服务器范围信息。
本实施例中,由于单个存储服务器的存储空间有限,为了提高区块链节点的整体存储空间,一个区块链节点中可包括多个用于存储区块链数据的存储服务器,以及一个用于对多个存储服务器进行数据存储、读取、运行维护等整体管理的管理服务器。其中,存储服务器和管理服务器的硬件和网络连接形式不限,例如,可以是局域网中的多台电脑。
本实施例中,区块链数据的存储请求至少用于触发管理服务器选取一个存储服务器进行区块链数据存储。存储请求中所记载的信息内容不限,例如,可以仅为一个触发信号,也可以为区块链数据的属性相关信息。
本实施例中,为了便于对可进行数据存储的存储服务器进行识别和管理,需预先获得或者设定每个存储服务器的标识信息,以及每个存储服务器对应的存储地址信息,并将每个存储服务器的标识信息和存储地址信息建立索引后存储至键值数据库中。
本实施例中,由于键值数据库(key-value,缩写KV)是非关系型数据库(nostructured query language,缩写NoSQL)中的一类,将数据按照键(key)值(value)对的形式进行组织、索引和存储。键值数据库的种类包括LevelDB、RocksDB、HyperDex、TokyoCabinet、Voldemort、AmazonDynamo、Tair、Accumulo、Redis、LevelDB、SSTable等多种。由于键值数据库的存储语义简单,因此利用键值数据库进行区块链数据存储可实现存储系统扩展性好、数据查询速度快、数据存储量大的效果。
本实施例中,服务器范围信息中所记载的信息内容不限,至少包括用于确定标识区块链节点中是否存在可用于存储区块链数据的存储服务器的信息。
步骤S102:根据服务器范围信息,判断是否存在可用于存储区块链数据的存储服务器。
本实施例中,判断是否存在可用于存储区块链数据的存储服务器的方法不限,可根据实际应用需求自由设定。例如,若服务器范围信息中包括可用于存储区块链数据的存储服务器数量信息,则可根据数量是否为0,判断是否存在可用于存储区块链数据的存储服务器。
步骤S103:如果是,则根据设定的筛选规则从存储服务器中选取目标服务器,并确定目标服务器的标识信息。
本实施例中,目标服务器为响应存储请求进行区块链数据存储的服务器,可以是存储服务器中的一个或者多个。目标服务器的筛选规则不限,可根据需求或者应用场景预先自由设定。
步骤S104:根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息,以将区块链数据存储至目标服务器中。
本实施例中,由于键值数据库中预先存储了每个存储服务器的标识信息和存储地址信息,并且对存储服务器的标识信息和存储地址信息建立了索引,因此可根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息。
由以上本发明实施例可见,本发明首先接收区块链数据的存储请求,并根据存储请求从键值数据库中获得服务器范围信息;然后根据服务器范围信息,判断是否存在可用于存储区块链数据的存储服务器,如果是,则根据设定的筛选规则从存储服务器中选取目标服务器,并确定目标服务器的标识信息;从而根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息,以将区块链数据存储至目标服务器中。由于采用了键值数据库对存储服务器的标识信息和存储地址信息进行存储,使得存储系统扩展性好、数据查询速度快。
实施例二
图2示出了本发明的实施例二的区块链数据存储方法的流程图。如图2所示,本发明的实施例的区块链数据存储方法包括以下步骤:
步骤S201,根据接收的存储服务器发送的注册请求,与存储服务器建立连接,并对键值数据库中所存储的数据进行更新。
本实施例中,由于区块链节点在运行过程中,可能会部署新的存储服务器与管理服务器建立连接以扩展存储空间,已部署完成的存储服务器也可能因为重启或者网络故障等原因需要与管理服务器重新建立连接,因此为了保证区块链数据的成功存储,存储服务器每次在与管理服务器进行连接时,即表示该存储服务器具备存储数据的的能力,存储服务器会向管理服务器发送注册请求,从而使得管理服务器可根据接收的注册请求与存储服务器建立连接,并对键值数据库中所存储的与存储服务器相关的数据进行更新。
本实施例中,为了提高数据存储和读取效率,在存储服务器中也可使用与管理服务器相同的键值数据库进行区块链数据存储。
本实施例中,为提高存储服务器的扩展便捷性,所使用的键值数据库在运行时无需依赖其他软件或者服务,即在部署新的存储服务器时,不需要安装其他的运行依赖,只需进行普通的服务部署即可,使得存储服务器在与管理服务器建立连接时,可自动发送注册请求至管理服务器。
可选的,在一具体应用场景中,键值数据库可为Nosql型数据库。例如联盟区块链中,键值数据库为RocksDb。RocksDb是Facebook基于levelDB开发,可以实现在服务器负载下快速存储(特别是闪存存储)的数据存储的全部潜力,大大提升速度和节约磁盘空间。并且RocksDb中键值对的Key和value可以是任意大小的字节流,而且允许使用二进制流。
本实施例中,由于键值数据库的不同键值对中所存储的数据大小可能会存在差别,为了提高已存储数据的查找效率以及控制键值对所占据的存储空间大小,还包括:将键值数据库中的键值对key和/或value进行hash处理后进行存储。其中,优选通过hash处理成256位的hash值。例如,将可存储属性标签对应的文字信息“AVAILABLE-NODE”通过hash处理成256位的hash值。
本实施例中,管理服务器的键值数据库中包括第一键值对,第一键值对的key为可存储属性标签,第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息。
其中,对于可存储区块链数据的任意一个存储服务器而言,通过可存储属性标签来表示可进行区块链数据存储的属性并赋值给第一键值对的key,使得在后述步骤中判断是否存在可用于存储区块链数据的存储服务器时,可通过第一键值对的key,获得第一键值对的value。因此,当将可存储属性标签赋值给第一键值对的key后,第一键值对的key无需根据存储数据库的范围变化而进行调整。
但是,由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,即可包括不限数量的存储服务器的标识信息。在一些应用场景中,每新增一个存储服务器,管理服务器需要将该存储服务器的标识信息添加至第一键值对的value中;每减少一个存储服务器,管理服务器需要将该存储服务器的标识信息从第一键值对的value中删除,因此第一键值对的value的标识信息会根据存储服务器的范围变化而进行相应的调整。
可选的,管理服务器的键值数据库中还包括为每个存储服务器创建的一个第三键值对,第三键值对的key为存储服务器的标识信息,第三键值对的value为存储服务器对应的存储地址信息。即通过第三键值对建立存储服务器的标识信息和存储地址信息之间的索引关系。从而可利用存储服务器的标识信息,从第三键值对的value中获得存储服务器对应的存储地址信息;利用存储服务器对应的存储地址信息,从第三键值对的key中获得存储服务器的标识信息。
其中,第一键值对的value中可包括多个存储服务器的标识信息,每个存储服务器的标识信息均会赋值给一个第三键值对的key。
此外,为避免已部署完成的存储服务器与管理服务器重新建立连接时,被认为是新部署的存储服务器,一个存储服务器对应的第三键值对一旦被创建,便会被存储至键值数据库中。当该存储服务器因为电源切断、网络故障等原因暂时无法进行区块链数据存储时,即该存储服务器不包括可存储属性标签时,不会删除键值数据库中已存储的该存储服务器对应的第三键值,但是在键值数据库的第一键值对的value中会删除该存储服务器的标识信息。
本实施例中,在新部署存储服务器与管理服务器首次建立连接,或者已部署的存储服务器与管理服务器重新建立连接的应用场景中,步骤S201可包括下述子步骤:
子步骤S201a:接收存储服务器发送的注册请求,并根据注册请求获得存储服务器对应的存储地址信息。
可选的,在分布式存储网络中由于存在多个存储服务器,为了对存储服务器进行区分和识别,为每个存储服务器分配了唯一的存储地址信息,例如IP地址信息。该唯一的存储地址信息可包括在存储服务器向管理服务器发送的注册请求中,因此,可通过对注册请求进行解析,从中获得存储服务器对应的存储地址信息。
子步骤S201b:根据存储服务器对应的存储地址信息,判断键值数据库中是否已存储了存储服务器的标识信息。
具体的,对于之前已部署完成的存储服务器在与管理服务器重新建立连接时,即与管理服务器并非进行首次连接的存储服务器,会在键值数据库中存储对应的存储地址信息和标识,因此可根据上述步骤S201a中存储服务器对应的存储地址信息,判断键值数据库中是否已存储了该存储服务器的标识信息。
可选的,可根据存储服务器对应的存储地址信息,对键值数据库中所存储的键值对的value进行筛选,如果筛选结果非空,则表明键值数据库中已存储了该存储服务器对应的第三键值对,该存储服务器对应的第三键值对的key为该存储服务器的标识信息,即键值数据库中已存储了上述步骤S201a中存储服务器的标识信息,无需为该存储服务器再创建的一个第三键值对。
但是,由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,之前已部署完成的存储服务器在与管理服务器断开连接时,会从第一键值对的value中删除该存储服务器的标识信息,因此当对于之前已部署完成的存储服务器在与管理服务器重新建立连接时,需要将该存储服务器的标识信息添加至第一键值对的value中。
子步骤S201c:如果否,则为存储服务器分配标识信息,并将存储服务器对应的存储地址信息和存储服务器的标识信息存储至键值数据库中。
可选的,由于在分布式存储网络中每个存储服务器的地址信息是唯一的,为了减少键值数据库中的键值对数量,以提高数据查找效率,可将每个存储服务器对应的存储地址信息分配为标识信息。
可选的,为了提高标识信息的可辨识度,可预先设定标识的编制规则,根据编制规则为每个存储服务器分配标识信息,并将每个存储服务器的标识信息和存储地址信息存储至键值数据库中。例如,可按照存储服务器与管理服务器首次建立连接的时间先后,对存储服务器依次进行编号,并将编号作为标识信息。
可选的,可根据存储服务器对应的存储地址信息和标识,为存储服务器创建一个第三键值对,该存储服务器对应的第三键值对的key为该存储服务器的标识信息,value为该存储服务器对应的存储地址信息。
此外,由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,因此新部署的存储服务器与管理服务器首次建立连接后,表明新增一个可用于存储区块链数据的存储服务器,需要将该存储服务器的标识信息存储至第一键值对的value中。
步骤S202:接收区块链数据的存储请求,并根据存储请求从键值数据库中获得服务器范围信息。
本实施例中,服务器范围信息中可包括全部存储服务器的数量信息、全部存储服务器的标识信息中的至少其一。
可选的,由于第一键值对的key为可存储属性标签,第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,因此可根据第一键值对的value获得服务器范围信息。步骤S202可包括下述子步骤:
子步骤S202a:接收区块链数据的存储请求,触发利用可存储属性标签查找第一键值对的value。
例如,当可存储属性标签为“AVAILABLE-NODE”为时,接收区块链数据的存储请求后,可触发利用“AVAILABLE-NODE”对键值数据库中所存储的多个键值对的key进行筛选,即筛选出key为“AVAILABLE-NODE”的第一键值对,进一步可获得第一键值对的value。
子步骤S202b:根据第一键值对的value,获得服务器范围信息。
例如,由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,可通过判断第一键值对的value中是否存在至少一个标识信息,确定是否存在可用于存储区块链数据的存储服务器,因此可读取第一键值对的value,作为服务器范围信息;或者通过计算第一键值对的value中所包括的标识信息的数量,获得服务器范围信息。
可选的,为了快速获得可用于存储区块链数据的全部存储服务器的数量信息,管理服务器的键值数据库中还可包括第五键值对,第五键值对的key为存储服务器数量标签,第五键值对的value为可用于存储区块链数据的全部存储服务器的数量信息。
其中,存储服务器数量标签主要用于在键值数据库中为可用于存储区块链数据的全部存储服务器的数量信息建立索引,使得当需要确定可用于存储区块链数据的全部存储服务器的数量时,可通过第五键值对的key,获得第五键值对的value,因此,当将可存储属性标签赋值给第五键值对的key后,第五键值对的key无需根据存储数据库的范围变化而进行调整。例如,可设定存储服务器数量标签为“NODE-NUMBER”。
但是,由于第五键值对的value为可用于存储区块链数据的全部存储服务器的数量信息,在一些应用场景中,数量信息会发生变化,因此第五键值对的value需要根据存储服务器的范围变化而进行相应的调整。例如,与管理服务器连接的存储服务器的数量从5变成6时,第五键值对的value需要从5调整成6。
为后续步骤中根据可用于存储区块链数据的全部存储服务器的数量信息,判断是否存在可用于存储区块链数据的存储服务器,步骤S202可包括下述子步骤:
子步骤S202c:接收区块链数据的存储请求,触发利用存储服务器数量标签查找第五键值对的value。
子步骤S202d:根据第五键值对的value,获得服务器范围信息。
例如,可读取第五键值对的value,作为服务器范围信息,从而通过判断可用于存储区块链数据的全部存储服务器的数量信息是否为0,快速确定是否存在可用于存储区块链数据的存储服务器。
步骤S203:根据服务器范围信息,判断是否存在可用于存储区块链数据的存储服务器。
本实施例中,为了尽可能避免因为存储空间不足,造成区块链数据存储失败,还可包括:如果否,则生成提示信息,以提示需要扩展存储服务器。
步骤S204:如果是,则根据设定的筛选规则从存储服务器中选取目标服务器,并确定目标服务器的标识信息。
本实施例中,由于区块链节点的数据存储频率非常高,即连续接收的两个存储请求的接收时间间隔通常很短,为了保证区块链数据存储的成功率和存储效率,对接收时间相邻的两个存储请求分别对应的区块链数据,优选存储至不同的存储服务器中。
可选的,可根据设定的筛选规则和服务器范围信息,获得目标服务器的标识信息。例如,当服务器范围信息中包括多个存储服务器的标识信息时,可根据预先设定的筛选规则从中筛选出一个,该标识信息对应的存储服务器即为目标服务器。
可选的,为了避免将最近一次进行数据存储的存储服务器选取成目标服务器,管理服务器的键值数据库中可包括第二键值对,第二键值对的key为存储记录标签,第二键值对的value为最近一次进行数据存储的存储服务器的标识信息。从而可通过选取标识信息与第二键值对的value不同的存储服务器,作为目标服务器。
其中,对于最近一次进行数据存储的存储服务器而言,通过存储记录标签来表示该存储数据库为最近一次进行区块链数据存储的目标服务器并赋值给第二键值对的key,使得可通过第二键值对的key,获得第二键值对的value,因此,当将存储记录标签赋值给第二键值对的key后,第二键值对的key无需根据存储数据库的范围变化而进行调整。例如,可设定存储记录标签为“LAST-STORE-NODE”。
但是,由于每次进行区块链数据存储时均会选取出一个目标服务器,第二键值对的value为最近一次进行数据存储的存储服务器的标识信息,即为响应上一次接收的区块链数据存储请求而选取出的目标服务器的标识信息,在一些应用场景中,目标服务器并非固定的存储服务器,因此,第二键值对的value需要根据最近一次进行数据存储的存储服务器的标识信息变化进行调整。例如,最近一次进行数据存储选取的目标服务器的标识信息为“1”,则第二键值对的value为“1”,当确定了本次数据存储的目标服务器的标识信息为“2”后,则需将第二键值对的value替换为“2”。
可选的,步骤S204可包括下述子步骤:
子步骤S204a:对存储服务器的标识信息进行排序,获得标识序列;以及利用存储记录标签查找第二键值对的value,以获得最近一次进行数据存储的存储服务器的标识信息。
具体的,由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,因此可对第一键值对的value中的全部标识信息进行排序,获得标识序列。其中,对存储服务器的标识信息进行排序的方式不限,在实际应用中可根据需求自行设定。例如,当存储服务器的标识信息均为数字时,可根据数字的大小按照升序或者降序进行排序。
子步骤S204b:将标识序列中位于最近一次进行数据存储的存储服务器的标识信息之后的一个标识信息,确定为目标服务器的标识信息。
具体的,可循环选取标识序列中的标识信息,即当本次选取的目标服务器的标识信息位于标识序列最后时,之后又将从标识序列的第一位开始依次选取的目标服务器的标识信息。例如,标识序列中包括依次排列的5个标识信息,当最近一次进行数据存储的存储服务器的标识信息位于序列的第5位时,则本次选取位于序列第1位的标识信息作为目标服务器的标识信息。
将存储服务器的标识信息进行排序后选取出目标服务器的标识信息,不仅可提高选取速度,而且在后续进行区块链数据读取时,还可根据标识序列缩小查找的存储服务器范围,以提高查找效率。
步骤S205:根据目标服务器的标识信息,从键值数据库中获得目标服务器对应的存储地址信息,以将区块链数据存储至目标服务器中。
本实施例中,由于第三键值对的key为存储服务器的标识信息,第三键值对的value为存储服务器对应的存储地址信息,因此可根据目标服务器的标识信息,查找目标服务器的第三键值对的value,以获得目标服务器对应的存储地址信息,即可利用目标服务器的标识信息对键值数据库中的多个键值对的key进行筛选,查找出目标服务器对应的第三键值对的value。
本实施例中,为了后续可对已存储的区块链数据进行读取,需对区块链数据的存储相关信息进行记录及存储,步骤S205还可包括:
根据存储请求和目标服务器的标识信息生成第四键值对,并将第四键值对存储至键值数据库中,其中,第四键值对的key为区块链数据的描述信息,第四键值对的value为目标服务器的标识信息。
其中,对于一个区块链数据而言,可通过区块链数据的描述信息来进行唯一标识并赋值给一个第四键值对的key,并将目标服务器的标识信息,也即为存储该区块链数据的存储服务器的标识信息赋值给第四键值对的value。从而可通过第四键值对的形式在管理服务器的键值数据库中建立区块链数据的描述信息和存储该区块链数据的存储服务器的标识信息之间的索引关系。
在后续的区块链读取步骤中,可利用存储服务器的标识信息,从一个或者多个第四键值对的value中获得区块链数据的描述信息,即获得存储至该存储服务器上的全部区块链数据的描述信息;可利用区块链数据的描述信息,从一个第四键值对的value中获得存储服务器的标识信息。
可选的,由于在存储请求中可能会包括用于标识区块链数据的信息,并且在后续用于读取该区块链数据的读取请求中也会包括相同的用于标识区块链数据的信息,因此为了提高区块链数据的读取速度,可通过解析存储请求,从中获得区块链数据的描述信息。
可选的,目标服务器也包括键值数据库,在进行区块链数据存储时,可在目标服务器的键值数据库创建并存储一个第六键值对,第六键值对的key为区块链数据的描述信息,第六键值对的value为区块链数据。即将区块链数据存储至第六键值对的value中,通过第六键值对建立区块链数据的描述信息和区块链数据之间的索引关系。
其中,为提高在目标服务器中查找区块链数据的速度,目标服务器中的第六键值对的key与存储服务器中的第四键值对的key相同。
步骤S206:接收对区块链数据的读取请求,并根据读取请求读取区块链数据。
本实施例中,由于区块链网络在运行过程中,可能还会对每个区块链节点已存储的区块链数据进行读取,为响应读取请求,步骤S206可包括下述子步骤:
子步骤S206a:接收对区块链数据的读取请求,并根据读取请求获得区块链数据的描述信息。
具体的,由于在进行区块链数据读取时,请求信息中会包括用于标识所需读取的区块链数据的信息,因此可通过解析读取请求,从中获得区块链数据的描述信息。
子步骤S206b:利用区块链数据的描述信息查找第四键值对的value,以获得目标服务器的标识信息。
具体的,由于第四键值对的key为区块链数据的描述信息,第四键值对的value为目标服务器的标识信息,因此可通过区块链数据的描述信息,从第四键值对的value中获得目标服务器的标识信息。
子步骤S206c:利用目标服务器的标识信息查找目标服务器对应的第三键值对的value,以获得目标服务器对应的存储地址信息。
具体的,由于第三键值对的key为存储服务器的标识信息,第三键值对的value为存储服务器对应的存储地址信息,目标服务器为存储服务器中的一个,因此可通过目标服务器的标识信息,从第三键值对的value中获得目标服务器对应的存储地址信息。
子步骤S206d:根据目标服务器对应的存储地址信息,从目标服务器中读取区块链数据。
可选的,由于目标服务器中可能存储了多个区块链数据,即键值数据库中包括多个第六键值对,为了从多个区块链数据中读取与读取请求匹配的区块链数据,管理服务器可将区块链数据的描述信息发送至目标服务器,以使得目标服务器可根据区块链数据的描述信息,从第六键值对的value中获得区块链数据。
本实施例中,当某个存储服务器因为存储空间不足、电源关闭或者网络故障问题无法进行区块链数据的存储时,会导致可进行区块链数据存储的存储服务器范围发生变化,需要对键值数据库中所存储的数据进行更新,因此还可包括:
步骤S207:接收存储服务器发送的移除请求,并根据移除请求判断存储服务器的标识信息是否在第一键值对的value中。
具体的,移除请求的格式及所包括的内容不限,例如,可以仅包括存储服务器的存储地址信息。可通过解析移除请求,获得存储服务器对应的标识信息,从而判断存储服务器的标识信息是否在第一键值对的value中。由于第一键值对的value为可用于存储区块链数据的全部存储服务器的标识信息,因此当一存储服务器无法继续用于存储区块链数据时,需要从第一键值对的value中删除该存储服务器的标识信息,从而使得后续在进行区块链数据存储时,不会将该存储服务器选取为目标服务器。
步骤S208:如果是,则删除第一键值对的value中的存储服务器的标识信息。
可选的,由于第五键值对的value为可用于存储区块链数据的全部存储服务器的数量信息,为了实时更新可用于存储区块链数据的全部存储服务器的数量信息,步骤S208还可包括:在第五键值对的value中减去在第一键值对的value中所删除的标识信息的数量。
可选的,如果在步骤S204中按照设定的筛选规则,需要根据第二键值对的value,即最近一次进行数据存储的存储服务器的标识信息,从存储服务器中选取目标服务器,若步骤S208中在第一键值对的value中所删除存储服务器的标识信息正好是第二键值对的value时,则后续在进行区块链数据存储时,无法根据筛选规则选取目标服务器,因此为了避免此种情况的发生,步骤S208还可包括:
将位于在标识序列中位于存储服务器的标识信息之前的一个标识信息,赋值给第二键值对的value。
由以上本发明实施例可见,本发明通过选用诸如RocksDb的键值数据库,在运行时无需依赖其他软件或者服务,使得在存储服务器与管理服务器建立连接时,存储服务器可自动发送注册请求,提高了存储服务器的可扩展性,并且避免了传统关系型数据库使用时都要先安装和启动对应的服务端的问题,也无需进行复杂的配置和维护。通过在键值数据库中存储多个键值对,可高效实现区块链数据的存储和读取。
实施例三
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有:
用于接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息的指令;
用于根据所述服务器范围信息,判断是否存在可用于存储所述区块链数据的存储服务器的指令;
用于如果是,则根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息的指令;
用于根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中的指令。
可选地,还包含:用于接收所述存储服务器发送的注册请求,并根据所述注册请求获得所述存储服务器对应的存储地址信息的指令;
用于根据所述存储服务器对应的存储地址信息,判断所述键值数据库中是否已存储所述存储服务器的标识信息的指令;
用于如果否,则为所述存储服务器分配标识信息,并将所述存储服务器对应的存储地址信息和所述存储服务器的标识信息存储至所述键值数据库中的指令。
可选地,所述键值数据库中包括第一键值对,所述第一键值对的key为可存储属性标签,所述第一键值对的value为可用于存储所述区块链数据的全部所述存储服务器的标识信息。
对应地,还包含:
用于接收所述存储请求,触发利用所述可存储属性标签查找所述第一键值对的value的指令;
用于根据所述第一键值对的value,获得所述服务器范围信息的指令。
可选地,所述键值数据库中包括第二键值对,所述第二键值对的key为存储记录标签,所述第二键值对的value为最近一次进行数据存储的所述存储服务器的标识信息;
对应地,还包含:
用于对所述存储服务器的标识信息进行排序,获得标识序列;以及利用所述存储记录标签查找所述第二键值对的value,以获得最近一次进行数据存储的所述存储服务器的标识信息的指令;
用于将所述标识序列中位于最近一次进行数据存储的所述存储服务器的标识信息之后的一个标识信息,确定为所述目标服务器的标识信息的指令。
可选地,还包含:用于利用所述存储记录标签查找所述第二键值对的value,并将查找到的所述第二键值对的value替换为所述目标服务器的标识信息的指令。
可选地,还包含:用于接收所述存储服务器发送的移除请求,并根据所述移除请求判断所述存储服务器的标识信息是否在所述第一键值对的value中的指令;
用于如果是,则删除所述第一键值对的value中的所述存储服务器的标识信息的指令。
可选地,所述键值数据库中包括为每个所述存储服务器创建的一个第三键值对,所述第三键值对的key为所述存储服务器的标识信息,所述第三键值对的value为所述存储服务器对应的存储地址信息;
对应地,还包含:用于根据所述目标服务器的标识信息,查找所述目标服务器的所述第三键值对的value,以获得所述目标服务器对应的存储地址信息的指令。
可选地,还包含:用于根据所述存储请求和所述目标服务器的标识信息生成第四键值对,并将所述第四键值对存储至所述键值数据库中的指令,其中,所述第四键值对的key为所述区块链数据的描述信息,所述第四键值对的value为所述目标服务器的标识信息。
可选地,还包含:用于接收对所述区块链数据的读取请求,并根据所述读取请求获得所述区块链数据的描述信息的指令;
用于利用所述区块链数据的描述信息,查找所述第四键值对的value,以获得所述目标服务器的标识信息的指令;
用于利用所述目标服务器的标识信息,查找所述目标服务器对应的所述第三键值对的value,以获得所述目标服务器对应的存储地址信息的指令;
用于根据所述目标服务器对应的存储地址信息,从所述目标服务器中读取所述区块链数据的指令。
可选地,还包含:用于将所述键值数据库中的键值对key和/或value进行hash处理后进行存储的指令。
通过本实施例的计算机存储介质,可以实现前述多个方法实施例中相应的区块链数据存储方法,并具有相应方法实施例的有益效果,在此不再赘述。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的区块链数据存储方法。此外,当通用计算机访问用于实现在此示出的区块链数据存储方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的区块链数据存储方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

Claims (11)

1.一种区块链数据存储方法,其特征在于,包括:
接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息;
根据所述服务器范围信息,判断是否存在可用于存储所述区块链数据的存储服务器;
如果是,则根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息;
根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中。
2.根据权利要求1所述的区块链数据存储方法,其特征在于,在所述接收区块链数据的存储请求之前,还包括:
接收所述存储服务器发送的注册请求,并根据所述注册请求获得所述存储服务器对应的存储地址信息;
根据所述存储服务器对应的存储地址信息,判断所述键值数据库中是否已存储所述存储服务器的标识信息;
如果否,则为所述存储服务器分配标识信息,并将所述存储服务器对应的存储地址信息和所述存储服务器的标识信息存储至所述键值数据库中。
3.根据权利要求1所述的区块链数据存储方法,其特征在于,所述键值数据库中包括第一键值对,所述第一键值对的key为可存储属性标签,所述第一键值对的value为可用于存储所述区块链数据的全部所述存储服务器的标识信息;
对应地,所述接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息包括:
接收所述存储请求,触发利用所述可存储属性标签查找所述第一键值对的value;
根据所述第一键值对的value,获得所述服务器范围信息。
4.根据权利要求3所述的区块链数据存储方法,其特征在于,所述键值数据库中包括第二键值对,所述第二键值对的key为存储记录标签,所述第二键值对的value为最近一次进行数据存储的所述存储服务器的标识信息;
对应地,所述根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息包括:
对所述存储服务器的标识信息进行排序,获得标识序列;以及利用所述存储记录标签查找所述第二键值对的value,以获得最近一次进行数据存储的所述存储服务器的标识信息;
将所述标识序列中位于最近一次进行数据存储的所述存储服务器的标识信息之后的一个标识信息,确定为所述目标服务器的标识信息。
5.根据权利要求4所述的区块链数据存储方法,其特征在于,所述根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中之后,还包括:
利用所述存储记录标签查找所述第二键值对的value,并将查找到的所述第二键值对的value替换为所述目标服务器的标识信息。
6.根据权利要求3所述的区块链数据存储方法,其特征在于,所述方法还包括:
接收所述存储服务器发送的移除请求,并根据所述移除请求判断所述存储服务器的标识信息是否在所述第一键值对的value中;
如果是,则删除所述第一键值对的value中的所述存储服务器的标识信息。
7.根据权利要求1所述的区块链数据存储方法,其特征在于,所述键值数据库中包括为每个所述存储服务器创建的一个第三键值对,所述第三键值对的key为所述存储服务器的标识信息,所述第三键值对的value为所述存储服务器对应的存储地址信息;
对应地,所述根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息包括:
根据所述目标服务器的标识信息,查找所述目标服务器的所述第三键值对的value,以获得所述目标服务器对应的存储地址信息。
8.根据权利要求7所述的区块链数据存储方法,其特征在于,所述方法还包括:
根据所述存储请求和所述目标服务器的标识信息生成第四键值对,并将所述第四键值对存储至所述键值数据库中,其中,所述第四键值对的key为所述区块链数据的描述信息,所述第四键值对的value为所述目标服务器的标识信息。
9.根据权利要求8所述的区块链数据存储方法,其特征在于,所述方法还包括:
接收对所述区块链数据的读取请求,并根据所述读取请求获得所述区块链数据的描述信息;
利用所述区块链数据的描述信息,查找所述第四键值对的value,以获得所述目标服务器的标识信息;
利用所述目标服务器的标识信息,查找所述目标服务器对应的所述第三键值对的value,以获得所述目标服务器对应的存储地址信息;
根据所述目标服务器对应的存储地址信息,从所述目标服务器中读取所述区块链数据。
10.根据权利要求1所述的区块链数据存储方法,其特征在于,所述方法还包括:将所述键值数据库中的键值对key和/或value进行hash处理后进行存储。
11.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有:
用于接收区块链数据的存储请求,并根据所述存储请求从键值数据库中获得服务器范围信息的指令;
用于根据所述服务器范围信息,判断是否存在可用于存储所述区块链数据的存储服务器的指令;
用于如果是,则根据设定的筛选规则从所述存储服务器中选取目标服务器,并确定所述目标服务器的标识信息的指令;
用于根据所述目标服务器的标识信息,从所述键值数据库中获得所述目标服务器对应的存储地址信息,以将所述区块链数据存储至所述目标服务器中的指令。
CN201811553849.6A 2018-12-18 2018-12-18 一种区块链数据存储方法及计算机存储介质 Active CN109726202B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811553849.6A CN109726202B (zh) 2018-12-18 2018-12-18 一种区块链数据存储方法及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811553849.6A CN109726202B (zh) 2018-12-18 2018-12-18 一种区块链数据存储方法及计算机存储介质

Publications (2)

Publication Number Publication Date
CN109726202A true CN109726202A (zh) 2019-05-07
CN109726202B CN109726202B (zh) 2020-11-17

Family

ID=66296146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811553849.6A Active CN109726202B (zh) 2018-12-18 2018-12-18 一种区块链数据存储方法及计算机存储介质

Country Status (1)

Country Link
CN (1) CN109726202B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110263573A (zh) * 2019-05-22 2019-09-20 西安邮电大学 基于区块链个人身份的表示方法
CN110380919A (zh) * 2019-08-30 2019-10-25 北京东软望海科技有限公司 区块链请求的处理方法、装置、电子设备及可读存储介质
CN111159288A (zh) * 2019-12-16 2020-05-15 郑杰骞 链式结构数据存储、验证、实现方法、系统、装置及介质
CN111245897A (zh) * 2019-12-30 2020-06-05 深圳物缘科技有限公司 数据处理方法、装置、系统、存储介质及处理器
CN111581627A (zh) * 2020-05-11 2020-08-25 北京精准沟通传媒科技股份有限公司 一种数据处理方法、装置及电子设备
CN111722883A (zh) * 2020-06-12 2020-09-29 浪潮电子信息产业股份有限公司 一种接口地址的更新方法、装置和计算机可读存储介质
CN112688996A (zh) * 2020-12-16 2021-04-20 宁波云麟信息科技有限公司 基于区块链的电子存证数据存储方法和电子设备
CN112738866A (zh) * 2020-12-31 2021-04-30 百果园技术(新加坡)有限公司 一种终端接入方法、装置、设备及介质
CN113342275A (zh) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 区块链节点存取数据的方法、设备和计算机可读存储介质
CN116561092A (zh) * 2023-04-04 2023-08-08 苏州小猫花网络科技有限公司 一种具有引导功能的区块链数据存储方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120207152A1 (en) * 2011-02-10 2012-08-16 Hon Hai Precision Industry Co., Ltd. Default gateway, terminal device, and method for exchanging voip signaling
CN102725755A (zh) * 2011-12-31 2012-10-10 华为技术有限公司 文件访问方法及系统
CN105224546A (zh) * 2014-06-04 2016-01-06 阿里巴巴集团控股有限公司 数据存储和查询方法及设备
CN107766343A (zh) * 2016-08-15 2018-03-06 华为软件技术有限公司 一种数据存储方法、装置及存储服务器
CN108090064A (zh) * 2016-11-21 2018-05-29 腾讯科技(深圳)有限公司 一种数据查询方法、装置、数据存储服务器及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120207152A1 (en) * 2011-02-10 2012-08-16 Hon Hai Precision Industry Co., Ltd. Default gateway, terminal device, and method for exchanging voip signaling
CN102725755A (zh) * 2011-12-31 2012-10-10 华为技术有限公司 文件访问方法及系统
CN105224546A (zh) * 2014-06-04 2016-01-06 阿里巴巴集团控股有限公司 数据存储和查询方法及设备
CN107766343A (zh) * 2016-08-15 2018-03-06 华为软件技术有限公司 一种数据存储方法、装置及存储服务器
CN108090064A (zh) * 2016-11-21 2018-05-29 腾讯科技(深圳)有限公司 一种数据查询方法、装置、数据存储服务器及系统

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110263573A (zh) * 2019-05-22 2019-09-20 西安邮电大学 基于区块链个人身份的表示方法
CN110380919B (zh) * 2019-08-30 2021-11-05 望海康信(北京)科技股份公司 区块链请求的处理方法、装置、电子设备及可读存储介质
CN110380919A (zh) * 2019-08-30 2019-10-25 北京东软望海科技有限公司 区块链请求的处理方法、装置、电子设备及可读存储介质
CN111159288A (zh) * 2019-12-16 2020-05-15 郑杰骞 链式结构数据存储、验证、实现方法、系统、装置及介质
CN111159288B (zh) * 2019-12-16 2023-04-28 郑杰骞 链式结构数据存储、验证、实现方法、系统、装置及介质
CN111245897A (zh) * 2019-12-30 2020-06-05 深圳物缘科技有限公司 数据处理方法、装置、系统、存储介质及处理器
CN111245897B (zh) * 2019-12-30 2022-08-26 深圳物缘科技有限公司 数据处理方法、装置、系统、存储介质及处理器
CN111581627A (zh) * 2020-05-11 2020-08-25 北京精准沟通传媒科技股份有限公司 一种数据处理方法、装置及电子设备
CN111722883A (zh) * 2020-06-12 2020-09-29 浪潮电子信息产业股份有限公司 一种接口地址的更新方法、装置和计算机可读存储介质
CN112688996A (zh) * 2020-12-16 2021-04-20 宁波云麟信息科技有限公司 基于区块链的电子存证数据存储方法和电子设备
CN112738866A (zh) * 2020-12-31 2021-04-30 百果园技术(新加坡)有限公司 一种终端接入方法、装置、设备及介质
CN112738866B (zh) * 2020-12-31 2024-04-30 百果园技术(新加坡)有限公司 一种终端接入方法、装置、设备及介质
CN113342275A (zh) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 区块链节点存取数据的方法、设备和计算机可读存储介质
CN116561092A (zh) * 2023-04-04 2023-08-08 苏州小猫花网络科技有限公司 一种具有引导功能的区块链数据存储方法

Also Published As

Publication number Publication date
CN109726202B (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
CN109726202A (zh) 一种区块链数据存储方法及计算机存储介质
US11301136B2 (en) Capacity forecasting based on capacity policies and transactions
US7490265B2 (en) Recovery segment identification in a computing infrastructure
CN106294352B (zh) 一种文件处理方法、装置和文件系统
CN109299157A (zh) 一种分布式大单表的数据导出方法及装置
CN103366117B (zh) 一种感染型病毒修复方法及系统
CN101730099A (zh) 基于权限控制的终端管理方法及装置
CN112367211B (zh) 一种设备命令行生成配置模板方法、装置及存储介质
US20030097276A1 (en) Data storage management driven by business objectives
CN110287201A (zh) 数据访问方法、装置、设备及存储介质
JP2006099307A (ja) 分散サーバへのアプリケーションセットのインストール方法
JP7310900B2 (ja) ネットワーク管理装置、方法およびプログラム
CN109271113A (zh) 一种基于云存储的数据管理系统及方法
US7903678B2 (en) Internet protocol address management system and method
CN108574718A (zh) 一种云主机创建方法及装置
CN105978744B (zh) 一种资源分配方法、装置及系统
CN107656796A (zh) 一种虚拟机冷迁移方法、系统及设备
CN112000343A (zh) 使用Devops在Kubernetes中部署多版本服务的方法及系统
CN108604231A (zh) 镜像处理方法以及计算设备
CN107547622B (zh) 一种资源调整方法及装置
CN103220355B (zh) 内容分发网络中的多用户配置方法
JP5867161B2 (ja) データアクセス制御装置、データアクセス制御方法およびプログラム
CN109144426A (zh) 一种对象存储系统的存储空间管理方法、系统及相关组件
CN105791350B (zh) 项目数据处理方法和系统
CN109889448A (zh) 一种网络流量的分流方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant