CN111177182B - 数据查询方法和装置、存储介质和电子设备 - Google Patents

数据查询方法和装置、存储介质和电子设备 Download PDF

Info

Publication number
CN111177182B
CN111177182B CN201911319314.7A CN201911319314A CN111177182B CN 111177182 B CN111177182 B CN 111177182B CN 201911319314 A CN201911319314 A CN 201911319314A CN 111177182 B CN111177182 B CN 111177182B
Authority
CN
China
Prior art keywords
query
data
target
request
type
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
Application number
CN201911319314.7A
Other languages
English (en)
Other versions
CN111177182A (zh
Inventor
陈敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cloudminds Robotics Co Ltd
Original Assignee
Cloudminds Shanghai Robotics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cloudminds Shanghai Robotics Co Ltd filed Critical Cloudminds Shanghai Robotics Co Ltd
Priority to CN201911319314.7A priority Critical patent/CN111177182B/zh
Publication of CN111177182A publication Critical patent/CN111177182A/zh
Application granted granted Critical
Publication of CN111177182B publication Critical patent/CN111177182B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种数据查询方法和装置、存储介质和电子设备,所述方法包括:获取查询请求;根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句;将所述查询语句发送至区块链网络中对应的目标接口;接收所述目标接口返回的目标数据。

Description

数据查询方法和装置、存储介质和电子设备
技术领域
本公开涉及区块链技术领域,具体地,涉及一种数据查询方法和装置、存储介质和电子设备。
背景技术
区块链技术的迅速发展使区块链逐步应用于了生活、办公等各种场景下,其中,智能合约区块链是区块链上的一种应用服务,它为静态的底层区块链数据赋予了灵活可编程的机制和算法,能够实现区块链数据的控制和管理。
常见的智能合约区块链包括以太坊、EOS、Fabric等,但是,由于目前智能合约对区块链外部提供服务时的部分接口能力受限,例如单次查询可返回的数据类型有限等,使得外部对智能合约内的数据内容查询十分繁琐。
发明内容
本公开的目的是提供一种数据查询方法和装置、存储介质和电子设备,以解决上述的技术问题。
为了实现上述目的,本公开提供一种数据查询方法,所述方法包括:获取查询请求;根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句;将所述查询语句发送至区块链网络中对应的目标接口;接收所述目标接口返回的目标数据。
可选地,所述根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句,包括:若所述查询请求查询的目标数据包括两种以上的数据类型,则生成对应每一种所述数据类型的查询语句;所述将所述查询语句发送至所述区块链网络中对应的目标接口,包括:将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
可选地,所述根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句,包括:确定所述查询请求查询的目标数据的数据类型,以及所述数据类型的目标数据的数量;确定所述数据类型对应的目标接口可返回的最大数据量;根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目;生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
可选地,所述查询语句中包括目标区块号,所述目标区块号用于指示开始进行查询的区块。
可选地,所述目标区块号为生成所述查询语句时,所述区块链网络中区块链的最新区块号。
可选地,所述方法还包括:在接收到多个所述目标接口返回的目标数据的情况下,根据多个所述目标数据生成一条查询结果。
可选地,所述查询请求为远程过程调用RPC请求,所述查询语句为RPC请求语句。
本公开的第二方面,提供一种数据查询装置,所述装置位于区块链网络中的节点上,所述装置包括:获取模块,用于获取查询请求;生成模块,用于根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句;发送模块,用于将所述查询语句发送至区块链网络中对应的目标接口;接收模块,用于接收所述目标接口返回的目标数据。
可选地,所述生成模块,用于生成对应每一种数据类型的查询语句;所述发送模块,用于将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
可选地,所述生成模块,用于确定所述查询请求查询的目标数据的数据类型,以及所述数据类型的目标数据的数量;确定所述数据类型对应的目标接口可返回的最大数据量;根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目;生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
可选地,所述查询语句中包括目标区块号,所述目标区块号用于指示开始进行查询的区块。
可选地,所述目标区块号为生成所述查询语句时,所述区块链网络中区块链的最新区块号。
可选地,所述装置还包括组装模块,用于在接收到多个所述目标接口返回的目标数据的情况下,根据多个所述目标数据生成一条查询结果。
可选地,所述查询请求为远程过程调用RPC请求,所述查询语句为RPC请求语句。
本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本公开第一方面中所述方法的步骤。
本公开的第四方面,提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面中所述方法的步骤。
通过上述技术方案,根据查询请求中的目标数据的类型或数量,自动生成查询语句,并发送至区块链网络中对应的目标接口,从而获取与查询请求对应的目标数据,过程中只需要用户输入一次查询请求,不需要手动根据数据查询限制将查询请求拆分,就能得到查询请求对应的全部目标数据,提升了区块链网络中数据查询的便捷度。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性公开实施例示出的一种数据查询方法的流程图。
图2是根据一示例性公开实施例示出的一种数据查询过程的示意图。
图3是根据一示例性公开实施例示出的一种数据查询装置的框图。
图4是根据一示例性公开实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
首先对本公开的应用场景进行说明。本公开应用于智能合约区块链中,智能合约区块链能够将符合智能合约逻辑的行为通过编码在区块链中实现,从而对区块链数据进行管理和控制。但是,由于智能合约区块链的技术限制,如果外部服务需要获取智能合约区块链中的数据,需要通过查询接口与智能合约进行数据交换,且在一次查询操作中,只能针对一个查询接口获取到一次符合该查询接口的数据类型及数据量制约的数据结果,当外部服务需要查询多类型或大数量的数据时,需要手动根据数据类型或查询接口的最大数据量来制定查询策略,使得数据查询的过程十分繁琐且容易出错。
为了解决上述的问题,本公开提出了一种数据查询方法,可以简化数据的查询流程,克服由于区块链接口能力受限导致的数据查询过程繁琐的问题。
图1是根据一示例性公开实施例示出的一种数据查询方法的流程图。本方法可以应用于区块链网络节点上的用于查询数据的装置,如图1所示,所述方法包括以下步骤:
S11、获取查询请求。
其中,所述查询请求可以是由DAPP(DecentralizedApplication,去中心化应用)发送的查询请求,也可以是由其他外部用户或外部应用发起的查询请求。
查询请求可以是用于查询一类数据的请求,也可以是用于查询多种数据的复合查询请求。其中,所述查询请求可以是已转化为预设格式的查询代码的形式的请求,也可以是未处理的自然语言文字形式的请求。
在获取到的是预设格式的查询请求时,该查询请求可以直接在后续步骤中使用,而在获取到的是自然语言文字格式的查询请求时,可以将自然语言文字格式的查询请求通过文字算法转换成预设的查询请求格式,以便在后续步骤中使用。
在本申请中,优选地使用eth_call_ext类型的RPC(Remote Process Call,远程过程调用)查询请求的格式作为预设格式。与传统的eth_call类型的RPC查询请求相比,eth_call_ext类型的RPC请求在本申请中不直接发送至查询数据的接口,而是会经过同样位于区块链网络中的查询装置的转化成为普通的eth_call类型的RPC查询语句再转发至对应接口,因此,本申请中的查询请求的内容可以不受查询接口的接口能力限制,而可以根据实际的查询需要进行定义。
例如,在本公开中,一条查询请求的内容可以包括getUserVisits和getUserOrderCount两部分内容,可以用于查询用户账号的访问信息和订单数目信息,而现有技术中,如果查询请求中包括了两个获取指令,将无法被查询接口识别,从而会返回错误的值;或者,查询请求的内容为getUsers,用于查询所有的用户账号信息,而由于所有用户的用户账号信息通常已经超过了一个查询接口的返回数据量限制,从而查询接口无法返回正确的值。
S12、根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句。
值得说明的是,目标数据的数量可以是在查询请求中注明的数量,例如获取最新的50个用户账号信息,则该数量为50;目标数据的数量也可以是在查询请求中默认包含的数量,例如获取从id为100到id为499的用户的账号信息,则该查询请求中默认包含的数量为400个;如果查询请求中没有特别注明数量,则该查询请求中所默认包含的数量指该类型下的全部数据。
若所述查询请求查询的目标数据包括两种以上的数据类型,则生成对应每一种所述数据类型的查询语句。
例如,以json格式的RPC请求为例,当RPC请求中包括了getUserVisits指令和getUserOrderCount指令时,可以解析该RPC请求,单独为getUserVisits指令生成一条查询语句,并单独为getUserOrderCount指令生成一条查询语句。
其中,针对每一种数据类型,可以确定所述数据类型的目标数据的数量,并确定所述数据类型对应的目标接口可返回的最大数据量,并根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目,并生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
也就是说,当查询请求查询的至少一个种类的目标数据的数据总量超过了用于查询该数据类型的目标接口可返回的最大数据量时,可以自动根据查询请求生成多条查询的数据量不超过最大数据量查询语句,从而达到使用一条查询请求来查询大数目的目标数据的效果。
在现有技术中,由于一个接口的数据处理能力有限,不能返回所有的业务数据信息,调用该接口查询所有的业务数据信息时会出现调用错误,因此,智能合约必须会分页接口,当要查询所有的业务数据时,用户需要多次调用分页查询接口并将查询到的数据进行组合,才能获得所有的业务数据信息。
在本实施例中,如果需要查询所有的业务数据时,可以生成向查询接口查询业务总数目的查询语句,再根据所述业务总数目(即目标数据的数量)和目标接口的可返回的最大数据量来生成多条查询语句,依次执行查询操作。
例如,一条查询请求的内容可以用于查询用户账号的访问信息和订单数目信息,可以先生成询问访问信息总数的查询语句,发送至用于查询访问信息的查询接口,从而获取访问信息总数,此处假定为250,并获取查询接口可返回的最大数据量(该可返回的最大数据量可以预存在协议中,也可以通过查询语句询问,本公开对此不做限制),此处假设为100,则可以生成三条用于查询用户账号的访问信息的查询语句以及一条用于查询订单数目信息的查询语句,其中,用于查询用户账号的访问信息的查询语句分别用于查询第1至100条访问信息、第101至200条访问信息以及第201至250条访问信息。
在一种可能的实施方式中,所述查询语句中包括目标区块号,所述目标区块号用于指示开始进行查询的区块。
这是由于区块链中的数据在不断更新,不同的数据状态对应着不同的区块号,如果不对查询语句中的区块号进行限定,则该字段通常默认为latest(即最新的区块号)。而为了查询特定状态的数据,可以对查询语句中的目标区块号进行限定。
所述查询请求中还包括时间信息,所述目标区块号与所述查询请求中的时间信息相对应,例如,目前区块链中最新的区块号为1006,而查询请求中的时间信息为一周前的某一特定时间点,即查询请求用于查询一周前的目标数据,则可以确定该时间点对应的区块号,此处假设为866,并将该区块号作为目标区块号,这样,最后得到的目标数据则是该区块号对应的时间点的数据。
在一种可能的实施方式中,所述目标区块号为生成所述查询语句时,所述区块链网络中区块链的最新区块号。
这是由于在生成查询语句时,多条查询语句发送至目标接口的时间不一致,在查询语句发送的时间差内,目标数据可能已经改变。为了使响应于同一查询请求的查询语句所查询到的数据都处于相同的状态,则可以在获取到查询请求之后,先确定当前区块链网络中的最新区块号(可以认为是获取到查询请求的时间点所对应的区块号),并为响应于该查询请求所生成的所有的查询语句都添加该最新的区块号,这样,可以在后续步骤中对查询语句依次进行原子查询(即所有查询结果基于相同的区块状态),最终获得的目标数据都是处于同一状态的较新的数据。
示例地,所述查询请求可以为:
req:{"id":1,"jsonrpc":"2.0","method":"eth_call_ext","params":[{"from":"0x8a..","to":"A","fun":"getUsers(uint256 index,uint256 limit)returns(address[])","type":"repeat-to-empty","p0":{"from":0,"to":"max","step":100,"type":"uint256"},"p1":{"value":100,"type":"uint256"}},"latest"]}
其中fun是智能合约的查询接口代码,亦即目标数据的类型,type repeat-to-empty描述了该fun需要重复执行直至无数据返回,p0和p1分别描述了该fun对应参数的类型以及取值范围。
由上述查询请求可知,目标数据为所有的“用户账号信息”,该查询请求通过ABI(Application Binary Interface,应用程序二进制接口)编码转换,可以根据该查询请求生成下述的三条查询语句:
第一条:
req1:{"id":1001,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"A","data":"getUsers(0,100)"},"1000"]}
用于查询区块号为1000状态时的第0至100位(不包含第100位)的用户账号信息。
第二条:
req2:{"id":1002,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"A","data":"getUsers(100,100)"},"1000"]}
用于查询区块号为1000状态时的第100至200位(不包含第200位)的用户账号信息。
第三条:
req3:{"id":1003,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"A","data":"getUsers(200,100)"},"1000"]}
用于查询区块号为1000状态时的第200至300位(不包含第300位)的用户账号信息。
示例地,该查询请求还可以为:
req1:[{"id":1,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"B","data":"getUserVisits(U)"},"latest"]},{"id":2,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"C","data":"getUserOrderCount(U)"},"latest"]}]
由上述查询请求可知,目标数据为“用户U的访问信息”和“用户U的订单数目信息”。
根据上述的查询请求可以生成下述的两条查询语句:
第一条:
req1:{"id":1,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"B","data":"getUserVisits(U)"},"latest"]}
用于查询用户U的访问信息。
第二条:
req2:{"id":2,"jsonrpc":"2.0","method":"eth_call","params":[{"from":"0x8a..","to":"C","data":"getUserOrderCount(U)"},"latest"]}
用于查询用户U的订单数目信息。
这样,可以根据一条查询请求自动生成多条符合智能合约区块链的查询接口的查询规则的多条查询语句,使每条查询语句所查询的数据量都在该查询接口可返回的最大数据量之内,从而简化了进行数据查询时需要手动对查询请求根据查询规则进行拆分的过程。
S13、将所述查询语句发送至区块链网络中对应的目标接口。
其中,当所述查询语句用于查询多种数据类型的数据时,可以将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
S14、接收所述目标接口返回的目标数据。
其中,当返回的目标数据为一条数据时,可以直接将该目标数据作为查询结果。在接收到多个所述目标接口返回的目标数据的情况下,可以根据多个所述目标数据生成一条查询结果。
其中,对目标数据的组装方式可以根据目标接口所对应的预定义语法进行,预定义语法中包括了该类数据应该出现在自然语句中的位置。
这样,当外部查询者输入一条查询请求之后,接收到的也是一条查询结果,用户不用再自行对查询到的目标数据进行整合,提升了便捷度。
如图2所示的是一种可能的数据查询过程的示意图,其中,用于查询数据的装置以及存储有数据的智能合约1至智能合约n都位于区块链的节点上,用于查询数据的装置可以包括预处理模块、执行模块以及结果组装模块,其中,预处理模块用于执行本方法的步骤S11和步骤S12,执行模块用于执行本方法的步骤S13,结果组装模块用于执行本方法的步骤S14以及对目标数据的组装整合的步骤,其中,用于查询数据的装置与智能合约之间通过目标接口进行数据交换。
通过上述技术方案,根据查询请求中的目标数据的类型或数量,自动生成查询语句,并发送至区块链网络中对应的目标接口,从而获取与查询请求对应的目标数据,过程中只需要用户输入一次查询请求,不需要手动根据数据查询限制将查询请求拆分,就能得到查询请求对应的全部目标数据,提升了区块链网络中数据查询的便捷度。
图3是根据一示例性公开实施例示出的一种数据查询装置的框图。所述装置位于区块链网络中的节点上,如图3所示,所述装置300包括获取模块310、生成模块320、发送模块330和接收模块340。
所述获取模块310,用于获取查询请求。
其中,所述查询请求可以是由DAPP发送的查询请求,也可以是由其他外部用户或外部应用发起的查询请求。
查询请求可以是用于查询一类数据的请求,也可以是用于查询多种数据的复合查询请求。其中,所述查询请求可以是已转化为预设格式的查询代码的形式的请求,也可以是未处理的自然语言文字形式的请求。
在获取到的是预设格式的查询请求时,该查询请求可以直接在后续步骤中使用,而在获取到的是自然语言文字格式的查询请求时,可以将自然语言文字格式的查询请求通过文字算法转换成预设的查询请求格式,以便在后续步骤中使用。
在本申请中,优选地使用eth_call_ext类型的RPC(Remote Process Call,远程过程调用)查询请求的格式作为预设格式。与传统的eth_call类型的RPC查询请求相比,eth_call_ext类型的RPC请求在本申请中不直接发送至查询数据的接口,而是会经过同样位于区块链网络中的查询装置的转化成为普通的eth_call类型的RPC查询语句再转发至对应接口,因此,本申请中的查询请求的内容可以不受查询接口的接口能力限制,而可以根据实际的查询需要进行定义。
例如,在本公开中,一条查询请求的内容可以包括getUserVisits和getUserOrderCount两部分内容,可以用于查询用户账号的访问信息和订单数目信息,而现有技术中,如果查询请求中包括了两个获取指令,将无法被查询接口识别,从而会返回错误的值;或者,查询请求的内容为getUsers,用于查询所有的用户账号信息,而由于所有用户的用户账号信息通常已经超过了一个查询接口的返回数据量限制,从而查询接口无法返回正确的值。
所述生成模块320,用于根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句。
值得说明的是,目标数据的数量可以是在查询请求中注明的数量,例如获取最新的50个用户账号信息,则该数量为50;目标数据的数量也可以是在查询请求中默认包含的数量,例如获取从id为100到id为499的用户的账号信息,则该查询请求中默认包含的数量为400个;如果查询请求中没有特别注明数量,则该查询请求中所默认包含的数量指该类型下的全部数据。
若所述查询请求查询的目标数据包括两种以上的数据类型,则生成对应每一种所述数据类型的查询语句。
例如,以json格式的RPC请求为例,当RPC请求中包括了getUserVisits指令和getUserOrderCount指令时,可以解析该RPC请求,单独为getUserVisits指令生成一条查询语句,并单独为get UserOrderCount指令生成一条查询语句。
其中,针对每一种数据类型,可以确定所述数据类型的目标数据的数量,并确定所述数据类型对应的目标接口可返回的最大数据量,并根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目,并生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
也就是说,当查询请求查询的至少一个种类的目标数据的数据总量超过了用于查询该数据类型的目标接口可返回的最大数据量时,可以自动根据查询请求生成多条查询的数据量不超过最大数据量查询语句,从而达到使用一条查询请求来查询大数目的目标数据的效果。
在现有技术中,由于一个接口的数据处理能力有限,不能返回所有的业务数据信息,调用该借口查询所有的业务数据信息时会出现调用错误,因此,智能合约必须会分页接口,当要查询所有的业务数据时,用户需要多次调用分页查询接口并将查询到的数据进行组合,才能获得所有的业务数据信息。
在本实施例中,如果需要查询所有的业务数据时,可以生成向查询接口查询业务总数目的查询语句,再根据所述业务总数目(即目标数据的数量)和目标接口的可返回的最大数据量来生成多条查询语句,依次执行查询操作。
例如,一条查询请求的内容可以用于查询用户账号的访问信息和订单数目信息,可以先生成询问访问信息总数的查询语句,发送至用于查询访问信息的查询接口,从而获取访问信息总数,此处假定为250,并获取查询接口可返回的最大数据量(该可返回的最大数据量可以预存在协议中,也可以通过查询语句询问,本公开对此不做限制),此处假设为100,则可以生成三条用于查询用户账号的访问信息的查询语句以及一条用于查询订单数目信息的查询语句,其中,用于查询用户账号的访问信息的查询语句分别用于查询第1至100条访问信息、第101至200条访问信息以及第201至250条访问信息。
所述发送模块330,用于将所述查询语句发送至区块链网络中对应的目标接口。
所述接收模块340,用于接收所述目标接口返回的目标数据。
可选地,所述生成模块,用于生成对应每一种数据类型的查询语句;所述发送模块,用于将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
可选地,所述生成模块,用于确定所述查询请求查询的目标数据的数据类型,以及所述数据类型的目标数据的数量;确定所述数据类型对应的目标接口可返回的最大数据量;根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目;生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
可选地,所述查询语句中包括目标区块号,所述目标区块号用于指示开始进行查询的区块。
这是由于区块链中的数据在不断更新,不同的数据状态对应着不同的区块号,如果不对查询语句中的区块号进行限定,则该字段通常默认为latest(即最新的区块号)。而为了查询特定状态的数据,可以对查询语句中的目标区块号进行限定。
所述查询请求中还包括时间信息,所述目标区块号与所述查询请求中的时间信息相对应,例如,目前区块链中最新的区块号为1006,而查询请求中的时间信息为一周前的某一特定时间点,即查询请求用于查询一周前的目标数据,则可以确定该时间点对应的区块号,此处假设为866,并将该区块号作为目标区块号,这样,最后得到的目标数据则是该区块号对应的时间点的数据。
可选地,所述目标区块号为生成所述查询语句时,所述区块链网络中区块链的最新区块号。
这是由于在生成查询语句时,多条查询语句发送至目标接口的时间不一致,在查询语句发送的时间差内,目标数据可能已经改变。为了使响应于同一查询请求的查询语句所查询到的数据都处于相同的状态,则可以在获取到查询请求之后,先确定当前区块链网络中的最新区块号(可以认为是获取到查询请求的时间点所对应的区块号),并为响应于该查询请求所生成的所有的查询语句都添加该最新的区块号,这样,可以在后续步骤中对查询语句依次进行原子查询(即所有查询结果基于相同的区块状态),最终获得的目标数据都是处于同一状态的较新的数据。
可选地,所述装置还包括组装模块,用于在接收到多个所述目标接口返回的目标数据的情况下,根据多个所述目标数据生成一条查询结果。
可选地,所述查询请求为远程过程调用RPC请求,所述查询语句为RPC请求语句。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,根据查询请求中的目标数据的类型或数量,自动生成查询语句,并发送至区块链网络中对应的目标接口,从而获取与查询请求对应的目标数据,过程中只需要用户输入一次查询请求,不需要手动根据数据查询限制将查询请求拆分,就能得到查询请求对应的一个借口或多个接口提供的目标数据,提升了区块链网络中数据查询的便捷度。
图4是根据一示例性实施例示出的一种电子设备400的框图。如图4所示,该电子设备400可以包括:处理器401,存储器402。该电子设备400还可以包括多媒体组件403,输入/输出(I/O)接口404,以及通信组件405中的一者或多者。
其中,处理器401用于控制该电子设备400的整体操作,以完成上述的数据查询方法中的全部或部分步骤。存储器402用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器402或通过通信组件405发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口404为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件405用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件405可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据查询方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据查询方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器402,上述程序指令可由电子设备400的处理器401执行以完成上述的数据查询方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (9)

1.一种数据查询方法,其特征在于,所述方法包括:
获取查询请求;
根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句;
将所述查询语句发送至区块链网络中对应的目标接口;
接收所述目标接口返回的目标数据;
所述根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句,包括:
若所述查询请求查询的目标数据包括两种以上的数据类型,则生成对应每一种所述数据类型的查询语句;
所述将所述查询语句发送至所述区块链网络中对应的目标接口,包括:
将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
2.根据权利要求1所述的数据查询方法,其特征在于,所述根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句,包括:
确定所述查询请求查询的目标数据的数据类型,以及所述数据类型的目标数据的数据总量;
确定所述数据类型对应的目标接口可返回的最大数据量;
根据所述最大数据量和所述数据总量,确定所述查询语句的目标数目;
生成所述目标数目的所述查询语句,其中,生成的每一所述查询语句查询的数据量不大于所述最大数据量。
3.根据权利要求1或2所述的数据查询方法,其特征在于,所述查询语句中包括目标区块号,所述目标区块号用于指示开始进行查询的区块。
4.根据权利要求3所述的数据查询方法,其特征在于,所述目标区块号为生成所述查询语句时,所述区块链网络中区块链的最新区块号。
5.根据权利要求1所述的数据查询方法,其特征在于,所述方法还包括:
在接收到多个所述目标接口返回的目标数据的情况下,根据多个所述目标数据生成一条查询结果。
6.根据权利要求1所述的数据查询方法,其特征在于,所述查询请求为远程过程调用RPC请求,所述查询语句为RPC请求语句。
7.一种数据查询装置,其特征在于,所述装置位于区块链网络中的节点上,所述装置包括:
获取模块,用于获取查询请求;
生成模块,用于根据所述查询请求查询的目标数据的类型和/或数量,生成查询语句;
发送模块,用于将所述查询语句发送至区块链网络中对应的目标接口;
接收模块,用于接收所述目标接口返回的目标数据;
其中,所述生成模块,用于若所述查询请求查询的目标数据包括两种以上的数据类型,则生成对应每一种所述数据类型的查询语句;
所述将所述查询语句发送至所述区块链网络中对应的目标接口,包括:
将每一种数据类型对应的查询语句发送至用于查询该种数据类型的目标接口。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
9.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-6中任一项所述方法的步骤。
CN201911319314.7A 2019-12-19 2019-12-19 数据查询方法和装置、存储介质和电子设备 Active CN111177182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911319314.7A CN111177182B (zh) 2019-12-19 2019-12-19 数据查询方法和装置、存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911319314.7A CN111177182B (zh) 2019-12-19 2019-12-19 数据查询方法和装置、存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN111177182A CN111177182A (zh) 2020-05-19
CN111177182B true CN111177182B (zh) 2023-06-30

Family

ID=70622384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911319314.7A Active CN111177182B (zh) 2019-12-19 2019-12-19 数据查询方法和装置、存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN111177182B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035542B (zh) * 2020-08-28 2023-07-04 成都质数斯达克科技有限公司 信息查询方法、装置、电子设备及可读存储介质
CN112506987B (zh) * 2020-11-19 2022-05-20 杭州趣链科技有限公司 基于区块链的查询方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083620A (zh) * 2019-03-21 2019-08-02 深圳壹账通智能科技有限公司 基于区块链的数据查询方法及装置、存储介质、电子装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2973234C (en) * 2015-03-26 2018-05-15 Caswil Corporation System and method for querying data sources
CN105868249A (zh) * 2015-12-15 2016-08-17 乐视网信息技术(北京)股份有限公司 数据查询控制方法及装置
CN105404690B (zh) * 2015-12-16 2019-06-21 华为技术服务有限公司 查询数据库的方法和装置
CN110800004A (zh) * 2016-12-30 2020-02-14 斯洛克It有限公司 区块链启用的服务提供商系统
CN108920523B (zh) * 2018-06-04 2020-09-29 深圳乐信软件技术有限公司 区块链上数据查询方法、装置、设备、系统及介质
CN109885583A (zh) * 2019-01-17 2019-06-14 平安城市建设科技(深圳)有限公司 基于区块链的数据查询方法、装置、设备及存储介质
CN110309196A (zh) * 2019-05-22 2019-10-08 深圳壹账通智能科技有限公司 区块链数据存储和查询方法、装置、设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083620A (zh) * 2019-03-21 2019-08-02 深圳壹账通智能科技有限公司 基于区块链的数据查询方法及装置、存储介质、电子装置

Also Published As

Publication number Publication date
CN111177182A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN101316226B (zh) 一种获取资源的方法、装置及系统
EP2835938B1 (en) Message publishing and subscribing method and apparatus
CN111177182B (zh) 数据查询方法和装置、存储介质和电子设备
KR20180099841A (ko) 단축 링크를 처리하는 방법 및 장치, 및 단축 링크 서버
EP2410771B1 (en) Method and system for implementing location service
CN107728497B (zh) 用于人机交互的通信方法
CN103607376A (zh) 一种兼容协议的方法及装置
CN114090388A (zh) 信息获取方法、服务器集群、服务器及设备
CN105656643B (zh) 一种基于网络配置协议进行兼容管理的方法及设备
CN111369237A (zh) 一种数据处理方法、装置及计算机存储介质
CN113467832A (zh) 设备控制处理方法、装置、存储介质及电子装置
CN114025027A (zh) 数据传输脚本的运行方法、装置、存储介质和电子装置
CN109814916B (zh) 一种ivr流程的配置方法、装置、存储介质和服务器
US8280943B1 (en) Managing service provider messaging
CN111124355B (zh) 信息处理方法、装置、可读存储介质及电子设备
CN111901220B (zh) 确定聊天机器人的方法和应答系统
CN116668520A (zh) 一种基于网关的服务编排方法、系统、设备及存储介质
KR101925559B1 (ko) 지휘소 시스템 및 이의 메시지 처리 방법
CA2835193A1 (en) Email address and telephone number unification systems and methods
CN111224756B (zh) 确定数据传输异常的方法、装置、存储介质及电子设备
CN110012040B (zh) 一种移动终端中多状态的挂件更新方法及系统
JP2011035811A (ja) ストレージシステム、アクセス管理装置、データ転送方法およびプログラム
CN111026615A (zh) 一种逻辑卷列表获取方法、装置及电子设备和存储介质
CN111163100A (zh) 数据结构、通信方法、装置、存储介质及设备
KR20150123074A (ko) 데이터 분산 서비스에서의 기능 모듈 모듈화 방법 및 모듈화 장치

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210302

Address after: 201111 2nd floor, building 2, no.1508, Kunyang Road, Minhang District, Shanghai

Applicant after: Dalu Robot Co.,Ltd.

Address before: No.3, 7th floor, unit 1, building 5, No.399, Fucheng Avenue West, Chengdu, Sichuan 610094

Applicant before: CLOUDMINDS (CHENGDU) TECHNOLOGIES Co.,Ltd.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 201111 Building 8, No. 207, Zhongqing Road, Minhang District, Shanghai

Applicant after: Dayu robot Co.,Ltd.

Address before: 201111 2nd floor, building 2, no.1508, Kunyang Road, Minhang District, Shanghai

Applicant before: Dalu Robot Co.,Ltd.

GR01 Patent grant
GR01 Patent grant