网站版权信息模板,网站建设程序员,wordpress主题mirana,网络服务图片区块链是数据库#xff0c;这句话大家都挑不出毛病。这就好比说#xff0c;人是一种生物#xff0c;树是一种生物。这是绝对的真理#xff0c;同时也是一句废话。mysql是一种数据库#xff0c;mongodb是一种数据库#xff0c;leveldb是一种数据库#xff0c;但是我们在提…区块链是数据库这句话大家都挑不出毛病。这就好比说人是一种生物树是一种生物。这是绝对的真理同时也是一句废话。mysql是一种数据库mongodb是一种数据库leveldb是一种数据库但是我们在提到这些数据库的时候会在他们前面加上一个定语这个定语才是区别这几种数据库的关键。比如mysql是关系型数据库mongodb是nosql数据库leveldb是Key-Value数据库。所以区块链是数据库但只有明确了它是一种什么数据库才能将它与其他数据库区分出来才能知道哪些场景适合用它。我们从三个维度看看区块链的独特点。一 数据结构从主流的几种区块链来看区块链数据结构分为两类bitcoin类他们采用UTXO模型存储数据交易即数据形式和内容都比较单一灵活性比较差实际上这类区块链把它当成数据库还真是有点牵强。智能合约类这是我要说的重点这类把“逻辑相关”数据组织成智能合约智能合约就相当于一个容器在里面可以定义各种类型和结构的数据是一种非常灵活的定义方式可以在合约中定义对数据的操作接口。智能合约像一个编程语言中的“类”。那么从这个角度看区块链像是一个“对象数据库”可以定义不同的智能合约每个智能合约也可以实例化出多个对象。关于底层存储mysqlcouchdbleveldb等都可以用来作为区块链数据的底层库所以区块链是建立在这些数据库之上的是一种对数据的更上一层的抽象。二 数据分布机制区块链天生就是一种分布式的但跟通常讲的分布式数据库有几个区别1.数据全副本每个节点的数据都是区块链数据的全集。2.没有主从之分任何一个节点都是独立自主的自己决定自己的数据不受其他节点控制一个操作可以在任何一个节点上执行。3.数据一致性机制不同传统分布式数据库强调的是“强主从式”的一致性所以采用同步机制从节点从主节点同步保证数据一致性。而区块链是通过“共识”达到数据的一致性。多数节点对要写入区块链的数据达成一致才会被“写入区块链”写入节点和写入区块链是有区别的被少数节点写入的脏数据是不被认可的数据也就不是区块链的数据这也是称为“共识”的原因。可见区块链是一种“共识数据库”。三 数据访问机制传统数据库只是一种存储机制写什么数据怎么读取数据完全是应用来控制。而区块链是读写控制规则与数据本身的合体。它通过“统一的链上规则”来控制数据的访问。bitcoin类的区块链主要是通过签名验证这种简单的规则智能合约类区块链则是通过“智能合约”定义复杂的规则。可见区块链是一种“规则(或信任)数据库”。综述所以现在再看区块链到底一种什么数据库呢一种共识规则(或信任)对象数据库。这三者是一个绝佳组合。但在实际中为了系统的某些特性比如提升性能可能会去掉区块链的某些特性比如有的去掉了共识算法采用同步算法来实现数据的一致性那就不是共识数据库了有的去掉了规则将规则交给了应用那就不是一种信任数据库了。取舍无关对错就看场景需要什么如果用于coin显然三者缺一不可。