mysql 和区块链的差别_论区块链是什么数据库——正名篇

区块链是数据库,这句话大家都挑不出毛病。这就好比说,人是一种生物,树是一种生物。这是绝对的真理,同时也是一句废话。

mysql是一种数据库,mongodb是一种数据库,leveldb是一种数据库,但是我们在提到这些数据库的时候,会在他们前面加上一个定语,这个定语才是区别这几种数据库的关键。比如mysql是关系型数据库,mongodb是nosql数据库,leveldb是Key-Value数据库。所以区块链是数据库,但只有明确了它是一种什么数据库,才能将它与其他数据库区分出来,才能知道哪些场景适合用它。

我们从三个维度看看区块链的独特点。

一 数据结构

从主流的几种区块链来看,区块链数据结构分为两类:

bitcoin类,他们采用UTXO模型存储数据,交易即数据,形式和内容都比较单一,灵活性比较差,实际上这类区块链,把它当成数据库还真是有点牵强。

智能合约类,这是我要说的重点,这类把“逻辑相关”数据组织成智能合约,智能合约就相当于一个容器,在里面可以定义各种类型和结构的数据,是一种非常灵活的定义方式,可以在合约中定义对数据的操作接口。智能合约像一个编程语言中的“类”。那么从这个角度看,区块链像是一个“对象数据库”,可以定义不同的智能合约,每个智能合约也可以实例化出多个对象。

关于底层存储,mysql,couchdb,leveldb等都可以用来作为区块链数据的底层库,所以区块链是建立在这些数据库之上的,是一种对数据的更上一层的抽象。

二 数据分布机制

区块链天生就是一种分布式的,但跟通常讲的分布式数据库有几个区别:

1.数据全副本,每个节点的数据都是区块链数据的全集。

2.没有主从之分,任何一个节点都是独立自主的,自己决定自己的数据,不受其他节点控制,一个操作可以在任何一个节点上执行。

3.数据一致性机制不同,传统分布式数据库强调的是“强主从式”的一致性,所以采用同步机制,从节点从主节点同步保证数据一致性。而区块链是通过“共识”达到数据的一致性。多数节点对要写入区块链的数据达成一致才会被“写入区块链”,写入节点和写入区块链是有区别的,被少数节点写入的脏数据,是不被认可的数据,也就不是区块链的数据,这也是称为“共识”的原因。

可见区块链是一种“共识数据库”。

三 数据访问机制

传统数据库只是一种存储机制,写什么数据,怎么读取数据,完全是应用来控制。而区块链是读写控制规则与数据本身的合体。它通过“统一的链上规则”来控制数据的访问。bitcoin类的区块链主要是通过签名验证这种简单的规则,智能合约类区块链则是通过“智能合约”定义复杂的规则。

可见区块链是一种“规则(或信任)数据库”。

综述

所以现在再看,区块链到底一种什么数据库呢?一种共识,规则(或信任),对象数据库。这三者是一个绝佳组合。

但在实际中,为了系统的某些特性比如提升性能,可能会去掉区块链的某些特性,比如有的去掉了共识算法,采用同步算法来实现数据的一致性,那就不是共识数据库了;有的去掉了规则,将规则交给了应用,那就不是一种信任数据库了。取舍无关对错,就看场景需要什么,如果用于coin,显然三者缺一不可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值