1、 261 国家自然科学基金(41771425)资助 收稿日期:20220804;修回日期:20221006 北京大学学报(自然科学版)第 59 卷 第 2 期 2023 年 3 月 Acta Scientiarum Naturalium Universitatis Pekinensis,Vol.59,No.2(Mar.2023)doi:10.13209/j.0479-8023.2022.120 区块链与数据库混合架构下的空间查询优化方法 桂智明1 孙忠祥1 黄舟2,1.北京工业大学信息学部,北京 100124;2.北京大学遥感与地理信息系统研究所,北京 100871;通信作者,E-mail:
2、摘要 空间数据与区块链相结合,能够为空间数据管理提供去中心化、安全、可信的技术支撑,但存在查询速率低下、查询方式种类单一以及脱离区块链体系等问题。针对此问题,结合空间数据库的高性能、函数种类丰富等特点,提出一种区块链与空间数据库混合架构下的空间查询优化方法。该方法把 Hyperledger Fabric与空间数据库进行集成,并区别于传统的链下查询方式,提出一种区块链集成空间数据库的方法,在智能合约中嵌入高效的空间操作函数,并且分布式部署数据库,从而保留区块链原有的分布式查询特点。在防篡改方面,采取哈希加盐的安全存储机制和双重验证机制来加强安全性。实验结果表明,该方法在性能和安全性方面都有优良的
3、表现。关键词 区块链;超级账本;空间数据库;数据安全存储;空间查询 Spatial Query Optimization Methods by Integrating Blockchain and Database GUI Zhiming1,SUN Zhongxiang1,HUANG Zhou2,1.Faculty of Information,Beijing University of Technology,Beijing 100124;2.Institute of Remote Sensing and Geographical Information System,Peking Unive
4、rsity,Beijing 100871;Corresponding author,E-mail: Abstract The combination of spatial data and blockchain can provide decentralized,secure and trustworthy technical support for spatial data management,but there are currently problems such as low query rate,single type of query,and detachment from bl
5、ockchain system.According to this problem,combined with the characteristics of high performance and rich function types of spatial database,a spatial query optimization method by integrating blockchain and database is proposed.The method integrates Hyperledger Fabric with spatial database,and differ
6、s from the traditional off-chain query method by proposing a blockchain-integrated spatial database method,embedding efficient spatial operation functions in smart contracts,and deploying the database in a distributed manner,so as to retain the original distributed query characteristics of the block
7、chain.In terms of tamper-proof,a hash-and-salt secure storage mechanism and double verification mechanism are used to strengthen the security.The experimental results show that the method has excellent performance and security.Key words blockchain;hyperledger fabric;spatial database;secure data stor
8、age;spatial query 近年来,区块链技术在多个产业变革中起着重要作用,区块链平台也从以比特币1为代表的区块链 1.0,发展到以太坊2为代表的合同区块链 2.0,再发展到区块链 3.0。区块链 3.0 应用于各类社会活动中,用以保证公平、公正、公开,其中的代表之一就是 IBM 开源的区块链 Hyperledger Fabric3。区块链与空间数据相结合,不仅能利用区块链的去中心化、去信任化、可靠数据库以及开源可编程等技术特性来管理空间数据,还能让区块链支持更多的地理空间应用场景(如基于位置的智能合约 服务)。现有的结合区块链与空间数据的研究主要分为北京大学学报(自然科学版)第 59
9、 卷 第 2 期 2023 年 3 月 262 两类。一类是改造区块链的结构来存储空间数据,这类研究受限于区块链本身的结构特点,不适用于复杂的空间数据,在系统吞吐量和查询方式种类等方面有较大的局限性。另一类是在链下使用数据库来实现空间查询,这类研究多采用单点式数据库,需要脱离区块链体系,仅能在链下查询,并且无法保证链上与链下数据的关联性和一致性。Hyperledger Fabric 作为区块链 3.0 的代表之一,目前官方版本还不支持空间查询操作,仅能使用第三方空间查询插件来实现。本文提出一种集成空间数据库与 Fabric 的空间查询优化方法,以下称为集成数据库法。1)针对空间数据查询性能低下
10、和查询方法单一的问题,采用空间数据库作为数据存储端,把区块链数据同步到空间数据库,并采用读写分离的流式复制架构。2)针对链下与链上分离的缺陷,建立 Peer 节点与数据库的关联,在智能合约中集成空间查询操作,保留分布式存储架构。3)针对数据库可能会被篡改的风险,采用安 全存储机制,并使用双重验证机制来防止数据库被 篡改。在实验部分采用 Hyperledger Fabric 与 PostGIS 空间数据库作为本方法的实例,通过与 Fabric 使用第三方空间查询插件的方法进行对比,证明本方法在空间数据的查询效率和查询方式上有显著的优势,并在防篡改能力方面有良好的表现。1 相关工作 傅易文晋等4研
11、究区块链 1.0,2.0 和以 Block-DAG 为代表的体系架构及性能特点,并分析了 3 种区块链架构应用于时空数据存在的局限性。华亚洲等5提出一种基于 Block-DAG 的区块链架构 ST_ Block-DAG,提升了时空数据存储及查询效率。Qu 等67对时空区块链进行研究,并通过引入加密签名的默克尔区块空间索引来支持快速空间查询。Liu 等8设计一个基于区块链的车辆本地广告系统,将大规模的空间关键词分解并存储在区块链上,使用两个链外模块化执行器来优化查询。马艳磊9使用以太坊区块链作为存储空间位置数据的分布式数据库,将 GIS 领域常用的 geohash 空间索引引入以太坊的智能合约中
12、。上述研究多应用于二维点数据,并且需要使用 geohash 将二维数据处理成一维的文本数据,导致效率低下,且查询方式种类较为单一,一般只支持单值查询和范围查询。更多关于区块链结合空间数据的研究是把链上数据转移到链下进行分析。Peng 等10提出一种存储流行病地理信息的方法,用户实时上传包括地理位置的社会数据到区块链,再利用 GeoAI 来分析流行病的可疑病患。Li 等11把完整的溯源信息存储在链下的本地数据库,在链上采用存储溯源条目的散列值。Daho12使用 IPFS/OrbitDB 来存储 WKB 加密空间数据,并计算 WKB 的哈希值,再上传哈希值到以太坊,防止数据被篡改。金虹杉等13对空
13、间区块链进行研究,在基于 Hyperledger Fabric 的框架上开发,使用“链内+IPFS 链外扩展”的存储方案,根据不同的阈值选择是否将数据直接上链存储。但是上述研究中,区块链存储的不是原始值,而是原始值的哈希值,并且研究的重心放在链下数据的分析和查询,容易将分布式存储转变成集中式存储,从而丢失区块链的部分特性。Hyperledger Fabric 不支持空间查询的功能,世界状态的底层 CouchDB 只支持 JSON 富查询。目前不支持空间搜索的数据库常用的优化方法是把二维数组降维成一维文本14,例如 geohash 和网格编码等编码方式。这类方法的范围查询会导致 CouchDB采
14、用全表扫描或全索引扫描,反而导致整体性能 下降。Fabric 的 CouchDB 支持 hastings 和 easton 两个地理空间查询插件,安装后也具备空间查询功能。hastings 完成地理空间搜索,easton 实现空间索引端口程序以及该程序的 API。整个地理查询的流程如图 1 所示,hastings 将请求文本经过切片处理,调用各个分片的索引(R*-Tree 结构),再将相应的查询请求通过 Erlang RPC 协议发送给 easton。easton 内部封装的 C+程序使用 spatialindex 和 CsMap 等地理查询库,计算得到空间查询的结果,再将结果通过 Erlan
15、g RPC 协议发回给 hastings,最后将分片的结果合并成 JSON 格式返回 CouchDB。本文将这种方法称为插件集成法,后续实验中将插件集成法作为比对方法。空间数据库的安全性和防篡改性也需要考虑。余涛等15提出一种关系查询解决方案 FabricSQL,在数据库的存储上使用加盐和前哈希值来阻止一定 桂智明等 区块链与数据库混合架构下的空间查询优化方法 263 图 1 插件集成法的查询流程 Fig.1 Query process of the plug-in integration method的恶意篡改。本文在数据安全存储的实现中借鉴了这种思想,并且进一步实现双重验证机制来保证数据不
16、被篡改。2 Fabric 内嵌空间数据库的方法 2.1 解决思路 监听器迭代每个区块中的交易,并针对有效的交易键值对构建完整的数据存储,将链上的 Geo-JSON 格式转换成空间数据库对应的关系模式,再存储到数据库中。每个 Peer 节点都绑定单独的数据库,并在智能合约中内嵌入空间数据库相关的空间查询 API 来强化区块链的空间查询功能。数据库的安全存储借鉴 FabricSQL15的存储验证机制,并进一步实现最新地理数据的安全存储机制。由存储验证机制和区块链的背书策略共同保证区块链的一致性和安全性。2.2 系统模型 系统模型如图 2 所示。用户应用程序调用 SDK来访问 Fabric,根据用户所处的组织和通道调用相关的智能合约。各个组织的 Peer 节点将交易提交给排序节点,排序节点把区块排序、打包后返回给 Peer节点,账本则添加新打包的区块。监听器监听区块信息,如果有新的区块生成,则提取出来。区块信息通过转换函数把 GeoJSON 格式的空间数据转换成 PostGIS 支持的空间格式,再将有效的每条数据更新到最新的状态,并使用数据安全存储机制进行计算,将哈希值存入 PosgreSQ