随着区块链技术的逐步发展,区块链与分布式数据库之间的联系变得更加紧密和微妙。2021年在SIGMOD会议上发表的论文《区块链vs .分布式数据库:二分法和融合》从底层设计上分析了区块链和分布式数据库及其混合系统的分类方法。首先,详细介绍了用于描述区块链、分布式数据库及其混合系统的分类方法:从复制、并发、存储和碎片四个方面;然后,利用许可证链仲裁和Fabric、数据库TiDB和etcd设计了性能实验,并对实验结果进行了详细分析。最后,给出了一个可以用来解释和评估混合系统性能的框架。论文核心内容由中国科学院软件研究所编写,中国人民大学金融科技研究所重印。
来源| SIGMOD
作者|阮,,丁天团,杜米特勒,张,,,本
编译|徐颖
一.导言
从数据结构来看,区块链是由哈希指针串联的块的链表,每个块包含一系列事务;从系统的角度来看,区块链是一个分布式系统,多个互不信任的节点共同维护一个全网一致的账本。
区块链可以分为授权链和非授权链。无牌照链是完全开放的,每个人都有资格记账,读取数据,比如比特币,以太坊。许可链有一定的访问机制和权限控制,比如Hyperledger Fabric。虽然早期区块链的底层设计与数据库完全不同,但智能合约应用于区块链后,用户可以自由部署和运行图灵的完整代码,这使得区块链与数据库具有可比性。因此,本文用契约能力和数据库对区块链进行了比较研究。
分布式数据库是一种数据存储在不同物理位置的数据库。多年来,传统的关系数据库一直是主流。由于大数据处理和硬件发展等现实原因,为了实现系统的高可用性和可扩展性,分布式系统开始演进。在这种新的设计潮流下,出现了NoSQL和NewSQL。为了增强系统的可扩展性,NoSQL摒弃了传统数据库的关系模型和强酸语义。NoSQL有更灵活的数据存储结构,如键值存储、列存储、文档存储等。NoSQL的一致性较弱,可以达到最终一致性、顺序一致性或因果一致性等。NoSQL的设计更加灵活,但是增加了上层应用的复杂度。
NewSQL是一种介于关系数据库和NoSQL之间的设计。它保持了关系数据库的数据模型,支持ACID语义。同时,它拥有NoSQL存储和管理海量数据的能力和可扩展性。
下图显示了分布式数据库与许可链和非许可链在安全性和性能方面的权衡。
二。分类
对于如何区分区块链和分布式数据库,本文提出了以下分类方法。下面,从四个方面逐一介绍:
1.复制
复制是一种在系统中的多个节点上存储数据副本的技术。从复制模型来看,区块链复制有序的事务日志,复制的单位是事务。事务包含应用程序级别的信息,如事务上下文、签名、时间戳等。,并且易于验证。“事务”一词在区块链和数据库中都表示为对底层数据执行的逻辑计算,它是一系列操作。在区块链中,交易是以契约部署和调用的形式进行的,可以看作是我们通常所说的交易。比如调用一个契约,会引起对数据的一系列操作,这是原子性的,要么执行,要么不执行。完成后,系统的状态会发生变化。
分布式数据库复制读写操作的有序日志,一次复制一个操作。如图所示,需要一个可信的事务管理器来进行协调。当复制的单元是更细粒度的操作时,系统更便于实现并发。
从复制方法的角度来看,区块链和分布式数据库可以选择不同的方式来复制数据。本文将复制方法归纳为主备份复制和状态机复制,其中状态机复制又分为共识协议和共享日志。
主备份复制是指副本中的某个主副本运行确定性状态机,而备份只存储状态。主数据库通过处理操作计算出一系列新的应用状态,并将这些状态按生成顺序转发给每个备份。即主副本的整体状态实时传输到备用服务器;状态机复制就是让每个副本实现一个确定性的状态机。本质上,它维护每个副本上操作或事务的有序日志。每个副本从相同的初始状态开始,然后日志中的操作或事务以相同的顺序应用。
基于共识协议的复制和基于共享日志的复制的区别在于,后者依靠可信的外部服务来提供共享日志,从而在每个副本上执行这个日志来改变状态。
从失效模型来看,区块链和分布式数据库有不同的失效问题需要解决,这就决定了它们的共识层和上层应用的不同特点。
在分布式数据库中,节点属于可信的内部系统,因此只需要容忍节点宕机。数据库通常使用CFT协议,如Paxos和Raft.但是在区块链中,每个节点需要在互不信任的情况下达成共识,因此需要容忍节点的恶意行为。因此,区块链经常使用更昂贵的BFT协议,如PBFT、PoW等。下表显示了CFT和BFT协议在不同网络模型中所需的网络规模。同步网络是具有有界已知时延的网络,而异步网络可能具有无限时延。其中f是故障节点的数量。
2.同时发生的
而让交易或交易同时执行,更是离谱。数据库中的并发控制技术一直是研究热点,良好的并发优化可以大大提高数据库系统的性能。但是,区块链中的事务通常是串行执行的,并发技术使用得不多。主要原因是,在许多区块链系统中,事务执行并不是性能瓶颈。其次,由于事务经常共享合同的状态数据,事务的串行执行更加简单和安全。
3.仓库
它决定了存储系统中的数据存储机制。在存储模式上,大多数数据库只存储最新的可以修改的数据信息,即使有历史信息也只是作为节点故障恢复的日志;区块链存储所有历史数据,并以增量方式进行维护。
索引方面,为了支持数据的正确性验证,区块链会使用Merkle Tree这样的数据结构来存储数据;而分布式数据库更注重性能,索引时会根据硬件的性质进行特殊优化。比如硬盘中的数据以B+ tree的数据结构存储,内存中的数据以FAST或者PSL的结构存储,对多核并行和缓存更友好。
4.分裂
碎片化也是数据库领域常用的技术,将数据分布到不同的碎片中,由碎片中的节点进行处理,以达到扩展系统或提高处理性能的目的。
碎片协议确定应该分配给哪些碎片节点和数据。可以根据数据的哈希计算结果和数据的范围对数据库进行分片,而区块链更注重安全性,分片必须足够大,避免分片中恶意节点的数量超过安全假设。此外,碎片的分配机制不应受节点行为的影响。
碎片的原子性要求跨碎片的事务应该在所有涉及的碎片中提交或中止,表现出行为的一致性。在分布式数据库中,原子性一般由两阶段提交协议来保证,两阶段提交协议依赖于一个可信的协调器,但区块链没有这样的协调器,因此将引入BFT协议来协调跨碎片事务。
最后,根据分类方法,对系统设计进行了分析和比较。
三。性能检查
在实验中,选择了Quorum和Fabric两个许可证链系统以及TiDB和etcd两个分布式数据库。
Quorum是以太坊Go语言实现的一个分支,它在以太坊的基础上增加了交易和契约的私密性、许可管理和基于Raft的共识机制。它以order-execute的形式打包块。Fabric是Linux基金会资助的一个全球协作项目的超级账本中的子项目,其架构模型为执行-订单-验证;TiDB是一个NewSQL数据库,继承了MySQL的大部分特性,由三个独立的模块组成:PD用于协调集群管理,TiKV用于KV存储,服务器解析和调度SQL查询;Etcd是NoSQL数据库,使用kv数据模型,事务限制宽松,注重可用性和一致性的权衡。
为了进行公平的比较,所有系统中的每个节点都有状态数据的完整副本。对于Fabric,事务由所有对等节点执行和签署,排序节点的数量固定为三个。仲裁和结构使用Raft协议。
实验从五个方面进行分析,即峰值性能和上述分类的四个方面,即复制、并发、存储和碎片。1.最佳性能
在峰值性能方面,区块链和分布式数据库的性能差距相当大。在这里,每个系统填充了100K个记录,每个记录的大小为1KB。记录仅更新和仅查询工作负载下的吞吐量和延迟。TiKV作为TiDB的底层分布式数据库模块,也参与了对比。
可以看出,NoSQL的性能优于NewSQL,因为它们不会产生支持ACID事务的开销。此外,TiDB的吞吐量仍然比性能更好的区块链织物高4倍。
2.复制
在复制方面,基于事务的复制模型影响系统的并发性,这是对系统性能的主要影响。根据下图中Fabric和TiDB的性能,比较了基于事务和基于操作的复制模型的影响。除了具有比TiDB更高的延迟,当系统饱和时,Fabric的延迟也会显著增加。当请求速率超过系统容量时,验证阶段将成为瓶颈。认为纸延迟的增加是由于Fabric中的串行验证,块和块内的事务在提交前顺序验证。
下图进一步显示了随着节点数量的增加,四个系统的吞吐量。其中,Fabric的复制方法是基于共享日志的,其他的是基于共识协议的。结构的吞吐量随着节点数量的增加而降低。在实验中,观察到块验证的延迟增加。这是因为设定了签署策略,使得所有对等节点都必须签署事务。Quorum使用raft协议,但其性能对节点数量不敏感。这是因为Quorum的顺序执行架构,打包块的过程是按顺序执行的。
上图还比较了仲裁中Raft和IBFT共识协议的吞吐量,以分析不同故障模型对性能的影响。在更大的网络中,IBFT的吞吐量方差更大,因为IBFT需要与比Raft更多的节点通信来避免主节点切换,恶意节点越多,重选主节点的概率越大,事务中断的概率也越大。
3.同时发生的
在并发性方面,执行-命令-验证架构的区块链在高竞争和高约束工作负载下性能较低。下图显示了偏斜度对性能的影响。每笔交易修改一条记录,记录的键值服从Zipfian分布,分布按照偏度系数θ变化。θ越大,修改冲突的可能性越大,竞争越大。可以看出,当竞争发生时,TiDB的吞吐量急剧下降;Etcd和Quorum串行执行事务,没有并发控制;而Fabric的性能却下降了31%,这是由于Fabric针对读写冲突的乐观并发控制机制导致了事务中止。此外,TiDB的吞吐量下降与事务中止率的增加不成正比,因为它的锁存机制需要更多的时间。
本文还通过增加每个事务中的操作数量来观察事务原子性对性能的影响。结果如下图所示。左图可以看出,当每个事务的操作数增加时,Fabric、TiDB和etcd的性能下降。说明更多的操作导致冲突,TiDB的事务也可能跨越多个分片;右图显示了作为操作数函数的TiDB和Fabric的事务中止率。TiDB中的事务中止主要是由于读写冲突,而Fabric中的读不一致和读写冲突。不一致的读取可能是由于需要预先执行和认可事务的对等节点提交数据块的速率不同。
下图进一步显示了要处理的数据大小对性能的影响。从左图可以看出,随着记录的增加,所有系统的性能几乎都在下降。并且仲裁的吞吐量显著下降。右图分析了结构和仲裁的事务延迟的详细信息。由于在提交阶段重建MPT数据结构,Quorum引入了哈希函数的开销,并且提议阶段和提交阶段的延迟以相同的速度增加。因为Quorum的order-execute架构使得事务必须在封装块的节点和其他节点上串行验证一致后才能执行,相比之下,Fabric的串行处理只有一次。
4.仓库
在存储方面,区块链账簿的抽象模型会带来很大的存储开销。此外,避免篡改状态数据所需的安全开销非常小。下图显示了记录大小对存储开销的影响。Fabric的存储开销比TiDB高得多,这是因为Fabric中区块链账簿链的抽象模型。比较Fabric中的MBT和Quorum中的MPT,右图显示MBT的开销较小,因为它的树结构规模是固定的。
5.分裂
在碎片化方面,由于碎片形成和周期性重配置的安全需求,碎片化区块链的性能远远落后于分布式数据库。TiDB,AHL和扳手在这里使用。AHL是基于Fabric的碎片化区块链,而Spanner是基于云的NewSQL数据库。如图14所示,当节点数量增加时,TiDB的吞吐量高于Spanner。这是因为一旦检测到冲突,TiDB会立即中止事务,而Spanner使用悲观的并发控制机制,在事务冲突的情况下会竞争锁;与具有固定碎片的AHL相比,为了获得更高的安全性,周期性地重新配置具有碎片的AHL的性能降低了30%。然而,由于PBFT协议的高成本和其他安全开销,AHL和数据库之间的性能差距仍然很大。
四。摘要
根据以上的研究和分析,在论文的最后提出了一个可以用来分析和预测混合系统的框架,但是只使用吞吐量作为评价指标。可以看出,复制模型和故障模型极大地影响了系统性能。基于事务的复制不如基于操作的复制并发,所以吞吐量低。与BFT协议相比,CFT协议具有较低的网络开销。总体而言,本文系统地讨论和总结了区块链和分布式数据库的设计差异,并给出了由复制、并发、存储和碎片四个维度组成的分类方法。利用该方法分析了一些现有系统的设计方向,并进行了相应的性能测试。实验结果显示了底部设计选择对性能的影响。最后,提供了一个评估和估计系统吞吐量的框架。整篇文章的工作完整而细致,有助于理解区块链与数据库的设计联系和区别,从更细致有序的角度了解当前区块链与数据库融合的研究工作。
以下是文章截图
目标编译/徐莹
排版/孙毅
编辑/杨泽齐【延伸阅读】科技金融监管的“新治理”技术。
金融机构在治理算法信用评分中的作用
金融稳定过程中的监管技术:分类、关键方法、应用和未来方向
支付或成为普惠金融的良方。
ACM |区块链在中国