CN111475576A - 基于区块链的分布式数据库存储方法及系统 - Google Patents
基于区块链的分布式数据库存储方法及系统 Download PDFInfo
- Publication number
- CN111475576A CN111475576A CN202010293755.0A CN202010293755A CN111475576A CN 111475576 A CN111475576 A CN 111475576A CN 202010293755 A CN202010293755 A CN 202010293755A CN 111475576 A CN111475576 A CN 111475576A
- Authority
- CN
- China
- Prior art keywords
- consensus
- block
- node
- data
- nodes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于区块链的分布式数据库存储方法及系统。该方法包括:数据库节点发送请求交易包至对应的区块链节点;区块链节点将请求交易包广播至区块链中的其他区块链节点,其他区块链节点将请求交易包发送到对应的数据库节点;共识节点根据请求交易包进行共识处理,得到请求共识结果,发送请求共识结果至其他共识节点以进行交易共识;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点;数据库节点在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端。本发明可以提高数据的同步实时性、可用性并持续对外提供服务。
Description
技术领域
本发明涉及区块链技术领域,具体地,涉及一种基于区块链的分布式数据库存储方法及系统。
背景技术
目前市面上流行关系型数据库系统,其数据备份模式通常采用主从库复制方式,实现数据准实时同步和高可用性。这样的技术架构存在缺陷,数据同步实时性不高,容易造成主从库数据不一致,以及在主库出现故障情况下,主从库之间切换操作复杂时间过长。而市面上的分布式数据库多采用分库分表加上集中式管理节点模式。当中心的管理节点出现故障时,容易造成整体数据库系统不可用,无法持续对外提供服务。
发明内容
本发明实施例的主要目的在于提供一种基于区块链的分布式数据库存储方法,以提高数据的同步实时性、可用性并持续对外提供服务。
为了实现上述目的,本发明实施例提供一种基于区块链的分布式数据库存储方法,区块链包括区块链节点,每个区块链节点均与一个数据库节点连接,方法包括:
数据库节点将预先接收的数据存储请求转换为请求交易包,发送请求交易包至对应的区块链节点;
区块链节点将请求交易包广播至区块链中的其他区块链节点,其他区块链节点将请求交易包发送到对应的数据库节点;
区块链节点中的共识节点根据请求交易包进行共识处理,得到请求共识结果,发送请求共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的请求共识确认信息判断交易共识是否成功;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点;
数据库节点在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端。
本发明实施例还提供一种基于区块链的分布式数据库存储系统,包括:
区块链节点,每个区块链节点1均与一个数据库节点连接;
数据库节点用于将预先接收的数据存储请求转换为请求交易包,发送请求交易包至对应的区块链节点;在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端;
区块链节点用于将请求交易包广播至区块链中的其他区块链节点,其他区块链节点将请求交易包发送到对应的数据库节点;
区块链节点包括共识节点,用于根据请求交易包进行共识处理,得到请求共识结果,发送请求共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的请求共识确认信息判断交易共识是否成功;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点。
本发明实施例的基于区块链的分布式数据库存储方法及系统中的区块链节点先广播来自对应数据库节点的请求交易包以令其他区块链节点将请求交易包发送到对应的数据库节点;然后区块链节点中的共识节点根据请求交易包进行共识处理,当交易共识成功时,生成新区块并发送数据执行指令至对应的数据库节点;最后数据库节点在收到数据执行指令后执行请求交易包生成执行结果,并对执行结果进行存储与发送,可以提高数据的同步实时性、可用性并持续对外提供服务。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中基于区块链的分布式数据库存储方法的流程图;
图2是本发明一实施例中数据备份和数据恢复的流程图;
图3是本发明一实施例中区块链节点的链式数据结构示意图;
图4是本发明一实施例中包括恢复区块的链式数据结构示意图。
图5是本发明一实施例中基于区块链的分布式数据库存储系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于目前现有技术的数据同步实时性不高,无法持续对外提供服务,本发明实施例提供一种基于区块链的分布式数据库存储方法,以提高数据的同步实时性、可用性并持续对外提供服务。以下结合附图对本发明进行详细说明。
图1是本发明一实施例中基于区块链的分布式数据库存储方法的流程图。如图1所示,基于区块链的分布式数据库存储方法包括:
S101:数据库节点将预先接收的数据存储请求转换为请求交易包,发送请求交易包至对应的区块链节点。
其中,区块链节点是区块链中对交易进行接收、广播、共识、执行和存储的网络节点,一般是各区块链成员的可信服务器、工作站等。数据库节点是分布式数据库中的数据处理存储节点。
数据存储请求来自外部的客户端,一般为sql语句或者key-value(键值)结构的语句;请求交易包为内部数据结构的交易包。
S102:区块链节点将请求交易包广播至区块链中的其他区块链节点,其他区块链节点将请求交易包发送到对应的数据库节点。
其中,区块链中的节点通过gRPC(Google Remote Procedure Call,Google远程过程调用)网络将请求交易包广播至区块链中的其他区块链节点。执行S102之后,全部区块链节点和数据库节点拥有完全相同的请求交易包。
S103:区块链节点中的共识节点根据请求交易包进行共识处理,得到请求共识结果,发送请求共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的请求共识确认信息判断交易共识是否成功;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点。
在进行交易共识时一般应用实用拜占庭容错(PBFT,Practical ByzantineFaultTolerance)算法。传统的PBFT算法令区块链中的全部区块链节点均与其他区块链节点进行点对点通讯交换报文的方式来完成交易共识动作。在节点数量超出12个节点后,节点之间将产生网状通讯风暴,通讯效率急剧下降。因此在执行S103之前,本发明会进行区块链网络共识节点选举以选举出共识节点,将共识节点的数量限制在12个以内。当区块链节点的数量低于12个节点时,所有区块链节点均为共识节点。
具体实施时,本发明采用权重的随机抽签算法,根据节点的上链时长、交易响应时间、数据同步性以及节点安全系数等因素动态计算每个节点的权重,从高权重的节点中选举出具有安全特性且通讯效率较高的共识节点,提高共识算法的运行效率。其他不参与共识的非共识节点为记账节点。选举出共识节点之后,将共识节点中的任意一个节点作为领导节点,由领导节点发起共识指令,领导节点和其他接收到共识指令的共识节点根据请求交易包进行共识处理。
其中,共识节点的个数为3f+1个,f为整数。PBFT算法包括预处理阶段、准备阶段和提交阶段,三个阶段为顺序执行。当共识节点收到在当前区块链中2f+1个来自其他共识节点的一致的请求共识确认信息后,该笔交易才能完成当前阶段的共识并进入下一阶段。如果共识节点在任一阶段中收到一致的请求共识确认信息的数量小于2f+1个,则该共识节点作为交易共识失败的共识节点会退出下一阶段的交易共识,不再发送请求共识确认信息。三个阶段的共识都完成时代表交易共识成功。
另外,本发明在预处理阶段的共识节点还会发送区块链高度和当前活跃区块的哈希值。其他共识节点收到多组包括区块链高度和当前活跃区块的哈希值的报文后,会首先判断本共识节点的区块链高度和哈希值是否和收到的大部分报文一致。如果不一致,则判定本共识节点的数据落后于其他共识节点,没有保持数据同步,此时置本共识节点的数据同步性为否,退出下一阶段的交易共识。
本发明还可以根据业务需要选择POW(Proof Of Work,工作量证明)、POS(ProofOf Stake,股权证明)和DPOS(Delegated Proof Of Stake,委托股权证明)等算法作为共识算法进行交易共识。
S104:数据库节点在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端。
其中,每个数据库节点都会将执行结果进行存储到本地持久化设备或者文件系统中,所有数据库节点都拥有完全相同的数据,其中一个数据库节点会将执行结果发送至外部的客户端。
图1所示的基于区块链的分布式数据库存储方法的执行主体为区块链和分布式数据库,区块链包括区块链节点,分布式数据库包括数据库节点,每个区块链节点均与一个数据库节点通过TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)连接。由图1所示的流程可知,本发明实施例的基于区块链的分布式数据库存储方法中的区块链节点先广播来自对应数据库节点的请求交易包以令其他区块链节点将请求交易包发送到对应的数据库节点;然后区块链节点中的共识节点根据请求交易包进行共识处理,当交易共识成功时,生成新区块并发送数据执行指令至对应的数据库节点;最后数据库节点在收到数据执行指令后执行请求交易包生成执行结果,并对执行结果进行存储与发送,可以提高数据的同步实时性、可用性并持续对外提供服务。
一实施例中,本发明还可以进行数据备份和恢复。图2是本发明实施例中数据备份和数据恢复的流程图。如图2所示,在执行S104之后还包括:
S201:区块链节点发送新区块的区块号和区块时间至对应的数据库节点。
图3是本发明一实施例中区块链节点的链式数据结构示意图。如图3所示,区块链节点执行交易,不断生成区块,后一个区块包含前一个区块的哈希值,新区块只能追加到前一个区块的尾部,形成一个不可篡改、记录历史数据的链式数据结构。区块链节点生成新区块后执行S201。
S202:数据库节点记录区块号和对应的区块时间。
其中,区块号为与区块时间对应的备份点,例如区块时间1对应区块1,区块时间2对应区块2,区块时间3对应区块3。
S203:数据库节点根据来自客户端的数据恢复指令中的区块时间确定对应的区块号,发送包括该区块号的恢复指令至区块链节点。
S204:区块链节点确定区块号对应的区块,并根据最新区块和最新区块与该区块之间的区块生成恢复数据包。
例如,数据恢复指令中的区块时间为区块时间1,区块时间1对应区块1,则区块链节点回退交易到区块1,根据区块3(最新区块)和区块2(最新区块与区块1之间的区块)生成恢复数据包。
S205:区块链节点中的共识节点根据恢复数据包进行共识处理,得到恢复共识结果,发送恢复共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的恢复共识确认信息判断交易共识是否成功;当交易共识成功时,根据恢复数据包生成恢复区块并发送恢复数据包至对应的数据库节点。
图4是本发明一实施例中包括恢复区块的链式数据结构示意图。如图4所示,恢复区块为区块4,区块4追加到了区块3的尾部。同时,区块链节点发送区块号4和区块时间4至数据库节点,数据库节点记录区块号4和区块时间4。区块链节点会继续执行交易,生成新的区块5。
S206:数据库节点存储恢复数据包并将恢复数据包发送至外部的客户端。
一实施例中,基于区块链的分布式数据库存储方法还包括:
区块链节点中的非共识节点和交易共识失败的共识节点发起数据同步,根据获取的同步数据生成新区块。
其中,S103中的非共识节点和交易共识失败的共识节点获取的同步数据为请求交易包,其根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点。S205中的非共识节点和交易共识失败的共识节点生成的新区块为恢复区块,同步数据为恢复数据包,其根据恢复数据包生成恢复区块并发送恢复数据包至对应的数据库节点。
发起数据同步后,全部区块链节点拥有完全相同的数据,当任意一个区块链节点失效时均可以快速切换到其他区块链节点,实现快速故障切换。区块链节点均会根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点,以及根据恢复数据包生成恢复区块并发送恢复数据包至对应的数据库节点。
传统的区块链在同步数据时会依次轮询向其他区块链节点发送数据同步请求,只要其中一个区块链节点可以访问,则将后续的全部数据从此单一节点中同步过来,这种处理模式存在通信效率低、时间过长的问题。
因此,本发明采用一种分布式数据同步方法,可以提高数据同步效率,也使得其他区块链节点的读写数据压力能够负载均衡,避免某一个区块链节点承载过大的对外输送数据的压力,包括:
非共识节点和交易共识失败的共识节点将最新区块的区块数据切分为分片并将分片封装为数据同步请求,向区块链中的其他区块链节点发送数据同步请求,并根据其他区块链节点应答的数据片生成同步数据。
例如,非共识节点和交易共识失败的共识节点将区块数据分为3个不同的分片,区块链共有24个区块链节点;将包括第1个分片的数据同步请求发送至第1个区块链节点至第8个区块链节点,将包括第2个分片的数据同步请求发送至第8个区块链节点至第16个区块链节点,将包括第3个分片的数据同步请求发送至第17个区块链节点至第24个区块链节点。当收到数据同步请求的区块链节点上存在区块对应的数据片时,会返回对应的数据片。收到多个数据片的节点会删除重复的数据片,根据3个分片对应的3个数据片生成同步数据。
生成同步数据的节点会在生成同步数据之后检查同步数据的完整性和一致性,即将同步数据的哈希值与最新区块的区块数据的哈希值进行比较;当两者一致时,表明数据同步成功,否则数据同步失败。如果区块链节点在发送数据同步请求或数据片时出现超时或中断的情况,也会导致数据同步失败。
另外,本发明中的区块链还会定期对区块链节点进行故障核查。当区块链节点出现故障时,该区块链节点会发起数据同步,包括:
区块链节点在处理预设数量(预设数量大于或等于1)的交易后,启动故障核查,根据最新区块的哈希值生成核查数据特征值,发送核查数据特征值至其他区块链节点,并判断该核查数据特征值与来自其他区块链节点的核查数据特征值是否相同;如果不相同,表明该区块链节点的数据已经损坏或者被黑客攻击出现异常,则该区块链节点发起数据同步。
其中,对于拥有3f’+1个区块链节点的区块链网络,区块链节点收到的来自其他区块链节点的核查数据特征值的数量不能少于2f’+1个。当收到至少2f’+1个核查数据特征值后,才会判断本区块链节点的核查数据特征值与来自其他区块链节点的核查数据特征值是否相同。f’为大于1的整数。
进行故障核查的区块链节点在数据同步之后会根据同步数据生成同步数据的核查数据特征值,并判断同步数据的核查数据特征值与来自其他区块链节点的核查数据特征值是否相同。当两者相同时,根据同步数据生成新区块并发送同步数据至对应的数据库节点,数据库节点将同步数据更新至本地持久化设备或者文件系统中,此时所有数据库节点都拥有完全相同的数据。因此每个数据库节点都可以独立提供负载均衡的读数据服务,避免集中式数据库的读数据压力瓶颈。
本发明实施例中数据存储的具体流程如下:
1、数据库节点将预先接收的数据存储请求转换为请求交易包,发送请求交易包至对应的区块链节点。
2、区块链节点将请求交易包广播至区块链中的其他区块链节点,其他区块链节点将请求交易包发送到对应的数据库节点。
3、从区块链节点中选举出共识节点,将共识节点中的任意一个节点作为领导节点,由领导节点发起共识指令,领导节点和其他接收到共识指令的共识节点根据请求交易包进行共识处理,得到请求共识结果。
4、共识节点发送请求共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的请求共识确认信息判断交易共识是否成功;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点。
5、区块链节点中的非共识节点和交易共识失败的共识节点发起数据同步,根据获取的同步数据生成新区块并发送数据执行指令至对应的数据库节点。
6、数据库节点在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端。
本发明实施例中数据备份、恢复的具体流程如下:
1、区块链节点发送新区块的区块号和区块时间至对应的数据库节点。
2、数据库节点记录区块号和对应的区块时间。
3、数据库节点根据来自客户端的数据恢复指令中的区块时间确定对应的区块号,发送包括该区块号的恢复指令至区块链节点。
4、区块链节点确定区块号对应的区块,并根据最新区块和最新区块与该区块之间的区块生成恢复数据包。
5、区块链节点中的共识节点根据恢复数据包进行共识处理,得到恢复共识结果,发送恢复共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的恢复共识确认信息判断交易共识是否成功;当交易共识成功时,根据恢复数据包生成恢复区块并发送恢复数据包至对应的数据库节点。
6、区块链节点中的非共识节点和交易共识失败的共识节点发起数据同步,根据获取的同步数据(恢复数据包)生成恢复区块,发送恢复数据包至对应的数据库节点。
7、数据库节点存储恢复数据包并将恢复数据包发送至外部的客户端。
本发明实施例中故障核查的具体流程如下:
1、区块链节点在处理预设数量的交易后,启动故障核查,根据最新区块的哈希值生成核查数据特征值,发送核查数据特征值至其他区块链节点。
2、区块链节点在收到至少2f’+1个核查数据特征值后,判断该核查数据特征值与来自其他区块链节点的核查数据特征值是否相同。如果不相同,则该区块链节点发起数据同步,根据同步数据生成同步数据的核查数据特征值。
3、区块链节点判断同步数据的核查数据特征值与来自其他区块链节点的核查数据特征值是否相同。当两者相同时,根据同步数据生成新区块并发送同步数据至对应的数据库节点,数据库节点将同步数据更新至本地持久化设备或者文件系统中。
综上,本发明实施例的基于区块链的分布式数据库存储方法中的区块链节点先广播来自对应数据库节点的请求交易包以令其他区块链节点将请求交易包发送到对应的数据库节点;然后区块链节点中的共识节点根据请求交易包进行共识处理,当交易共识成功时,生成新区块并发送数据执行指令至对应的数据库节点;最后数据库节点在收到数据执行指令后执行请求交易包生成执行结果,并对执行结果进行存储与发送,可以提高数据的同步实时性、可用性并持续对外提供服务。
另外,本发明还可以进行数据备份和恢复,提高共识算法的运行效率,通过数据同步令每个数据库节点都可以独立提供负载均衡的读数据服务,避免集中式数据库的读数据压力瓶颈。
基于同一发明构思,本发明实施例还提供了一种基于区块链的分布式数据库存储系统,由于该系统解决问题的原理与基于区块链的分布式数据库存储方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。
图5是本发明一实施例中基于区块链的分布式数据库存储系统的结构框图。区块链节点1包括共识节点11和非共识节点12。如图5所示,基于区块链的分布式数据库存储系统包括:
区块链节点1,每个区块链节点1均与一个数据库节点2连接;
数据库节点2用于将预先接收的数据存储请求转换为请求交易包,发送请求交易包至对应的区块链节点1;在收到数据执行指令后执行请求交易包生成执行结果,存储执行结果并将执行结果发送至外部的客户端;
区块链节点1用于将请求交易包广播至区块链中的其他区块链节点1,其他区块链节点1将请求交易包发送到对应的数据库节点2;
区块链节点1包括共识节点11,用于根据请求交易包进行共识处理,得到请求共识结果,发送请求共识结果至其他共识节点11以进行交易共识,并根据来自其他共识节点11的请求共识确认信息判断交易共识是否成功;当交易共识成功时,根据请求交易包生成新区块并发送数据执行指令至对应的数据库节点2。
在其中一种实施例中,区块链节点还用于:发送新区块的区块号和区块时间至对应的数据库节点;确定区块号对应的区块,并根据最新区块和最新区块与该区块之间的区块生成恢复数据包;
数据库节点还用于:记录区块号和对应的区块时间;根据来自客户端的数据恢复指令中的区块时间确定对应的区块号,发送包括该区块号的恢复指令至区块链节点;存储恢复数据包并将恢复数据包发送至外部的客户端;
区块链节点中的共识节点还用于:根据恢复数据包进行共识处理,得到恢复共识结果,发送恢复共识结果至其他共识节点以进行交易共识,并根据来自其他共识节点的恢复共识确认信息判断交易共识是否成功;当交易共识成功时,根据恢复数据包生成恢复区块并发送恢复数据包至对应的数据库节点。
在其中一种实施例中,区块链节点还包括非共识节点;
非共识节点和交易共识失败的共识节点用于发起数据同步,根据获取的同步数据生成新区块并发送数据执行指令至对应的数据库节点。
在其中一种实施例中,非共识节点和交易共识失败的共识节点具体用于:
非共识节点和交易共识失败的共识节点将最新区块的区块数据切分为分片并将分片封装为数据同步请求,向区块链中的其他区块链节点发送数据同步请求,并根据其他区块链节点应答的数据片生成同步数据。
在其中一种实施例中,区块链节点还用于:
在处理预设数量的交易后,根据最新区块的哈希值生成核查数据特征值,发送核查数据特征值至其他区块链节点,并判断该核查数据特征值与来自其他区块链节点的核查数据特征值是否相同;如果不相同,则该区块链节点发起数据同步。
综上,本发明实施例的基于区块链的分布式数据库存储系统中的区块链节点先广播来自对应数据库节点的请求交易包以令其他区块链节点将请求交易包发送到对应的数据库节点;然后区块链节点中的共识节点根据请求交易包进行共识处理,当交易共识成功时,生成新区块并发送数据执行指令至对应的数据库节点;最后数据库节点在收到数据执行指令后执行请求交易包生成执行结果,并对执行结果进行存储与发送,可以提高数据的同步实时性、可用性并持续对外提供服务。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
Claims (10)
1.一种基于区块链的分布式数据库存储方法,其特征在于,所述区块链包括区块链节点,每个区块链节点均与一个数据库节点连接,所述方法包括:
所述数据库节点将预先接收的数据存储请求转换为请求交易包,发送所述请求交易包至对应的区块链节点;
所述区块链节点将所述请求交易包广播至所述区块链中的其他区块链节点,其他区块链节点将所述请求交易包发送到对应的数据库节点;
所述区块链节点中的共识节点根据所述请求交易包进行共识处理,得到请求共识结果,发送所述请求共识结果至其他共识节点以进行交易共识,并根据来自所述其他共识节点的请求共识确认信息判断所述交易共识是否成功;当所述交易共识成功时,根据所述请求交易包生成新区块并发送数据执行指令至对应的数据库节点;
所述数据库节点在收到数据执行指令后执行所述请求交易包生成执行结果,存储所述执行结果并将所述执行结果发送至外部的客户端。
2.根据权利要求1所述的基于区块链的分布式数据库存储方法,其特征在于,还包括:
所述区块链节点发送所述新区块的区块号和区块时间至对应的数据库节点;
所述数据库节点记录所述区块号和对应的区块时间;
所述数据库节点根据来自所述客户端的数据恢复指令中的区块时间确定对应的区块号,发送包括该区块号的恢复指令至所述区块链节点;
所述区块链节点确定所述区块号对应的区块,并根据最新区块和所述最新区块与该区块之间的区块生成恢复数据包;
所述区块链节点中的共识节点根据所述恢复数据包进行共识处理,得到恢复共识结果,发送所述恢复共识结果至其他共识节点以进行交易共识,并根据来自所述其他共识节点的恢复共识确认信息判断所述交易共识是否成功;当所述交易共识成功时,根据所述恢复数据包生成恢复区块并发送所述恢复数据包至对应的数据库节点;
所述数据库节点存储所述恢复数据包并将所述恢复数据包发送至外部的客户端。
3.根据权利要求1所述的基于区块链的分布式数据库存储方法,其特征在于,还包括:
所述区块链节点中的非共识节点和交易共识失败的共识节点发起数据同步,根据获取的同步数据生成新区块并发送数据执行指令至对应的数据库节点。
4.根据权利要求3所述的基于区块链的分布式数据库存储方法,其特征在于,所述非共识节点和所述交易共识失败的共识节点发起数据同步包括:
所述非共识节点和所述交易共识失败的共识节点将最新区块的区块数据切分为分片并将所述分片封装为数据同步请求,向所述区块链中的其他区块链节点发送所述数据同步请求,并根据其他区块链节点应答的数据片生成同步数据。
5.根据权利要求1所述的基于区块链的分布式数据库存储方法,其特征在于,还包括:
所述区块链节点在处理预设数量的交易后,根据最新区块的哈希值生成核查数据特征值,发送所述核查数据特征值至其他区块链节点,并判断该核查数据特征值与来自所述其他区块链节点的核查数据特征值是否相同;如果不相同,则该区块链节点发起数据同步。
6.一种基于区块链的分布式数据库存储系统,其特征在于,所述区块链包括区块链节点,每个区块链节点均与一个数据库节点连接;
所述数据库节点用于将预先接收的数据存储请求转换为请求交易包,发送所述请求交易包至对应的区块链节点;在收到数据执行指令后执行所述请求交易包生成执行结果,存储所述执行结果并将所述执行结果发送至外部的客户端;
所述区块链节点用于将所述请求交易包广播至所述区块链中的其他区块链节点,其他区块链节点将所述请求交易包发送到对应的数据库节点;
所述区块链节点包括共识节点,用于根据所述请求交易包进行共识处理,得到请求共识结果,发送所述请求共识结果至其他共识节点以进行交易共识,并根据来自所述其他共识节点的请求共识确认信息判断所述交易共识是否成功;当所述交易共识成功时,根据所述请求交易包生成新区块并发送数据执行指令至对应的数据库节点。
7.根据权利要求6所述的基于区块链的分布式数据库存储系统,其特征在于,
所述区块链节点还用于:发送所述新区块的区块号和区块时间至对应的数据库节点;确定所述区块号对应的区块,并根据最新区块和所述最新区块与该区块之间的区块生成恢复数据包;
所述数据库节点还用于:记录所述区块号和对应的区块时间;根据来自所述客户端的数据恢复指令中的区块时间确定对应的区块号,发送包括该区块号的恢复指令至所述区块链节点;存储所述恢复数据包并将所述恢复数据包发送至外部的客户端;
所述区块链节点中的共识节点还用于:根据所述恢复数据包进行共识处理,得到恢复共识结果,发送所述恢复共识结果至其他共识节点以进行交易共识,并根据来自所述其他共识节点的恢复共识确认信息判断所述交易共识是否成功;当所述交易共识成功时,根据所述恢复数据包生成恢复区块并发送所述恢复数据包至对应的数据库节点。
8.根据权利要求6所述的基于区块链的分布式数据库存储系统,其特征在于,所述区块链节点还包括非共识节点;
所述非共识节点和交易共识失败的共识节点用于发起数据同步,根据获取的同步数据生成新区块并发送数据执行指令至对应的数据库节点。
9.根据权利要求8所述的基于区块链的分布式数据库存储系统,其特征在于,所述非共识节点和所述交易共识失败的共识节点具体用于:
所述非共识节点和所述交易共识失败的共识节点将最新区块的区块数据切分为分片并将所述分片封装为数据同步请求,向所述区块链中的其他区块链节点发送所述数据同步请求,并根据其他区块链节点应答的数据片生成同步数据。
10.根据权利要求6所述的基于区块链的分布式数据库存储系统,其特征在于,所述区块链节点还用于:
在处理预设数量的交易后,根据最新区块的哈希值生成核查数据特征值,发送所述核查数据特征值至其他区块链节点,并判断该核查数据特征值与来自所述其他区块链节点的核查数据特征值是否相同;如果不相同,则该区块链节点发起数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293755.0A CN111475576B (zh) | 2020-04-15 | 2020-04-15 | 基于区块链的分布式数据库存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293755.0A CN111475576B (zh) | 2020-04-15 | 2020-04-15 | 基于区块链的分布式数据库存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475576A true CN111475576A (zh) | 2020-07-31 |
CN111475576B CN111475576B (zh) | 2023-08-08 |
Family
ID=71752041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010293755.0A Active CN111475576B (zh) | 2020-04-15 | 2020-04-15 | 基于区块链的分布式数据库存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475576B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112102040A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 一种分布式环境下全局库存控制方法及系统 |
CN112597241A (zh) * | 2020-12-10 | 2021-04-02 | 浙江大学 | 一种基于区块链的分布式数据库存储方法及系统 |
CN112733182A (zh) * | 2020-12-22 | 2021-04-30 | 航天信息股份有限公司 | 一种区块链节点访问内网隐私数据的方法及系统 |
CN112835977A (zh) * | 2021-01-20 | 2021-05-25 | 中国科学院信息工程研究所 | 一种基于区块链的数据库管理方法及系统 |
CN113630445A (zh) * | 2021-07-19 | 2021-11-09 | 山东区块链研究院 | 一种基于区块链网络的数据存储方法及装置 |
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN115309536A (zh) * | 2022-10-12 | 2022-11-08 | 青岛民航凯亚系统集成有限公司 | 高并发的彩票交易场景下数据一致性方法 |
CN115437843A (zh) * | 2022-08-25 | 2022-12-06 | 北京万里开源软件有限公司 | 一种基于多级分布式共识的数据库存储分区恢复方法 |
WO2023054936A1 (ko) * | 2021-09-29 | 2023-04-06 | 삼성전자 주식회사 | 블록체인 네트워크에서 블록 데이터를 복구하는 전자 장치 및 그의 동작 방법 |
CN117812092A (zh) * | 2024-02-28 | 2024-04-02 | 中国信息通信研究院 | 基于谓词的区块压缩传输方法和装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776894A (zh) * | 2016-11-29 | 2017-05-31 | 北京众享比特科技有限公司 | 日志数据库系统和同步方法 |
CN107292181A (zh) * | 2017-06-20 | 2017-10-24 | 无锡井通网络科技有限公司 | 基于区块链的数据库系统及使用该系统的使用方法 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN109558454A (zh) * | 2018-11-28 | 2019-04-02 | 杭州复杂美科技有限公司 | 平行链挖矿共识方法、设备和存储介质 |
CN109740384A (zh) * | 2019-01-11 | 2019-05-10 | 众安信息技术服务有限公司 | 基于区块链的数据存证方法和装置 |
US20200110811A1 (en) * | 2018-10-03 | 2020-04-09 | International Business Machines Corporation | Blockchain implementing reliability database |
-
2020
- 2020-04-15 CN CN202010293755.0A patent/CN111475576B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776894A (zh) * | 2016-11-29 | 2017-05-31 | 北京众享比特科技有限公司 | 日志数据库系统和同步方法 |
CN107292181A (zh) * | 2017-06-20 | 2017-10-24 | 无锡井通网络科技有限公司 | 基于区块链的数据库系统及使用该系统的使用方法 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
US20200110811A1 (en) * | 2018-10-03 | 2020-04-09 | International Business Machines Corporation | Blockchain implementing reliability database |
CN109558454A (zh) * | 2018-11-28 | 2019-04-02 | 杭州复杂美科技有限公司 | 平行链挖矿共识方法、设备和存储介质 |
CN109740384A (zh) * | 2019-01-11 | 2019-05-10 | 众安信息技术服务有限公司 | 基于区块链的数据存证方法和装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112102040A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 一种分布式环境下全局库存控制方法及系统 |
CN112597241A (zh) * | 2020-12-10 | 2021-04-02 | 浙江大学 | 一种基于区块链的分布式数据库存储方法及系统 |
CN112733182A (zh) * | 2020-12-22 | 2021-04-30 | 航天信息股份有限公司 | 一种区块链节点访问内网隐私数据的方法及系统 |
CN112835977B (zh) * | 2021-01-20 | 2022-07-15 | 中国科学院信息工程研究所 | 一种基于区块链的数据库管理方法及系统 |
CN112835977A (zh) * | 2021-01-20 | 2021-05-25 | 中国科学院信息工程研究所 | 一种基于区块链的数据库管理方法及系统 |
CN113630445A (zh) * | 2021-07-19 | 2021-11-09 | 山东区块链研究院 | 一种基于区块链网络的数据存储方法及装置 |
WO2023054936A1 (ko) * | 2021-09-29 | 2023-04-06 | 삼성전자 주식회사 | 블록체인 네트워크에서 블록 데이터를 복구하는 전자 장치 및 그의 동작 방법 |
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN115437843A (zh) * | 2022-08-25 | 2022-12-06 | 北京万里开源软件有限公司 | 一种基于多级分布式共识的数据库存储分区恢复方法 |
CN115437843B (zh) * | 2022-08-25 | 2023-03-28 | 北京万里开源软件有限公司 | 一种基于多级分布式共识的数据库存储分区恢复方法 |
CN115309536A (zh) * | 2022-10-12 | 2022-11-08 | 青岛民航凯亚系统集成有限公司 | 高并发的彩票交易场景下数据一致性方法 |
CN115309536B (zh) * | 2022-10-12 | 2023-01-24 | 青岛民航凯亚系统集成有限公司 | 高并发的彩票交易场景下数据一致性方法 |
CN117812092A (zh) * | 2024-02-28 | 2024-04-02 | 中国信息通信研究院 | 基于谓词的区块压缩传输方法和装置、设备和介质 |
CN117812092B (zh) * | 2024-02-28 | 2024-05-14 | 中国信息通信研究院 | 基于谓词的区块压缩传输方法和装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111475576B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475576A (zh) | 基于区块链的分布式数据库存储方法及系统 | |
US10833919B2 (en) | Node device operation method, work status switching apparatus, node device, and medium | |
EP3934162B1 (en) | Blockchain consensus method and device and electronic equipment | |
CN111046109A (zh) | 一种跨链任务处理方法、装置、设备及可读存储介质 | |
KR102314495B1 (ko) | 라프트 합의를 이용한 블록체인 동기화 방법 및 블록체인 시스템 | |
CN111683118B (zh) | 基于区块链的共识方法、装置、主节点设备及从节点设备 | |
CN110502364A (zh) | 一种OpenStack平台下大数据沙箱集群的跨云备份恢复方法 | |
EP3713195A1 (en) | Log processing method, related device, and system | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
WO2022206426A1 (zh) | 一种分布式事务处理方法、系统及相关设备 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
CN115643271A (zh) | 一种云上多应用数据同步方法、装置、服务器及介质 | |
CN112367373B (zh) | 分布式系统的节点确定方法和装置及存储介质 | |
Fluri et al. | Improving raft when there are failures | |
CN112711466B (zh) | 悬挂事务巡检方法和装置、电子设备和存储介质 | |
CN111813795B (zh) | 在区块链网络中确认交易的方法及装置 | |
CN113760519A (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
CN114499874A (zh) | 一种应用于工业互联网的拜占庭容错共识优化方法 | |
CN114866395A (zh) | 多组分布式一致性协议集群心跳通讯方法及装置 | |
CN115114303A (zh) | 业务数据稽核方法、平台和系统 | |
CN112491508A (zh) | 基于传输进程自适应的数据传输方法及装置 | |
CN113872961B (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN113220491B (zh) | 远程调用自适应负载均衡方法、装置、系统及计算机装备 | |
CN106487916B (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 |