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