区块链突然在金融领域爆红,但是不要把区块链想的过于高深,其实它的本质很简单,就是一个网上的公布账本。区块链被认为任何有能力架设服务器的人都可以参与其中。各行各业对区块链的相关需求越来越迫切,区块链技术也在渐渐落地。同时也有人认为区块链是一种更安全的数据库,那么相对于传统的数据库哪种更好用呢?
区块链可以被认为是一种新型的数据库。这种数据库可以直接被分享,通过一群非信任节点,无中心化管理的方式运作。它不同于传统的SQL和NoSQL数据库被一个单一实体控制,即使是在防火墙后的分布式架构的数据库。
在某些方面讲区块链是一种更安全的数据库,在某些方面则不是。考虑到当前中心化的数据库依然是主流,可能混合两种数据库是一种不错的解决方案。
去中心化:区块链的优点
传统的数据库,需要一定的访问权限去管理,也就是说你必须依赖人为的管理。一旦访问权限被黑或者管理员作恶,数据就有很大的危险性,或者存在被人篡改的可能性。
在现实世界中,银行和金融机构以及各种大公司通过一些手段积攒了一些信用。我们将钱存在银行里,而不用担心它被盗。银行本身需要一批可信的数据库管理员,开发人员,以及一些安全的管理流程,依赖这些,来保证数据的安全性。但是这些数据库管理员,和开发人员,以及安全流程都是需要一定的时间成本和人力成本。
区块链提供了一种方式去取代这些额外的成本,用数字加密学和工作量证明以及节点共识的机制来保证数据的安全。
健壮性:区块链的优点
区块链的另外一个优点就是高容错,因为它内在的冗余机制。每个节点对于整个区块链网络而言,都不是必不可少的。节点之间互相通信,即使一些节点因为一些原因出错,也不会导致整个网络垮掉。同时失败的节点,重启之后也总是能正确同步新的交易。
对于传统数据库同样有冗余性,但是区块链却将它发挥到了一个新的高度。任何节点都可以自由的加入节点,并且不需要系统做任何的配置。同时任何节点都可以自由离开这个网络,而不会对网络造成影响。
传统数据库的冗余机制,依赖于昂贵的技术架构和容灾措施。通常是有一个主数据库,多个从数据库,主数据库通常运行在一个非常昂贵的高配置机器上,然后多个从数据库从主数据库同步数据。如果主数据库出线问题,从数据库就会临时上升为主数据库,并对主数据库进行恢复,恢复成功后,可能还需要切换到原来的主数据库。众说周知,这个技术架构非常复杂,而且在配置方面也比较难,出现问题之后,正确处理也不是非常容易。
但是如果是区块链,假设我们有十个节点,它们只需要运行在十个不同的普通计算机上就可以。节点之间互相通信,如果一个或者两个节点出现问题,其他节点不会有任何影响。
性能:中心化数据库优点
区块链比传统的数据库要慢,并不是因为区块链技术本身就慢,而是因为区块链本身是新生事物,依然处于早期阶段,性能优化仍然有一定空间,同时因为区块链除了像传统数据库那样运行,还要做额外的负载:
1. 签名验证。每一个区块链的交易都需要签名验证,同时这些签名验证在每个节点间都是要运行的,用于证明交易的合法性。传统数据库只在第一次通信做一些签名验证,后续请求就不需要。
2. 共识机制。节点间要达成共识,需要复杂的通信,并且需要处理分叉。
3. 冗余性。传统数据库,主节点更新数据,然后同步数据到从数据库。区块链每个节点都需要保存交易数据。
透明性
同时,在区块链上的交易都是透明的(传统区块链,现在已经有加密区块链方面的研究)。因为对于很多商业结构之间,可能存在竞争性,他们不希望对手看到他们的信息。但是另外有一些场景则恰恰相反,比如众筹平台,慈善平台,恰好需要交易的透明性和公开性。
总结
所以,对于到底使用传统数据库还是区块链,应该是取决于场景。中心化和健壮性?还是私密性?还是高性能?
所以,区块链在以下场景应该会更擅长:1)公司内部审计,2)来源追踪,3)轻金融系统。