CN112506987A - 基于区块链的查询方法、装置、设备及存储介质 - Google Patents
基于区块链的查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112506987A CN112506987A CN202011307997.7A CN202011307997A CN112506987A CN 112506987 A CN112506987 A CN 112506987A CN 202011307997 A CN202011307997 A CN 202011307997A CN 112506987 A CN112506987 A CN 112506987A
- Authority
- CN
- China
- Prior art keywords
- query
- request
- block chain
- sub
- 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.)
- Granted
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/248—Presentation of query results
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于区块链的查询方法、装置、设备及存储介质,方法包括:接收智能合约执行时任意合约步骤对应的查询请求,获取与查询请求对应的待查询数据的数据量;获取合约步骤的查询阈值;检测是否获取到与数据量、查询阈值对应的目标分片策略;当获取到目标分片策略时,根据目标分片策略,生成与查询请求对应的多个查询子请求;分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;整合所有查询子结果,得到与查询请求相对应的查询结果。本申请用以提高数据查询效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链的查询方法、装置、设备及存储介质。
背景技术
当前区块链技术逐渐被大家所认知,并应用于社会生产的各个领域与环节,智能合约作为区块链技术领域的关键技术,在整个区块链技术与范畴中占有相当大的比重。
但是,智能合约在执行时有限制,即,智能合约执行时存在查询阈值(gas limit),智能合约执行一个步骤需要消耗对应大小的燃料(gas)。因此,只能执行一定量的逻辑、步骤,不能无限执行。
当智能合约需要执行较大数据量时,或者处理逻辑较为复杂的查询请求时,由于gas limit,使得智能合约在执行时容易出现超过gas limit而导致执行异常的情况。
发明内容
本申请提供了一种基于区块链的查询方法、装置、设备及存储介质,用以提高数据查询效率。
第一方面,本申请提供了一种基于区块链的查询方法,包括:
接收智能合约执行时任意合约步骤对应的查询请求,获取与所述查询请求对应的待查询数据的数据量;
获取所述合约步骤的查询阈值;
检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略;
当获取到所述目标分片策略时,根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求;
分别发送多个所述查询子请求至不同的第一区块链节点,并获取由每个所述第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;
整合所有所述查询子结果,得到与所述查询请求相对应的查询结果。
可选地,所述目标分片策略包括:分片数量以及与每个分片对应的片内数据量;
根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求,包括:
将所述数据量划分成与所述分片数量对应的多个数据区间,每个所述数据区间的数据量与对应的分片的所述片内数据量相一致;
生成每个所述数据区间对应的所述查询子请求。
可选地,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之前,还包括:
获取每个所述第一区块链节点根据所述查询子请求进行查询时消耗的查询资源;
判断任意一个所述查询子请求对应的查询资源是否超过对应所述合约步骤的查询阈值;
若是,对于超过所述查询阈值的所述查询子请求对应的数据区间进行分片,得到至少两个数据子区间;
生成与每个所述数据子区间对应的查询子请求;
分别发送所述数据子区间对应的查询子请求至不同的第二区块链节点,并获取由每个所述第二区块链节点返回的查询子结果;
执行所述整合所有所述查询子结果,得到与所述查询请求相对应的查询结果的步骤。
可选地,检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略,包括:
获取历史区块链节点、历史查询请求对应的数据量与所述合约步骤的查询阈值之间的对应关系;
从所述对应关系中,检测是否能够获取到与所述查询请求对应的数据量、所述合约步骤的查询阈值相匹配的所述目标分片策略。
可选地,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之后,还包括:
分别获取第一区块链第一节点处理完成所述查询子请求的第一请求的第一执行耗时,和获取第一区块链第二节点处理完成所述查询子请求的第二请求的第二执行耗时;
其中,所述第一请求所对应的第一请求数据量,和所述第二请求所对应的第二请求数据量一致;
当所述查询子请求对应的查询资源未超过对应的所述合约步骤的查询阈值时,若所述第一执行耗时大于所述第二执行耗时时,减少所述第一区块链第一节点所对应的数据区间的数据量,和/或增加所述第一区块链第二节点所对应的数据区间的数据量;
建立所述第一区块链节点、所述合约步骤的查询阈值、和调整后的每个所述数据区间对应的数据量之间的关系,将新建立的关系更新至所述对应关系。
可选地,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之后,还包括:
根据每个所述第一区块链节点的执行耗时,计算获得所有所述第一区块链节点处理完成所述查询子请求的平均耗时;
分别比较每个所述第一区块链节点的执行耗时与所述平均耗时,根据比较结果,以及每个所述查询子请求进行查询时消耗的查询资源,与所述第一区块链节点,调整所述对应关系。
可选地,根据比较结果,以及每个所述查询子请求进行查询时消耗的查询资源,与所述第一区块链节点,调整所述对应关系,包括:
当所述查询子请求对应的查询资源未超过对应的所述合约步骤的查询阈值时,若任一所述第一区块链节点的执行耗时大于所述平均耗时,减少所述第一区块链节点所对应的数据区间的数据量;若任一所述第一区块链节点的请求耗时小于或等于所述平均耗时,增加所述第一区块链节点所对应的数据区间的数据量;
建立所述第一区块链节点、所述合约步骤的查询阈值、和调整后的每个所述数据区间对应的数据量之间的关系,将新建立的关系更新至所述对应关系。
第二方面,本申请提供了一种基于区块链的查询装置,包括:
第一获取模块,用于接收智能合约执行时任意合约步骤对应的查询请求,获取与所述查询请求对应的待查询数据的数据量;
第二获取模块,用于获取所述合约步骤的查询阈值;
检测模块,用于检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略;
生成模块,用于当获取到所述目标分片策略时,根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求;
第三获取模块,用于分别发送多个所述查询子请求至不同的第一区块链节点,并获取由每个所述第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;
整合模块,用于整合所有所述查询子结果,得到与所述查询请求相对应的查询结果。
第三方面,本申请提供了一种电子设备,包括:处理器、通信组件、存储器和通信总线,其中,处理器、通信组件和存储器通过通信总线完成相互间的通信;所述存储器,用于存储计算机程序;所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的基于区块链的查询方法。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,实现第一方面所述的基于区块链的查询方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,接收智能合约执行时任意合约步骤对应的查询请求,获取与该查询请求对应的待查询数据的数据量;获取合约步骤的查询阈值;并检测是否能够获取到与数据量、查询阈值对应的目标分片策略;可见,本申请根据数据量以及合约步骤的查询阈值,获取针对该查询请求的目标分片策略,以实现查询请求应用策略的动态调整;进一步的,当获取到目标分片策略时,根据目标分片策略生成与查询请求对应的多个查询子请求;分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;整合所有的查询子结果,得到与该查询请求向对应的查询结果,有效的提高了数据查询的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中基于区块链的查询系统结构示意图;
图2为本申请实施例中区块链结构示意图;
图3为本申请实施例中区块链网络功能结构示意图;
图4为本申请实施例中基于区块链的查询方法流程示意图;
图5为本申请实施例中基于区块链的查询方法具体流程示意图;
图6为本申请实施例中基于区块链的查询装置结构示意图;
图7为本申请实施例中电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一个具体实施例”,其描述了所有可能实施例的子集,但是可以理解,“一个具体实施例”,其描述了所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术的科学技术与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
在对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
(1)交易(Transaction),等同于计算机术语“事务”,交易包括了需要提交到区块链网络执行的操作,并非单指商业语境中的交易,鉴于在区块链技术中约定俗称地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
例如,部署(Deploy)交易用于向区块链网络中的结点安装指定的智能合约并准备好被调用;调用(Invoke)交易用于通过调用智能合约在区块链中追加交易的记录,并对区块链的状态数据库进行操作,包括更新操作(包括增加、删除和修改状态数据库中的键值对)和查询操作(即查询状态数据库中的键值对)。
(2)区块链(Blockchain),是由区块(Block)形成的加密的、链式的交易的存储结构。
(3)区块链网络(Blockchain Network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
(4)账本(Ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持区块链中交易的快速查询。
(5)智能合约(Smart Contracts),也称为链码(Chaincode)或应用代码,部署在区块链网络的节点中的程序,节点执行接收的交易中所调用的智能合约,来对状态数据库的键值对数据进行更新或查询操作。
(6)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股权授权证明(DPoS,Delegatd Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
下面说明本发明实施例,提供的区块链网络的示例性应用,如图1所示,图1是本发明实施例提供的基于区块链的查询系统示意图,包括区块链网络101、共识节点102,认证中心103、业务主体104、客户端节点104-1,业务主体105和客户端节点105-1,下面分别进行说明:
区块链网络101的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备例如用户终端和服务器,都可以在不需要授权的情况下接入区块链网络101;以联盟链为例,业务主体在获得授权后其下辖的电子设备(例如终端/服务器)可以接入区块链网络101,此时,成为区块链网络101中的客户端节点。
在一些实施例中,客户端节点104可以只作为区块链网络101的观察者,即提供支持业务主体发起交易(例如,用于上链存储数据或查询链上数据)功能,对于区块链网络101的共识节点102的功能,例如排序功能、共识服务和账本功能等,客户端节点可以缺省或者有选择性(例如,取决于业务主体的具体业务需求)地实施。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块链网络101中,通过区块链网络101实现数据和业务处理过程的可信和可追溯。
区块链网络101中的共识节点接收来自不同业务主体,例如图1中示出的业务主体104的客户端节点104-1提交的交易,执行交易以更新账本或者查询账本,执行交易的各种中间结果或最终结果可以返回业务主体104的客户端节点104-1中显示。
例如,客户端节点104-1可以订阅区块链网络101中感兴趣的事件,例如区块链网络101中特定的组织/通道中发生的交易,由共识节点102推送相应的交易通知到客户端节点104-1,从而触发客户端节点104-1中相应的业务逻辑。
作为区块链的示例,如图2所示,图2是本发明实施例提供的区块链网络101中区块链的结构示意图,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,新产生的交易的记录被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长,区块之间基于哈希值的链式结构保证了区块中交易的防篡改和防伪造。
下面说明本发明实施例提供的区块链网络的示例性的功能架构,如图3所示,图3是本发明实施例提供的区块链网络101的功能架构示意图,包括应用层301、共识层302、网络层303、数据层304和资源层305,下面分别进行说明:
应用层301封装了区块链网络能够实现的各种业务,包括交易的溯源、存证和验证等。
共识层302封装了区块链网络101中的节点102对区块达成一致性的机制(即共识机制)、交易管理和账本管理的功能。共识机制包括POS、POW和DPOS等共识算法,支持共识算法的可插拔。交易管理用于验证节点101接收到的交易中携带的数字签名,验证业务主体104的身份信息,并根据身份信息判断确认其是否具有权限进行交易(从业务主体身份管理读取相关信息);对于获得接入区块链网络101的授权的业务主体而言,均拥有认证中心颁发的数字证书,业务主体利用自己的数字证书中的私钥对提交的交易进行签名,从而声明自己的合法身份。账本管理用于维护区块链和状态数据库。对于取得共识的区块,追加到区块链的尾部;执行取得共识的区块中的交易,当交易包括更新操作时更新状态数据库中的键值对,当交易包括查询操作时查询状态数据库中的键值对并向业务主体的客户端节点返回查询结果。支持对状态数据库的多种维度的查询操作,包括:根据区块序列号(例如交易的哈希值)查询区块;根据区块哈希值查询区块;根据交易序列号查询区块;根据交易序列号查询交易;根据业务主体的账号(序列号)查询业务主体的账号数据;根据通道名称查询通道中的区块链。
网络层303封装了点对点(P2P,PointtoPoint)网络协议、数据传播机制和数据验证机制、接入认证机制和业务主体身份管理的功能。
其中,P2P网络协议实现区块链网络101中节点102之间的通信,数据传播机制保证了交易在区块链网络101中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点102之间传输数据的可靠性;接入认证机制用于根据实际的业务场景对加入区块链网络101的业务主体的身份进行认证,并在认证通过时赋予业务主体接入区块链网络101的权限;业务主体104身份管理用于存储允许接入区块链网络101的业务主体104的身份、以及权限(例如能够发起的交易的类型)。
数据层304封装了实现账本的各种数据结构,包括以文件系统中的文件实现的区块链,键值型的状态数据库和存在性证明(例如区块中交易的哈希树)。
资源层305封装了实现区块链网路101中的各个节点102的计算资源、存储资源和通信资源。
基于上述架构,本发明实施例提出了以下的实现方式。
本申请实施例提供了一种基于区块链的查询方法,该方法应用在区块链节点中,该方法的具体实现如图4所示:
具体的,需要说明的是本申请实施例中的举例说明,仅限于举例,并不用于保护范围的限定,在实施例中不在一一说明。
步骤401,接收智能合约执行时任意合约步骤对应的查询请求,获取与查询请求对应的待查询数据的数据量。
下面,为了更清楚的说明本申请,首先将智能合约的工作原理进行简单介绍:
构建智能合约:智能合约由区块链内的多个用户共同参与制定,可用于任何用户之间的任何交易。协议当中明确规定了交易双方的权利和义务,开发人员将这些权利和义务以电子化的方式进行编程,代码中包含会触发合约自动执行的条件。
存储智能合约:一旦编码完成,这份智能合约上传至区块链网络上,即全网的每个节点都可以收到这份智能合约。
执行智能合约:智能合约会定期检查是否存在相关事件和触发条件,以满足条件的事件推送到待验证的队列中,区块链上的验证节点先对事件进行签名验证,以确保其有效性,等大多数验证节点对该事件达成共识,智能合约将成功执行,并通知给用户。
具体地,以查询请求为查询年龄大于或等于18周岁的用户的用户信息,假设年龄大于或等于18周岁的用户一共有10万个,则具有10万条用户信息,此时,查询请求对应的待查询数据的数据量则为10万。
步骤402,获取合约步骤的查询阈值。
具体地,在本申请中智能合约是指利用代码实现的智能合约在执行时存在查询阈值,智能合约每执行一个步骤需要消耗对应大小的燃料,该查询阈值为智能合约执行查询请求所消耗燃料的最大值。
步骤403,检测是否获取到与数据量、查询阈值对应的目标分片策略。
一个具体实施例中,获取历史区块链节点、历史查询请求对应的数据量与合约步骤的查询阈值之间的对应关系;从所述对应关系中,检测是否能够获取到与该查询请求对应的数据量、合约步骤的查询阈值相匹配的目标分片策略。本申请根据数据量以及合约步骤的查询阈值,获取与查询请求相匹配的目标分片策略,以实现查询请求应用策略的动态调整,有效的提高了数据查询效率。
步骤404,当获取到目标分片策略时,根据目标分片策略,生成与查询请求对应的多个查询子请求。
具体地,多个查询子请求可以为N个查询子请求,N为大于或等于1的整数。目标分片策略包括:分片数据以及每个分片对应的分片数据量。分片策略还包括数据量、合约步骤的查询阈值以及查询请求之间的对应关系。
一个具体实施例中,利用区块链的共识机制,区块链每个节点存储着全量数据,在获取到目标分片策略时,将数据量划分成与分片数据量对应的多个数据区间,并且,每个数据区间的数据量与对应的分片的片内数据量相一致,然后,生成每个数据区间对应的查询子请求。该操作保证每个区块链节点返回的结果都是有效的,能够提高整体的执行效率,并防止由于数据篡改导致结果有误问题的发生。
例如,数据量为500,数据分片为2,每个分片对应的分片数据量为250,则拆分出0-250,251-500两个数据区间,其中,一个数据区间可以称为一个数据分片。
步骤405,分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果。
一个具体实施例中,整合所有查询子结果,得到与查询请求相对应的查询结果之前,获取每个第一区块链节点根据查询子请求进行查询时消耗的查询资源,判断任意一个查询子请求对应的查询资源是否超过对应合约步骤的查询阈值。其中,查询子请求进行查询时消耗的查询资源即为:查询子请求进行查询时消耗的燃料。
若是,对于超过查询阈值的查询子请求对应的数据区间进行分片,得到至少两个数据子区间,生成与每个数据子区间对应的查询子请求,分别发送数据子区间对应的查询子请求至不同的第二区块链节点,并获取由每个第二区块链节点返回的查询子结果,整合所有所述查询子结果,得到与查询请求相对应的查询结果。
否则,说明不存在查询子请求对应的查询资源超过对应合约步骤的查询阈值的情况。
再进一步根据每个数据子区间对应的查询子请求、第二区块链节点、查询子请求对应的查询资源超过对应合约步骤的查询阈值更新该对应关系。
步骤406,整合所有查询子结果,得到与查询请求相对应的查询结果。
具体地,整合所有查询子结果,得到与查询请求相对应的查询结果之后,根据每个第一区块链节点处理完成查询子请求的执行耗时,每个查询子请求进行查询时消耗的查询资源,以及每个合约步骤的查询阈值调整对应关系。
具体地,由于各个区块链节点的配置存在差异,因此,每个区块链节点处理完成相同的查询请求的耗时是不一致的。并且,每个区块链节点是存在查询阈值的,每个区块链节点在执行查询请求时,也不能超过合约步骤的查询阈值。
例如,区块链节点A和区块链节点B进行说明:区块链节点A和区块链节点B分别处理分片大小为200的数据量,获取区块链节点A的执行耗时和区块链节点B的执行耗时,以及获取区块链节点A耗费的燃料和区块链节点B耗费的燃料。
一个具体实施例中,整合所有查询子结果,得到与查询请求相对应的查询结果之后,分别获取第一区块链第一节点处理完成查询子请求的第一请求的第一执行耗时,和获取第一区块链第二节点处理完成查询子请求的第二请求的第二执行耗时。其中,第一请求所对应的第一请求数据量,和第二请求所对应的第二请求数据量一致。当查询子请求对应的查询资源未超过对应的合约步骤的查询阈值时,若第一执行耗时大于所述第二执行耗时时,减少第一区块链第一节点所对应的数据区间的数据量,和/或增加第一区块链第二节点所对应的数据区间的数据量。建立第一区块链节点、合约步骤的查询阈值、和调整后的每个数据区间对应的数据量之间的关系,将新建立的关系更新至对应关系。
例如,区块链节点A和区块链节点B分别处理分片大小为200的数据量,区块链节点A的执行耗时为2S,区块链节点B的执行耗时为1S。并且,区块链节点A耗费的燃料未超过区块链节点A的查询阈值,以及区块链节点B耗费的燃料未超过区块链节点B的查询阈值,此时,可以减小区块链节点A所对应的数据区间的第一预设值,比如从200减少至150,和/或增加区块链节点B所对应的数据区间的第一预设值,比如从200增加到250。
通过不断更新对应关系,使各个区块链节点能够实现最大程度的利用,能够有效的提高查询效率。
一个具体实施例中,整合所有查询子结果,得到与查询请求相对应的查询结果之后,根据每个第一区块链节点的执行耗时,计算获得所有第一区块链节点处理完成所述查询子请求的平均耗时;分别比较每个第一区块链节点的执行耗时与平均耗时,根据比较结果,以及每个查询子请求进行查询时消耗的查询资源,与第一区块链节点,调整所述对应关系。
例如,区块链节点A和区块链节点B分别处理分片大小为200的数据量,区块链节点A的执行耗时为2S,区块链节点B的执行耗时为1S,平均耗时为1.5秒。则区块链节点A的执行耗时大于平均耗时,区块链节点B的执行耗时小于平均耗时。
通过不断更新对应关系,使各个区块链节点能够实现最大程度的利用,能够有效的提高查询效率。
一个具体实施例中,当查询子请求对应的查询资源未超过对应的合约步骤的查询阈值时,若任一第一区块链节点的执行耗时大于平均耗时,减少第一区块链节点所对应的数据区间的数据量;若任一第一区块链节点的请求耗时小于或等于平均耗时,增加第一区块链节点所对应的数据区间的数据量;建立第一区块链节点、合约步骤的查询阈值、和调整后的每个所述数据区间对应的数据量之间的关系,将新建立的关系更新至对应关系。
例如,区块链节点A耗费的燃料未超过区块链节点A的查询阈值,以及区块链节点B耗费的燃料未超过区块链节点B的查询阈值时,区块链节点A由于自身硬件原因,性能表现较低,导致执行耗时大于平均耗时,减少区块链节点A所对应的数据区间的第一预设值,比如从200减少至150;区块链节点B由于自身硬件原因,性能表现较好,导致执行耗时小于平均耗时,增加区块链节点B所对应的数据区间的第一预设值,比如从200增加至250。
通过不断更新对应关系,使各个区块链节点能够实现最大程度的利用,能够有效的提高查询效率。
下面,通过图5对基于区块链的查询方法做一个具体的说明:
步骤501,接收智能合约执行时任意合约步骤对应的查询请求,获取与所述查询请求对应的待查询数据的数据量。
步骤502,判断当前的分片策略是否为最新的分片策略,若是,执行步骤503,否则,执行步骤504。
步骤503,获取针对查询请求相对应的目标分片策略。
步骤504,默认当前的分片策略为目标分片策略。
步骤505,根据目标分片策略,生成与查询请求对应的多个查询子请求。
步骤506,分别发送多个查询子请求至不同的区块链节点。
步骤507,获取由每个区块链节点根据对应的查询子请求进行查询后返回的查询子结果。
步骤508,整合所有查询子结果,得到与查询请求相对应的查询结果。
步骤509,根据查询结果、各个区块链节点以及数据量等参数更新分片策略。
本申请实施例提供的该方法,接收智能合约执行时任意合约步骤对应的查询请求,获取与该查询请求对应的待查询数据的数据量;获取合约步骤的查询阈值;并检测是否能够获取到与数据量、查询阈值对应的目标分片策略;可见,本申请根据数据量以及合约步骤的查询阈值,获取针对该查询请求的目标分片策略,以实现查询请求应用策略的动态调整;进一步的,当获取到目标分片策略时,根据目标分片策略生成与查询请求对应的多个查询子请求;分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;整合所有的查询子结果,得到与该查询请求向对应的查询结果,有效的提高了数据查询的效率。
本申请实施例还提供了一种基于区块链的查询装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图6所示,该装置主要包括:
第一获取模块601,用于接收智能合约执行时任意合约步骤对应的查询请求,获取与查询请求对应的待查询数据的数据量。
第二获取模块602,用于获取合约步骤的查询阈值。
检测模块603,用于检测是否获取到与数据量、查询阈值对应的目标分片策略。
生成模块604,用于当获取到目标分片策略时,根据目标分片策略,生成与查询请求对应的多个查询子请求。
第三获取模块605,用于分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果。
整合模块606,用于整合所有查询子结果,得到与查询请求相对应的查询结果。
基于同一构思,本申请实施例中还提供了一种电子设备,如图7所示,该电子设备主要包括:处理器701、通信组件702、存储器703和通信总线704,其中,处理器701、通信组件702和存储器703通过通信总线704完成相互间的通信。其中,存储器703中存储有可被至处理器701执行的程序,处理器701执行存储器703中存储的程序,实现如下步骤:接收智能合约执行时任意合约步骤对应的查询请求,获取与查询请求对应的待查询数据的数据量;获取合约步骤的查询阈值;检测是否获取到与数据量、查询阈值对应的目标分片策略;当获取到目标分片策略时,根据目标分片策略,生成与查询请求对应的多个查询子请求;分别发送多个查询子请求至不同的第一区块链节点,并获取由每个第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;整合所有查询子结果,得到与查询请求相对应的查询结果。
上述电子设备中提到的通信总线704可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线704可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信组件702用于上述电子设备与其他设备之间的通信。
存储器703可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器701的存储装置。
上述的处理器701可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述基于区块链的查询方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于区块链的查询方法,其特征在于,包括:
接收智能合约执行时任意合约步骤对应的查询请求,获取与所述查询请求对应的待查询数据的数据量;
获取所述合约步骤的查询阈值;
检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略;
当获取到所述目标分片策略时,根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求;
分别发送多个所述查询子请求至不同的第一区块链节点,并获取由每个所述第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;
整合所有所述查询子结果,得到与所述查询请求相对应的查询结果。
2.根据权利要求1所述的基于区块链的查询方法,其特征在于,所述目标分片策略包括:分片数量以及与每个分片对应的片内数据量;
根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求,包括:
将所述数据量划分成与所述分片数量对应的多个数据区间,每个所述数据区间的数据量与对应的分片的所述片内数据量相一致;
生成每个所述数据区间对应的所述查询子请求。
3.根据权利要求2所述的基于区块链的查询方法,其特征在于,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之前,还包括:
获取每个所述第一区块链节点根据所述查询子请求进行查询时消耗的查询资源;
判断任意一个所述查询子请求对应的查询资源是否超过对应所述合约步骤的查询阈值;
若是,对于超过所述查询阈值的所述查询子请求对应的数据区间进行分片,得到至少两个数据子区间;
生成与每个所述数据子区间对应的查询子请求;
分别发送所述数据子区间对应的查询子请求至不同的第二区块链节点,并获取由每个所述第二区块链节点返回的查询子结果;
执行所述整合所有所述查询子结果,得到与所述查询请求相对应的查询结果的步骤。
4.根据权利要求3所述的基于区块链的查询方法,其特征在于,检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略,包括:
获取历史区块链节点、历史查询请求对应的数据量与所述合约步骤的查询阈值之间的对应关系;
从所述对应关系中,检测是否能够获取到与所述查询请求对应的数据量、所述合约步骤的查询阈值相匹配的所述目标分片策略。
5.根据权利要求3所述的基于区块链的查询方法,其特征在于,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之后,还包括:
分别获取第一区块链第一节点处理完成所述查询子请求的第一请求的第一执行耗时,和获取第一区块链第二节点处理完成所述查询子请求的第二请求的第二执行耗时;
其中,所述第一请求所对应的第一请求数据量,和所述第二请求所对应的第二请求数据量一致;
当所述查询子请求对应的查询资源未超过对应的所述合约步骤的查询阈值时,若所述第一执行耗时大于所述第二执行耗时时,减少所述第一区块链第一节点所对应的数据区间的数据量,和/或增加所述第一区块链第二节点所对应的数据区间的数据量;
建立所述第一区块链节点、所述合约步骤的查询阈值、和调整后的每个所述数据区间对应的数据量之间的关系,将新建立的关系更新至所述对应关系。
6.根据权利要求3所述的基于区块链的查询方法,其特征在于,整合所有所述查询子结果,得到与所述查询请求相对应的查询结果之后,还包括:
根据每个所述第一区块链节点的执行耗时,计算获得所有所述第一区块链节点处理完成所述查询子请求的平均耗时;
分别比较每个所述第一区块链节点的执行耗时与所述平均耗时,根据比较结果,以及每个所述查询子请求进行查询时消耗的查询资源,与所述第一区块链节点,调整所述对应关系。
7.根据权利要求6所述的基于区块链的查询方法,其特征在于,根据比较结果,以及每个所述查询子请求进行查询时消耗的查询资源,与所述第一区块链节点,调整所述对应关系,包括:
当所述查询子请求对应的查询资源未超过对应的所述合约步骤的查询阈值时,若任一所述第一区块链节点的执行耗时大于所述平均耗时,减少所述第一区块链节点所对应的数据区间的数据量;若任一所述第一区块链节点的请求耗时小于或等于所述平均耗时,增加所述第一区块链节点所对应的数据区间的数据量;
建立所述第一区块链节点、所述合约步骤的查询阈值、和调整后的每个所述数据区间对应的数据量之间的关系,将新建立的关系更新至所述对应关系。
8.一种基于区块链的查询装置,其特征在于,包括:
第一获取模块,用于接收智能合约执行时任意合约步骤对应的查询请求,获取与所述查询请求对应的待查询数据的数据量;
第二获取模块,用于获取所述合约步骤的查询阈值;
检测模块,用于检测是否获取到与所述数据量、所述查询阈值对应的目标分片策略;
生成模块,用于当获取到所述目标分片策略时,根据所述目标分片策略,生成与所述查询请求对应的多个查询子请求;
第三获取模块,用于分别发送多个所述查询子请求至不同的第一区块链节点,并获取由每个所述第一区块链节点根据对应的查询子请求进行查询后返回的查询子结果;
整合模块,用于整合所有所述查询子结果,得到与所述查询请求相对应的查询结果。
9.一种电子设备,其特征在于,包括:处理器、通信组件、存储器和通信总线,其中,处理器、通信组件和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1-7任一项所述的基于区块链的查询方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的基于区块链的查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307997.7A CN112506987B (zh) | 2020-11-19 | 2020-11-19 | 基于区块链的查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307997.7A CN112506987B (zh) | 2020-11-19 | 2020-11-19 | 基于区块链的查询方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506987A true CN112506987A (zh) | 2021-03-16 |
CN112506987B CN112506987B (zh) | 2022-05-20 |
Family
ID=74958982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011307997.7A Active CN112506987B (zh) | 2020-11-19 | 2020-11-19 | 基于区块链的查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506987B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110936A (zh) * | 2021-04-14 | 2021-07-13 | 区块动力(广州)科技有限公司 | 一种对区块链节点运行性能的调节方法 |
CN113111086A (zh) * | 2021-04-09 | 2021-07-13 | 杭州复杂美科技有限公司 | 数据存储和查询响应方法、区块执行方法 |
CN113609168A (zh) * | 2021-07-14 | 2021-11-05 | 远景智能国际私人投资有限公司 | 数据导出方法、装置、终端以及可读存储介质 |
CN113688317A (zh) * | 2021-08-24 | 2021-11-23 | 江苏中润普达信息技术有限公司 | 一种基于区块链的信息推荐方法及系统 |
CN113934933A (zh) * | 2021-10-15 | 2022-01-14 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN116541416A (zh) * | 2023-04-07 | 2023-08-04 | 杭州浩联智能科技有限公司 | 一种请求数据的优化处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170075775A1 (en) * | 2015-09-16 | 2017-03-16 | Sesame Software, Inc. | System and Method for Time Parameter Based Database Restoration |
CN109033123A (zh) * | 2018-05-31 | 2018-12-18 | 康键信息技术(深圳)有限公司 | 基于大数据的查询方法、装置、计算机设备和存储介质 |
US20190394267A1 (en) * | 2018-06-26 | 2019-12-26 | Anami Holdings, Inc. | Dynamic voting nodes in blockchain networks |
CN111177182A (zh) * | 2019-12-19 | 2020-05-19 | 达闼科技成都有限公司 | 数据查询方法和装置、存储介质和电子设备 |
CN111222157A (zh) * | 2019-10-30 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 区块链隐私数据的查询方法及装置 |
US20200320217A1 (en) * | 2018-04-27 | 2020-10-08 | Tencent Technology (Shenzhen) Company Limited | Block chain-based data query method, server and storage medium |
-
2020
- 2020-11-19 CN CN202011307997.7A patent/CN112506987B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170075775A1 (en) * | 2015-09-16 | 2017-03-16 | Sesame Software, Inc. | System and Method for Time Parameter Based Database Restoration |
US20200320217A1 (en) * | 2018-04-27 | 2020-10-08 | Tencent Technology (Shenzhen) Company Limited | Block chain-based data query method, server and storage medium |
CN109033123A (zh) * | 2018-05-31 | 2018-12-18 | 康键信息技术(深圳)有限公司 | 基于大数据的查询方法、装置、计算机设备和存储介质 |
US20190394267A1 (en) * | 2018-06-26 | 2019-12-26 | Anami Holdings, Inc. | Dynamic voting nodes in blockchain networks |
CN111222157A (zh) * | 2019-10-30 | 2020-06-02 | 支付宝(杭州)信息技术有限公司 | 区块链隐私数据的查询方法及装置 |
CN111177182A (zh) * | 2019-12-19 | 2020-05-19 | 达闼科技成都有限公司 | 数据查询方法和装置、存储介质和电子设备 |
Non-Patent Citations (2)
Title |
---|
DAVID MAIER ET AL.: "vChain: A Blockchain System Ensuring Query Integrity", 《SIGMOD "20: PROCEEDINGS OF THE 2020 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》 * |
王千阁等: "区块链系统的数据存储与查询技术综述", 《计算机科学》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111086A (zh) * | 2021-04-09 | 2021-07-13 | 杭州复杂美科技有限公司 | 数据存储和查询响应方法、区块执行方法 |
CN113111086B (zh) * | 2021-04-09 | 2022-06-24 | 杭州复杂美科技有限公司 | 数据存储和查询响应方法、区块执行方法 |
CN113110936A (zh) * | 2021-04-14 | 2021-07-13 | 区块动力(广州)科技有限公司 | 一种对区块链节点运行性能的调节方法 |
CN113609168A (zh) * | 2021-07-14 | 2021-11-05 | 远景智能国际私人投资有限公司 | 数据导出方法、装置、终端以及可读存储介质 |
CN113609168B (zh) * | 2021-07-14 | 2024-01-05 | 远景智能国际私人投资有限公司 | 数据导出方法、装置、终端以及可读存储介质 |
CN113688317A (zh) * | 2021-08-24 | 2021-11-23 | 江苏中润普达信息技术有限公司 | 一种基于区块链的信息推荐方法及系统 |
CN113934933A (zh) * | 2021-10-15 | 2022-01-14 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN113934933B (zh) * | 2021-10-15 | 2024-04-05 | 北京智融云河科技有限公司 | 低延迟的消息转发方法、设备及存储介质 |
CN116541416A (zh) * | 2023-04-07 | 2023-08-04 | 杭州浩联智能科技有限公司 | 一种请求数据的优化处理方法及装置 |
CN116541416B (zh) * | 2023-04-07 | 2024-03-15 | 杭州浩联智能科技有限公司 | 一种请求数据的优化处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112506987B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112506987B (zh) | 基于区块链的查询方法、装置、设备及存储介质 | |
US10554421B2 (en) | Method for superseding log-in of user through PKI-based authentication by using smart contact and blockchain database, and server employing same | |
US11386076B2 (en) | Data processing method and apparatus based on blockchain network, electronic device, and storage medium | |
US10659236B2 (en) | Method for superseding log-in of user through PKI-based authentication by using blockchain database of UTXO-based protocol, and server employing same | |
KR102002509B1 (ko) | 공증센터를 포함하는 프라이빗 블록체인 시스템 및 이의 공증방법 | |
WO2020134942A1 (zh) | 身份核实方法及其系统 | |
CN111079136B (zh) | 一种基于区块链技术的雾计算入侵检测特征共享系统 | |
CN112818014B (zh) | 区块链数据解析方法、装置和电子设备 | |
CN110598434B (zh) | 基于区块链网络的房屋信息处理方法、装置、电子设备及存储介质 | |
CN110543545A (zh) | 基于区块链的档案管理方法、装置及存储介质 | |
CN110769274B (zh) | 基于区块链网络的直播信息处理方法、装置、电子设备及存储介质 | |
CN110908786A (zh) | 一种智能合约调用方法、装置及介质 | |
CN112800129A (zh) | 区块状态更新方法、装置、系统和电子设备 | |
KR101816652B1 (ko) | Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 서비스 제공 서버에 의하여 제공되는 서비스를 이용하기 위한 사용자의 로그인 요청에 대하여 pki 기반의 인증을 통해 로그인을 대행하는 방법 및 이를 이용한 서버 | |
EP3839791B1 (en) | Identification and authorization of transactions via smart contracts | |
CN112712452A (zh) | 基于区块链的审批信息处理方法和装置 | |
CN112702419B (zh) | 基于区块链的数据处理方法、装置、设备和存储介质 | |
CN112202564A (zh) | 交易传递方法、装置、电子设备及可读存储介质 | |
CN111385096B (zh) | 一种区块链网络系统、签名处理方法、终端及存储介质 | |
Tang et al. | Lightweight authentication of freshness in outsourced key-value stores | |
CN112837023A (zh) | 机构的业务协同平台、方法、装置及电子设备 | |
CN112699799A (zh) | 基于区块链的人脸识别方法、装置、设备和存储介质 | |
CN115328509A (zh) | 算法变更方法、装置、计算机设备及存储介质 | |
Sey et al. | Firmblock: A Scalable Blockchain-Based Malware-Proof Firmware Update Architecture with Revocation for IoT Devices | |
CN112597512B (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 |