mysql 和区块链的差别_论区块链是什么数据库——正名篇
區(qū)塊鏈?zhǔn)菙?shù)據(jù)庫,這句話大家都挑不出毛病。這就好比說,人是一種生物,樹是一種生物。這是絕對(duì)的真理,同時(shí)也是一句廢話。
mysql是一種數(shù)據(jù)庫,mongodb是一種數(shù)據(jù)庫,leveldb是一種數(shù)據(jù)庫,但是我們?cè)谔岬竭@些數(shù)據(jù)庫的時(shí)候,會(huì)在他們前面加上一個(gè)定語,這個(gè)定語才是區(qū)別這幾種數(shù)據(jù)庫的關(guān)鍵。比如mysql是關(guān)系型數(shù)據(jù)庫,mongodb是nosql數(shù)據(jù)庫,leveldb是Key-Value數(shù)據(jù)庫。所以區(qū)塊鏈?zhǔn)菙?shù)據(jù)庫,但只有明確了它是一種什么數(shù)據(jù)庫,才能將它與其他數(shù)據(jù)庫區(qū)分出來,才能知道哪些場(chǎng)景適合用它。
我們從三個(gè)維度看看區(qū)塊鏈的獨(dú)特點(diǎn)。
一 數(shù)據(jù)結(jié)構(gòu)
從主流的幾種區(qū)塊鏈來看,區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)分為兩類:
bitcoin類,他們采用UTXO模型存儲(chǔ)數(shù)據(jù),交易即數(shù)據(jù),形式和內(nèi)容都比較單一,靈活性比較差,實(shí)際上這類區(qū)塊鏈,把它當(dāng)成數(shù)據(jù)庫還真是有點(diǎn)牽強(qiáng)。
智能合約類,這是我要說的重點(diǎn),這類把“邏輯相關(guān)”數(shù)據(jù)組織成智能合約,智能合約就相當(dāng)于一個(gè)容器,在里面可以定義各種類型和結(jié)構(gòu)的數(shù)據(jù),是一種非常靈活的定義方式,可以在合約中定義對(duì)數(shù)據(jù)的操作接口。智能合約像一個(gè)編程語言中的“類”。那么從這個(gè)角度看,區(qū)塊鏈像是一個(gè)“對(duì)象數(shù)據(jù)庫”,可以定義不同的智能合約,每個(gè)智能合約也可以實(shí)例化出多個(gè)對(duì)象。
關(guān)于底層存儲(chǔ),mysql,couchdb,leveldb等都可以用來作為區(qū)塊鏈數(shù)據(jù)的底層庫,所以區(qū)塊鏈?zhǔn)墙⒃谶@些數(shù)據(jù)庫之上的,是一種對(duì)數(shù)據(jù)的更上一層的抽象。
二 數(shù)據(jù)分布機(jī)制
區(qū)塊鏈天生就是一種分布式的,但跟通常講的分布式數(shù)據(jù)庫有幾個(gè)區(qū)別:
1.數(shù)據(jù)全副本,每個(gè)節(jié)點(diǎn)的數(shù)據(jù)都是區(qū)塊鏈數(shù)據(jù)的全集。
2.沒有主從之分,任何一個(gè)節(jié)點(diǎn)都是獨(dú)立自主的,自己決定自己的數(shù)據(jù),不受其他節(jié)點(diǎn)控制,一個(gè)操作可以在任何一個(gè)節(jié)點(diǎn)上執(zhí)行。
3.數(shù)據(jù)一致性機(jī)制不同,傳統(tǒng)分布式數(shù)據(jù)庫強(qiáng)調(diào)的是“強(qiáng)主從式”的一致性,所以采用同步機(jī)制,從節(jié)點(diǎn)從主節(jié)點(diǎn)同步保證數(shù)據(jù)一致性。而區(qū)塊鏈?zhǔn)峭ㄟ^“共識(shí)”達(dá)到數(shù)據(jù)的一致性。多數(shù)節(jié)點(diǎn)對(duì)要寫入?yún)^(qū)塊鏈的數(shù)據(jù)達(dá)成一致才會(huì)被“寫入?yún)^(qū)塊鏈”,寫入節(jié)點(diǎn)和寫入?yún)^(qū)塊鏈?zhǔn)怯袇^(qū)別的,被少數(shù)節(jié)點(diǎn)寫入的臟數(shù)據(jù),是不被認(rèn)可的數(shù)據(jù),也就不是區(qū)塊鏈的數(shù)據(jù),這也是稱為“共識(shí)”的原因。
可見區(qū)塊鏈?zhǔn)且环N“共識(shí)數(shù)據(jù)庫”。
三 數(shù)據(jù)訪問機(jī)制
傳統(tǒng)數(shù)據(jù)庫只是一種存儲(chǔ)機(jī)制,寫什么數(shù)據(jù),怎么讀取數(shù)據(jù),完全是應(yīng)用來控制。而區(qū)塊鏈?zhǔn)亲x寫控制規(guī)則與數(shù)據(jù)本身的合體。它通過“統(tǒng)一的鏈上規(guī)則”來控制數(shù)據(jù)的訪問。bitcoin類的區(qū)塊鏈主要是通過簽名驗(yàn)證這種簡(jiǎn)單的規(guī)則,智能合約類區(qū)塊鏈則是通過“智能合約”定義復(fù)雜的規(guī)則。
可見區(qū)塊鏈?zhǔn)且环N“規(guī)則(或信任)數(shù)據(jù)庫”。
綜述
所以現(xiàn)在再看,區(qū)塊鏈到底一種什么數(shù)據(jù)庫呢?一種共識(shí),規(guī)則(或信任),對(duì)象數(shù)據(jù)庫。這三者是一個(gè)絕佳組合。
但在實(shí)際中,為了系統(tǒng)的某些特性比如提升性能,可能會(huì)去掉區(qū)塊鏈的某些特性,比如有的去掉了共識(shí)算法,采用同步算法來實(shí)現(xiàn)數(shù)據(jù)的一致性,那就不是共識(shí)數(shù)據(jù)庫了;有的去掉了規(guī)則,將規(guī)則交給了應(yīng)用,那就不是一種信任數(shù)據(jù)庫了。取舍無關(guān)對(duì)錯(cuò),就看場(chǎng)景需要什么,如果用于coin,顯然三者缺一不可。
總結(jié)
以上是生活随笔為你收集整理的mysql 和区块链的差别_论区块链是什么数据库——正名篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【前端】网页布局基础
- 下一篇: miui 8.5 android,小米M