CN112765270B - 区块链数据处理方法、装置、计算机设备及介质 - Google Patents
区块链数据处理方法、装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN112765270B CN112765270B CN202011640201.XA CN202011640201A CN112765270B CN 112765270 B CN112765270 B CN 112765270B CN 202011640201 A CN202011640201 A CN 202011640201A CN 112765270 B CN112765270 B CN 112765270B
- Authority
- CN
- China
- Prior art keywords
- data
- key
- data table
- relational
- relational data
- 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.)
- Active
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
- 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/24—Querying
- G06F16/242—Query formulation
-
- 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/24—Querying
- G06F16/245—Query processing
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链数据处理方法、装置、计算机设备及介质,所述方法包括:通过部署智能合约到区块链平台,其中,智能合约包含接口封装类,接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据;基于自定义数据表中的关系型数据,创建关系型数据表和关系型数据表对应的sql语句;对关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将关系型数据表的标识信息作为Key,将序列化信息作为Value,并将Key和Value存储至区块链中的Key‑Value存储数据库;在接收到数据处理指令时,基于Key‑Value存储数据库中存储的Key和Value,对Key‑Value存储数据库中的关系型数据表进行数据处理。采用本发明能提高区块链数据处理效率。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链数据处理方法、装置、计算机设备及介质。
背景技术
区块链上采用的数据库为Key-Value类型的非关系型数据库,因而在智能合约使用时,无法将数据组织为关系型数据的模型进行存储,导致智能合约在使用上比较受限,不能进行复杂的结构数据的存储和查找。尤其是在使用 Java作为智能合约语言的情况下,需要支持对数据的操作更加复杂,会有较复杂的数据关联查询操作,这使得数据处理效率较低。
当前的主要方案是通过接入链外数据库,使用sql语法的形式来增删改查区块链上的合约账户数据,并将sql执行的log记录到世界状态中,但是真正的sql执行和数据存储在链外的关系型数据库上,发明人在实现本发明人的过程中,意识到现有的这种方式至少存在如下问题:数据存储在链外的关系型数据库上,需要接入链外数据库,真正的数据存储和执行与链脱离,降低了链的安全性,数据一致性保证较难,同时,需要链和链外数据库进行通信,交易的整体延迟会更高,使得效率较低。因而,亟需一种高效的数据处理方法。
发明内容
本发明实施例提供一种区块链数据处理方法、装置、计算机设备和存储介质,以提高区块链上进行数据处理的效率。
为了解决上述技术问题,本申请实施例提供一种区块链数据处理方法,包括:
部署智能合约到区块链平台,其中,所述智能合约包含接口封装类,所述接口封装类包含自定义数据表,所述自定义数据表包含Java对象转化的关系型数据;
基于所述自定义数据表中的关系型数据,创建关系型数据表和所述关系型数据表对应的sql语句;
对所述关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将所述关系型数据表的标识信息作为Key,将所述序列化信息作为Value,并将所述Key和所述Value存储至区块链中的 Key-Value存储数据库;
在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述 Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理。
可选地,在所述部署智能合约到区块链平台之前,所述区块链数据处理方法还包括:
基于注解的方式,对默认智能合约中的Java对象进行数据转换,得到关系型数据;
将所述关系型数据写入到接口封装类,得到所述智能合约。
可选地,所述数据处理指令为数据插入指令,所述在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待插入数据,并对所述待插入数据进行数据解析,得到解析结果;根据所述解析结果,判断所述待插入数据是否符合所述关系型数据表的表结构;
若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表。
可选地,所述若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表包括:
在所述待插入数据符合所述关系型数据表的表结构时,将所述待插入数据的数据标识作为Key,将所述待插入数据的数据内容作为Value,得到 Key-Value键值对;
通过所述关系型数据表对应的sql语句,将所述Key-Value键值对写入到所述关系型数据表。
可选地,所述区块链数据处理方法还包括:
向所述智能合约的自定义数据表中,写入待增加的Java对象转化的关系型数据,得到变更合约;
在合约升级时,通过部署所述变更合约的方式,对所述部署好的智能合约进行更新,得到更新后的智能合约;
基于所述更新后的智能合约,向所述关系型数据表中,添加所述待增加的Java对象转化的关系型数据对应的字段,得到更新后的关系型数据表。
可选地,所述数据处理指令为数据查询指令,所述在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待查询数据信息,并对所述待查询数据信息进行数据解析,得到查询条件,其中,所述查询条件为主键和索引中的至少一种;
通过所述关系型数据表对应的sql语句对所述查询条件进行查询处理,得到所述待查询数据信息对应的行标识;
读取所述行标识对应的数据内容,作为查询结果。
为了解决上述技术问题,本申请实施例还提供一种区块链数据处理装置,包括:
部署模块,用于部署智能合约到区块链平台,其中,所述智能合约包含接口封装类,所述接口封装类包含自定义数据表,所述自定义数据表包含Java 对象转化的关系型数据;
创建模块,用于基于所述自定义数据表中的关系型数据,创建关系型数据表和所述关系型数据表对应的sql语句;
存储模块,用于对所述关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将所述关系型数据表的标识信息作为Key,将所述序列化信息作为Value,并将所述Key和所述Value存储至区块链中的Key-Value存储数据库;
处理模块,用于在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理。
可选地,在所述部署智能合约到区块链平台之前,所述区块链数据处理装置还包括:
转换模块,用于基于注解的方式,对默认智能合约中的Java对象进行数据转换,得到关系型数据;
写入模块,用于将所述关系型数据写入到接口封装类,得到所述智能合约。
可选地,所述数据处理指令为数据插入指令,所述处理模块包括:
第一解析单元,用于获取待插入数据,并对所述待插入数据进行数据解析,得到解析结果;
判断单元,用于根据所述解析结果,判断所述待插入数据是否符合所述关系型数据表的表结构;
数据写入单元,用于若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表。
可选地,所述数据写入单元包括:
键值对确定子单元,用于在所述待插入数据符合所述关系型数据表的表结构时,将所述待插入数据的数据标识作为Key,将所述待插入数据的数据内容作为Value,得到Key-Value键值对;
数据写入子单元,用于通过所述关系型数据表对应的sql语句,将所述 Key-Value键值对写入到所述关系型数据表。
可选地,所述区块链数据处理装置还包括:
合约变更模块,用于向所述智能合约的自定义数据表中,写入待增加的 Java对象转化的关系型数据,得到变更合约;
合约升级模块,用于在合约升级时,通过部署所述变更合约的方式,对所述部署好的智能合约进行更新,得到更新后的智能合约;
数据表更新模块,用于基于所述更新后的智能合约,向所述关系型数据表中,添加所述待增加的Java对象转化的关系型数据对应的字段,得到更新后的关系型数据表。
可选地,所述数据处理指令为数据查询指令,所述处理模块还包括:
第二解析单元,用于获取待查询数据信息,并对所述待查询数据信息进行数据解析,得到查询条件,其中,所述查询条件为主键和索引中的至少一种;
位置查询单元,用于通过所述关系型数据表对应的sql语句对所述查询条件进行查询处理,得到所述待查询数据信息对应的行标识;
内容读取单元,用于读取所述行标识对应的数据内容,作为查询结果。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述区块链数据处理方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链数据处理方法的步骤。
本发明实施例提供的区块链数据处理方法、装置、计算机设备及存储介质,通过本实施例中,通过部署智能合约到区块链平台,其中,智能合约包含接口封装类,接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据,基于自定义数据表中的关系型数据,创建关系型数据表和关系型数据表对应的sql语句,对关系型数据表对应的sql语句,通过sql 执行引擎解析后的表信息序列化,得到序列化信息,将关系型数据表的标识信息作为Key,将序列化信息作为Value,并将Key和Value存储至区块链中的Key-Value存储数据库,在接收到数据处理指令时,基于Key-Value存储数据库中存储的Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理,实现通过sql语句对Key-Value存储数据库进行数据处理,提高区块链数据处理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是本申请的区块链数据处理方法的一个实施例的流程图;
图3是根据本申请的区块链数据处理装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,如图1所示,系统架构100可以包括终端设备101、102、 103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器 (Moving Picture E界面显示perts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureE界面显示perts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、 103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的区块链数据处理方法由服务器执行,相应地,区块链数据处理装置设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,本申请实施例中的终端设备101、102、103具体可以对应的是实际生产中的应用系统。
请参阅图2,图2示出本发明实施例提供的一种区块链数据处理方法,以该方法应用在图1中的服务端为例进行说明,详述如下:
S201:部署智能合约到区块链平台,其中,智能合约包含接口封装类,接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据。
具体地,本实施例的智能合约为Java智能合约,将包含接口封装类的智能合约部署到区块链平台上,该接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据。
其中,智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
其中,自定义数据表是指将Java对象进行转换,得到关系型数据,进而将关系型数据进行存储生成的数据表。将Java对象进行转换得到关系型数据,具体可以是将Java类中的每个对象,定义为一个字段,进而将每个字段映射成数据表的列信息。
优选地,本实施例采用注解的形式对每个字段的属性进行限制,例如使用@NotNull来表示该字段非空,@Default来指定默认值等。具体可参考后续实施例的描述,为避免重复,此处不再赘述。
进一步地,将自定义数据表写入到接口封装类,该接口封装类用于对数据表操作,提供了通过sql语句进行增加、删除、修改和查询等操作的接口。
S202:基于自定义数据表中的关系型数据,创建关系型数据表和关系型数据表对应的sql语句。
具体地,在部署好智能合约后,通过对智能合约进行扫描,获取智能合约中包含的自定义数据数据表,再根据自定义数据表的主键、索引等信息,创建一个关系型数据表,并生成关系型数据表对应的sql语句。
本实施例中,通过指定的数据封装类来生成关系型数据表对应的sql语句。
S203:对关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将关系型数据表的标识信息作为Key,将序列化信息作为Value,并将Key和Value存储至区块链中的Key-Value存储数据库。
具体地,对关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息,采用json的形式进行序列化,得到序列化信息,进而将关系型数据表的标识信息作为Key,将序列化信息作为Value,得到一组Key-Value键值对,并将Key-Value键值对存储至区块链中的Key-Value存储数据库。
S204:在接收到数据处理指令时,基于Key-Value存储数据库中存储的 Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理。
具体地,在接收到数据处理指令时,通过Key-Value存储数据库中存储的关系型数据表的标识信息和序列化信息(sql语句的序列化存储数据),来对接收的数据进行数据处理。
其中,数据处理包括但不限于:插入、删除和更新等。
可选的,本实施例通过升级合约的方式来进行修改表结构,具体通过增加表映射的Java对象的字段来增加表的列信息,但是不可以删除原有的字段,在合约升级时,将通过对于新合约中的内容和旧合约中的内容来进行限制,升级成功后将修改表对应表信息,同时新增的字段都将默认为空值,实现快速进行表结构的修改。
本实施例中,通过部署智能合约到区块链平台,其中,智能合约包含接口封装类,接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据,基于自定义数据表中的关系型数据,创建关系型数据表和关系型数据表对应的sql语句,对关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将关系型数据表的标识信息作为Key,将序列化信息作为Value,并将Key和Value存储至区块链中的Key-Value存储数据库,在接收到数据处理指令时,基于Key-Value存储数据库中存储的Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理,实现通过sql语句对Key-Value存储数据库进行数据处理,提高区块链数据处理效率。
在本实施例的一些可选的实现方式中,在部署智能合约到区块链平台之前,该区块链数据处理方法还包括:
基于注解的方式,对默认智能合约中的Java对象进行数据转换,得到关系型数据;
将关系型数据写入到接口封装类,得到智能合约。
具体地,采用对Java对象转化为关系型数据存储的方式,将Java的类信息转化为关系型数据表的定义,本实施例借助注解的形式来丰富Java类的定义,例如使用@NotNull来表示该字段非空,@Default来指定默认值等。将定义好的数据表写入到接口封装类,该接口封装类用于对数据表操作,提供了通过sql语句进行增加、删除、修改和查询等操作的接口,同时,也可通过注解来对定义的表信息进行扩展,例如可指定主键,唯一索引,普通索引等。
例如,以保存学生信息为例,生成智能合约时需要先编写,编写学生类,并定义好学生类的字段,数据类中的字段最终会被映射为数据表的列信息,在学生类中指定每个字段的属性为非空、添加默认值的等。
本实施例中,通过注解的方式,将Java对象转化为关系型数据,并写入数据表封装到接口封装类中,有利于后续通过智能合约进行关系型数据的快速处理,提高关系型数据的处理效率。
在本实施例的一些可选的实现方式中,该区块链数据处理方法还包括:
向智能合约的自定义数据表中,写入待增加的Java对象转化的关系型数据,得到变更合约;
在合约升级时,通过部署变更合约的方式,对部署好的智能合约进行更新,得到更新后的智能合约;
基于更新后的智能合约,向关系型数据表中,添加待增加的Java对象转化的关系型数据对应的字段,得到更新后的关系型数据表。
具体地,在需要对关系型数据表的表结构进行修改时,将待增加的Java 对象转化为关系型数据,并将得到的关系型数据写到到智能合约的自定义数据表中,将得到的智能合约作为变更合约,进而采用区块链合约升级的方式,将变更合约部署到区块链中,实现通过变更合约对部署好的智能合约进行更新,得到更新后的智能合约,再听过对更新后的智能合约进行扫描,根据更新后的智能合约中包含的关系型数据,对关系型数据表进行更新。
需要说明的是,本实施例中对关系型数据表的表结构进行修改,是指增加表映射的Java对象的字段来增加表的列信息,但不能对关系型数据表原有的字段进行删除处理。
可选地,更新后的关系型数据表中,新增的字段都将默认为空值。
本实施例中,通过升级合约的方式,对关系型数据表进行升级,提高了关系型数据表的兼容性。
在本实施例的一些可选的实现方式中,数据处理指令为数据插入指令,步骤S204中,在接收到数据处理指令时,基于Key-Value存储数据库中存储的Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待插入数据,并对待插入数据进行数据解析,得到解析结果;
根据解析结果,判断待插入数据是否符合关系型数据表的表结构;
若待插入数据符合关系型数据表的表结构,则采用序列化信息,将待插入数据写入到关系型数据表。
在区块链中产生交易时,向服务端发送交易信息,服务端接收该交易信息,并从该交易信息中获取待插入数据,再对待插入数据进行解析,得到每个待插入数据的数据内容和格式,进而判断待插入数据的格式是否符合关系型数据表的表结构,在待插入数据符合关系型数据表的表结构时,确认该待插入数据合法,采用序列化信息,将待插入数据写入到关系型数据表。
其中,判断待插入数据是否符合关系型数据表的表结构,也即,判断每个待插入数据的数据类型是否与关系型数据表中要求的数据类型相同。
例如,在一具体实施方式中,通过sql语句INSERT INTO testTable(id, name)VALUES(001,“tom”)将数据插入,待插入数据“tom”应与指定的数据表testTable中的数据类型相同,否则插入数据会不合法。
本实施例中,通过对待插入数据的数据格式进行判断,确保待插入数据数据格式合法再进行数据插入,确保插入数据的合法性和安全性。
在本实施例的一些可选的实现方式中,若待插入数据符合关系型数据表的表结构,则采用序列化信息,将待插入数据写入到关系型数据表包括:
在待插入数据符合关系型数据表的表结构时,将待插入数据的数据标识作为Key,将待插入数据的数据内容作为Value,得到Key-Value键值对;
通过关系型数据表对应的sql语句,将Key-Value键值对写入到关系型数据表。
具体地,在待插入数据符合关系型数据表的表结构时,将待插入数据的数据标识作为Key,将待插入数据的数据内容作为Value,得到Key-Value键值对,使得每一条数据即为一个kv的映射,进而通过关系型数据表对应的sql 语句,将Key-Value键值对写入到关系型数据表。
可选地,待插入数据的数据标识为表标识加上行唯一标识组合而成,行唯一标识采用自增的数字来记录,保证没有重复,由此可以确定每个表中不会有重复的Key,该待插入数据的数据标识也可作为行标识。
本实施例中,在待插入数据符合关系型数据表的表结构时,通过关系型数据表对应的sql语句,将Key-Value键值对写入到关系型数据表,实现基于 Key-Value存储数据库,采用sql语句进行数据处理,提高数据处理效率。
在本实施例的一些可选的实现方式中,数据处理指令为数据查询指令,步骤S204中,在接收到数据处理指令时,基于Key-Value存储数据库中存储的Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待查询数据信息,并对待查询数据信息进行数据解析,得到查询条件,其中,查询条件为主键和索引中的至少一种;
通过关系型数据表对应的sql语句对查询条件进行查询处理,得到待查询数据信息对应的行标识;
读取行标识对应的数据内容,作为查询结果。
可选地,本实施例中索引包括唯一索引和非唯一索引,其中,唯一索引存储的键值对中,保存的Key为该数据对应的表标识加上索引名再加上索引值,保存的Value为行标识;非唯一索引的键值对中,保存的Key为表标识加上索引名加上索引值再加上行标识,而Value为空。
在一具体实施方式中,插入语句INSERT INTO testTable(id,name) VALUES(001,“tom”)在插入数据成功后,生成一个Key-Value键值对,id 为主键,Key生成规则为表标识加行标识(TableID+RowID),例如生成的Key 为t49_r00000001,49为表标识tableID,00000001为将主键转化为8字节长度的值,Value则为[1,“tom”],以一种经凑的格式将列的值合并在一起,编码为16进制表示则为01746f6d00,01为数字1的编码,746f6d为tom的编码,00为默认值,在值的编码前还将包括每一列的数据的偏移位置。
对于唯一索引的情况下,索引数据的Key为表标识加上索引名再加上索引值(tableID+indexID+索引值),Value为行标识,例如为上例的表创建一个唯一索引,索引名为1,索引值为abc,那么将保存这样的一条索引数据 t49_i01_abc-->t49_r00000001。
对于非唯一索引,由于一个索引值可以对应多条数据,所以不能将行标识保存在键值对的Value中,Key的规则为表标识加上索引名加上索引值再加上行标识(tableID+indexID+非唯一索引值+行标识),例如在创建一个非唯一索引,索引号为2,索引值为111,则保存的索引数据为t49_i02_111_00000001 -->null,由于采用的Key-Value数据库是依据字典序排序的,因而可通过遍历前缀将非唯一索引为111的行标识都遍历出来,以此来查找到对应的数据。
在查询条件为主键时,通过关系型数据表对应的sql语句,对主键进行查询处理,得到主键对应的行标识,进而读取行标识对应的数据,作为查询结果。
在查询条件为唯一索引时,通过关系型数据表对应的sql语句,对唯一索引进行查询处理,得到唯一索引的Value,也即,唯一索引键值对中保存的行标识,进而读取该行标识对应的数据,作为查询结果。
在查询条件为非唯一索引时,通过关系型数据表对应的sql语句,对非唯一索引进行查询处理,得到非唯一索引键值对中的Key,进而根据该Key确定行标识,并读取行标识对应的数据,作为查询结果。
应理解,数据删除和数据修改处理,都需要通过主键或者索引的方式来进行操作,删除一行数据时,通过主键或索引查找到行标识,随后删除该行数据和行对应的索引信息;修改一行数据时也是以同样的方式进行,将新的数据覆盖原先的数据,为避免重复,此处不再赘述。
本实施例中,根据待查询数据信息,确定查询条件,进而根据查询条件,采用sql语句进行查询处理,有利于提高数据查询效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图3示出与上述实施例区块链数据处理方法一一对应的区块链数据处理装置的原理框图。如图3所示,该区块链数据处理装置包括部署模块31、创建模块32、存储模块33和处理模块34。各功能模块详细说明如下:
部署模块31,用于部署智能合约到区块链平台,其中,智能合约包含接口封装类,接口封装类包含自定义数据表,自定义数据表包含Java对象转化的关系型数据;
创建模块32,用于基于自定义数据表中的关系型数据,创建关系型数据表和关系型数据表对应的sql语句;
存储模块33,用于对关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将关系型数据表的标识信息作为Key,将序列化信息作为Value,并将Key和Value存储至区块链中的Key-Value存储数据库;
处理模块34,用于在接收到数据处理指令时,基于Key-Value存储数据库中存储的Key和Value,对Key-Value存储数据库中的关系型数据表进行数据处理。
可选地,该区块链数据处理装置还包括:
转换模块,用于基于注解的方式,对默认智能合约中的Java对象进行数据转换,得到关系型数据;
写入模块,用于将关系型数据写入到接口封装类,得到智能合约。
可选地,该区块链数据处理装置还包括:
合约变更模块,用于向智能合约的自定义数据表中,写入待增加的Java 对象转化的关系型数据,得到变更合约;
合约升级模块,用于在合约升级时,通过部署变更合约的方式,对部署好的智能合约进行更新,得到更新后的智能合约;
数据表更新模块,用于基于更新后的智能合约,向关系型数据表中,添加待增加的Java对象转化的关系型数据对应的字段,得到更新后的关系型数据表。
可选地,处理模块34包括:
第一解析单元,用于获取待插入数据,并对待插入数据进行数据解析,得到解析结果;
判断单元,用于根据解析结果,判断待插入数据是否符合关系型数据表的表结构;
数据写入单元,用于若待插入数据符合关系型数据表的表结构,则采用序列化信息,将待插入数据写入到关系型数据表。
可选地,数据写入单元包括:
键值对确定子单元,用于在待插入数据符合关系型数据表的表结构时,将待插入数据的数据标识作为Key,将待插入数据的数据内容作为Value,得到Key-Value键值对;
数据写入子单元,用于通过关系型数据表对应的sql语句,将Key-Value 键值对写入到关系型数据表。
可选地,处理模块34还包括:
第二解析单元,用于获取待查询数据信息,并对待查询数据信息进行数据解析,得到查询条件,其中,查询条件为主键和索引中的至少一种;
位置查询单元,用于通过关系型数据表对应的sql语句对查询条件进行查询处理,得到待查询数据信息对应的行标识;
内容读取单元,用于读取行标识对应的数据内容,作为查询结果。
关于区块链数据处理装置的具体限定可以参见上文中对于区块链数据处理方法的限定,在此不再赘述。上述区块链数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件连接存储器41、处理器 42、网络接口43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或D界面显示存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如电子文件的控制的程序代码等。此外,所述存储器 41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42 通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行电子文件的控制的程序代码。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43 通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有界面显示程序,所述界面显示程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的区块链数据处理方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种区块链数据处理方法,其特征在于,所述区块链数据处理方法包括:
部署智能合约到区块链平台,其中,所述智能合约包含接口封装类,所述接口封装类包含自定义数据表,所述自定义数据表包含Java对象转化的关系型数据;
基于所述自定义数据表中的关系型数据,创建关系型数据表和所述关系型数据表对应的sql语句;
对所述关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将所述关系型数据表的标识信息作为Key,将所述序列化信息作为Value,并将所述Key和所述Value存储至区块链中的Key-Value存储数据库;
在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理。
2.如权利要求1所述的区块链数据处理方法,其特征在于,在所述部署智能合约到区块链平台之前,所述区块链数据处理方法还包括:
基于注解的方式,对默认智能合约中的Java对象进行数据转换,得到关系型数据;
将所述关系型数据写入到接口封装类,得到所述智能合约。
3.如权利要求1所述的区块链数据处理方法,其特征在于,所述数据处理指令为数据插入指令,所述在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待插入数据,并对所述待插入数据进行数据解析,得到解析结果;根据所述解析结果,判断所述待插入数据是否符合所述关系型数据表的表结构;
若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表。
4.如权利要求3所述的区块链数据处理方法,其特征在于,所述若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表包括:
在所述待插入数据符合所述关系型数据表的表结构时,将所述待插入数据的数据标识作为Key,将所述待插入数据的数据内容作为Value,得到Key-Value键值对;
通过所述关系型数据表对应的sql语句,将所述Key-Value键值对写入到所述关系型数据表。
5.如权利要求1至4任意一项所述的区块链数据处理方法,其特征在于,所述区块链数据处理方法还包括:
向所述智能合约的自定义数据表中,写入待增加的Java对象转化的关系型数据,得到变更合约;
在合约升级时,通过部署所述变更合约的方式,对所述部署好的智能合约进行更新,得到更新后的智能合约;
基于所述更新后的智能合约,向所述关系型数据表中,添加所述待增加的Java对象转化的关系型数据对应的字段,得到更新后的关系型数据表。
6.如权利要求1-4任意一项所述的区块链数据处理方法,其特征在于,所述数据处理指令为数据查询指令,所述在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理包括:
获取待查询数据信息,并对所述待查询数据信息进行数据解析,得到查询条件,其中,所述查询条件为主键和索引中的至少一种;
通过所述关系型数据表对应的sql语句对所述查询条件进行查询处理,得到所述待查询数据信息对应的行标识;
读取所述行标识对应的数据内容,作为查询结果。
7.一种区块链数据处理装置,其特征在于,所述区块链数据处理装置包括:
部署模块,用于部署智能合约到区块链平台,其中,所述智能合约包含接口封装类,所述接口封装类包含自定义数据表,所述自定义数据表包含Java对象转化的关系型数据;
创建模块,用于基于所述自定义数据表中的关系型数据,创建关系型数据表和所述关系型数据表对应的sql语句;
存储模块,用于对所述关系型数据表对应的sql语句,通过sql执行引擎解析后的表信息序列化,得到序列化信息,将所述关系型数据表的标识信息作为Key,将所述序列化信息作为Value,并将所述Key和所述Value存储至区块链中的Key-Value存储数据库;
处理模块,用于在接收到数据处理指令时,基于所述Key-Value存储数据库中存储的所述Key和所述Value,对所述Key-Value存储数据库中的关系型数据表进行数据处理。
8.如权利要求7所述的区块链数据处理装置,其特征在于,所述数据处理指令为数据插入指令,所述处理模块包括:
第一解析单元,用于获取待插入数据,并对所述待插入数据进行数据解析,得到解析结果;
判断单元,用于根据所述解析结果,判断所述待插入数据是否符合所述关系型数据表的表结构;
数据写入单元,用于若所述待插入数据符合所述关系型数据表的表结构,则采用所述序列化信息,将所述待插入数据写入到所述关系型数据表。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的区块链数据处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的区块链数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640201.XA CN112765270B (zh) | 2020-12-31 | 2020-12-31 | 区块链数据处理方法、装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640201.XA CN112765270B (zh) | 2020-12-31 | 2020-12-31 | 区块链数据处理方法、装置、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765270A CN112765270A (zh) | 2021-05-07 |
CN112765270B true CN112765270B (zh) | 2022-06-17 |
Family
ID=75698396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011640201.XA Active CN112765270B (zh) | 2020-12-31 | 2020-12-31 | 区块链数据处理方法、装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765270B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312823B (zh) * | 2021-06-08 | 2023-12-19 | 广州颖力科技有限公司 | 一种有限元后处理数据处理方法、系统、设备及存储介质 |
CN114077609B (zh) * | 2022-01-19 | 2022-04-22 | 北京四维纵横数据技术有限公司 | 数据存储及检索方法,装置,计算机可读存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609839A (zh) * | 2019-09-17 | 2019-12-24 | 北京海益同展信息科技有限公司 | 区块链数据处理的方法、装置、设备及可读存储介质 |
US10657293B1 (en) * | 2019-03-26 | 2020-05-19 | Alibaba Group Holding Limited | Field-programmable gate array based trusted execution environment for use in a blockchain network |
CN111339189A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN111680067A (zh) * | 2020-05-28 | 2020-09-18 | 中国工商银行股份有限公司 | 基于区块链的数据处理方法、装置及系统 |
-
2020
- 2020-12-31 CN CN202011640201.XA patent/CN112765270B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657293B1 (en) * | 2019-03-26 | 2020-05-19 | Alibaba Group Holding Limited | Field-programmable gate array based trusted execution environment for use in a blockchain network |
CN110609839A (zh) * | 2019-09-17 | 2019-12-24 | 北京海益同展信息科技有限公司 | 区块链数据处理的方法、装置、设备及可读存储介质 |
CN111339189A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN111680067A (zh) * | 2020-05-28 | 2020-09-18 | 中国工商银行股份有限公司 | 基于区块链的数据处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112765270A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112765271B (zh) | 区块链交易索引的存储方法、装置、计算机设备及介质 | |
CN112765270B (zh) | 区块链数据处理方法、装置、计算机设备及介质 | |
CN110222067B (zh) | 区块链智能合约锚定可信任外部数据库的方法及系统 | |
CN112988770B (zh) | 序列号更新的方法、装置、电子设备和存储介质 | |
CN113626223A (zh) | 一种接口调用方法和装置 | |
CN112671734A (zh) | 面向多数据源的报文处理方法及其相关设备 | |
CN109088914B (zh) | 区块的生成方法、区块链生态系统及计算机可读存储介质 | |
CN111651296A (zh) | 数据删除操作的拦截备份方法、装置、设备及存储介质 | |
CN110020358A (zh) | 用于生成动态页面的方法和装置 | |
CN115098186A (zh) | 项目处理方法、装置、计算机设备及存储介质 | |
CN112784112A (zh) | 报文校验方法及装置 | |
CN113536185A (zh) | 应用页面的加载方法、存储介质、及其相关设备 | |
CN101739589A (zh) | 生成智能卡数据的方法及装置 | |
CN113282591B (zh) | 权限过滤方法、装置、计算机设备及存储介质 | |
CN108958871A (zh) | 开户页面配置方法、装置、系统及计算机可读存储介质 | |
CN111782649A (zh) | 数据采集格式更新方法、装置、计算机设备及存储介质 | |
CN111475468A (zh) | 新增系统的日志接入方法、装置、设备及存储介质 | |
CN115543428A (zh) | 一种基于策略模板的模拟数据生成方法和装置 | |
CN114625372A (zh) | 组件自动编译方法、装置、计算机设备及存储介质 | |
CN114637672A (zh) | 自动化数据测试方法、装置、计算机设备及存储介质 | |
CN113779132A (zh) | 一种数据导入的方法、装置、计算机设备和存储介质 | |
CN115114280A (zh) | 报表生成处理方法、装置及设备 | |
CN110413644B (zh) | 一种数据缓存方法、电子装置及计算机可读存储介质 | |
CN117033249B (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
CN112965721B (zh) | 基于Android的项目编译方法、装置、计算机设备及存储介质 |
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 |