带你一文看懂 Blockchain + NoSQL数据库
NoSQL数据库和现代区块链分类账都受益于一套共同的原则。由于其二者平台可以相互补充,因此当它们服务于同一应用程序时,能够配合完成多种工作。
在本文中,我们将一起来回顾一下二者协同的重叠部分,学习如何借助Couchbase的NoSQL平台来支持自己的下一个企业分布式账本应用程序(例如利用Hyperledger)。实际上这一话题涉及的内容非常深奥,但在本文中,我们将只触及两个较为浅显的想法,简要勾画出其共性和机遇:分布式计算和世界状态。
分布式计算
分布式计算是现代企业架构的核心——无论是并行处理CPU/GPU环境、多节点数据库集群,还是在不同地区具有同步集群的全球数据中心。
通过利用这些架构的分布式处理速度、可恢复性和可扩展性(这都是另一个话题了),应用程序开发人员可以专注于构建所需的用户体验,由后端数据系统来完成那些繁重的工作。
“分布式”是什么意思呢?简而言之,就有多个服务器作为节点集群的一部分进行管理。在理想情况下,在分布式系统中是不存在单点故障或集中控制的。
此外,它还假定将工作负载项分解为可供底层原子处理器进行处理的碎片,例如,将工作任务分布到多个节点上。
此类系统的名称中往往包含“点对点网络、集群计算、并行处理”等等。维基百科上有一个很好的列表,里面列出了到目前为止的各类相关系统。
列表地址:
https://en.wikipedia.org/wiki/Distributed_computing?ref=hackernoon.com
区块链是分布式技术的缩影
尽管分布式技术的优点很多,但其实其应用并没有想象中那么广泛,即使是在现代企业中,系统集中化的现象仍然非常普遍。其中就包括那些设计本应更具弹性的行业,如全球金融系统或供应链管理,实际上,这些行业往往更倾向于选择大型机计算。
顺便提一下,集中式系统非常好辨别,因为当它发生故障时,所有工作全部都会停摆!当所有数据或服务都在一台机器上运行时,一旦出现宕机的情况,系统便会完全停止运作。
这可能是因为启动替代机器需要时间,或者在重新路由用户之前需要时间来识别故障,又或许是因为其他各种毁灭性的工程原因。集中式系统与我们期待的点对点网络正好相反。
然而,随着比特币等平台的出现,下一代数字货币和“分类账”逐渐证明了其可行性。现在,有数千种不同的加密货币和数十种区块链后端都在应用去中心化技术。
此外,请注意“分布式账本”并不等同于许多加密货币中使用的“工作量证明”。相反,我们要把分类账视为已经对更新的应用程序建立起了信任,不必为了添加到链上而进行任何特定的任务。
分布式NoSQL
同样,企业也在为其内部系统寻找更多利用分布式技术的方法,以减少宕机时间。如果要做一个以分类账为基础的系统的话,目前有多种方法可供选择。如果要做一个通用数据库的话,选项也不少,特别是在数据管理方面。
在运行分布式系统的企业中,大部分技术都能在数据库中找到,尤其是NoSQL平台。这种分布式特性从其出现的第一天就成为了Couchbase的支柱之一,填补了传统数据库不可避免的关键性空白。
Couchbase引入了多维扩展的概念——即能够跨多个节点或多个集群来扩展应用程序和服务。
如果只是在单一节点上运行的话,就和再引入一个JSON文档存储没什么不同了。同样,如果另一种区块链技术不是同样分布在机器集群中的话,也没有任何意义。
集中式系统中一定会存在单一故障点和控制点,从而破坏整个系统的信任。但好在,Couchbase、区块链和相关技术都为分布式系统的存在提供了需求和价值。
超级账本(Hyperledger)组件
Hyperledger和Couchbase等区块链分布式账本的另一个共同点是,用例显示被管理资产的单一“当前”视图。
据Hyperledger Fabric的说法(一个特定的分布式账本实现),其系统中主要是有两类数据处理组件在发挥作用。
操作事务(Operational transaction)是所有分类帐的核心——它验证、创建并记录分类帐中的所有事务。Hyperledger Fabric处理所有内置权限,确认谁可以发起事务,并将其存储在各种后端技术中。
世界状态(World state)作为另一个主要组件,是另一个维护账户当前状态值的数据视图。当执行由一个实体到另一个实体的事务时,世界状态也会随之更新,保持当前最新值。以前的事务不会被存储在世界状态中。
世界状态系统中的每个帐户都会有单独的值,但是其整体的历史记录会被精确详细地存储在事务系统中。
NoSQL信息源
以上两个组件都可以通过Couchbase NoSQL数据库作为后端来实现。Couchbase在许多不同用例(金融、欺诈检测、物联网等)中都被用来处理高吞吐量的操作事务。分布式ACID事务也是可以的,这个话题我们将在以后的文章中进行探讨。
将Couchbase作为区块链系统的主要后端数据库可以方便操作与世界状态数据有关的存储/检索。
Couchbase常会被用来存储来自多个不同数据库的数据集合,提供所谓的信息源(Source of truth)。与世界状态类似,它也会存储相关当前数据的物化图像。
因此,Couchbase非常适合需要存储应用程序用户配置文件的应用开发人员。例如,虽然其他的后端系统或许会更新各数据片段,但当用户进行登录时,用户配置文件会立刻出现在JSON文档中。
在这种情况下,使用Couchbase的最终好处是可以享受为开发人员所提供的一切内置优势。一旦数据被投放到数据库中,我们就可以无障碍地访问基于SQL的强大查询工具、使用自然语言进行全文搜索、针对大型数据集进行大规模的大数据分析,等等。这样一来,开发人员便可以专注于产品和用户,同时让后端系统保持管理和同步。
为什么要选择NoSQL+Blockchain?
我写这篇文章的目的不仅仅是想要比较一下这两种技术,更是希望可以鼓励开发人员和架构师们研究如何将这两种技术结合起来使用,这不失为一种好方法。
Couchbase可以作为任何分布式账本或区块链技术之上的应用开发层,既可以成为可操作的数据库组件,也可以作为世界状态。如果你正在构建的企业解决方案需要快速、便捷地向终端用户提供帐户详细信息,那么世界状态数据库将会是一个绝佳的研究用例。
例如,当发生区块链事务且世界状态需要更新时,相同的更新也将被发送到Couchbase供用户使用。由于Couchbase有移动SDK,以及全面的分析SQL支持,因此它能提供比区块链系统更为强大的数据接口。
当我们希望用户能够快速访问最新信息时,这一点就变得尤为重要。
区块链系统需要一定的时间来传递信息,但借助先进的协议,Couchbase能够在更短的时间内实现这一点——在变化发生的第一时间便可以建立数据视图。而且由于Couchbase在多集群环境中运行,其平台的稳定性和弹性丝毫不逊于区块链系统。
集成
虽然目前还没有现成的Couchbase与Hyperledger集成,但Couchbase SDK支持所有主要的编程语言。任何构建基于区块链的分类账的人都可以使用区块链API和Couchbase API,通过JSON将当前世界状态更新发送到NoSQL数据库。
如果你对构建这种集成感兴趣的话,可以看看Hyperledger Fabric中的后端提供商,并从中挑选一个应用于Couchbase Server。
此外,当智能合约应用程序在分类账中更新时,也可以直接在发送的链码中实现该功能。我也只是才开始涉足这方面的内容,但在之后的文章中,我们可以将数据库用户自定义函数(UDFs)和区块链链码进行比较/对比,以供大家参考。
区块链领域还有很多值得我们深入挖掘的东西,但我希望本文中提到的这一点点相似性和重叠点能帮助你梳理自己的认知。
Scan QR code with WeChat