CN113704248B - 一种基于外置索引的区块链查询优化方法 - Google Patents
一种基于外置索引的区块链查询优化方法 Download PDFInfo
- Publication number
- CN113704248B CN113704248B CN202110784835.0A CN202110784835A CN113704248B CN 113704248 B CN113704248 B CN 113704248B CN 202110784835 A CN202110784835 A CN 202110784835A CN 113704248 B CN113704248 B CN 113704248B
- Authority
- CN
- China
- Prior art keywords
- block
- index
- query
- attribute
- connection
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000005457 optimization Methods 0.000 title claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Computational Linguistics (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于外置索引的区块链查询优化方法,该方法包括:基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;基于层次索引,进行区块链交易查询。通过本发明提供的一种基于外置索引的区块链查询优化方法,可以加快特定属性上范围查询的效率,从而优化区块链的查询性能。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于外置索引的区块链查询优化方法。
背景技术
随着区块链的发展,其应用在越来越多的领域,由此对区块链的查询能力要求越来越高。
然而,当前区块链***大多使用K-V(Key-Value,键-值)模型进行查询,K-V模型表达能力有限导致交易数据语义描述不足,难以支持复杂查询,因此当前区块链支持的查询语义丰富度和查询效率都十分有限。
发明内容
针对现有技术存在的问题,本发明提供一种基于外置索引的区块链查询优化方法。
第一方面,本发明提供一种基于外置索引的区块链查询优化方法,包括:
基于指定交易属性创建层次索引;其中,所述层次索引包括第一层索引和第二层索引,所述第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,所述索引项使用位图表示,所述位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,所述第二层索引为由每个区块对应的索引树组成的树型索引,所述索引树的叶子节点存储了区块中包含的所述指定交易属性的属性值以及指向所述属性值对应交易存储位置的指针;
基于所述层次索引,进行区块链交易查询。
可选地,所述索引项基于区块中的属性值和对应属性的等深直方图生成。
可选地,所述索引树为B+树。
可选地,所述方法还包括:
若确定所述索引树的叶子节点已满,则直接生成一个新的叶子节点作为最右叶子节点存储区块中新增的属性值以及指向所述新增的属性值对应交易存储位置的指针。
可选地,所述区块链交易查询为追溯查询;
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于查询目标交易的时间窗口条件、查询属性及查询属性对应的属性值;
确定满足所述时间窗口条件的区块集合;
基于所述查询属性对应的第一层索引和所述查询属性对应的属性值,从所述满足所述时间窗口条件的区块集合中确定包含所述目标交易的目标区块集合;
基于所述查询属性对应的第二层索引和所述查询属性对应的属性值,遍历查询所述目标区块集合中的每个区块,得到指向查询结果的交易指针集合。
可选地,所述区块链交易查询为链上连接查询;
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,分别确定包含所述第一连接表中的交易的第一区块集合和包含所述第二连接表中的交易的第二区块集合;
若确定第一区块中对应所述连接属性的属性值范围与第二区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第一区块和所述第二区块之间执行排序合并连接,获得查询结果;
其中,所述第一区块属于所述第一区块集合,所述第二区块属于所述第二区块集合。
可选地,所述区块链交易查询为联合查询;
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于联合查询的时间窗口条件、连接属性、链上连接表及包含链下连接表中的交易的第三区块集合;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,确定包含所述链上连接表中的交易的第四区块集合;
若确定第三区块中对应所述连接属性的属性值范围与第四区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第三区块和所述第四区块之间执行排序合并连接,获得查询结果;
其中,所述第三区块属于所述第三区块集合,所述第四区块属于所述第四区块集合。
第二方面,本发明还提供一种基于外置索引的区块链查询优化装置,包括:
创建模块,用于基于指定交易属性创建层次索引;其中,所述层次索引包括第一层索引和第二层索引,所述第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,所述索引项使用位图表示,所述位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,所述第二层索引为由每个区块对应的索引树组成的树型索引,所述索引树的叶子节点存储了区块中包含的所述指定交易属性的属性值以及指向所述属性值对应交易存储位置的指针;
查询模块,用于基于所述层次索引,进行区块链交易查询。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述第一方面所述的基于外置索引的区块链查询优化方法的步骤。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述第一方面所述的基于外置索引的区块链查询优化方法的步骤。
本发明提供的一种基于外置索引的区块链查询优化方法,通过在指定交易属性上面创建结合位图索引和树型索引结构特定的层次索引,可以加快特定属性上范围查询的效率,从而优化区块链的查询性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于外置索引的区块链查询优化方法的流程示意图;
图2是本发明提供的索引结构的设计示意图;
图3是本发明提供的追溯查询的流程示意图;
图4是本发明提供的链上连接查询的流程示意图;
图5是本发明提供的联合查询的流程示意图;
图6是本发明提供的数据库设计示意图;
图7是本发明提供的不同数据集规模下Q1查询性能对比图;
图8是本发明提供的不同结果集规模下Q1查询性能对比图;
图9是本发明提供的不同结果集规模下Q3查询性能对比图;
图10是本发明提供的不同数据集规模下Q4查询性能对比图;
图11是本发明提供的基于外置索引的区块链查询优化装置的结构示意图;
图12是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前区块链查询语义丰富度和查询效率都十分有限,其在数据查询方面还存在着如下问题:首先,数据的语义不够丰富,区块链***大多使用表达能力有限的K-V模型导致交易数据语义描述不足,难以支持复杂查询;其次,数据的操作不足,现有***通常将区块数据存储在K-V数据库中,只支持简单的访问方式,因此,虽然交易是结构化的,但现有***还无法支持交易数据上的关系操作;一些***将区块数据导入到链下数据库中进行查询,但数据迁移带来了额外的***开销,数据复制存储带来了额外的存储成本;最后,数据集成困难。为了减小存储、网络开销或保护隐私,现有方案将规模较大的数据或隐私数据存储在链下数据库中,将数据摘要存储在区块链上,但这种方式使得同一实体相关的信息同时存储在链上和链下,导致数据集成困难。由于数据一致性和数据隐私的问题,用户无法使用智能合约访问链下数据,而将区块链数据导入到链下数据库进行查询则会引入额外的存储开销。
针对当前区块链***关系语义描述不足,使得所支持的查询类型有限的问题,本发明将关系语义描述引入到区块链***,通过关系模型为区块数据建模使其支持由选择、投影与连接等基本关系算子组成的复杂查询。***只存储一份数据,在提升区块链***查询处理能力的同时,不带来额外存储空间。
并且,针对区块链对于关系查询速率低下的问题,本发明设计了树型、位图索引和层次索引来提高数据访问。基于上述索引结构,能够优化关系描述在区块链上的查询,例如在区块链上进行追溯查询、连接查询。除此之外,还能够实现链上链下连接算子以支持数据集成的查询。
图1为本发明提供的基于外置索引的区块链查询优化方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤100、基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;
步骤101、基于层次索引,进行区块链交易查询。
具体地,数据语义的缺失使得区块链***难以支持复杂查询,为了支持区块数据上的丰富查询,首先要添加数据语义。实际上,交易是结构化的,一个典型的交易包含两种属性:***属性和自定义属性。***属性包含交易哈希、交易发送者等,用户自定义的属性包含智能合约参数等。调用同种操作的交易具有相同的结构,同一类型的交易通过统一的关系模式描述,通过声明关系表模式来确定交易结构,属性类型可以是字符、数字或者其它类型。表属性分为两类:***属性和应用属性。***属性在创建表模式时自动添加,如交易类型、交易发送者等;应用属性由用户显式指定,通常是与应用相关的参数。用户可以发送一个特殊交易来创建表模式,通过共识算法同步节点之间的表模式信息。
在实际应用中,数据通常同时存储在区块链***与数据库中。数据被存储在区块链***中,也被称为链上数据,按照区块结构组织。大规模数据则由本地数据库管理,也被称为链下数据,存储在链下的关系表中。相应地,链上查询,即查询区块链中存储的数据,链上链下联合查询,即同时查询链上链下数据。
为了提升面向区块存储的查询性能,本发明设计了索引结构来加速数据访问,主要面向三种基本操作:(1)给定区块号、交易号或者时间戳获取区块。(2)获取属于某一张数据表的所有交易数据。(3)给定某个属性具体的查询条件下获取满足条件的交易。在区块链***中索引结构的设计面临着诸多的挑战,首先,索引更新对***写入性能带来的影响,单个区块可能会引起大量的索引更新,影响***的写读性能。其次,需要支持基于时间窗口的查询。区块链存储了所有的历史交易,而用户可能查询特定时间内的交易。因此本发明提出了写入高效的索引结构:树型、位图索引和将两者综合使用的层次索引。
图2为本发明提供的索引结构的设计示意图,如图2所示,索引结构包括区块索引(block index)、表级位图索引(table bitmap index)以及层次索引(level index)。
其中,区块索引是一种包含区块号、交易号和时间戳信息的树型索引,使用区块索引可以记录区块链上的所有区块信息。
区块索引可以是一颗B+树,其表示为一个三元组(bid,tid,Ts),其中bid为区块号,tid为区块中的第一个交易号,交易号可以唯一地标识一笔交易,此处使用递增的整数标识,Ts表示区块的时间戳,如图2中所示的(n,j,Tsn),叶子节点存储了指向区块存储位置的指针,如图1中所示的pn。对于任意两个区块bi和bj,如果区块bi的打包时间比bj早,那么区块bi的区块号、交易号、时间戳都早于区块bj。
新区块的生成会触发区块索引的更新,由于新区块的bid,tid和Ts随着区块扩充而递增,新区块对应的搜索码值总是被直接追加存储到最右叶子节点。不同于传统的B+树叶子***方式,本发明实施例中,如果该叶子节点已满,区块索引可以直接生成一个新的叶子节点作为最右叶子节点存储搜索码值,从而避免叶子节点***导致的存储资源浪费,这样更新的效率性能更高。
位图是一种实用并且开销较小的数据结构。位图可代表的含义丰富,占用空间很小。将位图的一个标记与区块链中的数据分布相关联,并赋予位图不同的含义,可将无用的区块过滤,提高查询效率。
例如,将位图赋予关系表(table)的含义,那么表在区块链上便形成相应的位图,如图2中所示的表级位图索引。若在第k个区块有关系表数据,那么位图第k位为1,反之为0。
位图还可以建立在***属性上进行查询。除此之外,也可以建立在普通的属性值上。
新区块的生成会触发位图索引的更新。假设该区块为***中第i个区块且恰好含有某张关系表的交易,那么该关系表对应的位图的第i位被置为1,反之,则置为0。因此,位图索引的更新开销仅为一次置位操作。对于指定关系表上的查询请求,通过查找该表对应的位图中置1的位,可以找到包含该表交易的区块,从而避免扫描所有区块。
层次索引可以建立在指定的交易属性上面,根据属性值建立索引,从而可以加快特定属性上范围查询的速率。
层次索引包括第一层索引和第二层索引,第一层索引是由区块号和每个区块号对应的索引项组成的位图索引。可选地,索引项可以基于区块中的属性值和对应属性的等深直方图生成,离散属性中等深直方图中的每一个桶(bucket)表示一个属性值,连续属性的等深直方图,根据属性值分布情况生成,桶表示属性值范围,例如图2中所示的bucket1表示的属性值范围为0-300。每个区块对应一个索引项,索引项使用位图表示,并记录了区块中的数据范围,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,例如图2中所示的block1对应位图为1001001101,则位图中第1位为1表示block1中包含bucket1属性值范围(即0-300)的交易,位图中第2位为0则表示block1中不包含bucket2属性值范围(即300-600)的交易。
层次索引的第二层为由每个区块对应的索引树组成的树型索引,每个区块对应一个建立在索引列上的索引树,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针,创建第二层索引的目的是避免扫描整个区块。可选地,索引树可以是一颗B+树。
可选地,本发明实施例中,层次索引的第二层索引可以采用与上述区块索引相同的叶子节点***方式,如果确定索引树的叶子节点已满,则直接生成一个新的叶子节点作为最右叶子节点存储区块中新增的属性值以及指向新增的属性值对应交易存储位置的指针。
需要说明的是,上述层次索引中,等深直方图的深度可根据具体的场景建立,等深直方图和层次索引可以根据具体的关系表和数据建立。索引一般存储在内存,但当索引占用内存过大时,早期的索引结构可以存储在磁盘上,将近期的索引结构缓存在内存中。
本发明实施例提供的基于外置索引的区块链查询优化方法,通过在指定交易属性上面创建结合位图索引和树型索引结构特定的层次索引,可以加快特定属性上范围查询的效率,从而优化区块链的查询性能。
可选地,所述区块链交易查询为追溯查询;
所述基于层次索引,进行区块链交易查询,包括:
获取用于查询目标交易的时间窗口条件、查询属性及查询属性对应的属性值;
确定满足时间窗口条件的区块集合;
基于查询属性对应的第一层索引和查询属性对应的属性值,从满足时间窗口条件的区块集合中确定包含目标交易的目标区块集合;
基于查询属性对应的第二层索引和查询属性对应的属性值,遍历查询目标区块集合中的每个区块,得到指向查询结果的交易指针集合。
具体地,追溯查询可以通过扫描所有区块并检查区块中的所有交易实现,但这种方式查询效率低下。通过位图索引可以优化查询性能,例如追溯某一发送者发出的所有交易,通过追溯该发送者的所有交易,通过位图得到对应的区块,然后扫描这些区块获取查询结果,从而避免扫描所有区块。本发明实施例中,通过层级索引可以使查询效率更高。
具体地,本发明实施例中,基于层次索引进行追溯查询,首先可以根据追溯查询的查询语句或查询条件获取用于查询目标交易的时间窗口条件、查询属性及查询属性对应的属性值,其中查询属性可以是一个或多个;然后,可以通过时间查询索引结构得到满足时间窗口条件的区块集合,例如可以基于上述区块索引来快速确定包含指定时间窗口的交易的区块集合;在该区块集合的基础上,再基于查询属性对应的属性值查询该查询属性对应的第一层索引,可以得到包含目标交易的目标区块集合,如果查询属性为多个,则将每个查询属性基于第一层索引获得的区块集合求取交集,得到包含目标交易的目标区块集合;最后,基于查询属性对应的属性值查询该查询属性对应的第二层索引,遍历查询目标区块集合中的每个区块,可以得到指向查询结果的交易指针集合,该交易指针集合包含了指向查询结果的指针,根据这些指针可以从磁盘读取交易并输出查询结果。
图3为本发明提供的追溯查询的流程示意图,如图3所示,基于层次索引进行追溯查询Q=〈Trace,(SenID,o),(Tname,p),[c,e]〉(其中,Trace表示追溯查询,SenID表示查询属性为交易发送者,o为对应的属性值,Tname表示查询属性为交易类型,p为对应的属性值,[c,e]为时间窗口)的过程包括如下步骤:
步骤300、开始;
具体地,创建在***字段SenID和Tname上的层次索引Id和In,其覆盖了区块链***内的所有交易。
步骤301、通过时间查询区块索引得集合B;
具体地,Search函数根据时间窗口查询区块索引并得到一个集合B,如果区块i在时间窗口中,则B中包含i。
步骤302、搜索Id和In的第一层索引,得到集合B'和B”;
具体地,FirstLevelBitmap函数搜索Id和In的第一层索引,得到集合B'和B”,如果区块j包含了o发送的交易并且j在B中,那么j在B'中,如果区块j包含了交易类型为p的交易并j且在B中,则j包含在B”中。
步骤303、B'和B”进行交集,得到满足属性集合;
具体地,对B'和B”进行交集操作可以得到在指定时间窗口内,并包含SenID属性值为o和Tname属性值为p交易的区块。
步骤304、搜索第二层索引获得查询结果;
具体地,SecondLevel函数通过搜索第二层索引获取查询结果,对于每一个区块,以“SenID=o”和“Tname=p”为查询条件分别查询Id和In,分别得到交易指针集合。
步骤305、得到交易集合输出结果;
具体地,上述交易指针集合的交集中包含了指向查询结果的指针,Read函数根据这些指针从磁盘读取交易并输出查询结果。
步骤306、结束。
可选地,所述区块链交易查询为链上连接查询;
所述基于层次索引,进行区块链交易查询,包括:
获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;
确定满足时间窗口条件的区块集合;
基于连接属性对应的第一层索引,从满足时间窗口条件的区块集合中,分别确定包含第一连接表中的交易的第一区块集合和包含第二连接表中的交易的第二区块集合;
若确定第一区块中对应连接属性的属性值范围与第二区块中对应连接属性的属性值范围存在交集,则基于连接属性对应的第二层索引,在第一区块和第二区块之间执行排序合并连接,获得查询结果;
其中,第一区块属于第一区块集合,第二区块属于第二区块集合。
具体地,传统的连接算法,如嵌套循环连接等算法由于数据分散存储导致查询开销巨大无法直接应用在区块链中。本发明实施例可以基于层次索引实现一趟扫描哈希连接算法,对于表r与表s上的连接查询,首先,扫描所有的区块,并使用哈希函数构造交易分区,对于每个分区都建立一个哈希索引,对于分区中的每一笔交易t,探查该哈希索引来获取所有满足连接条件的交易t。通过位图索引,可以提升连接查询的性能,因为只有包含r或s的交易的区块需要被读取。而通过层次索引可以使得查询性能更高。
具体地,本发明实施例中,基于层次索引进行链上连接查询,首先可以根据查询语句或查询条件获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;然后,可以通过时间查询索引结构得到满足时间窗口条件的区块集合,例如可以基于上述区块索引来快速确定包含指定时间窗口的交易的区块集合;在该区块集合的基础上,再基于连接属性对应的第一层索引,可以得到包含第一连接表中的交易的第一区块集合和包含第二连接表中的交易的第二区块集合;如果第一区块属于第一区块集合,第二区块属于第二区块集合,且第一区块中对应连接属性的属性值范围与第二区块中对应连接属性的属性值范围存在交集,则第一区块和第二区块可能会产生连接查询结果,从而可以基于连接属性对应的第二层索引,在第一区块和第二区块之间执行排序合并连接,获得查询结果。
图4为本发明提供的链上连接查询的流程示意图,如图4所示,基于层次索引进行链上连接查询Q=〈On,r,s,r.attr=s.attr,[c,e]〉(其中,On表示链上连接查询,r和s表示连接表,=表示等值连接条件,[c,e]表示时间窗口,attr表示连接属性)的过程包括如下步骤:
步骤400、开始;
具体地,在表r和表s的attr上面创建Ir和Is层次索引。
步骤401、查询区块索引得到集合B;
具体地,Search函数查询区块索引并得到一个集合B,如果区块i在时间窗口中,那么i包含在B中。
步骤402、搜索Ir和Is的第一层索引,得到时间窗口内,含有表r和s的区块,为集合B'和B”;
具体地,FirstLevelBitmap函数查询Ir和Is的第一层索引,可以分别得到在时间窗口内,并含有属于表r或表s的交易区块,记录在B'和B”中。
步骤403、判断┐(k.u<m.l∨k.l>m.u);
具体地,对B'中每一个元素i和B”中每一个元素j,令eri和esj分别表示Ir中区块i的索引项和Is中区块j的索引项,k和m表示等深直方图中的桶,其上界和下界为(l,u)。如果Intersect函数返回TRUE,即m∈esj使得┐(k.u<m.l∨k.l>m.u)为真,则区块i和j可能会产生连接查询结果。其中,k.u表示桶k的下界u的值,m.l表示桶m的上界l的值,k.l表示桶k的上界l的值,m.u表示桶m的下界u的值。
步骤404、基于第二层索引执行区块i和j之间的排序合并连接,输出结果;
具体地,通过SortMergeJoin函数基于第二层索引执行区块i和j上的排序合并连接最后输出查询结果。
步骤405、结束。
可选地,所述区块链交易查询为联合查询;
所述基于层次索引,进行区块链交易查询,包括:
获取用于联合查询的时间窗口条件、连接属性、链上连接表及包含链下连接表中的交易的第三区块集合;
确定满足时间窗口条件的区块集合;
基于连接属性对应的第一层索引,从满足时间窗口条件的区块集合中,确定包含链上连接表中的交易的第四区块集合;
若确定第三区块中对应连接属性的属性值范围与第四区块中对应连接属性的属性值范围存在交集,则基于连接属性对应的第二层索引,在第三区块和第四区块之间执行排序合并连接,获得查询结果;
其中,第三区块属于第三区块集合,第四区块属于第四区块集合。
具体地,本发明实施例中,链上链下联合查询也可以基于层次索引实现一趟扫描哈希连接算法。首先,从链下数据库获取链下关系表s的数据,然后扫描区块获取链上关系表r中的数据,最后通过哈希连接算法获取查询结果。在查询中使用层次索引可以优化查询性能,只有包含属于关系表r的交易的区块才会被读取。
具体地,本发明实施例中,基于层次索引进行联合查询,首先可以根据查询语句或查询条件获取用于联合查询的时间窗口条件、连接属性、链上连接表,以及通过链下数据库得到包含链下连接表中的交易的第三区块集合;然后,可以通过时间查询索引结构得到满足时间窗口条件的区块集合,例如可以基于上述区块索引来快速确定包含指定时间窗口的交易的区块集合;在该区块集合的基础上,再基于连接属性对应的第一层索引,可以得到包含链上连接表中的交易的第四区块集合;如果第三区块属于第三区块集合,第四区块属于第四区块集合,且第三区块中对应连接属性的属性值范围与第四区块中对应连接属性的属性值范围存在交集,则第三区块和第四区块可能会产生连接查询结果,从而可以基于连接属性对应的第二层索引,在第三区块和第四区块之间执行排序合并连接,获得查询结果。
图5为本发明提供的联合查询的流程示意图,如图5所示,基于层次索引进行联合查询Q=〈Onoff,r,s,r.attr=s.attr,[c,e]〉(其中,Onoff表示联合查询,r表示链上连接表,s表示链下连接表,=表示等值连接条件,[c,e]表示时间窗口,attr表示连接属性)的过程包括如下步骤:
步骤500、开始;
具体地,在属性r.attr上建立层次索引Ir。
步骤501、通过时间查询树型索引得集合B;
具体地,Search函数根据时间窗口查询区块索引并得到集合B,如果区块i在时间窗口中,则i包含在B中。
步骤502、链下数据根据s.attr属性进行排序操作;
具体地,链下数据传输到区块链之前,链下数据根据s.attr属性进行排序操作。
步骤503、根据[Smin,Smax]过滤不包含连接结果的区块;
具体地,排序操作后,通过链下数据的s.attr属性值范围[Smin,Smax]可以过滤不包含连接结果的区块,得到含有s.attr属性值范围[Smin,Smax]内交易的区块集合B'。
步骤504、通过第一层索引获取所有在时间窗口内并包含表r的数据的区块;
具体地,FirstLevelBitmap函数查询Ir的第一层索引,可以得到在时间窗口内,并含有属于表r的交易区块,记录在B”中。
步骤505、判断┐(k.u<Smin∨k.l>Smax);
具体地,对B'中每一个元素d和B”中每一个元素i,令eri表示Ir中区块i的索引项,k表示等深直方图中的桶,其上界和下界为(l,u)。如果Intersect函数返回TRUE,即使得┐(k.u<Smin∨k.l>Smax)为真,则区块d和i可能会产生连接查询结果。其中,k.u表示桶k的下界u的值,k.l表示桶k的上界l的值。
步骤506、第二层索引在区块i和区块d之间执行排序合并连接,输出结果;
具体地,如果Intersect函数返回TRUE,则区块i将参与连接处理。使用第二层索引在区块i和d之间通过SortMergeJoin函数执行排序合并连接可以获取结果,最后输出结果。
步骤507、结束。
下面通过具体实验环境对本发明提供的查询性能进行介绍说明。
图6为本发明提供的数据库设计示意图,如图6所示,数据库包括存储区块链上数据的数据库和存储链下数据的数据库,通过在同一实验环境中测试不同查询的性能,对比说明不同索引结构的查询效率。
测试语句分为Q1、Q2、Q3和Q4四种,如下所示:
其中,Q1和Q2测试追溯查询的性能。Q1为一维的追溯查询,追溯慈善机构“org1”发出的所有交易,而Q2为二维的追溯查询,追溯“org1”发出的Transfer交易。Q3和Q4测试链上查询的性能。Q3是在Donate上的范围查询。Q4是联合查询,查询被捐赠者的详细信息。通过查询的响应时间对比查询性能。
测试数据集:在所有的实验中,区块大小都设置为4MB,交易大小都设置为300字节。实验首先测试了不同结果集规模和数据集规模下的查询性能。为了测试不同数据集规模下***的查询性能,将查询结果集规模固定,并将查询的区块数从500开始,以500个区块为阶梯递增。为了测试不同结果集规模下的查询性能,将区块数固定为1000,并改变结果集规模。交易在区块间遵循均匀分布或高斯分布,以测试不同数据分布下的查询性能。
分别使用SU、SG、BU、BG、LU和LG代表基于区块扫描、表级位图索引和层次索引在交易数据均匀分布和高斯分布下的查询执行,其中SU表示基于区块扫描在交易数据均匀分布下的查询执行,SG表示基于区块扫描在交易数据高斯分布下的查询执行,BU表示基于表级位图索引在交易数据均匀分布下的查询执行,BG表示基于表级位图索引在交易数据高斯分布下的查询执行,LU表示基于层次索引在交易数据均匀分布下的查询执行,LG表示基于层次索引在交易数据高斯分布下的查询执行。使用SIU、SIG、TIU和TIG表示在交易数据均匀分布和高斯分布下使用单个或两个层次索引时追溯查询的性能,其中SIU表示在交易数据均匀分布下使用单个层次索引时追溯查询的性能,SIG表示在交易数据高斯分布下使用单个层次索引时追溯查询的性能,TIU表示在交易数据均匀分布下使用两个层次索引时追溯查询的性能,TIG表示在交易数据高斯分布下使用两个层次索引时追溯查询的性能。
追溯查询:图7为本发明提供的不同数据集规模下Q1查询性能对比图,图8为本发明提供的不同结果集规模下Q1查询性能对比图。图7中,结果大小固定为10000。基于层次索引的查询处理在所有情况下都明显优于其他两种方法,因为基于层次索引的方法只需直接从磁盘读取查询结果,且当前结果集规模比较小。基于表级位图索引的查询处理需要读取所有存在查询结果的区块,而基于区块扫描的查询则需要读取区块链中所有的区块,这两者的开销都比较大。
接下来,测试了Q2查询的性能。SIU和SIG使用在***SenID上创建的层次索引,利用单个层次索引进行二维的追溯查询,TIU和TIG使用在SenID和Tname上创建的两个层次索引进行二维的追溯。结果显示,基于层次索引的查询处理在所有情况下都明显优于其他两种方法。
范围查询:本组实验中直方图的深度设置为100,存在10000笔Donate交易。图9为本发明提供的不同结果集规模下Q3查询性能对比图。图9中,交易结果集规模从1000上升到10000,结果集规模变大时,三种方法之间的差异会变小,这是因为基于层次索引的查询方法随磁盘I/O(Input/Output,输入/输出)增加,性能下降。交易分布在更多的区块中,因此基于位图索引的查询方法也性能下降。
联合查询:本实验测试了基于层次索引的联合查询。图10为本发明提供的不同数据集规模下Q4查询性能对比图。如图10所示,基于层次索引的方法的性能优于其他两种方法,因为其只需要读取与链下数据范围相交的区块,基于第二层索引读取数据可以进一步提升查询的性能。
下面对本发明提供的基于外置索引的区块链查询优化装置进行描述,下文描述的基于外置索引的区块链查询优化装置与上文描述的基于外置索引的区块链查询优化方法可相互对应参照。
图11为本发明提供的基于外置索引的区块链查询优化装置的结构示意图,如图11所示,该装置包括:
创建模块1100,用于基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;
查询模块1110,用于基于层次索引,进行区块链交易查询。
可选地,所述索引项基于区块中的属性值和对应属性的等深直方图生成。
可选地,所述索引树为B+树。
可选地,所述装置还包括:
生成模块1120,用于若确定索引树的叶子节点已满,则直接生成一个新的叶子节点作为最右叶子节点存储区块中新增的属性值以及指向新增的属性值对应交易存储位置的指针。
可选地,所述区块链交易查询为追溯查询;
所述查询模块1110,用于:获取用于查询目标交易的时间窗口条件、查询属性及查询属性对应的属性值;确定满足时间窗口条件的区块集合;基于查询属性对应的第一层索引和查询属性对应的属性值,从满足时间窗口条件的区块集合中确定包含目标交易的目标区块集合;基于查询属性对应的第二层索引和查询属性对应的属性值,遍历查询目标区块集合中的每个区块,得到指向查询结果的交易指针集合。
可选地,所述区块链交易查询为链上连接查询;
所述查询模块1110,用于:获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;确定满足时间窗口条件的区块集合;基于连接属性对应的第一层索引,从满足时间窗口条件的区块集合中,分别确定包含第一连接表中的交易的第一区块集合和包含第二连接表中的交易的第二区块集合;若确定第一区块中对应连接属性的属性值范围与第二区块中对应连接属性的属性值范围存在交集,则基于连接属性对应的第二层索引,在第一区块和第二区块之间执行排序合并连接,获得查询结果;其中,第一区块属于第一区块集合,第二区块属于第二区块集合。
可选地,所述区块链交易查询为联合查询;
所述查询模块1110,用于:获取用于联合查询的时间窗口条件、连接属性、链上连接表及包含链下连接表中的交易的第三区块集合;确定满足时间窗口条件的区块集合;基于连接属性对应的第一层索引,从满足时间窗口条件的区块集合中,确定包含链上连接表中的交易的第四区块集合;若确定第三区块中对应连接属性的属性值范围与第四区块中对应连接属性的属性值范围存在交集,则基于连接属性对应的第二层索引,在第三区块和第四区块之间执行排序合并连接,获得查询结果;其中,第三区块属于第三区块集合,第四区块属于第四区块集合。
在此需要说明的是,本发明提供的上述装置,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
图12为本发明提供的电子设备的结构示意图,如图12所示,该电子设备可以包括:处理器(processor)1210、通信接口(Communications Interface)1220、存储器(memory)1230和通信总线1240,其中,处理器1210,通信接口1220,存储器1230通过通信总线1240完成相互间的通信。处理器1210可以调用存储器1230中的逻辑指令,以执行上述各实施例提供的任一所述基于外置索引的区块链查询优化方法的步骤,例如:基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;基于层次索引,进行区块链交易查询。
此外,上述的存储器1230中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例提供的任一所述基于外置索引的区块链查询优化方法的步骤,例如:基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;基于层次索引,进行区块链交易查询。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的任一所述基于外置索引的区块链查询优化方法的步骤,例如:基于指定交易属性创建层次索引;其中,层次索引包括第一层索引和第二层索引,第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,索引项使用位图表示,位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,第二层索引为由每个区块对应的索引树组成的树型索引,索引树的叶子节点存储了区块中包含的指定交易属性的属性值以及指向属性值对应交易存储位置的指针;基于层次索引,进行区块链交易查询。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种基于外置索引的区块链查询优化方法,其特征在于,包括:
基于指定交易属性创建层次索引;其中,所述层次索引包括第一层索引和第二层索引,所述第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,所述索引项使用位图表示,所述位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,所述第二层索引为由每个区块对应的索引树组成的树型索引,所述索引树的叶子节点存储了区块中包含的所述指定交易属性的属性值以及指向所述属性值对应交易存储位置的指针;
基于所述层次索引,进行区块链交易查询;
所述区块链交易查询为链上连接查询或联合查询;
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,分别确定包含所述第一连接表中的交易的第一区块集合和包含所述第二连接表中的交易的第二区块集合;
若确定第一区块中对应所述连接属性的属性值范围与第二区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第一区块和所述第二区块之间执行排序合并连接,获得查询结果;
其中,所述第一区块属于所述第一区块集合,所述第二区块属于所述第二区块集合;或者,
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于联合查询的时间窗口条件、连接属性、链上连接表及包含链下连接表中的交易的第三区块集合;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,确定包含所述链上连接表中的交易的第四区块集合;
若确定第三区块中对应所述连接属性的属性值范围与第四区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第三区块和所述第四区块之间执行排序合并连接,获得查询结果;
其中,所述第三区块属于所述第三区块集合,所述第四区块属于所述第四区块集合。
2.根据权利要求1所述的基于外置索引的区块链查询优化方法,其特征在于,所述索引项基于区块中的属性值和对应属性的等深直方图生成。
3.根据权利要求1所述的基于外置索引的区块链查询优化方法,其特征在于,所述索引树为B+树。
4.根据权利要求1所述的基于外置索引的区块链查询优化方法,其特征在于,所述方法还包括:
若确定所述索引树的叶子节点已满,则直接生成一个新的叶子节点作为最右叶子节点存储区块中新增的属性值以及指向所述新增的属性值对应交易存储位置的指针。
5.一种基于外置索引的区块链查询优化装置,其特征在于,包括:
创建模块,用于基于指定交易属性创建层次索引;其中,所述层次索引包括第一层索引和第二层索引,所述第一层索引为由区块号和每个区块号对应的索引项组成的位图索引,所述索引项使用位图表示,所述位图中的1和0分别表示区块中包含和不包含相应属性值范围的交易,所述第二层索引为由每个区块对应的索引树组成的树型索引,所述索引树的叶子节点存储了区块中包含的所述指定交易属性的属性值以及指向所述属性值对应交易存储位置的指针;
查询模块,用于基于所述层次索引,进行区块链交易查询;
所述区块链交易查询为链上连接查询或联合查询;
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于链上连接查询的时间窗口条件、第一连接表、第二连接表及连接属性;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,分别确定包含所述第一连接表中的交易的第一区块集合和包含所述第二连接表中的交易的第二区块集合;
若确定第一区块中对应所述连接属性的属性值范围与第二区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第一区块和所述第二区块之间执行排序合并连接,获得查询结果;
其中,所述第一区块属于所述第一区块集合,所述第二区块属于所述第二区块集合;或者,
所述基于所述层次索引,进行区块链交易查询,包括:
获取用于联合查询的时间窗口条件、连接属性、链上连接表及包含链下连接表中的交易的第三区块集合;
确定满足所述时间窗口条件的区块集合;
基于所述连接属性对应的第一层索引,从所述满足所述时间窗口条件的区块集合中,确定包含所述链上连接表中的交易的第四区块集合;
若确定第三区块中对应所述连接属性的属性值范围与第四区块中对应所述连接属性的属性值范围存在交集,则基于所述连接属性对应的第二层索引,在所述第三区块和所述第四区块之间执行排序合并连接,获得查询结果;
其中,所述第三区块属于所述第三区块集合,所述第四区块属于所述第四区块集合。
6.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述基于外置索引的区块链查询优化方法的步骤。
7.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述基于外置索引的区块链查询优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110784835.0A CN113704248B (zh) | 2021-07-12 | 2021-07-12 | 一种基于外置索引的区块链查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110784835.0A CN113704248B (zh) | 2021-07-12 | 2021-07-12 | 一种基于外置索引的区块链查询优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113704248A CN113704248A (zh) | 2021-11-26 |
CN113704248B true CN113704248B (zh) | 2024-01-09 |
Family
ID=78648457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110784835.0A Active CN113704248B (zh) | 2021-07-12 | 2021-07-12 | 一种基于外置索引的区块链查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704248B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153851A (zh) * | 2021-12-06 | 2022-03-08 | 智慧足迹数据科技有限公司 | Geohash索引方法、装置、计算机设备及存储介质 |
CN116628285B (zh) * | 2023-07-21 | 2023-11-03 | 北京邮电大学 | 区块链交易数据查询方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471905A (zh) * | 2018-11-16 | 2019-03-15 | 华东师范大学 | 一种支持时间范围和属性范围复合查询的区块链索引方法 |
CN109885615A (zh) * | 2019-01-24 | 2019-06-14 | 华东师范大学 | 一种基于索引的面向区块链轻客户端的范围查询可验证查询方法 |
KR20190134115A (ko) * | 2018-05-25 | 2019-12-04 | 주식회사 티맥스데이터 | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 |
CN109559231B (zh) * | 2018-12-29 | 2020-08-04 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
CN111917896A (zh) * | 2020-06-23 | 2020-11-10 | 北京邮电大学 | 一种可信的域名解析方法、***、电子设备及存储介质 |
CN112035466A (zh) * | 2020-07-29 | 2020-12-04 | 北京智融云河科技有限公司 | 一种区块链查询外置索引开发框架 |
CN112765181A (zh) * | 2021-01-27 | 2021-05-07 | 东北大学 | 一种基于区块索引结构的数据溯源查询方法 |
-
2021
- 2021-07-12 CN CN202110784835.0A patent/CN113704248B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190134115A (ko) * | 2018-05-25 | 2019-12-04 | 주식회사 티맥스데이터 | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 |
CN109471905A (zh) * | 2018-11-16 | 2019-03-15 | 华东师范大学 | 一种支持时间范围和属性范围复合查询的区块链索引方法 |
CN109559231B (zh) * | 2018-12-29 | 2020-08-04 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
CN109885615A (zh) * | 2019-01-24 | 2019-06-14 | 华东师范大学 | 一种基于索引的面向区块链轻客户端的范围查询可验证查询方法 |
CN111917896A (zh) * | 2020-06-23 | 2020-11-10 | 北京邮电大学 | 一种可信的域名解析方法、***、电子设备及存储介质 |
CN112035466A (zh) * | 2020-07-29 | 2020-12-04 | 北京智融云河科技有限公司 | 一种区块链查询外置索引开发框架 |
CN112765181A (zh) * | 2021-01-27 | 2021-05-07 | 东北大学 | 一种基于区块索引结构的数据溯源查询方法 |
Non-Patent Citations (3)
Title |
---|
Blockchain Meets Edge Computing: A Distributed and Trusted Authentication System;Shaoyong Guo;《IEEE TRANSACTIONS ON INDUSTRIAL INFORMATICS》;第16卷(第3期);全文 * |
Blockchain Meets Edge Computing: Stackelberg Game and Double Auction Based Task Offloading for Mobile Blockchain;Shaoyong Guo;《IEEE TRANSACTIONS ON VEHICULAR TECHNOLOGY》;第69卷(第5期);全文 * |
区块链技术在物联网中的应用;陈骞,郭少勇,代美玲,阮琳娜,亓峰;信息通信技术;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113704248A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111046034B (zh) | 管理内存数据及在内存中维护数据的方法和*** | |
CN108369587B (zh) | 创建用于交换的表 | |
JP3813089B2 (ja) | Rdbm断片化を管理するシステム | |
CN106933833B (zh) | 一种基于空间索引技术的位置信息快速查询方法 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
CN106874425B (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN107807932B (zh) | 一种基于路径枚举的层级数据管理方法和*** | |
CN107977446A (zh) | 一种基于数据分区的内存网格数据加载方法 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN111639075A (zh) | 一种基于扁平化r树的非关系数据库矢量数据管理方法 | |
WO2023083237A1 (zh) | 图数据的管理 | |
Song et al. | Haery: a Hadoop based query system on accumulative and high-dimensional data model for big data | |
Srivastava et al. | TBSAM: An access method for efficient processing of statistical queries | |
de Souza Baptista et al. | NoSQL geographic databases: an overview | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
CN111831696A (zh) | 基于图理论的资产信息存储方法和*** | |
CN113886505A (zh) | 一种基于搜索引擎和关系型数据库实现动态建模的管理*** | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
Zollmann | Nosql databases | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
CN112667859A (zh) | 基于内存的数据处理方法及装置 | |
Yang et al. | Workload-based ordering of multi-dimensional data | |
CN109492004A (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 |