如果有人问你“什么是 NoSQL”,相信你很难回答这个问题。你可能会说,NoSQL 是“一个不使用 SQL 的数据库”,但对于不同的人来说,这句话的含义是不一样的。如果有人问你“什么是区块链”,也是一样的道理。
2018 年的区块链就好比 2009 年的 NoSQL。
- 市场上充斥着各种各样的实现,每个实现尝试解决同一个问题的不同部分。
- 尽管使用了相同的技术术语,但接口却各不相同。
- 主要参与者积极参与各种技术会议。
- 将几十年前的研究应用于现代软件中。
- 出现几个关键的成功案例。
- 出现几个重大的反面案例。
当然,来自各方的唱衰者告诉你,你不需要区块链,就像有很多人告诉你,你不需要 NoSQL 一样。
唱衰者是对的,他们一贯如此。你可以使用任何一款数据库来完成 NoSQL 能够提供给你的各种存储和存储保证,你也可以通过数据签名和不可变写更新来获得区块链能够为你提供的审计和信任能力。
我发现一个很有趣的现象,很多 NoSQL 领导者恰恰就是区块链唱衰者。他们可能会说,“不是每个人都需要 NoSQL,但它们确实可以为一些人提供价值”,或者,“它们可能不是新技术,但把它们组合起来就能获得更大的价值”。他们一方面肯定 NoSQL 的存在价值,一方面断言区块链一文不值。
或许术语仍然是部分问题所在。如果有人问你“什么是 NoSQL”,相信你很难回答这个问题。你可能会说,NoSQL 是“一个不使用 SQL 的数据库”,但对于不同的人来说,这句话的含义也不一样。如果有人问你“什么是区块链”,也是一样的道理。区块链是指“通过加密哈希链接在一起的数据块”结构吗?是指去中心化的信任吗?是指“* 证明”(proof of *)的共识吗?是指加密货币吗?
我同时参与了这两个社区。我在 Basho 和苹果公司工作时参与了 NoSQL 运动。现在,我正在写有关区块链的文章,因为在过去的几个月里,我一直在参与区块链运动,并开发 VMware 的一个项目。NoSQL 之争已经结束,所以我不打算再重提它。但是,我想在此讨论为什么区块链领域值得我花费时间去研究。
我之所以对区块链感兴趣,很大一部分原因要归结于我所在的项目。我在 VMware 的团队已经意识到,就像 NoSQL 是一个用于描述可伸缩数据库的术语一样,“区块链”是一个用于描述分布式信任系统的术语。那些经常成为热议话题的核心工具,虽然它们真的是几种技术的组合,但也只不过是拜占庭容错状态机复制(Byzantine Fault Tolerant State Machine Replication,BFTSMR)。
是的,BFTSMR“只是”对共识和密码学(包括所有与加密相关的东西,如哈希、签名、混淆等)的复制,你也可以组合大量现有的技术来创建出属于自己的技术。但是,就像 Dynamo“只不过是”具有逻辑时钟和 gossip 的分布式哈希表一样,技术的组合提供了一些非常不一样的功能。从经典的教科书开始探索这些技术至今,它们已经取得了重大的进展:
- 共识算法:随着分布式系统变得越来越普遍,我们有了更好的理解和实现( https://arxiv.org/abs/1804.01626 )。
- 加密签名:硬件为此提供了很多内置的原语,并且出现了诸如阈值签名之类的优化。
- 状态机抽象:在系统中嵌入一个高效的解释器比以往更容易,以实现快速的扩展性和实验。
- 网络:RDMA、公有云、边缘网络和其他新的拓扑要求新的通信模式,这样才能发挥出它们的潜力。
- 存储:闪存很便宜,并且你想要的任何数据模型都已准备就绪。
多年来(几十年来),BFTSMR 一直被忽视,因为对于真实的系统来说,它已经变得不切实际。然而,随着新进展的不断出现,即使它还没有达到集中式数据库的速度和效率,但已经开始成为某些应用程序的合理选择。如果区块链提供的抽象(如不可变日志中的交易记录)可以让人们利用这些经典的想法和优势,那么我很高兴能够为它出一份力。
不过,与区块链有关的一些现实问题需要引起我们的注意。加密货币不能作为投资策略,它们的价值和成本波动得如此剧烈,并不具备所承诺的分布式能力和等化效果。人们对现有的网络控制存在很大误解。工作证明(proof of work)是一种浪费。目前要实现匿名化非常困难,大多数尝试都收效甚微。
但正如我们不会让误解掩盖了 NoSQL 所带来的真实改进一样,我们现在也不会一棒子打死区块链。
英文原文: https://blog.beerriot.com/2018/06/05/blockchain-2018-nosql-2009/
评论