CN112966001A - 一种基于区块链的BCTkPQ查询方法 - Google Patents
一种基于区块链的BCTkPQ查询方法 Download PDFInfo
- Publication number
- CN112966001A CN112966001A CN202110216456.1A CN202110216456A CN112966001A CN 112966001 A CN112966001 A CN 112966001A CN 202110216456 A CN202110216456 A CN 202110216456A CN 112966001 A CN112966001 A CN 112966001A
- Authority
- CN
- China
- Prior art keywords
- transaction
- index
- query
- path
- score
- 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/2455—Query execution
-
- 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
-
- 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
-
- 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)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于区块链的BCTkPQ查询方法,该方法包括步骤1:构建协作查询框架CQM;步骤2:构造来源‑目的地S‑D索引,构造每个事务中的业务逻辑关系;步骤3:在S‑D索引的基础上,根据用户发送的查询请求构造路径‑得分P‑SC索引,建立路径和事务分数间的映射关系,P‑SC索引与S‑D索引构成一个二级索引;步骤4:获取查询请求中路径p的事务中属性O上权重W的得分最高的前k个事务。本发明基于CQM模型和二级索引,能够实现基于区块链的BCTkPQ快速查询,查询效率会随着CP节点数和用户数的增加而提升。
Description
技术领域
本发明涉及路径查询技术领域,尤其涉及一种基于区块链的BCTkPQ查询方法。
背景技术
目前,区块链作为加密货币***的基石,已经受到了业界和学术界的高度关注。区块链已经成功应用于各种现实场景,如物联网、智慧医疗、供应链、数据库架构、数据服务外包等。区块链可以被看作是由互相不完全信任的节点通过共识协议维护的分布式数据库。根据不同的场景,区块链可以根据具体的业务逻辑,设计具体的交易模型。其中,常见的交易模型是基于金融交易的,用来表示银行或金融机构之间的转账信息。显然,在金融交易场景下,区块链可以安全并完整地存储用户的金融账单和日常转账记录。所有的交易数据蕴含着有用的信息和知识,表达了用户在不同场景下的商业偏好,可以用来提高数据分析、数据安全、推荐***等应用服务的质量。因此,多样化查询处理的需求越来越大。
传统的查询方法是将查询请求发送到维护完整块和事务的完整节点,并通过遍历整条区块链的所有区块,获取符合条件的事务。显然,这种解决方案的效率是过低的,无法满足大量的查询需求。低效的主要原因是,整个节点需要遍历存储在本地存储中的所有区块链数据,从而导致过高的计算工作负载。
发明内容
针对上述现有技术的不足,本发明提供一种基于区块链的BCTkPQ查询方法。对于区块链中的top-k交易路径查询(Blockchain top-k Path Query,BCTkPQ),即返回给定查询路径p中满足指定条件的前k个事务。
为解决上述技术问题,本发明所采取的技术方案是:一种基于区块链的BCTkPQ查询方法,包括如下步骤:
步骤1:构建协作查询框架CQM(Collaborative Query Model)包含三个关键部分,即应用程序编程接口API、由一组协作对等点CP(Collaborative Peer)维护的协作网络CN(Collaborative Network)和存储原始交易数据的区块链BC(Block Chain);其中API包含分发器和响应器;
步骤2:构造来源-目的地S-D(Source-Destination)索引,构造每个事务中的业务逻辑关系,过程如下:
步骤2.1:初始化三个集合<S,D,E>,用于存储每个事务的逻辑;
步骤2.2:定义Tx为区块链上的事务,按照一般的账户间的财务转移操作,定义Tx结构为,Tx={ID,TxHash,from,to,O},其中ID表示Tx的序列号,TxHash表示Tx的哈希值,<from,to>字段是表示Tx传输操作的业务逻辑,称为事务路径p,O为事务其余属性,当区块链事务Tx具有m个属性时,O为{attr1,attr2,……,attrm},attr为某一个属性;
步骤2.3:遍历区块链上所有事务,将Tx的from字段和to字段分别添加到S集合和D集合中;
步骤2.4:将当前事务的路径保存到E集合中,即p→<from,to>。
步骤3:在S-D索引的基础上,根据用户发送的查询请求<p,k,W,O>,构造路径-得分P-SC(Path-Score)索引,建立路径和事务分数间的映射关系,P-SC索引与S-D索引构成一个二级索引;其中,p为事务路径,O为事务其余属性集合,W为权重集合,k为查询得分最高的前k个事务。具体过程如下:
步骤3.1:获取S-D索引的E集合中新增的路径pi;
步骤3.2:当获取的pi在P-SC索引中不存在时,创建一个新的包bucket*来存储该路径pi,即pi→<Txi>添加到bucketi中;
步骤3.3:当获取的pi在P-SC索引中存在时,获取对应的bucket,存储pi对应的Txi到bucket中。
步骤4:获取查询结果,假设用户发送查询请求<p,k,W,O>,以获取路径为p=<from*,to*>的事务中属性O上权重W的得分最高的前k个事务,过程如下:
步骤4.1:用户通过CQM的分发器将请求<p,k,W,O>广播到所有CP;
步骤4.2:每个CP在本地P-SC索引中获取所有包含p→<from*,to*>的包bucket,根据查询条件中的权重集合W,计算其事务分数scorei;
所述事务分数scorei的计算方法如下:
Fs(Tx)=∑attri×wi
其中,Fs(Tx)为事务分数scorei,attri为事务Tx的第i个属性,wi≥0是查询条件中权重集合W的第i个值,是对应属性attri的权重。
步骤4.3:根据事务score按照从大到小排序,将bucket中得分最高的前k个区块链事务添加到结果集合resultSet中;
步骤4.4:为resultSet计算摘要digest,并将digest广播给其他CP;
步骤4.5:当收到的digest全部相同且数量超过了给定阈值(一般阈值设定为所有CP数量的三分之二),返回resultSet,终止当前计算并等待下一次调用。
采用上述技术方案所产生的有益效果在于:
1、本发明提供的方法基于协作查询模型CQM来处理BCTkPQ问题的方法,能够实现基于区块链的BCTkPQ快速查询。
2、本发明查询方法构建了基于P-SC索引与S-D索引的一个二级索引,基于二级索引的多样化查询方法相比传统的查询方法将提升查询效率,而且会减少,由于整个节点需要遍历存储在本地存储中的所有区块链数据,从而导致过高的计算工作负载。基于CQM模型和二级索引,能够实现基于区块链的BCTkPQ快速查询,查询效率会随着CP节点数和用户数的增加而提升。
附图说明
图1为本发明实施例中协作查询框架的结构示意图;
图2为本发明实施例中构建S-D索引的流程图;
图3为本发明实施例中构建P-SC索引的流程图;
图4为本发明实施例中二级索引的结构示意图;
图5为本发明实施例中查询过程的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本实施例中采用3个用户SU={U1,U2,U3},五个节点CP={P1,P2,…,P5},以及100条数据进行实验,每条数据格式为Tx={ID,TxHash,from,to,money}。本实施例中一种基于区块链的BCTkPQ查询方法如下所述:
步骤1:构建协作查询框架(Collaborative Query Model,CQM),结构如图1所示,包含三个关键部分,即应用程序编程接口(API),由一组协作对等点(Collaborative Peer,CP)维护的协作网络(Collaborative Network,CN)和存储原始交易数据的区块链(BlockChain,BC);其中API包含分发器和响应器;
CQM的执行流程简述为:首先,查询请求通过API中的分发器(dispatcher)广播到所有CP。然后,所有CP同步响应查询请求,每个CP包含三个模块,即解析器,索引器和执行器。这些模块可以通过只读方式访问BC,这意味着所有模块都可以读取存储在区块链中的数据对象并创建索引以在本地完成查询请求。最后,CN处理完查询请求后,并通过API中的响应器(responder)将结果返回。
步骤2:构造来源-目的地(Source-Destination,S-D)索引,构造每个事务中的业务逻辑关系,流程如图2所示;
步骤2.1:初始化三个集合<S,D,E>,存储每个事务的逻辑;
步骤2.2:定义Tx为区块链上的事务,按照一般的账户间的财务转移操作,定义Tx结构为,Tx={ID,TxHash,from,to,O},其中ID表示Tx的序列号,TxHash表示Tx的哈希值,<from,to>字段是表示Tx传输操作的业务逻辑,称为事务路径p,O为事务其余属性,当区块链事务Tx具有m个属性时,O为{attr1,attr2,……,attrm},attr为某一个属性;
本实施例中,事务其余属性只有一个,为money;
步骤2.3:遍历链上所有事务,将Tx的from字段和to字段分别添加到S集合和D集合中,如图3所示,从100条数据中提取from字段S={U1,U1,U2,U2,U3,U1···},从100条数据中提取to字段D={U2,U3,U1,U3,U1,U3···};
步骤2.4:将当前事务之间的映射关系保存为E集合中,即p→<from,to>,100条数据中构建E={<U1,U2>,<U1,U3>,<U2,U1>,<U2,U3>,<U3,U1>···},结构如图4左侧所示;
步骤3:在S-D索引的基础上,根据用户发送查询请求<p,k,W,O>,模拟查询<<U1,U3>,2,1,money>,构造路径-得分(Path-Score,P-SC)索引,建立路径和事务分数的映射,流程如图3所示,P-SC索引与S-D索引构成一个二级索引,结构如图4所示;
步骤3.1:获取S-D索引的E集合中新增的路径pi;
步骤3.2:当获取的pi在P-SC索引中不存在时,例如Tx3路径p3=<U2,U1>在P-SC中不存在时,创建一个新的包bucket*来存储该路径pi=<U2,U1>,即pi→<Tx3>添加到bucket3中;
步骤3.3:当获取的pi在P-SC索引中存在时,例如Tx6路径p6=<U1,U3>在P-SC中存在时获取对应的bucket,存储p6对应的Tx6到bucket中;
步骤4:获取查询结果,假设用户发送查询请求<p,k,W,O>=<<U1,U3>,2,1,money>,以获取路径为p=<from*,to*>=<U1,U3>的事务中数据对象O=money上权重W=1的得分最高的前k=2个事务,如图5所示;
步骤4.1:用户通过CQM的分发器将请求<p,k,W,O>=<<U1,U3>,2,1,money>广播到所有CP={P1,P2,…,P5};
步骤4.2:每个CP在本地P-SC索引中获取所有包含p→<from*,to*>=<U1,U3>的bucket,根据查询条件中的权重集合W,计算其事务分数scorei。事务分数scorei为Fs(Tx),Fs(Tx)=∑attri×wi。其中,attri为事务Tx的第i个属性,wi≥0是查询条件中权重集合W的第i个值,是对应属性attri的权重。
本实施例中,W只包含一个属性money,其权重为1,因此E集合中事务Txi,scorei=Fs(Txi)=moneyi×1;
步骤4.3:根据score按照从大到小排序,将bucket中得分最高的2个事务添加到结果集合resultSet中,resultSet={Tx2={2,Tx2Hash,U1,U3,money2},Tx6={6,Tx6Hash,U1,U3,money6}};
步骤4.4:为resultSet计算摘要digest,并将digest广播给其他CP;
步骤4.5:当收到的digest全部相同且数量超过了给定阈值,所有CP数量的三分之二时,返回resultSet,终止当前计算并等待下一次调用。
Claims (5)
1.一种基于区块链的BCTkPQ查询方法,其特征在于,包括如下步骤:
步骤1:构建协作查询框架CQM包含三个关键部分,即应用程序编程接口API、由一组协作对等点CP维护的协作网络CN和存储原始交易数据的区块链BC;其中API包含分发器和响应器;
步骤2:构造来源-目的地S-D索引,构造每个事务中的业务逻辑关系;
步骤3:在S-D索引的基础上,根据用户发送的查询请求<p,k,W,O>,构造路径-得分P-SC索引,建立路径和事务分数间的映射关系,P-SC索引与S-D索引构成一个二级索引;
其中,p为事务路径,O为事务其余属性集合,W为权重集合,k为查询得分最高的前k个事务;
步骤4:获取查询结果,假设用户发送查询请求<p,k,W,O>,以获取路径为p=<from*,to*>的事务中属性O上权重W的得分最高的前k个事务。
2.根据权利要求1所述的基于区块链的BCTkPQ查询方法,其特征在于,所述步骤2的过程如下:
步骤2.1:初始化三个集合<S,D,E>,用于存储每个事务的逻辑;
步骤2.2:定义Tx为区块链上的事务,按照一般的账户间的财务转移操作,定义Tx结构为,Tx={ID,TxHash,from,to,O},其中ID表示Tx的序列号,TxHash表示Tx的哈希值,<from,to>字段是表示Tx传输操作的业务逻辑,称为事务路径p,O为事务其余属性,当区块链事务Tx具有m个属性时,O为{attr1,attr2,……,attrm},attr为某一个属性;
步骤2.3:遍历区块链上所有事务,将Tx的from字段和to字段分别添加到S集合和D集合中;
步骤2.4:将当前事务的路径保存到E集合中,即p→<from,to>。
3.根据权利要求1所述的基于区块链的BCTkPQ查询方法,其特征在于,所述步骤3的过程如下:
步骤3.1:获取S-D索引的E集合中新增的路径pi;
步骤3.2:当获取的pi在P-SC索引中不存在时,创建一个新的包bucket*来存储该路径pi,即pi→<Txi>添加到bucketi中;
步骤3.3:当获取的pi在P-SC索引中存在时,获取对应的bucket,存储pi对应的Txi到bucket中。
4.根据权利要求1所述的基于区块链的BCTkPQ查询方法,其特征在于,所述步骤4的过程如下:
步骤4.1:用户通过CQM的分发器将请求<p,k,W,O>广播到所有CP;
步骤4.2:每个CP在本地P-SC索引中获取所有包含p→<from*,to*>的包bucket,根据查询条件中的权重集合W,计算其事务分数scorei;
步骤4.3:根据事务score按照从大到小排序,将bucket中得分最高的前k个区块链事务添加到结果集合resultSet中;
步骤4.4:为resultSet计算摘要digest,并将digest广播给其他CP;
步骤4.5:当收到的digest全部相同且数量超过了给定阈值,返回resultSet,终止当前计算并等待下一次调用。
5.根据权利要求4所述的基于区块链的BCTkPQ查询方法,其特征在于,所述事务分数scorei的计算方法如下:
Fs(Tx)=∑attri×wi
其中,Fs(Tx)为事务分数scorei,attri为事务Tx的第i个属性,wi≥0是查询条件中权重集合W的第i个值,是对应属性attri的权重。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110216456.1A CN112966001B (zh) | 2021-02-26 | 2021-02-26 | 一种基于区块链的BCTkPQ查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110216456.1A CN112966001B (zh) | 2021-02-26 | 2021-02-26 | 一种基于区块链的BCTkPQ查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112966001A true CN112966001A (zh) | 2021-06-15 |
CN112966001B CN112966001B (zh) | 2023-08-04 |
Family
ID=76275986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110216456.1A Active CN112966001B (zh) | 2021-02-26 | 2021-02-26 | 一种基于区块链的BCTkPQ查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112966001B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360504A (zh) * | 2021-06-22 | 2021-09-07 | 东北大学 | 一种基于多区块链环境下的连接查询优化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150199354A1 (en) * | 2012-11-20 | 2015-07-16 | Netapp, Inc. | Method and system for optimizing traversal and storage of directory entries of a storage volume |
CN108509514A (zh) * | 2018-03-09 | 2018-09-07 | 史玉成 | 一种基于区块链的大数据分析方法及*** |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN111209336A (zh) * | 2019-12-30 | 2020-05-29 | 广州博士信息技术研究院有限公司 | 基于区块链的数据分配方法、装置及服务器 |
US20200374105A1 (en) * | 2019-05-22 | 2020-11-26 | Salesforce.Com, Inc. | System or method to implement consensus on read on distributed ledger/blockchain |
-
2021
- 2021-02-26 CN CN202110216456.1A patent/CN112966001B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150199354A1 (en) * | 2012-11-20 | 2015-07-16 | Netapp, Inc. | Method and system for optimizing traversal and storage of directory entries of a storage volume |
CN108509514A (zh) * | 2018-03-09 | 2018-09-07 | 史玉成 | 一种基于区块链的大数据分析方法及*** |
CN109165224A (zh) * | 2018-08-24 | 2019-01-08 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
US20200374105A1 (en) * | 2019-05-22 | 2020-11-26 | Salesforce.Com, Inc. | System or method to implement consensus on read on distributed ledger/blockchain |
CN111209336A (zh) * | 2019-12-30 | 2020-05-29 | 广州博士信息技术研究院有限公司 | 基于区块链的数据分配方法、装置及服务器 |
Non-Patent Citations (2)
Title |
---|
KUN HAO等: "On efficient top-k transaction path query processing in blockchain database", 《DATA&KNOWLEDGE ENGINEERING》, vol. 141, pages 1 - 7 * |
贺扬: "海量小文件的快速检索技术研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 138 - 5169 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360504A (zh) * | 2021-06-22 | 2021-09-07 | 东北大学 | 一种基于多区块链环境下的连接查询优化方法 |
CN113360504B (zh) * | 2021-06-22 | 2023-08-15 | 东北大学 | 一种基于多区块链环境下的连接查询优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112966001B (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471995B (zh) | 一种跨领域信息共享交换数据模型建模方法 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和*** | |
US20080097994A1 (en) | Method of extracting community and system for the same | |
CN110674154B (zh) | 一种基于Spark的对Hive中数据进行***、更新和删除的方法 | |
WO2023050556A1 (zh) | 一种共识智能合约算法 | |
CN113407681B (zh) | 一种能源行业公共数据模型构建方法 | |
CN105740337A (zh) | 一种基于内容的发布订阅***中的事件快速匹配方法 | |
CN110019231A (zh) | 一种并行数据库动态关联的方法及节点 | |
CN114186694A (zh) | 一种高效安全,低通信的纵向联邦学习方法 | |
CN112966001A (zh) | 一种基于区块链的BCTkPQ查询方法 | |
CN109918369A (zh) | 数据存储方法及装置 | |
CN112598510B (zh) | 资源数据处理方法和装置 | |
WO2022037102A1 (zh) | 面向多方协作的利益相关者服务价值冲突发现和消解方法 | |
CN108173899B (zh) | 区块链的信息处理方法及装置 | |
CN113918857A (zh) | 一种提高分布式web应用***性能的三级缓存加速方法 | |
CN103995886A (zh) | 一种多维度产品设计知识推送框架与构建方法 | |
CN107291764A (zh) | 一种大数据交换方法及装置、*** | |
US20230336368A1 (en) | Block chain-based data processing method and related apparatus | |
CN111562990B (zh) | 一种基于消息的轻量级无服务器计算方法 | |
CN107506473A (zh) | 一种基于云计算的大数据检索方法 | |
CN106096824B (zh) | 一种主配网一体化图形资源共享方法 | |
CN109960750A (zh) | 一种基于标签传播概率的并行图划分方法 | |
CN113360504B (zh) | 一种基于多区块链环境下的连接查询优化方法 | |
CN113496349B (zh) | 一种基于ai交互共识的区块链学习档案及信用因子构建方法 | |
CN112950063B (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 |