数据库操作方法、装置及系统制造方法及图纸

技术编号:38237831 阅读:10 留言:0更新日期:2023-07-25 18:02
一种数据库操作方法、装置及系统,属于区块链技术领域。该方法包括:产块节点在接收到n个第一业务数据(也称消息)时,依次执行n个第一业务数据的事务;第一业务数据的事务包括:创建目标状态数据库的保存点;执行第一业务数据对应的SQL指令组;在SQL指令组执行失败时,将目标状态数据库回滚至创建保存点时的状态;在存在目标SQL指令组时,将每个第一业务数据指示的状态数据库回滚至创建该状态数据库的保存点时的状态;向共识节点广播记录有n个第一业务数据和目标SQL指令组中DML指令的第一临时区块,以便于产块节点与共识节点进行第一共识。本申请解决了节点对状态数据库的操作方式较为单一的问题,本申请用于区块链系统。本申请用于区块链系统。本申请用于区块链系统。

【技术实现步骤摘要】
数据库操作方法、装置及系统


[0001]本申请涉及区块链
,特别涉及一种数据库操作方法、装置及系统。

技术介绍

[0002]区块链系统包括客户端和多个节点,每个节点均维护有区块链。区块链中的区块上记录有客户端发送的业务数据,节点维护有状态数据库,节点可以根据区块链上的业务数据对状态数据库进行更新。
[0003]区块链系统中的多个节点包括:产块节点、共识节点和普通节点。其中,产块节点在接收到业务数据后,会根据该业务数据模拟对状态数据库的更新,并将更新的结果与该业务数据一同打包为一个临时区块进行广播。共识节点可以根据该临时区块中的该业务数据模拟对状态数据库的更新,并判断更新的结果与该区块中的更新的结果是否相同,进而根据该判断的结果与产块节点进行共识。在产块节点与共识节点达成共识后,产块节点、共识节点和普通节点均根据共识结果对状态数据库进行更新,并将该临时区块加入区块链。其中,产块节点和共识节点中的每个节点在根据业务数据模拟对状态数据库的更新时,会在本地模拟该状态数据库,并根据业务数据对模拟的状态数据库进行更新,得到更新的结果。
[0004]但是,目前节点对状态数据库的操作方式较为单一。

技术实现思路

[0005]本申请提供了一种数据库操作方法、装置及系统,可以解决目前节点对状态数据库的操作方式较为单一的问题,所述技术方案如下:
[0006]第一方面,提供了一种数据库操作方法,所述方法由区块链系统中的产块节点执行,所述区块链系统还包括共识节点;所述方法包括:
[0007]在接收到客户端发送的n个第一业务数据时,依次执行所述n个第一业务数据的事务;其中,n≥1,对于所述n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的结构化查询语言(Structured Quevy Language,SQL)指令组;在所述SQL指令组执行失败时,根据所述保存点将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述SQL指令组包括所述目标操作的指令;
[0008]在存在目标SQL指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标SQL指令组包括数据操纵语句(Data Manipulation Language,DML)指令,且所述目标SQL指令组为执行成功的SQL指令组;
[0009]向共识节点广播第一临时区块,以便于所述产块节点与所述共识节点根据所述第一临时区块进行第一共识,所述第一临时区块记录有所述n个第一业务数据和所述目标SQL
指令组中的DML指令。
[0010]第二方面,提供了一种数据库操作方法,所述方法由区块链系统中的共识节点执行,所述区块链系统还包括:产块节点,所述方法包括:
[0011]接收所述产块节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和DML指令,n≥1;
[0012]依次执行所述n个第一业务数据的事务;其中,对于所述n个第一业务数据中的一个第一业务数据,所述第一业务数据的所述事务包括:创建目标状态数据库的保存点;执行所述第一业务数据对应的SQL指令组;在所述SQL指令组执行失败时,根据所述保存点,将所述目标状态数据库回滚至创建所述保存点时的状态;所述第一业务数据用于指示对所述目标状态数据库进行目标操作,所述目标状态数据库为关系型数据库;所述目标操作包括:数据的增加、删除、修改和/或查询;所述SQL指令组包括所述目标操作的指令;
[0013]在存在目标SQL指令组时,对于所述n个第一业务数据指示的每个状态数据库,将所述状态数据库回滚至创建所述状态数据库的保存点时的状态;所述目标SQL指令组包括DML指令,且所述目标SQL指令组为执行成功的SQL指令组;
[0014]判断所述目标SQL指令组中的DML指令与所述第一临时区块中的DML指令是否相同;
[0015]根据所述判断的结果与所述产块节点进行第一共识。
[0016]第三方面,提供了一种数据库操作方法,所述方法由区块链系统中的普通节点执行,所述区块链系统还包括:产块节点和共识节点,所述方法包括:
[0017]接收所述产块节点广播的第一临时区块;其中,所述第一临时区块记录有n个第一业务数据和DML指令,n≥1;
[0018]在所述产块节点与所述共识节点根据所述第一临时区块达成第一共识时,执行所述第一临时区块中记录的所述DML指令,并将所述第一临时区块加入区块链。
[0019]第四方面,提供了一种区块链系统,所述区块链系统包括:客户端、产块节点、共识节点和普通节点;
[0020]所述客户端用于向所述产块节点发送业务数据;
[0021]所述产块节点用于执行第一方面提供的任一种方法;
[0022]所述共识节点用于执行第二方面提供的任一种方法;
[0023]所述普通节点用于执行第三方面提供的任一种方法。
[0024]第五方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面、第二方面或第三方面提供的任一种方法。
[0025]第六方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面、第二方面或第三方面提供的任一种方法。
[0026]第七方面,提供了一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面、第二方面或第三方面提供的任一种方法。
[0027]本申请提供的技术方案带来的有益效果至少包括:
[0028]本申请实施例提供了一种数据库操作方法中,产块节点和共识节点均是先依次执行该n个第一业务数据的事务,以对节点上的状态数据库进行操作。在存在目标SQL指令组时,对于n个第一业务数据指示的每个状态数据库,节点还将该状态数据库回滚至创建该状态数据库的保存点时的状态。在产块节点与共识节点达成共识后,再执行该目标SQL指令组中的DML指令。可见,本申请实施例提供的数据库操作方法中,并未在节点上模拟状态数据库,而是直接在状态数据库上进行操作,因此,本申请实施例提供了一种新的数据库操作方法,丰富了数据库的操作方式。
[0029]并且,相关技术中,节点在模拟状态数据库时,会开启用于模拟该状态数据库的进程,从而对节点的性能产生影响。本申请实施例中,产块节点和共识节点均无需模拟状态数据库,且执行n个第一业务数据的事务均在运行状态数据库的进程中,因此本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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所述的方法,其特征在于,在所述产块节点与所述共识节点达成所述第二共识后,所述方法还包括:在接收到客户端发送的包括更新合约的第三业务数据时,根据所述第三业务数据,将所述一个智能合约更新为所述更新合约;所述更新合约包括:与更新上述一个智能合约对应的状态数据库相关的第三合约数据;根据所述第三合约数据,执行更新所述一个智能合约对应的状态数据库的更...

【专利技术属性】
技术研发人员:曾毅
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1