一、概念
分片是一种水平分区,是一种广泛使用的数据库设计原则,将大型数据库中的数据划分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。区块链引入它是为了解决可伸缩性和延迟问题。
二、区块链分片的种类
按技术划分为网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。
1.网络分片
将整个区块链网络划分成多个子网络,也就是一个分片。网络中的所有分片并行处理网络中不同的交易。
在区块链中实现分片,网络被分成不同的团队(分片)。分片可以并行处理事务。每个节点只拥有区块链上的部分数据,而不是全部信息。因此,可以同时处理更多的事务。例如,想象一个有1000个节点的网络;可以将网络分成10个分片,每个分片由100个节点组成。速度应该增加10倍。
2.交易分片
由于网络分片是其他所有分片的基础,因此交易分片的前提是先进行网路分片。交易分片主要涉及的问题是哪些交易应该按照特定的属性被分配到哪些碎片当中。
3.状态分片
状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片可以减少状态的冗余存储,使得整个区块链网络具有存储的可扩展性。
三、跨分片通信
其中一个分片对于共同访问的状态的修改,需要及时地让另一个分片知道,否则就容易出现状态错乱。业界跨分片通信方案如下:
1.客户端维护交易ÿ