本文由币乎社区(bihu.com)内容支持计划奖励。
这是「区块链技术指北」的第 15 篇文章。
如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把你拉入微信群「区块链技术指北」。BTW,李笑来老师也加入了我的知识星球,文末有加入方式。
个人认为区块链只能借鉴传统的数据库技术,而无法将数据库改造成区块链。
首先我们简单理解下区块链和传统数据库。
区块链技术是一种不依赖第三方、通过自身分散式节点进行网路数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度,把区块链技术看成是一种分散式开放性去中心化的大型网路记账薄,任何人任何时间都可以採用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。
通俗一点说,区块链技术就指一种全民参与记账的方式。所有的系统背后都有一个资料库,你可以把资料库看成是就是一个大账本。那麽谁来记这个账本就变得很重要。目前就是谁的系统谁来记账,微信的账本就是腾讯在记,淘宝的账本就是阿裡在记。但现在区块链系统中,系统中的每个人都可以有机会参与记账。在一定时间段内如果有任何数据变化,系统中每个人都可以来进行记账,系统会评判这段时间内记账最快最好的人,把他记录的内容写到账本,并将这段时间内账本内容发给系统内所有的其他人进行备份。这样系统中的每个人都了一本完整的账本。这种方式,我们就称它为区块链技术。
区块链技术被认为是互联网发明以来最具颠复性的技术创新,它依靠密码学和数学巧妙的分散式演算法,在无法建立信任关係的互联网上,无需藉助任何第三方中心的介入就可以使参与者达成共识,以极低的成本解决了信任与价值的可靠传递难题。
公有区块链的所有数据都是公开的,任何人都可以查询或者拿到交易记录进行分析。
区块链主要包含有五大类的技术:P2P 网络技术,共识算法技术,块链结构技术,智能合约和密码学。
而我们再来看数据库。
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓 “数据库” 系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
第一,不管是 RDBMS、NoSQL 还是 NewSQL,都会提供一个 接口,供用户进行数据的存取。也就是说数据是可以篡改的,这跟区块链不可篡改的思想相悖。
第二,传统企业或者互联网企业之所以选择数据库,因为这些 数据是私有的,数据就是价值,数据就是竞争力。 企业数据库存储的数据是绝不会公开的,跟区块链所倡导的公开思想完全背离。比如你在知乎提问、答题,这些数据都会给知乎带来最大的价值,而不是给你带来最大价值。因为这些数据是存在知乎的数据库里,只有具有相关权限的人才会接触到。他们会拿这些数据做什么呢?出电子书、出实体书、出周边、大数据分析等等,而这几乎与你无关。也就是说,传统数据库是为企业最大化服务的,而不是用户。
第三,传统数据库都是应用在 中心化 的公司或者机构,与区块链去中心化的思想相悖。中心化意味着作恶的概率、被攻击的可能性极高。
第四,部分传统数据库开源,还有相当大比例的数据库都是闭源的。没有开源的数据库是由中心化的组织来维护代码,安全性和稳定性也是中心化组织来维护。这跟区块链所倡导的开源思想相悖。一个开源的系统自然会存在问题,但是社区会以最快的速度进行修复。
第五,除了分布式数据库有共识机制,其他的数据库没有完整的分布式协议应用,而分布式协议可以理解成区块链里的共识机制。大多数数据库不具备共识机制。
第六,区块链目前暂时没有达到大规模应用的要求,目前也是区块链技术的瓶颈,而数据库目前完全可以支撑大规模高并发的场景。区块链由于是一个分布式系统,想要实现高并发,关键点在于共识机制。
所以,传统数据库无法改造成区块链。
区块链可以借鉴传统的数据库技术有:
- 分布式领域的 Paxos、Raft、Zab 共识协议
- 传统数据库 Shard 方案与实现
- 传统数据库数据组织算法
- 分布式事务模型
另外,关于分布式数据库,可以看下 PingCAP 创始人刘奇作品 怎样打造一个分布式数据库。
原文发布时间为:2018-01-04
本文作者:区块链技术指北
本文来源:腾讯云 云+社区,如需转载请联系原作者。