CN114328591B 事务执行方法、装置、设备和存储介质 (杭州趣链科技有限公司)_第1页
CN114328591B 事务执行方法、装置、设备和存储介质 (杭州趣链科技有限公司)_第2页
CN114328591B 事务执行方法、装置、设备和存储介质 (杭州趣链科技有限公司)_第3页
CN114328591B 事务执行方法、装置、设备和存储介质 (杭州趣链科技有限公司)_第4页
CN114328591B 事务执行方法、装置、设备和存储介质 (杭州趣链科技有限公司)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一交易后创建目标事务;每接收到一个第二交易,若该第二交易携带的SQL语句用于修改区块加锁的情况下根据该SQL语句修改第一数据;若提交目标事务执行的多个SQL语句的修改数据。区块链系统中可将客户端发送的多个SQL语句作为一个事务进行执行,提高了区块链系统执行SQL语句的灵活性和准确性,从而提高了业务适2接收所述客户端发送的多个第二交易,所述多个第二交易中的需所述目标事务执行的用于操作区块链账本的结构化查询语言SQL语句,所述区块链账本务标识所标识的事务的提交版本号,所述事务的提交版本号为提交所述事务时的逻辑时每接收到所述客户端发送的一个第二交易,若所述一个第二交易携带的SQL语句用于据所述一个第二交易携带的SQL语句对所述第一数据的版本记录中版本号为所述锁版本号若接收到所述客户端发送的携带有提交语句的第三交易,则对述目标事务加锁的所有数据进行解锁,以对所述目标事务执行的多个SQL语句的修改数据每接收到所述客户端发送的一个第二交易,对所述一个第二交易携带的SQL语句进行若所述操作类型为修改类型,则根据所述键值对中的key值在所述区块链账本中查找对应的数据作为所述一个第二交易携带的SQL语句需修改的所述将所述区块链账本中版本号为锁版本号、且事务标识为所述目标每接收到所述客户端发送的一个第二交易,若所述一个第二交易携带的SQL语句用于若所述第二数据已被所述目标事务加锁,则读取所述第二数据若所述第二数据未被所述目标事务加锁,则在可重复读隔据的版本记录中版本号小于所述目标事务的开始版本号的数据值中版本号最大的数据值,取所述第二数据的版本记录中除版本号为所述锁版本号之外的数据值中版本号最大的数3若接收到所述客户端发送的携带有回滚语句的第四交易,述目标事务执行的多个SQL语句的修改数在每次事务读取所述区块链账本中的数据时,清理所述区块链账本中的历史版本记7.如权利要求6所述的方法,其特征在于,所述清理所述区块链账本中的历史版本记将当前存活的事务的开始版本号中最小的开始版本号作为目标版本对于所述区块链账本中的每一个数据,将所述一个数据的版本记删除所述一个数据的目标版本记录中除版本号最大的版本记录之外的其他历史版本创建模块,用于接收到客户端发送的携带有启动事务接收模块,用于接收所述客户端发送的多个第二交易,所二交易均携带有需所述目标事务执行的用于操作区块链账本的结构化查询语言SQL语句,修改模块,用于每接收到所述客户端发送的一个第二交易,若的SQL语句用于修改所述区块链账本中的第一数据,则在所述第一数据的版本号最大的版标事务加锁;根据所述一个第二交易携带的SQL语句对所述第一数据的版本记录中版本号提交模块,用于若接收到所述客户端发送的携带有提交语句的第三交易块链账本中被所述目标事务加锁的所有数据进行解锁,以对所述目标事务执行的多个SQL45条SQL语句的执行变为一个事务进行提交或回滚,所以目前区块链系统没有实现传统的带有需所述目标事务执行的用于操作区块链账本[0008]每接收到所述客户端发送的一个第二交易,若所述一个第二交易携带的SQL语句用于修改所述区块链账本中的第一数据,则在所述目标事务对所述第一数据加锁的情况被所述目标事务加锁的所有数据进行解锁,以对所述目标事务执行的多个SQL语句的修改链系统创建目标事务后,客户端可以不断向区块链系统发送携带有SQL语句的多个第二交易,以指示区块链系统将多个SQL语句作为一个事务进行执行。区块链系统创建目标事务后,每接收到客户端发送的一个第二交易,就可以对这个第二交易携带的SQL语句进行执户端可以向区块链系统发送携带有提交语句的第三交易,区块链系统接收到第三交易后,6可以对区块链账本中被目标事务加锁的所有数据进行解锁,以对目标事务执行的多个SQL[0012]每接收到所述客户端发送的一个第二交易,对所述一个第二交易携带的SQL语句[0013]若所述操作类型为修改类型,则根据所述键值对中的key值在所述区块链账本中查找对应的数据作为所述一个第二交易携带的SQL语句需修[0017]根据所述一个第二交易携带的SQL语句对所述第一数据的版本记录中版本号为所[0022]每接收到所述客户端发送的一个第二交易,若所述一个第二交易携带的SQL语句二数据的版本记录中版本号小于所述目标事务的开始版本号的数据值中版本号最大的数7对所述目标事务执行的多个SQL语句的修改数所述目标版本号的版本记录作为所述一个数据的[0034]删除所述一个数据的目标版本记录中除版本号最大的版本记录之外的其他历史个第二交易均携带有需所述目标事务执行的用于操作区块链账本的S携带的SQL语句用于修改所述区块链账本中的第一数据,则在所述目标事务对所述第一数区块链账本中查找对应的数据作为所述一个第二交易携带的SQL语句需修改的所述第一数8[0045]根据所述一个第二交易携带的SQL语句对所述第一数据的版本记录中版本号为所携带的SQL语句用于读取所述区块链账本中的第二数据,则判断所述第二数据是否被所述所述目标版本号的版本记录作为所述一个数据的[0060]删除所述一个数据的目标版本记录中除版本号最大的版本记录之外的其他历史9[0079]区块链系统100中的每个节点101均存储一条相同的区块链。下面以图2为例来对据,则另一个事务不允许同时进行写操作,但允许其他事务读取此数据。读已提交(READ端301与区块链系统302可以通过有线连接与[0089]客户端301用于生成SQL语句,并将该SQL语句携带于交易中发送给区块链系统来实现区块链系统302将客户端301发送的多个SQL语句作为一个事务进行执行,以此提高[0096]区块链系统创建目标事务后,即可将客户端后续发送的多个SQL语句作为需目标[0097]区块链系统创建目标事务的操作与相关技术中某个设备创建某个事务的操作类[0102]客户端向区块链系统发送的多个第二交易是用于对区块链系统中的区块链账本每个第二交易携带的SQL语句均是区块链系统新创建的目标事务需执行的SQ区块链账本中的数据进行读取(SELECT)或修改(包括插入(INSERT)、更新(UPDATE)、删除[0104]客户端向区块链系统发送多个第二交易后,区块链系统可以接收该多个第二交这个第二交易是要修改区块链账本中的数据,可以根据该解析结果中的键值对中的key值在区块链账本中查找对应的数据作为这个第二交易携带的SQL语句需修改的第一数据;若该解析结果中的操作类型为读取类型,则确定这个第二交易是要读取区块链账本中的数据,可以根据该解析结果中的键值对中的key值在区块链账本中查找对应的数据作为这个操作的数据的关键字(如主键),根据key值可以从区块链账本中查找所要操作的数据。[0109]区块链系统对这个第二交易携带的SQL语句进行解析的操作可以参考相关技术中为这个数据的真实值(如可以为rowValue),该事务标识为生成这条版本记录的事务的标[0116]本申请实施例仅以上表1为例来对区块链账本中的数据的版本记录进行举例说链账本中的任意一个数据,若这个数据的版本号最大的版本记录中的版本号是锁版本号,本记录中的value值还可以包括事务标识所标识的事务的提交版本号、事务提交时的数据区块链系统在目标事务对第一数据加锁的情况下,根据这个第二交易携带的SQL语句修改[0123]若这个第二交易携带的SQL语句需修改区块链账本中的第一数据,则需要先确定SQL语句对第一数据的版本记录中版本号为锁版本号的数据值进行修改,具体可以根据这及到对目标事务的提交或回滚,所以需要知道目标事务在区块链账本中修改的数据的key[0134]区块链系统可以根据这个第二交易携带的SQL语句的解析结果中的操作类型和键[0137](2)若第二数据已被目标事务加锁,则区块链系统读取第二数据的版本记录中版二数据的版本记录中版本号小于目标事务的开始版本号的数据值中版本号最大的数据值;易携带的SQL语句来操作区块链账本,直至区块链系统接收到客户端发送的最后一个第二提交或回滚。若客户端想指示对目标事务进行提交,则可以继续进行如下步骤407-步骤目标事务在区块链系统中修改的数据的key值,所以区块链系统接收到客户端发送的第三该key值对应的数据的版本号为锁版本号、且事务标识为目标事务的标识的版本记录中的块链系统将该多个SQL语句作为所创建的目标事务中的SQL语句,对该多个SQL语句进行执[0153]步骤410:区块链系统接收到客户端发送的第四交易后,对目标事务执行的多个目标事务在区块链系统中修改的数据的key值,所以区块链系统接收到客户端发送的第四该key值对应的数据的版本号为锁版本号、且事务标识为目标事务的标识的版本记录进行[0157]在一些实施例中,区块链系统还可以定期进行GC(GarbageCollection,垃圾回据的版本记录中除了加锁的版本记录和最新提交的事务生成的版本记录之外的版本记录。事务的开始版本号中最小的开始版本号作为目标版本号;对于区块链账本中的每一个数记录;删除这个数据的目标版本记录中除版本号最大的版本记录之外的其他历史版本记[0167](2)对该SQL语句进行解析,以确定该SQL语句是需要读取区块链账本中的数据还他事务加锁的版本记录中版本号小于或等于该事务的开始版本号的数据值中版本号最大确定该SQL语句是需要读取区块链账本中的数据还是需要修改区块他事务加锁的版本记录中版本号小于或等于该事务的开始版本号的数据值中版本号最大[0177](6)若接收到客户端发送的携带有提交语句的交易,则将区块链账本中版本号为[0178](7)若接收到客户端发送的携带有回滚语句的交易,则将区块链账本中版本号为示区块链系统创建目标事务后,客户端可以不断向区块链系统发送携带有SQL语句的多个客户端可以向区块链系统发送携带有提交语句的第三交易,区块链系统接收到第三交易块链系统将客户端发送的多个SQL语句作为一个事务进行执行,以此提高了区块链系统执硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图8交易均携带有需目标事务执行的用于操作区块链账本中被目标事务加锁的所有数据进行解锁,以对目标事务执行的多个SQL语句的修改查找对应的数据作为一个第二交易携带的SQL语句[0191]根据一个第二交易携带的SQL语句对第一数据的版本记录中版本号为锁版本号的取第二数据的版本记录中版本号小于目标事务的开始版本号的数据值中版本号最大的数二数据的版本记录中除版本号为锁版本号之外的数据值中版本号目标事务执行的多个SQL语句的修改数据[0206]删除一个数据的目标版本记录中除版本号最大的版本记录之外的其他历史版本示区块链系统创建目标事务后,客户端可以不断向区块链系统发送携带有SQL语句的多个客户端可以向区块链系统发送携带有提交语句的第三交易,区块链系统接收到第三交易块链系统将客户端发送的多个SQL语句作为一个事务进行执行,以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论