一种基于多区块链环境下的连接查询优化方法

文档序号:26544625发布日期:2021-09-07 23:04阅读:237来源:国知局
一种基于多区块链环境下的连接查询优化方法

1.本发明涉及计算机区块链查询技术领域,尤其涉及一种基于多区块链环境下的连接查询优化方法。


背景技术:

2.近年来,随着比特币和以太坊等区块链系统的成功,区块链技术受到各行业的关注。作为一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库,区块链可提供高度的安全性和可靠性以及数据透明性,并广泛应用于医疗数据维护、供应链,金融基础设施和数据共享等领域。
3.随着区块链技术的发展,越来越多的数据被分散存储在不同区块链上,形成复杂的多链场景。由于不同区块链间具有隔离性,导致数据无法互通,从而形成数据孤岛,使得多链间的连接查询操作变得复杂。现有区块链系统只支持基于单链的数据查询操作,没有考虑多链场景下的数据连接查询处理。考虑到区块链间跨地域部署,直接进行数据连接操作产生巨大的本地计算负载与网络传输开销,严重影响连接查询效率,影响用户体验。因此多链连接查询处理的优化显得更为重要。


技术实现要素:

4.为解决上述技术问题,本发明提出一种多区块链环境下的连接查询优化方法。
5.一种基于多区块链的连接查询方法,包括以下步骤:
6.步骤1:采集医疗机构区块链数据作为输入,构建语义多链查询模型(semantic multi

chains model,smm)。具体过程如下:
7.步骤1.1:构建语义多链查询模型smm,其中包含若干条语义区块链s,每条语义区块链s由n个语义区块构成,s=s

block1+s

block2+s

block3+
···
s

block
n
,其中s

block
i
为第i个语义区块,i∈1,2,

,n,每个语义区块提供事务数据,设计事务数据的存储结构为<key,columns>,对事务数据的属性都添加语义信息;
8.步骤1.2:定义t
x
为语义区块链上的语义事务,t
x
={t
id
=v1,t
s
=v2,senid=v3,t
name
=v4,attributes
x
},t
id
为该条事务的唯一标识,t
s
为该事务的时间戳,senid为事务发起者,t
name
为事务类型,v
j
为事务属性值,j=1,2,3,4,attributes
x
为用户自定义的应用级属性的集合attributes
x
={attr1,attr2,
···
,attr
n
},attr
n
为事务属性,针对不同应用场合和事务类型,设定为不同的属性集合;
9.步骤2:构造基于语义区块链模型的多链连接索引(semantic multi

chains model index,smmi),由s

inverted index、s

bitmap index和s

b+

tree index三部分组成,完成共有属性的链间连接。具体过程如下:
10.步骤2.1:分别遍历每条s链上所有事务,构建每条链attr的s

inverted index。s

inverted index的结构为<key,column>,索引名为attr_s

inverted index,key是原数据中的columns属性值,column为原数据中的t
id
(事务唯一标识)、block

id(块号)、trans

id
(事务号);
11.步骤2.2:遍历所有链attr属性的s

inverted index索引,构建smm整体的attr属性的s

bitmap index。s

bitmap index描述每个属性(attr)在所有链上的取值分布情况,每个attr对应一个s

bitmap index,第v

th bitmap表示每条语义区块链是否在存在attr为v

th值的事务,v

th bitmap中第i bit为
‘0’
表示第i条语义区块链不存在attr为v

th值的事务,为
‘1’
表示第i条语义区块链存在attr为v

th值的事务;
12.步骤2.3:在步骤2.2遍历所有链attr属性的s

inverted index同时,模仿b+树结构,根据attr的v

th大小,构建smm的s

b+

tree index,叶子节点为attr取v

th值的事务位置信息,包含:i(链号)、t
id
(事务唯一标识)、block

id(块号)、trans

id(事务号);
13.步骤2.4:smmi构建完毕,共有属性连接完成;
14.步骤3:获取用户查询,应用smmi中的s

bitmap index和s

b+

tree index结构进行用户查询,输出查询结果。具体过程如下:
15.步骤3.1:定义多链连接查询q由二元组构成,q=[k1,k2,

,k
n
,chains](i∈1,2,

,n)。其中,k
i
为(attr
i
=v

th),k
i
组合表达了用户的查询意图,chains为s链的集合chains=s1∪s2∪s3∪
·····
,s
i
各表示一条语义区块链;
[0016]
步骤3.2:根据连接查询q=[k1,k2,

,k
n
,chains],获取k
i
对应属性attr
i
的s

bitmap index,查找v

th bitmap,当查询q中chains对应bit全为1时连接成立,否则不成立,返回查询结果为空;
[0017]
步骤3.3:当连接成立时,获取k
i
对应属性的s

b
+

treeindex,获取其中attr
i
=v

th的事务信息,包含t
id
(事务唯一标识)、block

id(块号)、trans

id(事务号)存入localset
i
集合中;
[0018]
步骤3.4:将所有的localset
i
求交集,结果存入resultlocalset集合中;
[0019]
步骤3.5:根据resultlocalset,查询smm中对应s
i
的事务,获取完整事务,存入resultset中;
[0020]
步骤3.6:返回resultset,终止当前计算并等待下一次调用。
[0021]
本发明所产生的有益效果在于:
[0022]
本发明提供的多区块链环境下的连接查询优化方法基于语义多链查询模型smm,处理多区块链环境下的连接查询优化问题,能够实现多区块链环境下的高效连接查询。本发明连接查询方法构建了基于smm的多链连接索引smmi,由三部分s

inverted index、s

bitmap index和s

b+

tree index组成,完成共有属性的链间连接。基于smmi的多链查询方法相比传统的查询方法将减少本地计算负载代价和网络延迟,提升查询效率。尤其面对海量数据时,数据的网络传输开销逐渐增加,连接计算的效率将会显著提升,给与更好的用户体验。
附图说明
[0023]
图1为本发明的基于多区块链环境下的连接查询优化方法中多链查询模型(smm)的示意图;
[0024]
图2为本发明的基于多区块链环境下的连接查询优化方法中语义区块(s

block)结构示意图;
[0025]
图3为本发明的基于多区块链环境下的连接查询优化方法中多链连接索引(smmi)整体结构示意图;
[0026]
图4为本发明的基于多区块链环境下的连接查询优化方法中构建smmi流程图;
[0027]
图5为本发明的基于多区块链环境下的连接查询优化方法中查询过程流程图。
具体实施方式
[0028]
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0029]
本实例中采用两条语义区块链s={s
m
、s
m+1
},100条数据进行实验,每条数据格式为t
x
={t
id
=v1,t
s
=v2,senid=v3,t
name
=v4,attributes
x
},attributes
x
为用户自定义的应用级属性集合attributes
x
={attr1,attr2,
···
,attr
n
},不同事务类型attributes
x
设定为不同的属性集合。
[0030]
步骤1:采集医疗机构区块链数据作为输入,构建语义多链查询模型(semantic multi

chains model,smm),结构如图1所示,具体过程如下:
[0031]
步骤1.1:smm包含若干条语义区块链(sematic blockchain

s),每条s由多个语义区块构成,s=s

block1+s

block2+s

block3+
···
,s

block
i
为语义区块,s

block包含区块头(s

block head)和语义区块体(s

block body)两部分,结构如图2所示。s

block=block head+s

block body。s

block head与传统区块链区块结构相同,存放merkle根(merkle root)、前块哈希(prevhash)、区块高度(block height)、时间戳(time stamp)等。merkle根基于块内的事务数据哈希生成,实现块内事务数据不可篡改;前块哈希为前一区块内事务生成的哈希值,提供了区块间的链接;区块高度为当前区块在链上的位置;时间戳表明了该区块的生成时间。s

block body包含大量的事务,s

block body事务数据的存储形式设计为<key,columns>,对每个属性都添加了语义信息;
[0032]
步骤1.2:定义t
x
为语义区块链上的语义事务,t
x
={t
id
=v1,t
s
=v2,senid=v3,t
name
=v4,attributes
x
},t
id
为该条事务的唯一标识,t
s
为该事务的时间戳,senid为事务发起者,t
name
为事务类型,v
j
为事务属性值,j=1,2,3,4,attributes
x
为用户自定义的应用级属性的集合attributes
x
={attr1,attr2,
···
,attr
n
},attr
n
为事务属性,针对不同应用场合和事务类型,设定为不同的属性集合;
[0033]
本实施例中,事务的attributes
x
={name,sex,iamge,info}。图2说明了smm中事务,不同类型事务columns中包含不同的属性语义和属性值,如

t
id
=1,info=info
q
、t
id
=2,image=image
q’;
[0034]
步骤2:构造基于语义区块链模型的多链连接索引(semantic multi

chains model index,smmi),如图4所示,由s

inverted index、s

bitmap index和s

b+

tree index三部分组成,完成共有属性的链间连接。具体过程如下:
[0035]
步骤2.1:分别遍历每条s链上所有事务,构建每条链attr的s

inverted index。s

inverted index的结构为<key,column>,索引名为attr_s

inverted index,key是原数据中的columns属性值,column为原数据中的t
id
(事务唯一标识)、block

id(块号)、trans

id(事务号);
[0036]
本实例中,如图3中所示对s
m
的t
name
属性建立索引

t
name
_s

inverted index’,索引
的key为属性t
name
的值,如图3行1中标识

key=stomatology’为原数据

t
id
=1’事务的t
name
值,column为原数据的位置信息

column={t
id
=1、block

id=i、trans

id=j}’,第i块中的第j件事务。
[0037]
步骤2.2:遍历所有链attr属性的s

inverted index索引,构建smm整体的attr属性的s

bitmap index。s

bitmap index描述每个属性(attr)在所有链上的取值分布情况,每个attr对应一个s

bitmap index,第v

th bitmap表示每条语义区块链是否在存在attr为v

th值的事务,v

th bitmap中第i bit为
‘0’
表示第i条语义区块链不存在attr为v

th值的事务,为
‘1’
表示第i条语义区块链存在attr为v

th值的事务;
[0038]
本实例中,针对t
name
属性构建的s

bitmap index,如图3所示,左侧列为对应t
name
的取值情况,最后一行前两位为1,表示在链s
m
、s
m+1
中含有符合t
name
=x

ray的数据。
[0039]
步骤2.3:在步骤2.2遍历所有链attr属性的s

inverted index同时,模仿b+树结构,根据attr的v

th大小,构建smm的s

b+

tree index,叶子节点为attr取v

th值的事务位置信息,包含:i(链号)、t
id
(事务唯一标识)、block

id(块号)、trans

id(事务号);
[0040]
步骤2.4:smmi构建完毕,共有属性连接完成;
[0041]
步骤3:获取用户查询,应用smmi中的s

bitmap index和s

b+

tree index结构进行用户查询,输出查询结果。如图5所示,具体过程如下:
[0042]
步骤3.1:定义多链连接查询q由二元组构成,q=[k1,k2,

,k
n
,chains](i∈1,2,

,n)。其中,k
i
为(attr
i
=v

th),k
i
组合表达了用户的查询意图,chains为s链的集合chains=s1∪s2∪s3∪
·····
,s
i
各表示一条语义区块链;
[0043]
本实例中,输入查询q=[t
name
=x

ray,s
m
∪s
m+1
]。
[0044]
步骤3.2:根据连接查询q=[k1,k2,

,k
n
,chains],获取k
i
对应属性attr
i
的s

bitmap index,查找v

th bitmap,当查询q中chains对应bit全为1时连接成立,否则不成立,返回查询结果为空;
[0045]
本实例中,通过s

bitmap index获取到t
name
=x

ray行对应

1100
···’,可知在查询范围链s
m
、s
m+1
都有符合t
name
=x

ray条件的事务,连接成立。
[0046]
步骤3.3:当连接成立时,获取k
i
对应属性的s

b
+

treeindex,获取其中attr
i
=v

th的事务信息,包含t
id
(事务唯一标识)、block

id(块号)、trans

id(事务号)存入localset
i
集合中;
[0047]
本实例中,通过s

b
+

treeindex找到t
name
=x

ray的叶子节点,获取到相应的事务位置信息{(m,2,i,j+1),(m,3,i,j+2),(m+1,5,p,s)}。
[0048]
步骤3.4:将所有的localset
i
求交集,结果存入resultlocalset集合中;
[0049]
步骤3.5:根据resultlocalset,查询smm中对应s
i
的事务,获取完整事务,存入resultset中;
[0050]
步骤3.6:返回resultset,终止当前计算并等待下一次调用。
[0051]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1