CN112667489B - 区块链中数据查询工作量的计量方法、装置及终端 - Google Patents
区块链中数据查询工作量的计量方法、装置及终端 Download PDFInfo
- Publication number
- CN112667489B CN112667489B CN202011606797.1A CN202011606797A CN112667489B CN 112667489 B CN112667489 B CN 112667489B CN 202011606797 A CN202011606797 A CN 202011606797A CN 112667489 B CN112667489 B CN 112667489B
- Authority
- CN
- China
- Prior art keywords
- sql query
- workload
- execution
- data
- query statement
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于区块链技术领域,提供一种区块链中数据查询工作量的计量方法、装置及终端,其中方法包括:根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;将SQL查询语句输入至内置的SQL查询引擎,通过SQL查询引擎执行所述SQL查询语句;从所述SQL查询语句执行过程中,获取SQL查询引擎的执行操作;基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。该方案能够适应区块链的工作量计量机制,实现SQL查询与区块链平台之间的融合。
Description
技术领域
本申请属于区块链技术领域,尤其涉及一种区块链中数据查询工作量的计量方法、装置及终端。
背景技术
区块链网络采用了工作量证明机制(Proof-of-Work,PoW),它要求区块链网络中的所有节点按照预设的工作量证明方法进行计算,率先得出结果的节点则拥有了对区块链交易信息进行打包以及获得奖励的权利。
现有的区块链网络中,智能合约执行引擎需要执行智能合约从区块链账本上读取数据,在执行智能合约时需要根据智能合约的逻辑底层执行若干不同的指令,例如数据运算、数据读取。每执行一个指令,就产生了一定的工作量,该些工作量与指令相结合容易进行量化统计。
受限于工作量证明机制的应用,在现有的区块链网络中,基于智能合约从区块链账本中读取数据的方式相比于其他数据库应用来说,能够直接使用的数据结构相对有限,缺乏对关系型数据读取的支持,数据查询效率低下,因此提出将现有的SQL(StructuredQuery Language,结构化查询语言)查询引入至区块链平台中进行应用。
而现有的SQL查询的执行是一个复杂逻辑,无法从指令的维度度量工作量。智能合约的执行引擎在应用SQL查询时不能适应区块链的工作量计量机制,无法将SQL查询与区块链平台进行融合。
发明内容
本申请实施例提供了一种区块链中数据查询工作量的计量方法、装置及终端,以解决现有技术中智能合约的执行引擎在应用SQL查询时不能适应区块链的工作量计量机制,无法将SQL查询与区块链平台进行融合的问题。
本申请实施例的第一方面提供了一种区块链中数据查询工作量的计量方法,包括:
根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;
将所述SQL查询语句输入至内置的SQL查询引擎,通过所述SQL查询引擎执行所述SQL查询语句;
从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作;
基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;
基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。
本申请实施例的第二方面提供了一种区块链中数据查询工作量的计量装置,包括:
生成模块,用于根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;
查询模块,用于将所述SQL查询语句输入至内置的SQL查询引擎,通过所述SQL查询引擎执行所述SQL查询语句;
获取模块,用于从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作;
匹配模块,用于基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;
工作量计算模块,用于基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。
本申请实施例的第三方面提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
本申请的第五方面提供了一种计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述终端执行上述第一方面所述方法的步骤。
由上可见,本申请实施例中,通过根据用户产生的区块链交易,执行智能合约,生成与该智能合约对应的SQL查询语句,将SQL查询语句输入至内置的SQL查询引擎,通过SQL查询引擎执行该SQL查询语句,从SQL查询语句执行过程中,获取SQL查询引擎的执行操作,基于该执行操作,从预设的工作量表中匹配与执行操作对应的工作量,基于该工作量,对SQL查询引擎执行SQL查询语句过程中的工作量进行累计。该过程通过在执行智能合约时生成与智能合约对应的SQL查询语句,通过内置的SQL查询引擎对该SQL查询语句进行执行,并对该执行过程进行监控,获取SQL查询引擎在执行SQL查询语句时对应的执行操作,并将该些执行操作在预设置的工作量表中进行匹配,以基于工作量表中的记录内容得到与该些执行操作对应的工作量,并进行累计,从查询过程中涉及的执行操作本身这一维度去度量工作量,适应区块链的工作量计量机制,实现SQL查询与区块链平台之间的融合。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链中数据查询工作量的计量方法的流程图一;
图2是本申请实施例提供的一种区块链中数据查询工作量的计量方法的流程图二;
图3是本申请实施例提供的一种分层执行器的结构实例图;
图4是本申请实施例提供的一种区块链中数据查询工作量的计量装置的结构图;
图5是本申请实施例提供的一种终端的结构图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
具体实现中,本申请实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。
终端支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、网站创建应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件应用程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数码相机应用程序、数字摄影机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放器应用程序。
可以在终端上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及终端上显示的相应信息。这样,终端的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。
应理解,本实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图1,图1是本申请实施例提供的一种区块链中数据查询工作量的计量方法的流程图一。如图1所示,一种区块链中数据查询工作量的计量方法,该方法包括以下步骤:
步骤101,根据用户产生的区块链交易,执行智能合约,生成与该智能合约对应的SQL查询语句。
其中,在获取到用户产生的区块链交易后,需要对其对应的智能合约的代码进行获取并执行,在执行过程中基于合约逻辑生成对应的SQL查询语句。该SQL查询语句用于从区块链账本中读取目标数据,该目标数据用于实现智能合约的执行。
在具体实现时,该步骤101的实现过程具体是:
对用户产生的区块链交易进行解析,得到输入参数;根据该输入参数,从区块链账本中读取待执行的智能合约代码;基于该输入参数及智能合约代码,初始化智能合约虚拟机;控制智能合约虚拟机根据智能合约代码中智能合约的合约逻辑生成SQL查询语句。
输入参数例如是待修改的数据内容、待增加的交易信息等等。
该待执行的智能合约代码为与区块链交易中解析出的输入参数相对应的智能合约代码。
在生成SQL查询语句时,可以是将输入参数带入至查询语句框架中,得到查询语句。例如为:select*from T where B=”aa”and C>100。
具体地,对用户产生的区块链交易进行解析,得到输入参数过程中,需要对区块链交易的合法性进行判断,在判断其具备合法性时,获取其中的输入参数执行后续操作。
在具体实施过程中,区块链系统接收到用户产生的区块链交易,解析区块链交易,验证格式合法后,经过若干预处理之后,得到输入参数。预处理包括但不限于参数解析、共识打包。
智能合约执行引擎根据输入参数,从区块链账本中读取需要执行的智能合约代码,使用上述代码和参数,初始化智能合约虚拟机。通过智能合约虚拟机开始执行智能合约,首先运行若干合约逻辑,累计若干工作量,根据合约逻辑生成SQL查询语句,并输入到了内置在智能合约执行引擎中的SQL查询引擎中。
步骤102,将SQL查询语句输入至内置的SQL查询引擎,通过SQL查询引擎执行该SQL查询语句。
SQL查询引擎执行SQL查询语句时,可以是将SQL查询语句进行预处理例如将其进行拆解得出查询条件,随后基于拆解出的查询条件生成对应的执行器,通过执行器执行对区块链账本中的数据查询动作。
具体地,从区块链账本上匹配数据的方式可以是根据智能合约中合约逻辑和数据结构,构造特定的主键,从区块链账本中匹配具有目标主键且符合设定匹配条件的目标数据。
步骤103,从SQL查询语句执行过程中,获取SQL查询引擎的执行操作。
该执行操作为多个。
其中,SQL查询引擎的执行操作例如为:前述的将SQL查询语句进行预处理的操作,及通过匹配执行器执行的数据执行操作,该数据执行操作可以是字符串比较操作、整数比较操作、数据读取操作等等。
步骤104,基于该执行操作,从预设的工作量表中匹配与该执行操作对应的工作量。
该工作量表是用来度量SQL查询引擎在执行SQL查询语句过程中所消耗工作量的表结构数据。具体为用来度量SQL查询引擎在执行SQL查询语句过程中预处理和执行器的所消耗工作量的表结构数据。在该工作量表中,对每一种预处理器都会记录其处理一定大小的输入数据所消耗的工作量,对每一种执行器都会记录其处理一定大小的输入数据所消耗的工作量。
在SQL查询引擎工作每执行一次SQL查询语句时,则根据此次处理当前SQL查询语句的实际处理过程,通过查表累计总的工作量。
为了保证区块链各个节点的一致性,该工作量表需要存储在区块链账本上,在SQL查询引擎初始化时加载出来。在需要对工作量表中设定的某些工作量变更时,需要通过区块链交易的形式进行统一的变更。如果工作量表不记录在区块链账本上,则需要区块链节点之间使用相同的缺省配置。
步骤105,基于该工作量,对SQL查询引擎执行SQL查询语句过程中的工作量进行累计。
上述过程中,在SQL查询引擎中构造基于处理过程的工作量度量机制,使得具备工作量机制的智能合约虚拟机可以内置这种SQL查询引擎,进而为智能合约提供SQL查询功能。
具体地,通过对SQL查询语句执行过程中的所涉及到的扫描、条件过滤、连接等处理过程设定工作量,并预先记载于工作量表中,在执行智能合约过程中执行SQL查询语句时,根据具体调用到的执行操作以及调用次数,累计计算总工作量,从而能够允许智能合约的执行引擎在保持原有工作量机制的同时嵌入高效的原生SQL查询引擎,进而提高智能合约数据读取接口的友好度,提高区块链合约开发效率。
进一步地,在基于该工作量,对SQL查询引擎执行SQL查询语句过程中的工作量进行累计之后,还包括:
在SQL查询引擎执行SQL查询语句过程中,若执行操作对应的工作总量超出阈值,则控制SQL查询引擎输出数据查询结果。
工作量机制的设置主要是解决停机问题,避免合约调用无法终止的情况,另外还避免单次执行消耗的系统资源过大。
需要对SQL查询引擎的工作量上限进行设定,每次使用内置SQL查询引擎查询数据能够使用的工作量上限由参数指定。工作量上限可以是用户区块链交易中进行的输入或统一配置。
当SQL查询任务处理完成,或者SQL查询引擎累计的工作量达到上限,以智能合约中可读取的数据结构返回数据供合约逻辑使用。
本申请实施例中,通过根据用户产生的区块链交易,执行智能合约,生成与该智能合约对应的SQL查询语句,将SQL查询语句输入至内置的SQL查询引擎,通过SQL查询引擎执行该SQL查询语句,从SQL查询语句执行过程中,获取SQL查询引擎的执行操作,基于该执行操作,从预设的工作量表中匹配与执行操作对应的工作量,基于该工作量,对SQL查询引擎执行SQL查询语句过程中的工作量进行累计。该过程通过在执行智能合约时生成与智能合约对应的SQL查询语句,通过内置的SQL查询引擎对该SQL查询语句进行执行,并对该执行过程进行监控,获取SQL查询引擎在执行SQL查询语句时对应的执行操作,并将该些执行操作在预设置的工作量表中进行匹配,以基于工作量表中的记录内容得到与该些执行操作对应的工作量,并进行累计,从查询过程中涉及的执行操作本身这一维度去度量工作量,适应区块链的工作量计量机制,实现SQL查询与区块链平台之间的融合。
本申请实施例中还提供了区块链中数据查询工作量的计量方法的不同实施方式。
参见图2,图2是本申请实施例提供的一种区块链中数据查询工作量的计量方法的流程图二。如图2所示,一种区块链中数据查询工作量的计量方法,该方法包括以下步骤:
步骤201,根据用户产生的区块链交易,执行智能合约,生成与该智能合约对应的SQL查询语句。
该步骤的实现过程与前述实施方式中的步骤101的实现过程相同,此处不再赘述。
步骤202,将SQL查询语句输入至内置的SQL查询引擎,通过该SQL查询引擎执行SQL查询语句。
该步骤的实现过程与前述实施方式中的步骤102的实现过程相同,此处不再赘述。
步骤203,从SQL查询语句执行过程中,获取SQL查询引擎对SQL查询语句的预处理操作,及,获取SQL查询引擎对SQL查询语句进行预处理后生成分层执行器,并通过分层执行器对预处理后的SQL查询语句进行分层执行过程中,每一执行器的数据执行操作。
即在SQL查询语句执行过程中,获取的SQL查询引擎的执行操作具体包括:对SQL查询语句的预处理操作及分层执行器中每一执行器的数据执行操作。
在具体应用过程中,SQL查询引擎先对SQL查询语句使用预处理器进行预处理,再基于预处理结果生成分层执行器。预处理包括但不限于SQL查询语句的解析、索引选择、执行优化。执行器是SQL查询执行过程中子过程的逻辑单元总称,包括但不限于数据运算、比较、连接。分层指的是执行器与执行器之间存在上下层级关系,下层执行器的输出作为上层执行器的输入,最下层的执行器是对区块链账本的读取执行器,最上层的执行器连接的是SQL查询引擎对智能合约提供的SQL查询接口,并通过该接口返回数据查询结果。智能合约中的数据获取可以看作是最上层执行器到最下层执行器的递归调用,下层执行器的执行结果中的数据返回给上层执行器进一步匹配处理,每个执行器根据各自配置每次调用并返回一定数量的数据。
该SQL查询引擎由SQL查询接口接收到SQL查询语句后,开始向下调用获取和处理数据。
通过上层执行器向下进行调用,由最下层执行器从区块链账本中读取设定行数的数据,最下层执行器将该数据作为相邻的上层执行器的输入,由该相邻的上层执行器对该数据执行已经赋予给该层执行器的数据比对操作,基于比对结果得出符合对应查询条件的数据,并将该数据继续输入至相邻的上层执行器以对该数据进行又一次的数据比对判断,直至最上一层执行器执行完毕,将最终符合条件的数据作为SQL查询的结果进行输出。
步骤204,基于该执行操作,从预设的工作量表中匹配与该执行操作对应的工作量。
具体地,该预设的工作量表中,记录的内容包括:每一种预处理器处理单位量的输入数据所消耗的工作量,每一种预处理器处理单位量的输入数据所消耗的工作量。该单位量例如为一字节。
其中,不同的预处理器对应于不同的预处理方式,不同的执行器执行不同的数据处理操作。
该执行操作包括:对SQL查询语句的预处理操作及分层执行器中每一执行器的数据执行操作。
本步骤204在实施过程中,包括:获取预处理操作在执行时的第一操作数据量;从与预设的工作量表中,获取与预处理操作对应的单位操作数据量的第一处理工作量;根据该第一操作数据量及第一处理工作量,得到预处理操作的第一工作量。
进一步地,本步骤204在实施过程中,还包括:按照执行器的数据执行操作的执行顺序,每检测到一个执行器执行数据执行操作,则获取当前执行器在执行数据执行操作时的第二操作数据量;从与预设的工作量表中,获取与当前执行器的数据执行操作所对应的单位操作数据量的第二处理工作量;根据第二操作数据量及第二处理工作量,得到当前执行器的第二工作量。
实现对SQL查询引擎执行SQL查询语句过程中不同执行操作的工作量的获取。
步骤205,基于该工作量,对SQL查询引擎执行SQL查询语句过程中的工作量进行累计。
对应地,该步骤的实现具体是:将前述步骤中的第一工作量及依次获取到的第二工作量进行累计。
其中,每对一个执行器的工作量按照前述步骤中的方式获取一次则会得到对应的一个第二工作量,依照多层执行器中各执行器对数据执行操作的执行顺序,依次获取不同的执行器对应的第二工作量,并实现与第一工作量的累计,实现对SQL查询引擎执行SQL查询语句过程中的总工作量的获取。
这里,对上述实施过程进行实例说明:
1)通过区块链交易在工作量表中设置不同的执行操作所对应的单位操作数据量的处理工作量。具体内容如下表1:
预处理器/执行器名称 | 处理输入数据所消耗的单位工作量/字节 |
SQL解析预处理器 | 10 |
... | ... |
字符串比较执行器 | 1 |
整数比较执行器 | 1 |
区块链账本读取执行器 | 2 |
... | ... |
2)通过区块链交易在区块链账本上预先存储了如下表2的关系型数据,称为表T,其中A是主键,A列和C列是8字节整数,B列是每个字符1字节的字符串。仅有主键索引。
A | B | C |
1 | “aa” | 100 |
2 | “aa” | 100 |
3 | “aa” | 200 |
4 | “ba” | 200 |
5 | “ba” | 300 |
在区块链账本中以键值对的形式存储上述表的编码结果,上表中的数据在区块链账本上存储的值长度均为14字节。
3)通过区块链交易调用智能合约。
4)智能合约执行时生成了SQL查询语句select*from T where B=”aa”and C>100,将该SQL查询语句输入到SQL查询引擎,并且限定工作量上限为1000。
SQL查询引擎使用SQL解析预处理器解析SQL查询语句,该查询语句的输入为38字节,根据预设的工作量表(表1)累计产生380单位工作量,并且生成执行查询语句所需的分层执行器,每个执行器一次返回5条数据,进行递归调用,一种分层结构如图3所示。
该分层执行器的结构包括:最上层的字符串比较执行器,与SQL引擎接口连接,实现对SQL查询语句的获取;最下层的区块链账本读取执行器,与区块链账本连接,实现从区块链中进行数据读取;位于中间层的整数比较执行器。
5)最底层的区块链账本读取执行器根据主键范围逐行构造主键,对表2中的数据进行读取,总计5行数据90个字节,并解析成对应格式返回给上层的整数比较执行器,结合表1中的数据得出会消耗180单位工作量,此时累计消耗560单位工作量。
6)整数比较执行器比较表2中的C列执行处理数据,需要处理区块链账本读取执行器返回的5行数据,进行5次8字节整数的比较,结合表1中的数据得出会消耗40单位工作量,此时累计消耗600单位工作量。过滤出满足C>100条件的行,得到主键为3、4、5的3行数据。此时需要返回的数据不足5条,继续调用下层执行器(即区块链账本读取执行器),若没有收到下层提供的数据,则直接将该3条数据返回给上层的字符串比较执行器。
7)字符串比较执行器比较表2中的B列执行处理数据,需要处理整数比较器返回的3行数据,进行3次2字节字符串的比较,结合表1中的数据得出会消耗6单位工作量,此时累计消耗606单位工作量。过滤出满足条件B=”aa”的行,得到主键为3、4的2行数据。需要返回数据不足5条,继续调用下层执行器(即整数比较执行器),若没有收到下层提供的数据,则将已处理好的2行数据返回给上层,即从SQL引擎接口返回给智能合约逻辑。智能合约中按行读取数据,执行后续逻辑,并生成智能合约的执行结果。
本实施例中的该过程,允许区块链智能合约执行引擎内嵌兼容工作量机制的SQL查询引擎,可以允许区块链合约以更加灵活、高效、标准的方式进行关系型数据读取。
参见图4,图4是本申请实施例提供的一种区块链中数据查询工作量的计量装置的结构图,为了便于说明,仅示出了与本申请实施例相关的部分。
该区块链中数据查询工作量的计量装置400包括:
生成模块401,用于根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;
查询模块402,用于将所述SQL查询语句输入至内置的SQL查询引擎,通过所述SQL查询引擎执行所述SQL查询语句;
获取模块403,用于从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作;
匹配模块404,用于基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;
工作量计算模块405,用于基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。
其中,获取模块403,具体用于:
从所述SQL查询语句执行过程中,获取所述SQL查询引擎对所述SQL查询语句的预处理操作,及,获取所述SQL查询引擎对所述SQL查询语句进行预处理后生成分层执行器,并通过所述分层执行器对预处理后的所述SQL查询语句进行分层执行过程中,每一执行器的数据执行操作。
其中,匹配模块404,具体用于:
获取所述预处理操作在执行时的第一操作数据量;
从与所述预设的工作量表中,获取与所述预处理操作对应的单位操作数据量的第一处理工作量;
根据所述第一操作数据量及所述第一处理工作量,得到所述预处理操作的第一工作量。
其中,匹配模块404,还具体用于:
按照所述执行器的数据执行操作的执行顺序,每检测到一个执行器执行所述数据执行操作,则获取当前执行器在执行数据执行操作时的第二操作数据量;
从与所述预设的工作量表中,获取与当前执行器的数据执行操作所对应的单位操作数据量的第二处理工作量;
根据所述第二操作数据量及所述第二处理工作量,得到所述当前执行器的第二工作量。
其中,工作量计算模块405,具体用于:
将所述第一工作量及依次获取到的所述第二工作量进行累计。
其中,生成模块401,具体用于:
对用户产生的区块链交易进行解析,得到输入参数;
根据所述输入参数,从区块链账本中读取待执行的智能合约代码;
基于所述输入参数及所述智能合约代码,初始化智能合约虚拟机;
控制所述智能合约虚拟机根据所述智能合约代码中智能合约的合约逻辑生成SQL查询语句。
该装置还包括:输出模块,用于:
在所述SQL查询引擎执行所述SQL查询语句过程中,若所述执行操作对应的工作总量超出阈值,则控制所述SQL查询引擎输出数据查询结果。
本申请实施例提供的区块链中数据查询工作量的计量装置能够实现上述区块链中数据查询工作量的计量方法的实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图5是本申请实施例提供的一种终端的结构图。如该图所示,该实施例的终端5包括:至少一个处理器50(图5中仅示出一个)、存储器51以及存储在所述存储器51中并可在所述至少一个处理器50上运行的计算机程序52,所述处理器50执行所述计算机程序52时实现上述任意各个方法实施例中的步骤。
所述终端5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端5可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端5的示例,并不构成对终端5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所述处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端5的内部存储单元,例如终端5的硬盘或内存。所述存储器51也可以是所述终端5的外部存储设备,例如所述终端5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述终端5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序产品来实现,当计算机程序产品在终端上运行时,使得所述终端执行时实现可实现上述各个方法实施例中的步骤。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种区块链中数据查询工作量的计量方法,其特征在于,包括:
根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;
将所述SQL查询语句输入至内置的SQL查询引擎,通过所述SQL查询引擎执行所述SQL查询语句;
从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作;
基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;其中,所述预设的工作量表中包括:每一种预处理器处理一定大小的输入数据所消耗的工作量,和/或,每一种执行器处理一定大小的输入数据所消耗的工作量;
基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。
2.根据权利要求1所述的计量方法,其特征在于,所述从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作,包括:
从所述SQL查询语句执行过程中,获取所述SQL查询引擎对所述SQL查询语句的预处理操作,及,获取所述SQL查询引擎对所述SQL查询语句进行预处理后生成分层执行器,并通过所述分层执行器对预处理后的所述SQL查询语句进行分层执行过程中每一执行器的数据执行操作。
3.根据权利要求2所述的计量方法,其特征在于,所述基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量,包括:
获取所述预处理操作在执行时的第一操作数据量;
从所述预设的工作量表中,获取与所述预处理操作对应的单位操作数据量的第一处理工作量;
根据所述第一操作数据量及所述第一处理工作量,得到所述预处理操作的第一工作量。
4.根据权利要求3所述的计量方法,其特征在于,所述根据所述第一操作数据量及所述第一处理工作量,得到所述预处理操作的第一工作量之后,还包括:
按照所述执行器的数据执行操作的执行顺序,每检测到一个执行器执行所述数据执行操作,则获取当前执行器在执行数据执行操作时的第二操作数据量;
从所述预设的工作量表中,获取与当前执行器的数据执行操作所对应的单位操作数据量的第二处理工作量;
根据所述第二操作数据量及所述第二处理工作量,得到所述当前执行器的第二工作量。
5.根据权利要求4所述的计量方法,其特征在于,所述基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计,包括:
将所述第一工作量及依次获取到的所述第二工作量进行累计。
6.根据权利要求1所述的计量方法,其特征在于,所述根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句,包括:
对用户产生的区块链交易进行解析,得到输入参数;
根据所述输入参数,从区块链账本中读取待执行的智能合约代码;
基于所述输入参数及所述智能合约代码,初始化智能合约虚拟机;
控制所述智能合约虚拟机根据所述智能合约代码中智能合约的合约逻辑生成SQL查询语句。
7.根据权利要求1所述的计量方法,其特征在于,所述基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计之后,还包括:
在所述SQL查询引擎执行所述SQL查询语句过程中,若所述执行操作对应的工作总量超出阈值,则控制所述SQL查询引擎输出数据查询结果。
8.一种区块链中数据查询工作量的计量装置,其特征在于,包括:
生成模块,用于根据用户产生的区块链交易,执行智能合约,生成与所述智能合约对应的SQL查询语句;
查询模块,用于将所述SQL查询语句输入至内置的SQL查询引擎,通过所述SQL查询引擎执行所述SQL查询语句;
获取模块,用于从所述SQL查询语句执行过程中,获取所述SQL查询引擎的执行操作;
匹配模块,用于基于所述执行操作,从预设的工作量表中匹配与所述执行操作对应的工作量;其中,所述预设的工作量表中包括:每一种预处理器处理一定大小的输入数据所消耗的工作量,和/或,每一种执行器处理一定大小的输入数据所消耗的工作量;
工作量计算模块,用于基于所述工作量,对所述SQL查询引擎执行所述SQL查询语句过程中的工作量进行累计。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606797.1A CN112667489B (zh) | 2020-12-28 | 2020-12-28 | 区块链中数据查询工作量的计量方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011606797.1A CN112667489B (zh) | 2020-12-28 | 2020-12-28 | 区块链中数据查询工作量的计量方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667489A CN112667489A (zh) | 2021-04-16 |
CN112667489B true CN112667489B (zh) | 2022-09-16 |
Family
ID=75410864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011606797.1A Active CN112667489B (zh) | 2020-12-28 | 2020-12-28 | 区块链中数据查询工作量的计量方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667489B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11803537B2 (en) * | 2019-01-31 | 2023-10-31 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT) |
KR102208704B1 (ko) * | 2019-02-21 | 2021-01-28 | 주식회사 시그마체인 | Sql 쿼리에 해당하는 동작을 수행할 수 있는 블록체인 소프트웨어, 블록체인 시스템, 및 이의 동작 방법 |
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN111680105B (zh) * | 2020-06-15 | 2023-09-22 | 浙江创邻科技有限公司 | 基于区块链的分布式关系型数据库的管理方法及系统 |
-
2020
- 2020-12-28 CN CN202011606797.1A patent/CN112667489B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112667489A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020522790A (ja) | 異種にプログラムされたデータ処理システムの自動依存性アナライザ | |
CN110225104B (zh) | 数据获取方法、装置及终端设备 | |
CN112597182B (zh) | 数据查询语句的优化方法、装置、终端及存储介质 | |
CN112016312A (zh) | 数据关系抽取方法、装置、电子设备及存储介质 | |
CN112181386B (zh) | 一种基于软件持续集成的代码构建方法、装置及终端 | |
US10366081B2 (en) | Declarative partitioning for data collection queries | |
CN112668320A (zh) | 基于词嵌入的模型训练方法、装置、电子设备及存储介质 | |
CN111352986A (zh) | 一种数据库表结构导出的方法、装置及终端设备 | |
CN108197002A (zh) | 移动设备无埋点数据统计方法、系统、终端及介质 | |
CN111104426A (zh) | 一种数据查询方法及系统 | |
CN111142863A (zh) | 一种页面生成的方法及装置 | |
CN109783321B (zh) | 监控数据管理方法、装置、终端设备 | |
CN107679222B (zh) | 图片处理方法、移动终端及计算机可读存储介质 | |
CN107783932B (zh) | 计算器的信息处理方法、移动终端及计算机可读存储介质 | |
CN112667489B (zh) | 区块链中数据查询工作量的计量方法、装置及终端 | |
Byun | Enabling time-centric computation for efficient temporal graph traversals from multiple sources | |
CN112015459A (zh) | 一种镜像文件的升级方法、装置、终端及可读存储介质 | |
CN113312410B (zh) | 数据图谱的构建方法、数据查询方法及终端设备 | |
CN110018828B (zh) | 源代码检查方法、装置及终端设备 | |
CN114942927A (zh) | 一种数据库数据对比方法及装置 | |
CN114995728A (zh) | 规则配置方法、装置、电子设备及存储介质 | |
WO2022140936A1 (zh) | 区块链中数据查询工作量的计量方法、装置及终端 | |
CN113344674A (zh) | 基于用户购买力的产品推荐方法、装置、设备及存储介质 | |
CN111258628A (zh) | 一种规则文件比对方法、装置、可读存储介质及终端设备 | |
CN111158994A (zh) | 一种压测性能测试方法及装置 |
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 |