Blockchain DB,区块链数据库(2)
2017-05-15 编辑:
区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全地交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预都不起作用。
信息不可篡改(Untemperable)
一旦信息经过验证并添加至区块链,就会永久存储起来,单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
匿名性(Anonymous)
由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任。
区块链的核心在于数据
区块链和大数据是两个在过去几年中都得到飞速发展的技术。2016年第46届世界经济论坛达沃斯年会论坛的主题为“掌控第四次工业革命”,包括人工智能、无人驾驶、区块链、量子计算等在内的科技前沿领域在会议中被反复提及。
目前区块链能够承载的信息数量是有限的,离我们要用“大数据”的标准来衡量的地步还差得很远,不过千里之行始于足下,要一步一步地来。
如果要让区块链承载大数据,那么目前笔者所看到的这些区块链系统都还不具备这个能力。
我们来看区块链系统三个和大数据有矛盾、需要改进的特点:
分布式的
有隐私的
安全的
区块链系统是分布式的,而大数据讲究的是可规模化的、可量化的数据;区块链系统是匿名的、有隐私的,而大数据在意的是个性化;区块链系统是安全的,信息是相对独立的,而大数据在意的是信息的整合分析。
区块链系统本身就是一个数据库,而我们所说的大数据指的是对数据的深度分析和挖掘,也就是说,数据分析和数据挖掘需要构建在区块链系统之上,把数据的价值发挥出来。
如果要做到以数据为基础来做决策,那么区块链的大数据化是区块链系统必须要完成的一个步骤。
区块链系统的局限性和门槛
微软亚洲研究院系统算法组首席研究员Thomas Moscibroda在2017首届科技金融国际峰会上提到了区块链的效率和隐私问题。在区块链中,每一个人都在分享自己的数据,而且每一个交易记录都需要被所有人核实、记录和存储。一方面,这个过程会使区块链对传统数据库而言更慢。另一方面,区块链双方的交易过程中第三方必须知晓,且会去核实这个交易的合法性和正当性,而每一个人都能知道交易双方的中间数据,这也带来了隐私问题。
String Labs联合创始人Tom Ding认为区块链技术其实是一项有相当门槛的技术,在整个世界上可能也只有为数不多的团队有能力开发底层区块链系统。
Alphabet的DeepMind Health部门已经宣布计划使用一种与分布式账本一样的系统来监视目前正在被使用的患者数据。他们的工具命名为Verifiable Date Audit(VDA)。Alphabet声称VDA并不是区块链,而是类区块链。VDA借鉴了很多来自比特币区块链的功能,包括不可更改性。同时还提供某种程度的透明度,所以第三方机构可以验证这些数据。
R3的技术主管Richard Brown针对他们的产品Corda是这样评述的:“Corda是一个分布式账本平台,它很大程度上受到并吸取了区块链系统的优势,去掉了很多不适用于银行业场景的区块链设计。”
笔者和包括Thomas在内的一些专家做过深入探讨,我们的共同观点是从架构上来看,在未来的3年甚至更长的时间内,包括比特币和以太坊区块链在内的主流区块链系统都无法有效提升技术应用到有高频数据录入需求的场景上。当然,如果一个区块链系统未来的场景在有足够大的用户和数据量的情况下每秒的交易量也不会到达千这个数量级的话,还有实现的可能。
基于区块链思想的区块链数据库
笔者一直坚持的观点是不以实际应用为目的的技术都是耍流氓,那么如何让区块链系统真正商用化?受到微软和Google各位同学的启发,我们认为如果要真正商用化区块链系统,唯一的出路就是区块链数据库(Blockchain DataBase)。
我们在设计的区块链数据库兼有区块链系统和数据库系统两个系统的优势。
正如笔者在前面说过,区块链系统是符合BASE理念的,不过并不满足ACID。所以我们可以选择一个不满足ACID,而符合BASE理念的数据库来做底层数据架构。对于了解数据库系统的同学而言,可以选择的数据库底层架构已经呼之欲出了。
而与传统的数据库系统相比,区块链数据库将能够拥有原先系统所不具备的特性,也就是笔者在前文中所讲述的区块链系统的各种特性。
区块链数据库中的数据
比特币区块链的可扩展性是一个大问题。如果不提升数据块的大小,整体的交易量则无法提升,而如果提升了数据块的大小,因为每个客户端的节点都会有数据库的完整拷贝,数据存储会是一个非常头疼的事情。
不同于传统的区块链系统,区块链数据库将会拥有数据库系统的可扩展性和性能:
数据可以超过1TB,甚至到达PB的数量级
并发写入的数量级可以达到10-30万笔/秒
单条事务数据没有上限
区块链数据库的共识模块
区块链数据库中共识模块的作用是让系统中所有的数据节点都能够保持一致。如果一个节点的区块链上添加了一条新的交易,那么数据库中所有其他节点也会把同一个交易加入到各自的区块链上。
共识模块的关键点就在于保持整个系统中所有交易顺序的一致性。
共识算法在以太坊和比特币区块链中的达成是通过工作量证明(POW)或者权益证明(POS),而IBM Hyperledger和其他一些想要提升效率的区块链系统采用的是PBFT(Practical Byzantine Fault Tolerance)协议。后者的效率会高很多,不过网络传输的数据会根据节点数的上升而成倍增加。
区块链数据库中,我们会采用Paxos共识算法。
笔者认为在未来三年内,真正可以商用的区块链系统,其底层都会是类似区块链数据库这样的数据系统。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请点击「阅读原文」订阅《程序员》。
相关阅读:
相关推荐: