区块链的本质是分布式记账,大众的了解是一种分布式账本和分布式数据库,那么它和数据库是不是一样的,如果不一样区别在哪里?
区别1:数据存取
只能“CR”、不能“UD”
常见的数据库不使用“块”,而是使用“表”。表是数据库中以表格式保存的相关数据集合,由列和行组成。
在关系数据库中,表是一组数据元素(值),使用垂直列(通过名称可识别)和水平行的模型,形成行和列相交的单元格。表具有指定数量的列,但可以有任意数量的行。
人们可以在数据库中对数据使用四种基本操作:创建、读取、更新和删除(CRUD)。
然而,区块链只允许两种操作:创建和读取。区块链只能在区块链的末尾附加一个完整的区块(其中包含交易),添加后数据无法更新或删除。
数据库允许人们不断地更改甚至删除过去存储的数据。区块链有意保持历史数据不变并始终可用。
区别2:数据权限
“一组管理员”≠区块链节点
除了“允许进行什么操作”,“谁来操作”也是看待区块链和数据库之间不同的另一个重要层面。
数据库由一个或者一组管理员维护,管理员还可以修改或删除它。如果对数据正确性存在争议,用户没有或者仅掌握有限的修改权限,管理员总是比用户拥有更多的权限。且区块链中不存在修改和删除权限数据的管理员。
从直接参与者的角度来看,少数实体之间的私有区块链可以看作是一个分布式、去中心化的系统。如果私有区块链在单个公司中使用,那么虽然它有一些分布式系统的优势,但仍然是中心化的解决方案。对于单个公司,数据库可能是更好的选择。
区别3:数据备份
“冗余数据库”≠区块链
传统数据库进行“数据复制”,主要是防止数据丢失,不能防止篡改历史数据或管理员重写数据。如果一个服务器接受了更改,而其他服务器没有,还可能存在数据不一致的情况。
数据复制
区块链利用去中心化共识,简洁的解决了上述问题。一旦网络中的所有或大多数节点同意添加一个新块,数据就会写入许多硬盘。即便生产新块的节点在这一同步后立即崩溃,数据也总能在其他节点上确保安全,崩溃的节点随后还能够获得关于所有区块的有效版本。
数据在所有节点达成一致后被写入所有磁盘
多个备份数据库也不能与区块链具有同等的安全性。
“数据复制”意味着一个服务器向其他服务器发送数据以进行备份。在存储数据之前,服务器之间并没有对储存某个版本数据达成共识。如果一个服务器发送了无效或错误的数据,其他服务器只是盲目地接收和存储它(某种数据验证仍然在发挥作用)。
与此相反,在区块链中,大多数节点在将一个块存储到区块链之前必须达成一致意见。
区别4:数据传输
分布式系统≠去中心化方案
传统数据库采取主从式架构(client-server),这是一种软件结构模型,由客户端系统和服务器系统两部分组成。它们通过计算机网络或在同一台计算机上通信。主从式架构的应用程序是由客户端和服务器软件组成的分布式系统,但还是以一个以服务器为中枢的中心化解决方案。
数据库建立在服务器上。因此,如果只有一个服务器,那有可能造成所谓的单点故障。一旦服务器不能运行,所有的客户端都不能与服务器通信,也就不能彼此通信。
从数据的角度看,所有的客户端必须依赖于服务器,认为它诚实且做足了安全保障。
现在,很少看到只有一个服务器的网络。在大多数情况下,网络中有更多的冗余服务器。如果一个服务器崩溃或暂时不可用,则会有另一个服务器代为处理所有请求,但这只有在服务器之间已经复制数据的情况下才有可能。
如果向服务器发送交易或请求,数据将在给定时间内写入一个数据库,然后再将数据备份到其他数据库。通常会有一些延迟,还有可能出现数据传输不一致的情况。
区别5:数据存储
不可更改与价值证明
数据库可以用于安全监控、信号提示、信息收集和授权等场景。许多数据库以数据库触发器的形式提供有效的数据库特性。在使用云数据库时,数据通常只对少数人很重要,实现在数据库系统中安全性就足够了。用户可以信任数据库所有者,因为有法律等其他机制可以解决可能出现的问题。
当要求存储不可改变的信息,比如证明状态X在Z时点对用户Y有效时,区块链的优势就体现出来了。它适合保存并证明所有权。这就是为什么人们可以在区块链上创建数字货币。这类信息不能被个人所改变,安全性必须很高。添加区块的过程其实就是以一种免信任的方式为大量用户添加许多X状态的过程。
综上所述数据库很强大,人们可以利用它实现几乎所有想要的功能,但区块链的特有功能,数据库是做不到的。