【技术实现步骤摘要】
数据库操作方法、装置及系统
[0001]本申请涉及区块链
,特别涉及一种数据库操作方法、装置及系统。
技术介绍
[0002]区块链系统包括客户端和多个节点,每个节点均维护有区块链。区块链中的区块上记录有客户端发送的业务数据,节点维护有状态数据库,节点可以根据区块链上的业务数据对状态数据库进行更新。
[0003]区块链系统中的多个节点包括:产块节点、共识节点和普通节点。其中,产块节点在接收到业务数据后,会根据该业务数据模拟对状态数据库的更新,并将更新的结果与该业务数据一同打包为一个临时区块进行广播。共识节点可以根据该临时区块中的该业务数据模拟对状态数据库的更新,并判断更新的结果与该区块中的更新的结果是否相同,进而根据该判断的结果与产块节点进行共识。在产块节点与共识节点达成共识后,产块节点、共识节点和普通节点均根据共识结果对状态数据库进行更新,并将该临时区块加入区块链。其中,产块节点和共识节点中的每个节点在根据业务数据模拟对状态数据库的更新时,会在本地模拟该状态数据库,并根据业务数据对模拟的状态数据库进行更新,得到更新的结果。
[0004]但是,目前节点对状态数据库的操作方式较为单一。
技术实现思路
[0005]本申请提供了一种数据库操作方法、装置及系统,可以解决目前节点对状态数据库的操作方式较为单一的问题,所述技术方案如下:
[0006]第一方面,提供了一种数据库操作方法,所述方法由区块链系统中的产块节点执行,所述区块链系统还包括共识节点;所述方法包括:
[0007 ...
【技术保护点】
【技术特征摘要】
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所述的方法,其特征在于,在所述产块节点与所述共识节点达成所述第二共识后,所述方法还包括:在接收到客户端发送的包括更新合约的第三业务数据时,根据所述第三业务数据,将所述一个智能合约更新为所述更新合约;所述更新合约包括:与更新上述一个智能合约对应的状态数据库相关的第三合约数据;根据所述第三合约数据,执行更新所述一个智能合约对应的状态数据库的更...
【专利技术属性】
技术研发人员:曾毅,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。