数据库操作方法、装置及系统与流程
未命名
07-23
阅读:88
评论:0
1.本技术涉及区块链技术领域,特别涉及一种数据库操作方法、装置及系统。
背景技术:
2.区块链系统包括客户端和多个节点,每个节点均维护有区块链。区块链中的区块上记录有客户端发送的业务数据,节点维护有状态数据库,节点可以根据区块链上的业务数据对状态数据库进行更新。
3.区块链系统中的多个节点包括:产块节点、共识节点和普通节点。其中,产块节点在接收到业务数据后,会根据该业务数据模拟对状态数据库的更新,并将更新的结果与该业务数据一同打包为一个临时区块进行广播。共识节点可以根据该临时区块中的该业务数据模拟对状态数据库的更新,并判断更新的结果与该区块中的更新的结果是否相同,进而根据该判断的结果与产块节点进行共识。在产块节点与共识节点达成共识后,产块节点、共识节点和普通节点均根据共识结果对状态数据库进行更新,并将该临时区块加入区块链。其中,产块节点和共识节点中的每个节点在根据业务数据模拟对状态数据库的更新时,会在本地模拟该状态数据库,并根据业务数据对模拟的状态数据库进行更新,得到更新的结果。
4.但是,目前节点对状态数据库的操作方式较为单一。
技术实现要素:
5.本技术提供了一种数据库操作方法、装置及系统,可以解决目前节点对状态数据库的操作方式较为单一的问题,所述技术方案如下:
6.第一方面,提供了一种数据库操作方法,所述方法由区块链系统中的产块节点执行,所述区块链系统还包括共识节点;所述方法包括:
7.在接收到客户端发送的n个第一业务数据时,依次执行所述n个第一业务数据的事务;其中,n≥1,对于所述n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的结构化查询语言(structured quevy language,sql)指令组;在所述sql指令组执行失败时,根据所述保存点将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;
8.在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括数据操纵语句(data manipulation language,dml)指令,且所述目标sql指令组为执行成功的sql指令组;
9.向共识节点广播第一临时区块,以便于所述产块节点与所述共识节点根据所述第一临时区块进行第一共识,所述第一临时区块记录有所述n个第一业务数据和所述目标sql
指令组中的dml指令。
10.第二方面,提供了一种数据库操作方法,所述方法由区块链系统中的共识节点执行,所述区块链系统还包括:产块节点,所述方法包括:
11.接收所述产块节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和dml指令,n≥1;
12.依次执行所述n个第一业务数据的事务;其中,对于所述n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的sql指令组;在所述sql指令组执行失败时,根据所述保存点,将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;
13.在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括dml指令,且所述目标sql指令组为执行成功的sql指令组;
14.判断所述目标sql指令组中的dml指令与所述第一临时区块中的dml指令是否相同;
15.根据所述判断的结果与所述产块节点进行第一共识。
16.第三方面,提供了一种数据库操作方法,所述方法由区块链系统中的普通节点执行,所述区块链系统还包括:产块节点和共识节点,所述方法包括:
17.接收所述产块节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和dml指令,n≥1;
18.在所述产块节点与所述共识节点根据所述第一临时区块达成第一共识时,执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。
19.第四方面,提供了一种区块链系统,所述区块链系统包括:客户端、产块节点、共识节点和普通节点;
20.所述客户端用于向所述产块节点发送业务数据;
21.所述产块节点用于执行第一方面提供的任一种方法;
22.所述共识节点用于执行第二方面提供的任一种方法;
23.所述普通节点用于执行第三方面提供的任一种方法。
24.第五方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面、第二方面或第三方面提供的任一种方法。
25.第六方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面、第二方面或第三方面提供的任一种方法。
26.第七方面,提供了一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面、第二方面或第三方面提供的任一种方法。
27.本技术提供的技术方案带来的有益效果至少包括:
28.本技术实施例提供了一种数据库操作方法中,产块节点和共识节点均是先依次执行该n个第一业务数据的事务,以对节点上的状态数据库进行操作。在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,节点还将该状态数据库回滚至创建该状态数据库的保存点时的状态。在产块节点与共识节点达成共识后,再执行该目标sql指令组中的dml指令。可见,本技术实施例提供的数据库操作方法中,并未在节点上模拟状态数据库,而是直接在状态数据库上进行操作,因此,本技术实施例提供了一种新的数据库操作方法,丰富了数据库的操作方式。
29.并且,相关技术中,节点在模拟状态数据库时,会开启用于模拟该状态数据库的进程,从而对节点的性能产生影响。本技术实施例中,产块节点和共识节点均无需模拟状态数据库,且执行n个第一业务数据的事务均在运行状态数据库的进程中,因此,本技术实施例提供的数据库操作方法对节点的性能的影响较小,节点的性能稳定性较高,节点的性能也较高。
附图说明
30.图1为本技术实施例提供的一种区块链系统的结构示意图;
31.图2为本技术实施例提供的一种区块链的示意图;
32.图3为本技术实施例提供的一种数据库操作方法的流程图;
33.图4为本技术实施例提供的另一种数据库操作方法的流程图;
34.图5为本技术实施例提供的另一种数据库操作方法的流程图;
35.图6为本技术实施例提供的另一种数据库操作方法的流程图;
36.图7为本技术实施例提供的另一种数据库操作方法的流程图;
37.图8为本技术实施例提供的另一种数据库操作方法的流程图;
38.图9为本技术实施例提供的另一种数据库操作方法的流程图;
39.图10为本技术实施例提供的一种数据库操作装置的结构示意图;
40.图11为本技术实施例提供的另一种数据库操作装置的结构示意图;
41.图12为本技术实施例提供的另一种数据库操作装置的结构示意图;
42.图13为本技术实施例提供的一种服务器的结构示意图。
具体实施方式
43.为使本技术的原理和技术方案更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
44.本技术实施例涉及的区块链系统可以是由至少一个客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端;或者计算设备的一部分,如功能板等;或者运行在计算设备上的虚拟机等)通过网络通信的形式连接形成的分布式系统。用户终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。
45.参见图1,图1是本技术实施例提供的区块链系统100的结构示意图,由多个节点和客户端(图1中以一个客户端为例)形成。节点之间形成组成的点对点(peer to peer,p2p)网络,p2p协议是一个运行在传输控制协议(transmission control protocol,tcp)协议之
上的应用层协议。在区块链系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
46.图1示出的区块链系统中各节点的功能包括:
47.1)路由,节点具有的基本功能,用于支持节点之间的通信。
48.2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
49.例如,应用实现的业务包括:
50.2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易。将当前交易的交易数据发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
51.2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
52.2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
53.3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的数据。
54.参见图2,图2是本技术实施例提供的区块结构(block structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
55.进一步地,客户端用于向区块链系统中的节点发送业务数据,如上述交易数据等。客户端可以是安装有某一应用的手机、电脑等电子设备。节点中的智能合约可以将业务数据存储在区块链上。
56.节点中不仅可以运行有至少一个智能合约,该至少一个智能合约具有一一对应的至少一个状态数据库(也称存储引擎)。对于一个智能合约及其对应的状态数据库,该智能合约在运行的过程中,可以根据区块链上的业务数据在该状态数据库中记录状态数据(也称世界状态)。
57.比如,节点中的智能合约在运行时,若节点需要在区块链上记录用于对状态数据进行增加、删除、修改或查询的业务数据时,节点可以根据该业务数据,对该智能合约对应的状态数据库中进行业务数据的增加、删除、修改或查询。
58.上述状态数据库可以有多种类型。比如,键值(key-value,kv)数据库、文档数据库或关系型数据库等,关系型数据库也称关系数据库管理系统(relational database management system,rdbms)。其中,键值数据库不支持过滤查询;文档数据库支持过滤查询,但不支持联合查询和嵌套查询;关系型数据库支持过滤查询、联合查询、聚集查询和嵌套查询等,并且关系型数据库具有事务特性(如原子性(atomicity))和多索引特性。本技术实施例中以状态数据库为关系型数据库为例,因此,本技术实施例中的状态数据库能够支持较复杂的查询方式,且具有事务特性和多索引特性。
59.根据以上内容可知,区块链系统中的节点可以根据区块链上的业务数据对状态数据库进行更新。示例地,区块链系统中的多个节点包括:产块节点、共识节点(一个或多个)和普通节点(一个或多个)。其中,产块节点在接收到业务数据后,会根据该业务数据模拟对状态数据库的更新,并将更新的结果与该业务数据一同打包为一个临时区块进行广播。共识节点可以根据该临时区块中的该业务数据模拟对状态数据库的更新,并判断更新的结果与该区块中的更新的结果是否相同,进而根据该判断的结果与产块节点进行共识。在产块节点与共识节点达成共识后,产块节点、共识节点和普通节点均根据共识结果对状态数据库进行更新,并将该临时区块加入区块链。其中,产块节点和共识节点中的每个节点在根据业务数据模拟对状态数据库的更新时,会在本地模拟该状态数据库,并根据业务数据对模拟的状态数据库进行更新,得到更新的结果。
60.但是,目前节点对状态数据库的操作方式较为单一。
61.本技术实施例提供了另一种数据库操作方法,该方法中操作数据库的方式与上述数据库的操作方式不同,丰富了节点对状态数据库的操作方式。
62.示例地,图3是为本技术实施例提供的一种数据库操作方法的流程图,该方法由区块链系统中的产块节点执行,如图3所示,该数据库操作方法包括:
63.步骤11、在接收到客户端发送的n个第一业务数据时,依次执行n个第一业务数据的事务;其中,n≥1,对于n个第一业务数据中的一个第一业务数据,第一业务数据的事务包括:创建目标状态数据库的保存点;执行第一业务数据对应的sql指令组;在sql指令组执行失败时,将目标状态数据库回滚至创建保存点时的状态;第一业务数据用于指示对目标状态数据库进行目标操作,目标状态数据库为关系型数据库;目标操作包括:数据的增加、删除、修改和/或查询;sql指令组包括目标操作的指令。
64.对于该n个第一业务数据中的一个第一业务数据(任一第一业务数据),该第一业务数据用于指示对目标状态数据库进行目标操作,目标操作包括:数据的增加、删除、修改和/或查询。
65.示例地,该第一业务数据可以包含目标状态数据库对应的智能合约的标识,该标识用于指示该第一业务数据需要调用该智能合约,从而间接的指示了目标状态数据库。第一业务数据还可以包含该目标操作相关的指示数据。这样一来,第一业务数据便能够指示对目标状态数据库进行目标操作。
66.需要说明的是,本技术实施例中以状态数据库为关系型数据库为例,因此目标状态数据库也为关系型数据库。
67.对于该一个第一业务数据,第一业务数据的事务包括:
68.(1)创建目标状态数据库的保存点(save point)。
69.需要说明的是,产块节点中具有运行该目标状态数据库的进程,该进程用于对目标状态数据库进行操作。对于关系型数据库,在创建目标状态数据库的保存点时,节点可以在该进程中创建保存点,而无需重新开启用于创建保存点的进程。
70.(2)执行第一业务数据对应的sql指令组。
71.第一业务数据用于指示对目标状态数据库进行目标操作,该sql指令组包括目标操作的指令。需要说明的是,目标状态数据库为关系型数据库,关系型数据库需要采用sql指令进行操作,第一业务数据并不是能够执行的指令,因此,产块节点可以根据第一业务数据,获取第一业务数据对应的sql指令组,并执行该sql指令组,以实现对目标状态数据库进行第一业务数据所指示的目标操作。
72.sql指令组包括一个或多个sql指令,产块节点在执行该sql指令组时,可以依次执行该sql指令组中的sql指令。产块节点在执行该sql指令组后,能够实现对目标状态数据库进行目标操作。
73.比如,假设第一业务数据用于指示在目标状态数据库中的表x中插入数据1和数据2。那么第一业务数据对应的sql指令组可以包括:在目标状态数据库中的表x中插入数据1的sql指令1,以及在目标状态数据库中的表x中插入数据2的sql指令2。产块节点可以依次执行该sql指令1和sql指令2。
74.(3)在sql指令组执行失败时,根据该事务中创建的保存点,将目标状态数据库回滚至创建该保存点时的状态。
75.sql指令组可能执行成功,也可能执行失败。若该sql指令组执行成功,则该第一业务数据的事务结束;若该sql指令组执行失败,则产块节点可以将目标状态数据库回滚至创建该保存点时的状态,也即产块节点执行该事务之前目标状态数据库的状态。
76.比如,仍然以上述sql指令1和sql指令2为例,产块节点在依次执行sql指令1和sql指令2的过程中,若sql指令1和sql指令2均执行成功,那么产块节点可以确定该sql指令组执行成功,此时该第一业务数据的事务结束。若sql指令1执行失败或sql指令2执行失败,那么产块节点会确定该sql指令组执行失败,此时,产块节点会将目标状态数据库回滚至在在该事务中创建保存点时的状态,也即未插入数据1和数据2的状态。
77.以上实施例中以一个第一业务数据为例,当n>1时,n个第一业务数据指示的状态数据库可以相同也可以不同,n个第一业务数据指示的操作可以相同也可以不同,本技术实施例对此不作限定。
78.以下将以下述表1为例,对n个第一业务数据的事务进行举例说明。表1中以n个第一业务数据包括:第一业务数据1、2和3为例,且n个第一业务数据均指示状态数据库y。
79.表1
[0080][0081]
请参考表1,第一业务数据1包括sql指令1和2,产块节点在执行第一业务数据1的事务时,首先创建状态数据库y的保存点1,之后,依次执行sql指令1和2;由于sql指令1和2均执行成功,因此,产块节点会开始执行第一业务数据2的事务。
[0082]
请继续参考表1,第一业务数据2包括sql指令3和4,产块节点在执行第一业务数据2的事务时,首先创建状态数据库y的保存点2(插入数据1和数据2的状态)。之后,产块节点依次执行sql指令3和4。由于sql指令3执行成功,且sql指令4执行失败,因此,产块节点确定第一业务数据2对应的sql指令组执行失败,此时,产块节点会将状态数据库y回滚至创建保存点2时的状态(未插入数据3的状态)。之后,产块节点会开始执行第一业务数据3的事务。
[0083]
请继续参考表1,第一业务数据3包括sql指令5和6,产块节点在执行第一业务数据3的事务时,首先创建状态数据库y的保存点3,之后,依次执行sql指令5和6;由于sql指令5和6均执行成功,且没有下一第一业务数据,因此,产块节点结束执行n个第一业务数据的事务。
[0084]
需要说明的是,表1中以n个第一业务数据包括三个第一业务数据,且sql指令组均包括两个sql指令为例,可选地,sql指令组也可以包括一个sql指令,或者三个sql指令,或者四个sql指令等,n可以是大于或等于1的任意整数,本技术实施例不对sql指令组中sql指
令的数量进行限定。
[0085]
sql指令执行失败是指:sql指令在执行过程中发生失败,或者,sql指令在执行过程中未失败,但在最终返回sql指令的执行结果时失败。
[0086]
另外,产块节点在执行第一业务数据的事务的过程中,还可以在执行该第一业务数据对应的sql指令组之前,调用该第一业务数据指示的状态数据库。
[0087]
步骤12、在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,将该状态数据库回滚至创建该状态数据库的保存点时的状态;目标sql指令组包括dml指令,且目标sql指令组为执行成功的sql指令组。
[0088]
第一业务数据指示的操作包括对数据的增加、删除、修改和/或查询。当第一业务数据指示的操作包括对数据的增加、删除和/或修改时,该第一业务数据对应的sql指令组包括dml指令;当第一业务数据指示的操作包括对数据的查询时,该第一业务数据对应的sql指令组包括数据查询语句(data query language,dql)指令。其中,dml指令包括:用插入(insert)语句表示的指令,用删除(delete)语句表示的指令,以及用更新(update)语句表示的指令。dql指令包括用于查询数据的查询(select)语句表示的查询指令。
[0089]
n个第一业务数据中第一业务数据所指示的操作可能包括对数据的增加、修改和/或删除,也有可能不包括对数据的增加、修改和/或删除。在第一业务数据所指示的操作包括对数据的增加、修改和/或删除时,若该第一业务数据对应的sql指令组执行成功,那么产块节点可以确定该sql指令组为目标sql指令组。产块节点还可以根据创建的n个保存点,将n个第一业务数据指示的每个状态数据库回滚至创建该状态数据库的保存点时的状态。
[0090]
以上述表1为例,第一业务数据1和3对应的sql指令组均执行成功,并且,第一业务数据1和3均用于指示在状态数据库y中增加数据。因此,第一业务数据1和3对应的sql指令组均为目标指令组。产块节点在执行完毕第一业务数据1、2、3的事务后,会将状态数据库y回滚至创建第一个保存点(上述保存点1)时的状态。
[0091]
需要说明的是,如果n个第一业务数据对应的sql指令组中不存在目标sql指令组,那么产块节点执行n个第一业务数据对应的sql指令组不会改变状态数据库,所以,产块节点无需执行后续的步骤。如果n个第一业务数据对应的sql指令组中存在目标sql指令组,那么产块节点执行n个第一业务数据对应的sql指令组会改变状态数据库,所以,产块节点需要执行后续步骤,以与区块链系统中的共识节点进行共识。
[0092]
步骤13、向共识节点广播第一临时区块,以便于产块节点与共识节点根据第一临时区块进行第一共识,第一临时区块记录有n个第一业务数据以及目标sql指令组中的dml指令。
[0093]
当存在上述目标sql指令组时,产块节点可以向共识节点广播第一临时区块,以使得区块链系统中的共识节点能够接收到该第一临时区块,以及共识节点根据该第一临时区块与产块节点进行共识。
[0094]
可选地,产块节点可以在依次执行n个第一业务数据的事务之前(如在接收到该n个第一业务数据之后),生成第一临时区块,并在该第一临时区块中记录n个第一业务数据。在存在目标sql指令组时,产块节点可以将目标sql指令组中的dml指令记录在缓存中。在执行完n个第一业务数据的事务后,可以将缓存中记录的dml指令记录在第一临时区块中,并广播该dml指令,以便于产块节点与共识节点根据第一临时区块进行第一共识。
[0095]
综上所述,本技术实施例提供的数据库操作方法中,产块节点先依次执行该n个第一业务数据的事务,以对节点上的状态数据库进行操作。在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,节点还将该状态数据库回滚至创建该状态数据库的保存点时的状态。之后,产块节点广播临时区块与共识节点进行共识。可见,本技术实施例提供的数据库操作方法中,并未在节点上模拟状态数据库,而是直接在状态数据库上进行操作,因此,本技术实施例提供了一种新的数据库操作方法,丰富了数据库的操作方式。
[0096]
并且,相关技术中,节点在模拟状态数据库时,会开启用于模拟该状态数据库的进程,从而对节点的性能产生影响。本技术实施例中,产块节点和共识节点均无需模拟状态数据库,且执行n个第一业务数据的事务均在运行状态数据库的进程中,因此,本技术实施例提供的数据库操作方法对节点的性能的影响较小,节点的性能稳定性较高,节点的性能也较高。
[0097]
又示例地,图4是为本技术实施例提供的另一种数据库操作方法的流程图,该方法由区块链系统中的共识节点执行,如图4所示,该数据库操作方法包括:
[0098]
步骤21、接收产块节点广播的第一临时区块;其中,第一临时区块记录有n个第一业务数据和dml指令,n≥1。
[0099]
步骤22、依次执行n个第一业务数据的事务;其中,对于n个第一业务数据中的一个第一业务数据,第一业务数据的事务包括:创建目标状态数据库的保存点;执行第一业务数据对应的sql指令组;在sql指令组执行失败时,将目标状态数据库回滚至创建该保存点时的状态;第一业务数据用于指示对目标状态数据库进行目标操作,目标状态数据库为关系型数据库;目标操作包括:数据的增加、删除、修改和/或查询;sql指令组包括目标操作的指令。
[0100]
共识节点在接收到产块节点广播的第一临时区块后,可以根据该第一临时区块中的n个第一业务数据,依次执行n个第一业务数据的事务。共识节点依次执行n个第一业务数据的事务的过程,可以参考产块节点依次执行n个第一业务数据的事务的过程,本技术实施例在此不做赘述。
[0101]
需要说明的是,区块链系统中的各个节点上均维护有相同的状态数据库,产块节点在依次执行n个第一业务数据的事务的过程中,会对产块节点维护的状态数据库进行数据的增加、删除、修改和/或查询。共识节点在依次执行n个第一业务数据的事务的过程中,会对共识节点维护的状态数据库进行数据的增加、删除、修改和/或查询。
[0102]
步骤23、在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,将状态数据库回滚至创建状态数据库的保存点时的状态;目标sql指令组包括dml指令,且目标sql指令组为执行成功的sql指令组。
[0103]
类似产块节点,共识节点在依次执行n个第一业务数据的事务后,也可以在共识节点获取的n个第一业务数据对应的n个sql指令组中存在目标sql指令组时,将n个第一业务数据指示的每个状态数据库回滚至创建该状态数据库的保存点时的状态。
[0104]
需要说明的是,如果n个第一业务数据对应的sql指令组中不存在目标sql指令组,那么共识节点执行n个第一业务数据对应的sql指令组不会改变状态数据库,所以,共识节点无需执行后续的步骤。如果n个第一业务数据对应的sql指令组中存在目标sql指令组,那么共识节点执行n个第一业务数据对应的sql指令组会改变状态数据库,所以,共识节点需
要执行后续步骤,以与区块链系统中的产块节点进行共识。
[0105]
步骤24、判断目标sql指令组中的dml指令与第一临时区块中的dml指令是否相同。
[0106]
在步骤23之后,共识节点可以将目标sql指令组中的dml指令(共识节点执行过的dml指令)与第一临时区块中的dml指令(产块节点执行过的dml指令)进行比较。当这两种dml指令相同时,说明共识节点和产块节点执行了相同的dml指令。当这两种dml指令不同时,说明共识节点和产块节点执行了不同的dml指令。
[0107]
步骤25、根据判断的结果与产块节点进行第一共识。
[0108]
共识节点可以根据步骤24中判断的结果,与产块节点进行第一共识。
[0109]
比如,共识节点可以将步骤24中判断的结果广播给区块链系统中的各个节点。产块节点在接收到各个共识节点(本技术实施例不对共识节点的数量进行限定)广播的结果后,若各个结果均为上述两种dml指令相同,则说明产块节点与各个共识节点均执行了相同的dml指令,此时,产块节点与共识节点达成共识。若存在上述两种dml指令不同的结果,则说明产块节点与各个共识节点并不是均执行了相同的dml指令,此时,产块节点与共识节点无法达成共识。在共识节点与产块节点达成第一共识后,产块节点会广播用于指示达成第一共识的信息(也称共识信息、签名信息或者投票信息),以便于区块链系统中的各个节点均确定共识节点与产块节点达成第一共识。上述用于指示是否达成第一共识的信息包含了第一临时区块,以及达成第一共识的标志。
[0110]
当然,共识节点与产块节点也可以采用其他的方式进行第一共识,上述用于指示是否达成第一共识的信息也可以是由共识节点广播的,本技术实施例对此不作限定。
[0111]
综上所述,本技术实施例提供的数据库操作方法中,共识节点先依次执行该n个第一业务数据的事务,以对节点上的状态数据库进行操作。在存在目标sql指令组时,将n个第一业务数据指示的每个状态数据库回滚至创建该状态数据库的保存点时的状态。之后,共识节点与产块节点进行第一共识。可见,本技术实施例提供的数据库操作方法中,并未在节点上模拟状态数据库,而是直接在状态数据库上进行操作,因此,本技术实施例提供了一种新的数据库操作方法,丰富了数据库的操作方式。
[0112]
又示例地,图5是为本技术实施例提供的另一种数据库操作方法的流程图,该方法由区块链系统中的普通节点执行,如图5所示,该数据库操作方法包括:
[0113]
步骤31、接收产块节点或共识节点广播的第一临时区块;其中,第一临时区块记录有n个第一业务数据和dml指令,n≥1;第一临时区块为产块节点和共识节点在根据第一临时区块达成第一共识后广播的区块。
[0114]
步骤32、执行第一临时区块中记录的dml指令,并将第一临时区块加入区块链。
[0115]
在产块节点与共识节点根据第一临时区块达成第一共识时,区块链系统中的各个节点均会接收到用于指示达成第一共识的信息,该信息可以包括第一临时区块。各个节点均可以执行第一临时区块中记录的dml指令,从而使得区块链系统中的各个节点上的状态数据库保持统一。在此过程中,各个节点均无需重复运行智能合约,也无需重新执行上述n个第一业务数据的事务。
[0116]
并且,在产块节点与共识节点根据第一临时区块达成第一共识时,区块链系统中的各个节点均可以将第一临时区块加入区块链,以在区块链上记录各个节点均执行了第一临时区块中的dml指令,使得各个节点上的状态数据库与区块链上的数据保持一致,且各个
节点维护的区块链相同。
[0117]
进一步地,在产块节点与共识节点无法达成第一共识时,产块节点和共识节点均可以删除第一临时区块,以将该第一临时区块作废。
[0118]
示例地,图6是为本技术实施例提供的另一种数据库操作方法的流程图,如图6所示,该数据库操作方法包括:
[0119]
步骤101、产块节点在接收到客户端发送的n个第一业务数据时,依次执行n个第一业务数据的事务,n≥1。
[0120]
步骤101可以参考步骤11,本技术实施例在此不做赘述。
[0121]
步骤102、在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,产块节点将该状态数据库回滚至创建该状态数据库的保存点时的状态;目标sql指令组包括dml指令,且目标sql指令组为执行成功的sql指令组。
[0122]
步骤102可以参考步骤12,本技术实施例在此不做赘述。
[0123]
步骤103、产块节点向共识节点广播第一临时区块,第一临时区块记录有n个第一业务数据以及目标sql指令组中的dml指令。
[0124]
步骤103可以参考步骤13,本技术实施例在此不做赘述。
[0125]
步骤104、共识节点根据第一临时区块,依次执行n个第一业务数据的事务。
[0126]
步骤104可以参考步骤22,本技术实施例在此不做赘述。
[0127]
步骤105、在存在目标sql指令组时,对于n个第一业务数据指示的每个状态数据库,共识节点将该状态数据库回滚至创建该状态数据库的保存点时的状态;目标sql指令组包括dml指令,且目标sql指令组为执行成功的sql指令组。
[0128]
步骤105可以参考步骤23,本技术实施例在此不做赘述。
[0129]
步骤106、共识节点判断目标sql指令组中的dml指令与第一临时区块中的dml指令是否相同。
[0130]
步骤106可以参考步骤24,本技术实施例在此不做赘述。
[0131]
步骤107、共识节点根据判断的结果与产块节点进行第一共识。
[0132]
步骤107可以参考步骤25,本技术实施例在此不做赘述。
[0133]
步骤108、在产块节点与共识节点根据第一临时区块达成第一共识时,产块节点执行第一临时区块中记录的dml指令,并将第一临时区块加入区块链。
[0134]
步骤109、在产块节点与共识节点根据第一临时区块达成第一共识时,共识节点执行第一临时区块中记录的dml指令,并将第一临时区块加入区块链。
[0135]
步骤110、在产块节点与共识节点根据第一临时区块达成第一共识时,普通节点接收产块节点或共识节点广播的第一临时区块,以及执行第一临时区块中记录的dml指令,并将第一临时区块加入区块链。
[0136]
步骤110可以参考步骤31和步骤32,本技术实施例在此不做赘述。
[0137]
综上所述,本技术实施例提供了一种数据库操作方法,在该方法中,产块节点和共识节点均是先依次执行该n个第一业务数据的事务,以对节点上的状态数据库进行操作。在存在目标sql指令组时,节点还可以将n个第一业务数据指示的每个状态数据库回滚至创建该状态数据库的保存点时的状态。之后,产块节点与共识节点进行共识。可见,本技术实施例提供的数据库操作方法中,并未在节点上模拟状态数据库,而是直接在状态数据库上进
行操作,因此,本技术实施例提供了一种新的数据库操作方法,丰富了数据库的操作方式。
[0138]
并且,相关技术中节点在模拟状态数据库时,会开启用于模拟该状态数据库的进程,从而对节点的性能产生影响。本技术实施例中,产块节点和共识节点均无需模拟状态数据库,且执行n个第一业务数据的事务均在运行状态数据库的进程中,因此,本技术实施例提供的数据库操作方法对节点的性能的影响较小,节点的性能稳定性较高,节点的性能也较高。
[0139]
进一步地,产块节点中安装有至少一个智能合约,该至少一个智能合约具有一一对应的至少一个状态数据库(包括目标状态数据库)。比如,节点中不同智能合约对应的状态数据库的地址不同。可见,不同智能合约对应不同的状态数据库,以对不同的状态数据库中的数据进行隔离。
[0140]
智能合约包括:与对该智能合约对应的状态数据库进行操作相关的合约数据。产块节点在依次执行n个第一业务数据的事务之前,可以根据节点上安装的智能合约,获取每个第一业务数据对应的sql指令组。
[0141]
以上述一个第一业务数据为例,产块节点可以根据该一个第一业务数据,以及目标状态数据库对应的智能合约中与目标操作相关的第一合约数据,得到第一业务数据对应的sql指令组。
[0142]
第一合约数据的实现方式多种多样。
[0143]
在第一合约数据的一种可实现方式中,第一合约数据包括sql语句;产块节点可以组装该一个第一业务数据和该sql语句,得到第一业务数据对应的sql指令组。
[0144]
比如,第一业务数据用于指示在目标状态数据库的表x中插入数据1和数据2。那么第一合约数据包括:插入数据的sql语句。产块节点组装第一业务数据和该sql语句,得到的第一业务数据对应的sql指令组包括:在目标状态数据库的表x中插入数据1的sql指令1,以及在目标状态数据库的表x中插入数据2的sql指令2。
[0145]
在第一合约数据的另一种可实现方式中,第一合约数据包括目标对象(对象也称结构化对象);产块节点可以对目标对象进行对象关系映射(object relational mapping,orm),得到与目标操作相关的sql语句;之后,产块节点再组装该一个第一业务数据和该sql语句,得到第一业务数据对应的sql指令组。
[0146]
比如,第一业务数据用于指示在目标状态数据库的表x中插入数据1和数据2。那么第一合约数据包括:目标对象。产块节点对目标对象进行orm能够得到:插入数据的sql语句。之后,产块节点组装第一业务数据和该sql语句,得到第一业务数据对应的sql指令组,该sql指令组包括:在目标状态数据库的表x中插入数据1的sql指令1,以及在目标状态数据库的表x中插入数据2的sql指令2。
[0147]
共识节点在依次执行n个第一业务数据的事务之前,也可以参考产块节点获取第一业务数据对应的sql指令组的方式,获取每个第一业务数据对应的sql指令组,本技术实施例在此不做赘述。
[0148]
进一步地,在上述实施例中,区块链系统中的各个节点均安装有至少一个智能合约,该至少一个智能合约具有一一对应的至少一个状态数据库。
[0149]
需要说明的是,区块链系统中的每个节点均可以根据客户端发送的业务数据(与上述第一业务数据不同),进行智能合约的安装、升级和删除(也称销毁)。在区块链系统中
的一个节点进行智能合约的安装、升级和删除后,其他节点也可以相应进行该智能合约的安装、升级和删除。
[0150]
以下将以产块节点根据客户端发送的业务数据,进行一个智能合约的安装、升级和删除,且共识节点和普通节点相应进行该智能合约的安装、升级和删除为例。该一个智能合约可以是上述实施例中的任一智能合约,也可以是在上述实施例中的智能合约安装之后安装的其他智能合约。
[0151]
如图7所示,在图6的基础上,本技术实施例提供的数据库操作方法还包括:
[0152]
步骤201、产块节点在接收到客户端发送的包括一个智能合约的信息的第二业务数据时,在产块节点上安装该一个智能合约,以及创建该一个智能合约对应的状态数据库;该一个智能合约包括与在该一个智能合约对应的状态数据库中创建数据库对象相关的第二合约数据。
[0153]
第二业务数据用于指示安装该一个智能合约,以及创建该一个智能合约对应的状态数据库。产块节点在接收到第二业务数据后,可以根据第二业务数据中的该一个智能合约的信息,在产块节点上安装该智能合约,并创建该一个智能合约对应的状态数据库。
[0154]
步骤202、产块节点根据第二合约数据,执行在该一个智能合约对应的状态数据库中创建数据库对象的创建sql指令。
[0155]
产块节点在创建该一个智能合约对应的状态数据库之后,可以根据智能合约中的第二合约数据,执行该创建sql指令,以在该一个智能合约对应的状态数据库中创建数据库对象。此处的数据库对象可以是表、视图、索引、规则、语法、函数、存储过程、触发器等。
[0156]
类似上述第一合约数据,第二合约数据也可以有多种实现方式。
[0157]
在第二合约数据的第一种可实现方式中,第二合约数据包括该创建sql指令。
[0158]
在第二合约数据的第二种可实现方式中,第二合约数据包括第二对象,此时产块节点在执行创建sql指令之前,可以对第二对象进行orm,得到创建sql指令。
[0159]
需要说明的是,sql指令除了包括dml指令和dql指令这两种指令之外,还包括数据库定义语句(data definition languages,ddl)指令,ddl指令包括:创建(create)语句表示的指令,修改(alter)语句表示的指令,删除(drop)语句表示的指令等。该创建sql指令可以是ddl指令中创建(create)语句表示的指令。
[0160]
步骤203、产块节点向共识节点广播第二临时区块,第二临时区块记录有第二业务数据和创建sql指令。
[0161]
产块节点在安装该一个智能合约,以及创建该智能合约对应的状态数据库,以及在该状态数据库中创建数据库对象后,可以向共识节点广播第二临时区块,以使得共识节点能够接收到该第二临时区块,以及根据该第二临时区块与产块节点进行共识。
[0162]
可选地,产块节点可以在步骤201之后生成第二临时区块,并在该第二临时区块中记录第二业务数据。在步骤202之后,产块节点可以在第二临时区块中记录创建sql指令。
[0163]
步骤204、共识节点根据第二临时区块中的第二业务数据,在共识节点上安装该一个智能合约,以及创建该一个智能合约对应的状态数据库。
[0164]
步骤205、共识节点根据第二合约数据,执行在一个智能合约对应的状态数据库中创建数据库对象的创建sql指令。
[0165]
共识节点在接收到第二临时区块之后,可以根据第二临时区块中的第二业务数
据,在共识节点上安装该一个智能合约,创建该智能合约对应的状态数据库,以及根据该智能合约中的第二合约数据,执行在一个智能合约对应的状态数据库中创建数据库对象的创建sql指令。共识节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0166]
步骤206、共识节点比较共识节点执行的创建sql指令,与第二临时区块中的创建sql指令是否相同。
[0167]
共识节点在步骤205之后,可以比较共识节点执行的创建sql指令,与第二临时区块中产块节点执行的创建sql指令是否相同。
[0168]
步骤207、共识节点根据比较的结果,与产块节点进行第二共识。
[0169]
共识节点与产块节点进行第二共识的方式可以参考共识节点与产块节点进行第一共识的方式,本技术实施例在此不做赘述。
[0170]
步骤208、产块节点在产块节点与共识节点达成第二共识时,将第二临时区块加入区块链。
[0171]
步骤209、共识节点在产块节点与共识节点达成第二共识时,将第二临时区块加入区块链。
[0172]
步骤210、普通节点在产块节点与共识节点达成第二共识时,接收产块节点或共识节点广播的第二临时区块,根据第二临时区块中的第二业务数据在普通节点上安装该一个智能合约,创建该一个智能合约对应的状态数据库,执行在一个智能合约对应的状态数据库中创建数据库对象的创建sql指令,以及将第二临时区块加入区块链。
[0173]
在产块节点与共识节点达成第二共识时,产块节点或共识节点会广播用于指示达成第二共识的信息(包括第二临时区块),产块节点和共识节点均可以将第二临时区块加入区块链。普通节点会根据第二临时区块中的第二业务数据,在节点上安装该一个智能合约,创建该智能合约对应的状态数据库,以及根据该智能合约中的第二合约数据,执行在一个智能合约对应的状态数据库中创建数据库对象的创建sql指令。普通节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0174]
在此之后,产块节点、共识节点和普通节点均维护有相同的区块链,并且,这些节点均安装有相同的智能合约,以及维护有相同的状态数据库。
[0175]
需要说明的是,在产块节点和共识节点无法达成第二共识时,产块节点和共识节点均需要删除安装的该一个智能合约,以及该一个智能合约对应的状态数据库。同时,产块节点和共识节点还需要删除第二临时区块,以将第二临时区块作废。
[0176]
进一步地,如图8所示,在图7的基础上,在产块节点与共识节点达成第二共识之后,本技术实施例提供的数据库操作方法还包括:
[0177]
步骤301、产块节点在接收到客户端发送的包括更新合约的第三业务数据时,根据第三业务数据,将产块节点上安装的该一个智能合约更新为更新合约;更新合约包括:与更新该一个智能合约对应的状态数据库相关的第三合约数据。
[0178]
更新合约也是智能合约,更新合约是该一个智能合约更新升级后的智能合约。更新合约包括与更新上述一个智能合约对应的状态数据库相关的第三合约数据。
[0179]
本技术实施例中以在更新智能合约的同时,更新智能合约对应的状态数据库为例。可选地,也可以在更新智能合约时,不更新智能合约对应的状态数据库,此时,该更新合
约并不包括第三合约数据,本技术实施例对此不作限定。
[0180]
步骤302、产块节点根据第三合约数据,执行更新该一个智能合约对应的状态数据库的更新sql指令。
[0181]
产块节点在更新上述一个智能合约后,还可以根据第三合约数据,得到更新该一个智能合约对应的状态数据库的更新sql指令。在执行该更新sql指令后,可以对该状态数据库中的数据库对象和/或数据库对象上的数据进行更新。
[0182]
类似上述第二合约数据,该第三合约数据也可以有多种实现方式。
[0183]
在第三合约数据的第一种可实现方式中,第三合约数据包括该更新sql指令。
[0184]
在第三合约数据的第二种可实现方式中,第三合约数据包括第三对象,此时产块节点在执行更新sql指令之前,可以对第三对象进行orm,得到更新sql指令。
[0185]
该更新sql指令也可以是ddl指令。如ddl指令中用改变(alter)语句表示的指令。
[0186]
步骤303、产块节点向共识节点广播第三临时区块;第三临时区块记录有第三业务数据和更新sql指令。
[0187]
产块节点在步骤302之后,可以向共识节点广播第三临时区块,以使共识节点能够接收到该第三临时区块,以及根据该第三临时区块与产块节点进行共识。
[0188]
可选地,产块节点可以在步骤301之后生成第三临时区块,并在该第三临时区块中记录第三业务数据。在步骤302之后,产块节点可以在第三临时区块中记录更新sql指令。
[0189]
步骤304、共识节点根据第三临时区块中的第三业务数据,将共识节点上安装的该一个智能合约更新为更新合约。
[0190]
步骤305、共识节点根据第三合约数据,执行更新该一个智能合约对应的状态数据库中数据库对象的更新sql指令。
[0191]
共识节点在接收到第三临时区块之后,可以根据第三临时区块中的第三业务数据,将节点上安装该一个智能合约更新为上述更新合约,以及根据该智能合约中的第三合约数据,执行更新该一个智能合约对应的状态数据库中数据库对象的更新sql指令。共识节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0192]
步骤306、共识节点比较共识节点执行的更新sql指令,与第三临时区块中的更新sql指令是否相同。
[0193]
共识节点在步骤305之后,可以比较共识节点执行的更新sql指令,与第三临时区块中产块节点执行的更新sql指令是否相同。
[0194]
步骤307、共识节点根据比较的结果,与产块节点进行第三共识。
[0195]
共识节点与产块节点进行第三共识的方式可以参考共识节点与产块节点进行第一共识的方式,本技术实施例在此不做赘述。
[0196]
步骤308、产块节点在产块节点与共识节点达成第三共识时,将第三临时区块加入区块链。
[0197]
步骤309、共识节点在产块节点与共识节点达成第三共识时,将第三临时区块加入区块链。
[0198]
步骤310、普通节点在产块节点与共识节点达成第三共识时,接收产块节点或共识节点广播的第三临时区块,根据第三临时区块中的第三业务数据将普通节点上安装的该一
个智能合约更新为更新合约,根据第三合约数据执行更新该一个智能合约对应的状态数据库中数据库对象的更新sql指令,以及将第三临时区块加入区块链。
[0199]
普通节点在接收到第三临时区块之后,可以根据第三临时区块中的第三业务数据,将节点上安装该一个智能合约更新为上述更新合约,以及根据该智能合约中的第三合约数据,执行更新该一个智能合约对应的状态数据库中数据库对象的更新sql指令。普通节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0200]
在产块节点与共识节点达成第三共识时,产块节点、共识节点和普通节点均可以将第三临时区块加入区块链,以使得这些节点均维护有相同的区块链,并且,此时这些节点均安装有相同的智能合约,以及维护有相同的状态数据库。
[0201]
需要说明的是,在产块节点和共识节点无法达成第三共识时,产块节点和共识节点均需要恢复该一个智能合约,以及恢复该一个智能合约对应的状态数据库。同时,产块节点和共识节点还需要删除第三临时区块,以将第三临时区块作废。
[0202]
进一步地,如图9所示,在图7或图8的基础上,在产块节点与共识节点达成第二共识之后,如图9所示,本技术实施例提供的数据库操作方法还包括:
[0203]
步骤401、产块节点在接收到客户端发送的第四业务数据时,根据第四业务数据,执行删除一个智能合约及其对应的状态数据库的删除sql指令;第四业务数据用于指示删除一个智能合约及其对应的状态数据库。
[0204]
该一个智能合约可以是图7中的智能合约,也可以是图8中的更新合约,本技术实施例对此不作限定。
[0205]
该一个智能合约可以包括第四合约数据,产块节点可以根据第四合约数据获取该删除sql指令。
[0206]
该第四合约数据可以为该删除sql指令。或者,该第四合约数据可以为第四对象,产块节点在执行删除sql指令之前,可以对第四对象进行orm,得到删除sql指令。
[0207]
该删除sql指令也可以是ddl指令。如ddl指令中用删除(drop)语句表示的指令。
[0208]
产块节点在执行删除sql指令的过程中,可以清空状态数据库中的数据、对这些数据进行归档、删除状态数据库以及删除智能合约。
[0209]
步骤402、产块节点向共识节点广播第四临时区块,以便于产块节点与共识节点根据第四临时区块进行第四共识;第四临时区块记录有第四业务数据和删除sql指令。
[0210]
步骤403、共识节点根据第四临时区块中的第四业务数据,执行删除一个智能合约及其对应的状态数据库的删除sql指令。
[0211]
共识节点在接收到第四临时区块之后,可以根据第四临时区块中的第四业务数据,执行删除一个智能合约及其对应的状态数据库的删除sql指令。共识节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0212]
步骤404、共识节点比较共识节点执行的删除sql指令,与第四临时区块中的删除sql指令是否相同。
[0213]
共识节点在步骤403之后,可以比较共识节点执行的删除sql指令,与第四临时区块中产块节点执行的删除sql指令是否相同。
[0214]
步骤405、共识节点根据比较的结果,与产块节点进行第四共识。
[0215]
共识节点与产块节点进行第四共识的方式可以参考共识节点与产块节点进行第一共识的方式,本技术实施例在此不做赘述。
[0216]
步骤406、产块节点在产块节点与共识节点达成第四共识时,将第四临时区块加入区块链。
[0217]
步骤407、共识节点在产块节点与共识节点达成第四共识时,将第四临时区块加入区块链。
[0218]
步骤408、普通节点在产块节点与共识节点达成第四共识时,接收产块节点或共识节点广播的第四临时区块,并根据第四临时区块中的第四业务数据,执行删除一个智能合约及其对应的状态数据库的删除sql指令。
[0219]
在产块节点与共识节点达成第四共识时,普通节点会接收到第四临时区块。之后,普通节点可以根据第四临时区块中的第四业务数据,执行删除一个智能合约及其对应的状态数据库的删除sql指令。普通节点执行这些操作的过程可以参考产块节点执行这些操作的过程,本技术实施例在此不做赘述。
[0220]
在产块节点与共识节点达成第四共识时,产块节点、共识节点和普通节点均可以将第四临时区块加入区块链,以使得各个节点均维护有相同的区块链,并且,此时这些节点均安装有相同的智能合约,以及维护有相同的状态数据库。
[0221]
需要说明的是,在产块节点和共识节点无法达成第四共识时,产块节点和共识节点均需要恢复该一个智能合约,以及恢复该一个智能合约对应的状态数据库。同时,产块节点和共识节点还需要删除第四临时区块,以将第四临时区块作废。
[0222]
客户端向产块节点发送业务数据(如上述第一业务数据、第二业务数据、第三业务数据和第四业务数据),可以称为客户端发起交易,业务数据也可以称为交易数据。客户端向产块节点发送第一业务数据,可以称为客户端发起合约调用交易;客户端向产块节点发送第二业务数据、第三业务数据或第四业务数据,可以称为客户端发起合约管理交易。
[0223]
业务数据具有交易编号(identity document,id),产块节点可以根据业务数据的交易id来区分不同的业务数据,比如,当n>1时,上述n个第一业务数据具有不同的交易id。
[0224]
此外,智能合约包括了函数,智能合约的合约数据可以记录在这些函数中。示例地,智能合约中的函数可以包括:调用函数、查询函数、初始化函数、升级函数和删除函数。上述第一合约数据可以包含在调用函数或查询函数中,第二合约数据包含在初始化函数中,第三合约数据可以包含在升级函数中,第四合约数据包含在删除函数中。
[0225]
智能合约还包括ddl、dml和dql中的至少一种接口,节点在需要使用某一函数中的合约数据时,可以运行该智能合约,并在该函数中调用该合约数据相关的接口,得到该合约数据。
[0226]
另外,本技术实施例中的智能合约还包括合约框架,上述初始化函数、升级函数和删除函数均可以包括在合约框架中。
[0227]
智能合约由工作人员编写,工作人员在编写智能合约时,可以在合约框架的函数中编写sql语句和sql指令(或orm后能够得到sql语句的对象,以及orm后能够得到sql指令的对象),从而得到该智能合约。工作人员可以根据需求自由编写sql指令,以定义智能合约对应的状态数据库中的数据库对象。由于sql语句和sql指令的编写难度较低,因此,本技术实施例中的智能合约的编写门槛较低,提高了工作人员的用户体验。
[0228]
可选地,本技术实施例中以节点创建的状态数据库(也即维护的状态数据库)位于节点上为例,可选地,节点创建的状态数据库也可以不位于产块节点上,比如,节点创建的状态数据库位于节点之外的远端设备上,本技术实施例对此不作限定。在该状态数据库不位于节点上时,节点上无需存储该状态数据库,因此,可以降低节点的存储压力与运算压力。
[0229]
进一步地,本技术实施例还提供了一种数据库操作装置,该数据库操作装置可以是区块链系统中的产块节点,区块链系统还包括共识节点。如图10所示,该数据库操作装置包括:
[0230]
第一执行模块701,用于在接收到客户端发送的n个第一业务数据时,依次执行所述n个第一业务数据的事务;其中,n≥1,对于n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的结构化查询语言sql指令组;在所述sql指令组执行失败时,将所述目标状态数据库回滚至创建该保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;
[0231]
回滚模块702,用于在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括dml指令,且所述目标sql指令组为执行成功的sql指令组;
[0232]
第一广播模块703,用于向共识节点广播第一临时区块,以便于所述产块节点与所述共识节点根据所述第一临时区块进行第一共识,所述第一临时区块记录有所述n个第一业务数据和所述目标sql指令组中的dml指令。
[0233]
可选地,所述产块节点中安装有至少一个智能合约,所述至少一个智能合约具有一一对应的至少一个状态数据库,所述智能合约包括:与对所述智能合约对应的状态数据库进行操作相关的合约数据;所述至少一个状态数据库包括所述目标状态数据库,所述数据库操作装置还包括:
[0234]
第一获取模块(图10中未示出),用于在依次执行所述n个第一业务数据的事务之前,根据所述一个第一业务数据,以及所述目标状态数据库对应的智能合约中与所述目标操作相关的第一合约数据,得到所述第一业务数据对应的sql指令组。
[0235]
可选地,所述第一合约数据包括sql语句;第一获取模块用于:组装所述一个第一业务数据和所述sql语句,得到所述第一业务数据对应的sql指令组。
[0236]
可选地,所述第一合约数据包括目标对象;第一获取模块用于:对所述目标对象进行对象关系映射orm,得到与所述目标操作相关的sql语句;组装所述一个第一业务数据和所述sql语句,得到所述第一业务数据对应的sql指令组。
[0237]
可选地,所述数据库操作装置还包括:
[0238]
处理模块(图10中未示出),用于在接收到客户端发送的包括一个智能合约的信息的第二业务数据时,在所述产块节点上安装所述一个智能合约,以及创建所述一个智能合约对应的状态数据库;所述一个智能合约包括与在所述一个智能合约对应的状态数据库中创建数据库对象相关的第二合约数据;
[0239]
第二执行模块(图10中未示出),用于根据所述第二合约数据,执行在所述一个智
能合约对应的状态数据库中创建数据库对象的创建sql指令;
[0240]
第二广播模块(图10中未示出),用于向共识节点广播第二临时区块,以便于所述产块节点与所述共识节点根据所述第二临时区块进行第二共识;所述第二临时区块记录有所述第二业务数据和所述创建sql指令;
[0241]
第三执行模块(图10中未示出),用于在所述产块节点与所述共识节点根据所述第二临时区块达成所述第二共识时,将所述第二临时区块加入所述区块链。
[0242]
可选地,所述第二合约数据包括所述创建sql指令;或者,所述第二合约数据包括第二对象,所述数据库操作装置还包括:第二获取模块,用于在执行所述创建sql指令之前,对所述第二对象进行orm,得到所述创建sql指令。
[0243]
可选地,所述数据库操作装置还包括:
[0244]
第一更新模块(图10中未示出),用于在所述产块节点与所述共识节点达成所述第二共识后,在接收到客户端发送的包括更新合约的第三业务数据时,根据所述第三业务数据,将所述一个智能合约更新为所述更新合约;所述更新合约包括:与更新上述一个智能合约对应的状态数据库相关的第三合约数据;
[0245]
第二更新模块(图10中未示出),用于根据所述第三合约数据,执行更新所述一个智能合约对应的状态数据库的更新sql指令;
[0246]
第三广播模块(图10中未示出),用于向共识节点广播所述第三临时区块,以便于所述产块节点与所述共识节点根据所述第三临时区块进行第三共识;所述第三临时区块记录有所述第三业务数据和所述更新sql指令;
[0247]
第四执行模块(图10中未示出),用于在所述产块节点与所述共识节点根据所述第三临时区块达成所述第三共识时,将所述第三临时区块加入所述区块链。
[0248]
可选地,所述数据库操作装置还包括:
[0249]
第三执行模块(图10中未示出),用于在所述产块节点与所述共识节点达成所述第二共识后,在接收到客户端发送的第四业务数据时,根据所述第四业务数据,执行删除所述一个智能合约及其对应的状态数据库的删除sql指令;所述第四业务数据用于指示删除所述一个智能合约及其对应的状态数据库;
[0250]
第四广播模块(图10中未示出),用于向共识节点广播所述第四临时区块,以便于所述产块节点与所述共识节点根据所述第四临时区块进行第四共识;所述第四临时区块记录有所述第四业务数据和所述删除sql指令;
[0251]
第五执行模块(图10中未示出),用于在所述产块节点与所述共识节点根据所述第四临时区块达成所述第四共识时,将所述第四临时区块加入所述区块链。
[0252]
可选地,所述数据库操作装置还包括:
[0253]
第六执行模块(图10中未示出),用于在所述产块节点与所述共识节点达成所述第一共识时,执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。
[0254]
本技术实施例还提供了另一种数据库操作装置,所述数据库操作装置为区块链系统中的共识节点,所述区块链系统还包括:产块节点,如图11所示,所述数据库操作装置包括:
[0255]
接收模块801,用于接收所述产块节点广播的第一临时区块;其中,所述第一临时
区块记录有n个第一业务数据和dml指令,n≥1;
[0256]
执行模块802,用于依次执行所述n个第一业务数据的事务;其中,对于n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的sql指令组;在所述sql指令组执行失败时,将所述目标状态数据库回滚至创建该保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;
[0257]
回滚模块803,用于在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括dml指令,且所述目标sql指令组为执行成功的sql指令组;
[0258]
判断模块804,用于判断所述目标sql指令组中的dml指令与所述第一临时区块中的dml指令是否相同;
[0259]
共识模块805,用于根据所述判断的结果与所述产块节点进行第一共识。
[0260]
可选地,所述数据库操作装置还包括:
[0261]
执行模块(图11中未示出),用于在所述产块节点与所述共识节点根据所述第一临时区块达成第一共识时,执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。
[0262]
本技术实施例还提供了另一种数据库操作装置,所述数据库操作装置为区块链系统中的普通节点执行,所述区块链系统还包括:产块节点和共识节点,如图12所示,所述数据库操作装置包括:
[0263]
接收模块901,用于接收所述产块节点或所述共识节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和dml指令,n≥1;所述第一临时区块为产块节点和共识节点根据第一临时区块达成第一共识后广播的区块。
[0264]
执行模块902,用于执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。
[0265]
可以理解的是:上述实施例提供的数据库操作装置仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据库操作装置与数据库操作方法实施例属于同一构思,数据库操作装置实施例可以参考数据库操作方法实施例的说明,这里不再赘述。
[0266]
本技术实施例中产块节点、共识节点和普通节点均可以是服务器。图13是本技术实施例提供的一种服务器的结构示意图。
[0267]
具体来讲:服务器110包括中央处理单元(central processing unit,cpu)111、包括随机存取存储器(random access memory,ram)1121和只读存储器(read only memory,rom)1122的系统存储器112,以及连接系统存储器112和中央处理单元111的系统总线113。服务器110还包括用于存储操作系统1141、应用程序1142和其他程序模块1143的大容量存储设备114。
[0268]
大容量存储设备114通过连接到系统总线113的大容量存储控制器(未示出)连接到中央处理单元111。大容量存储设备114及其相关联的计算机可读介质为服务器110提供
非易失性存储。也就是说,大容量存储设备114可以包括诸如硬盘或者紧凑型光盘只读存储器(compact disc read only memory,cd-rom)驱动器之类的计算机可读介质(未示出)。
[0269]
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、带电可擦可编程只读存储器(electrically erasable programmable read only memory,eeprom)、闪存或其他固态存储其技术,cd-rom、数字通用光盘(digital versatile disc,dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器112和大容量存储设备114可以统称为存储器。
[0270]
根据本技术的各种实施例,服务器110还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器110可以通过连接在系统总线113上的网络接口单元115连接到网络116,或者说,也可以使用网络接口单元115来连接到其他类型的网络或远程计算机系统(未示出)。
[0271]
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu执行。
[0272]
本技术的实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以上述实施例中任一数据库操作方法中由产块节点、共识节点或普通节点执行的步骤。
[0273]
本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述实施例中任一数据库操作方法中由产块节点、共识节点或普通节点执行的步骤。
[0274]
本技术的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一数据库操作方法中由产块节点、共识节点或普通节点执行的步骤。
[0275]
可选地,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、固态硬盘(ssd,solid state drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(reram,resistance random access memory)和动态随机存取存储器(dram,dynamic random access memory)。
[0276]
本技术实施例还提供了一种区块链系统,该区块链系统包括:客户端、产块节点、共识节点和普通节点;客户端用于向产块节点发送业务数据;产块节点用于执行本技术实施例提供的任一种数据库操作方法中由产块节点执行的步骤;共识节点用于执行本技术实施例提供的任一种数据库操作方法中由共识节点执行的步骤;普通节点用于执行本技术实施例提供的任一种数据库操作方法中由普通节点执行的步骤。
[0277]
可以理解的是,本技术中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上。本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”等之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0278]
本技术实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
[0279]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0280]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种数据库操作方法,其特征在于,所述方法由区块链系统中的产块节点执行,所述区块链系统还包括共识节点;所述方法包括:在接收到客户端发送的n个第一业务数据时,依次执行所述n个第一业务数据的事务;其中,n≥1,对于所述n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的结构化查询语言sql指令组;在所述sql指令组执行失败时,将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括数据操纵语言dml指令,且所述目标sql指令组为执行成功的sql指令组;向所述共识节点广播第一临时区块,以便于所述产块节点与所述共识节点根据所述第一临时区块进行第一共识,所述第一临时区块记录有所述n个第一业务数据和所述目标sql指令组中的dml指令。2.根据权利要求1所述的方法,其特征在于,在向所述共识节点广播第一临时区块之后,所述方法还包括:在所述产块节点与所述共识节点达成所述第一共识时,执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。3.根据权利要求1或2所述的方法,其特征在于,所述产块节点中安装有至少一个智能合约,所述至少一个智能合约具有一一对应的至少一个状态数据库,所述智能合约包括:与对所述智能合约对应的状态数据库进行操作相关的合约数据;所述至少一个状态数据库包括所述目标状态数据库,所述方法还包括:在依次执行所述n个第一业务数据的事务之前,根据所述一个第一业务数据,以及所述目标状态数据库对应的智能合约中与所述目标操作相关的第一合约数据,得到所述第一业务数据对应的sql指令组。4.根据权利要求3所述的方法,其特征在于,所述方法满足以下任一条件:所述第一合约数据包括sql语句;根据所述一个第一业务数据,以及所述目标状态数据库对应的智能合约中与所述目标操作相关的第一合约数据,得到所述第一业务数据对应的sql指令组,包括:组装所述一个第一业务数据和所述sql语句,得到所述第一业务数据对应的sql指令组;所述第一合约数据包括目标对象;根据所述一个第一业务数据,以及所述目标状态数据库对应的智能合约中与所述目标操作相关的第一合约数据,得到所述第一业务数据对应的sql指令组,包括:对所述目标对象进行对象关系映射orm,得到与所述目标操作相关的sql语句;组装所述一个第一业务数据和所述sql语句,得到所述第一业务数据对应的sql指令组。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:在接收到客户端发送的包括一个智能合约的信息的第二业务数据时,在所述产块节点上安装所述一个智能合约,以及创建所述一个智能合约对应的状态数据库;所述一个智能
合约包括与在所述一个智能合约对应的状态数据库中创建数据库对象相关的第二合约数据;根据所述第二合约数据,执行在所述一个智能合约对应的状态数据库中创建数据库对象的创建sql指令;向所述共识节点广播第二临时区块,以便于所述产块节点与所述共识节点根据所述第二临时区块进行第二共识;所述第二临时区块记录有所述第二业务数据和所述创建sql指令;在所述产块节点与所述共识节点根据所述第二临时区块达成所述第二共识时,将所述第二临时区块加入所述区块链。6.根据权利要求5所述的方法,其特征在于,所述第二合约数据包括所述创建sql指令;或者,所述第二合约数据包括第二对象,所述方法还包括:在执行所述创建sql指令之前,对所述第二对象进行orm,得到所述创建sql指令。7.根据权利要求5所述的方法,其特征在于,在所述产块节点与所述共识节点达成所述第二共识后,所述方法还包括:在接收到客户端发送的包括更新合约的第三业务数据时,根据所述第三业务数据,将所述一个智能合约更新为所述更新合约;所述更新合约包括:与更新上述一个智能合约对应的状态数据库相关的第三合约数据;根据所述第三合约数据,执行更新所述一个智能合约对应的状态数据库的更新sql指令;向所述共识节点广播所述第三临时区块,以便于所述产块节点与所述共识节点根据所述第三临时区块进行第三共识;所述第三临时区块记录有所述第三业务数据和所述更新sql指令;在所述产块节点与所述共识节点根据所述第三临时区块达成所述第三共识时,将所述第三临时区块加入所述区块链。8.根据权利要求5所述的方法,其特征在于,在所述产块节点与所述共识节点达成所述第二共识后,所述方法还包括:在接收到客户端发送的第四业务数据时,根据所述第四业务数据,执行删除所述一个智能合约及其对应的状态数据库的删除sql指令;所述第四业务数据用于指示删除所述一个智能合约及其对应的状态数据库;向所述共识节点广播所述第四临时区块,以便于所述产块节点与所述共识节点根据所述第四临时区块进行第四共识;所述第四临时区块记录有所述第四业务数据和所述删除sql指令;在所述产块节点与所述共识节点根据所述第四临时区块达成所述第四共识时,将所述第四临时区块加入所述区块链。9.一种数据库操作方法,其特征在于,所述方法由区块链系统中的共识节点执行,所述区块链系统还包括:产块节点,所述方法包括:接收所述产块节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和dml指令,n≥1;依次执行所述n个第一业务数据的事务;其中,对于所述n个第一业务数据中的一个第
一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的结构化查询语言sql指令组;在所述sql指令组执行失败时,根据所述保存点将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述sql指令组包括所述目标操作的指令;在存在目标sql指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标sql指令组包括数据操纵语言dml指令,且所述目标sql指令组为执行成功的sql指令组;判断所述目标sql指令组中的dml指令与所述第一临时区块中的dml指令是否相同;根据所述判断的结果与所述产块节点进行第一共识。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:在所述产块节点与所述共识节点根据所述第一临时区块达成第一共识时,执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。11.一种数据库操作方法,其特征在于,所述方法由区块链系统中的普通节点执行,所述区块链系统还包括:产块节点和共识节点,所述方法包括:接收所述产块节点或所述共识节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和数据操纵语言dml指令,n≥1;所述第一临时区块为在所述产块节点与所述共识节点根据所述第一临时区块达成第一共识时广播的区块;执行所述第一临时区块中记录的所述dml指令,并将所述第一临时区块加入区块链。12.一种区块链系统,其特征在于,所述区块链系统包括:客户端、产块节点、共识节点和普通节点;所述客户端用于向所述产块节点发送业务数据;所述产块节点用于执行权利要求1至8任一所述的方法;所述共识节点用于执行权利要求9或10所述的方法;所述普通节点用于执行权利要求11所述的方法。13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一所述的方法,或者,如权利要求9或10所述的方法,如权利要求11所述的方法。14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的方法,或者,如权利要求9或10所述的方法,如权利要求11所述的方法。15.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1至8任一所述的方法,或者,如权利要求9或10所述的方法,如权利要求11所述的方法。
技术总结
一种数据库操作方法、装置及系统,属于区块链技术领域。该方法包括:产块节点在接收到n个第一业务数据(也称消息)时,依次执行n个第一业务数据的事务;第一业务数据的事务包括:创建目标状态数据库的保存点;执行第一业务数据对应的SQL指令组;在SQL指令组执行失败时,将目标状态数据库回滚至创建保存点时的状态;在存在目标SQL指令组时,将每个第一业务数据指示的状态数据库回滚至创建该状态数据库的保存点时的状态;向共识节点广播记录有n个第一业务数据和目标SQL指令组中DML指令的第一临时区块,以便于产块节点与共识节点进行第一共识。本申请解决了节点对状态数据库的操作方式较为单一的问题,本申请用于区块链系统。本申请用于区块链系统。本申请用于区块链系统。
技术研发人员:曾毅
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.07
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
