区块链是如何存数据的?

我们都知道,区块链技术是一种去中心化的分布式存储方式,那么区块链如何存储和记录数据呢?

————————

个人技术公众号:解决方案工程师

欢迎同领域的朋友关注、相互交流。

————————

由浅入深,先讲一下集中式存储。

集中式存储从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系统中的。

区块链是如何存数据的?_第1张图片

但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备。从上图可以看出,集中式存储最大的特点是有一个统一的入口,所有数据都要经过这个入口,这个入口就是存储系统的机头。

传统的网络存储系统采用集中的存储服务器存放所有数据,集中式存储就是将数据存放在单一的服务器中。

然而,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。

然后看看什么是分布式存储。

分布式存储是将数据分散存储在多台独立的设备上,分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

区块链是如何存数据的?_第2张图片

上图是分布式存储(HDFS)的简化的模型,如果客户端需要从某个文件读取数据,首先从namenode获取该文件的位置(具体在哪个datanode),然后从该位置获取具体的数据。

在该架构中namenode通常是主备部署,而datanode则是由大量节点构成一个集群。

由于元数据的访问频度和访问量相对数据都要小很多,因此namenode通常不会成为性能瓶颈,而datanode集群可以分散客户端的请求。

因此,通过这种分布式存储架构可以通过横向扩展datanode的数量来增加承载能力,也即实现了动态横向扩展的能力。

接下来,讲一下去中心化的分布式存储。

区块链分类帐作为一个去中心化的数据库,用于保存每个事务的详细信息。交易按时间顺序添加到分类帐,并存储为一系列的块,每个块引用前面的块以形成一个互连的链条。

分类帐分布在多个节点上,每个节点都保存一个完整的副本。区块链自动同步和验证所有节点上的事务。分类帐对所有参与成员都是透明的,可以验证,无需中央机构或第三方验证服务。

区块链是如何存数据的?_第3张图片

上图是基于区块链的存储系统,会为存储准备数据,然后通过一个去中心化的基础架构进行分发,这个过程可以分为以下六个步骤:

(1)创建数据分片。存储系统将数据分成更小的片段,这个过程称为分片(Sharding)。这一步将数据分解为可管理的块,这些块可以分布在多个节点上。具体的分片方法取决于数据类型和进行分片的应用程序,对关系数据库进行分片,与NoSQL数据库或文件共享上的文件是不同的。

(2)加密每个分片。分片之后,存储系统需要加密本地系统上的每个数据分片,内容所有者可以完全控制此过程。目标是确保内容所有者以外的任何人都无法查看/访问分片中的数据,无论数据位于何处、该数据是静态还是动态。

(3)为每个分片生成哈希(Hash)。区块链存储系统根据分片的数据或加密密钥生成唯一的哈希——即固定长度的加密输出字符串。哈希将添加到分类帐和分片元数据,以便将事务链接到存储的分片。生成哈希的确切方法因系统而异。

(4)复制每个分片。存储系统会复制每个分片,因此有足够的冗余副本,可确保可用性和性能,并防止性能下降和数据丢失。由内容所有者来决定每个分片的副本数量以及这些分片所在的位置。此过程中,内容所有者应该为需要维护的最小副本数建立阈值,以确保不会丢失数据。

(5)分发复制的分片。P2P网络将复制的分片分发到地理上分散的存储节点,无论是区域还是全局。多个组织或个人(有时也称作farmer)拥有存储节点,通过租用额外的存储空间可换取某种类型的补偿,通常是加密货币。没有一个实体能够拥有所有存储资源,或者控制存储基础架构。只有内容所有者才能完全访问其所有数据,无论这些节点位于何处。

(6)将交易记录到分类帐。存储系统记录区块链分类帐中的所有事务,并在所有节点之间同步该信息。分类帐存储与事务相关的详细信息,例如分片位置、分片哈希和租赁成本等等。由于分类帐基于区块链技术,因此它具有透明性、可验证性、可追溯性以及防篡改性。

以上描述的六个步骤,只是对区块链存储过程的概念化总结。具体方法取决于特定存储系统的实际需求,即存储系统如何针对给定的用例进行实施,以及如何管理数据存储。

你可能感兴趣的:(区块链)