写点什么

区块链与数据库技术对比及融合展望

  • 2019-10-24
  • 本文字数:2727 字

    阅读完需:约 9 分钟

区块链与数据库技术对比及融合展望

10 月 19 日下午,由百度超级链学院与金色财经联合主办的百度超级链学院线下技术沙龙《区块链与数据库的融合碰撞》在北京科技寺创业空间滚石店顺利举行。百度超级链资深工程师孙君意进行了《区块链与数据库技术对比及融合展望》主题分享,以下为演讲整理


孙君意,百度超级链资深工程师,目前负责超级链的架构设计,对区块链的账本、事务模型有深入研究。在百度期间负责过万亿级网页链接库实时存储,Feed 统一内容池、垂搜多版本数据库等项目。


首先我们来思考一个问题,区块链和数据库在哪些维度上有共性,我自己有一个简单的定义,我认为区块链和数据库都是数据管理技术,数据管理并不高深,我们用一个 Excel 就可以进行。我们在实际项目实施过程中会被客户问到一个问题,为什么这个项目非得用区块链,区块链难以篡改,比如说有密码的支撑,比较方便实现多方共享。但是这些是不是足以说这个项目就可以用区块链,我认为如果在应用层做很多间接改造也可以实现大部分功能,但是其中有一部分很难实现,就是在参与管理数据的多方存在不信任的场景下,这种场景下是很难用传统数据库解决的。除非多方之间选出大家都公信的“盟主”,让它来管理这个数据库,这个时候业务用数据库就可以做,否则的话是行不通的。


我认为区块链的革命性就是实现了可信的数据管理,为什么说可信,有两个方面,第一个是存储的可信;第二个是数据处理过程的可信。通过区块链的共识算法实现了在去中心的网络环境下成百上千个节点维护着一致性的数据副本。并且,数据的变更都是公开透明和可审计的,每个节点都会验证,不管是密码验证还是合约执行结果的验证,都会在各个节点执行。


网络规模越大,公信力越强,事实上人们也愿意为可信带来的溢价买单。一个简单的例子,如果现在在亚马逊的 RDS,如果要存储 1GB 的数据,成本大概是每月 0.25 美元,但是同样如果存在以太坊上,大概需要三万两千个 ETH,有 7200 多个节点分布式地在全球存储其副本。区块链通过共识算法和智能合约,在实践层面真正实现了可信的数据管理,这是具有革命性的。


另外一方面,很多人也看到区块链有很多的局限性,出现了一些悲观的看法,比如认为区块链都是更慢的数据库,链式哈希不新鲜,Git 中早就有了;绝大多数场景用数据库就够了, 不是刚需——Nice to Have , Not must have,但是我认为这种看法是错误的。


我总结一下区块链适用的场景有三点:


  1. 数据的变更历史需要透明、可审计的应用场景;

  2. 数据的处理过程需要按照多方约定并公示后的规则来执行的场景;

  3. 数据的副本需要维护在多个不完全互信节点的场景。



本次分享内容会从三个关键的技术维度去对比:事务管理、共识算法和编程范式。从事务管理角度来看,区块链真的很慢吗?其实并不慢。为了性能,大多数数据库的默认事务隔离级别较弱,而 NUS 最新研究表明:当 Isolation Level 设置为最高级别(SERIALIZABLE)情况下,主流分布式数据库的性能和 HyperLedger Fabric 是一个数量级的(400 TPS 左右),单一的这种场景下,传统数据库和区块链相比并没有性能上的绝对优势。


再一个我们来看一下如何实现多版本并发控制,数据库一般有全局时间戳或者序号生成器,每个事务也有自己的序号,可以通过让事务只能读到序号比它序号小的数据版本实现不同事务的隔离。




由于要实现去中心化,区块链一般没有全局序号,而是通过显式的 Reference 关系表达事务之间的“顺序”。比如:比特币中,交易的 Input 指向了其他交易,表达了一种”Happen Before”的语意,HyperLedger Fabric 中,事务需要申明自己的“读写集”,其中,读集的版本是通过(区块高度, 块内序号)二元组引用。


在我们超级链里面的事务模型是 XuperModel,它是基于经典的 UTXO 模型演化而来, 经典的 UTXO 模型只能描述转账场景,而 XuperModel 创新之处在于可以描述更加通用的数据变更。




举个例子,这里有个“计数器”合约,调用一次,Counter 变量就会加一。从上图可以看到,每个事务的 Input 字段有个哈希指针指向其依赖的其他事务的 Output。也就是说,事务的 Input 描述了它读取的变量的旧版本,而 Output 体现了事务一旦成功后会赋予变量的新值。图中,T2 和 T2’这两个事务是冲突的,因为他们的 Input 引用了相同的变量的旧版本,但是输出是赋值同一个变量。最终,T2 和 T2’只能有一笔上链,另外一笔会回滚。



再一个,超级链底层的数据多版本机制实现也与数据库不同。 数据库的一般做法是将逻辑 Key+版本号拼接成物理 Key,但是这个方式只能保留有限个版本,一旦版本太多,就会导致区间查询迭代很慢,因为要 Scan 大量无用的老版本。超级链用了一种链式哈希的多版本接口,在状态树中 Key 对应的 Value 只是哈希指针,指向账本中事务的 Output 字段,要回溯之前的老版本也只需要通过事务的 Input 指针再往前回溯。当需要回滚事务或区块的时候,产生的 IO 开销也极低。



这里再举一个简单的例子,还是刚才那个“计数器”场景。假设 Alice 和 Bob 几乎同时发起合约调用。合约执行到 Get 调用,得到同样的值是 42, 版本也一样是 tx1。然后加一计算得到 43,再分别进行 Set 提交,Alice 先提交的就可以将值更新到 43,版本更新到 tx3,而对于 Bob,虽然运算过程是对的,但是最终提交时候的版本已经过期了,因为其依赖的版本等于 tx1 而现在最新的版本是 tx3,所以就会失败。



我们再看一下共识算法的详细对比,说到共识算法不得不提一下 FLP 原理,原论文发表于 1982 年,大概是说:在异步网络下,多个节点中就算只有一个错误节点,也无法找到确定性的算法保证同时满足 safety 和 liveness。这个 FLP 给大家提供了分布式系统设计的理论指导,而实践中,数据库的共识更多的是牺牲了 liveness 而确保 saftey, 比如 raft。相反地,区块链尤其是公链则是牺牲了 safety 而优先保证 liveness 比如,比特币的交易如果是刚刚上链,那是有一定概率因为分叉被回滚掉的,不够 safety,但是好处是整个系统一直可以提交交易,就算有分叉,最终会通过最长链原则达到一致性。


上面的表格详细对比了数据库 &区块链在容错、选主方式、日志复制、安全和活性等方面的差异,并且区分了公链和联盟链。


下面看一下编程范式对比。数据库领域已经有统一的编程范式,就是 SQL(Structured Query Language),具体实现上有一些方言的差别。区块链的编程范式是智能合约(Smart Contracts),然而其具体的实现千差万别,比较有影响力的是以太坊的 Solidity 语言。




最后来做一下两者未来融合展望。我认为区块链和数据库有融合的契机,我写出来了两种可能,有一种是把区块链作为引擎接入到数据库中, 相当于从底层改造存储引擎实现去中心化的数据库。另外一个方向,区块链借鉴一下数据库好的东西,比如像 SQL,将 SQL 语句翻译为智能合约代码,提升易用性。谢谢大家!


2019-10-24 16:073711

评论 1 条评论

发布
暂无评论
发现更多内容

MySQL:我的从库竟是我自己!?

爱可生开源社区

率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX

威廉META

Last Week in Milvus

Zilliz

云服务 非结构化数据 Milvus Zilliz zillizcloud

Istio与Mcp Server服务器讲解与搭建演示

谐云

istio

超级App快速开发的一种创新模式

FinFish

小程序 小程序生态 超级app 小程序化

春分将至,发版当时:StoneDB-5.7-v1.0.3版本正式发布!优化主备能力,提高主从同步性能,众多细节优化,快来体验~

StoneDB

版本更新 StoneDB

六月更新 | MeetingOps:让有效协作与高效会议共同发生在云端

CODING DevOps

Gluten + Celeborn: 让 Native Spark 拥抱 Cloud Native

阿里云大数据AI技术

后端 企业号 7 月 PK 榜 Push Shuffle

Region Failover在GreptimeDB 集群中的实现

Greptime 格睿科技

时序数据库 云原生数据库 failover region datanode

国家电投江西公司与特斯联设立合资公司 发掘资本在新能源行业的潜在投资机遇

TE智库

数字税务时代的革新利器:低代码开发平台助力税务办公数字化大步迈进!

快乐非自愿限量之名

人工智能 低代码 数智化 税务云

低代码平台之流程自动化测试

鲸品堂

低代码 企业号 7 月 PK 榜

数智浪潮!低代码开发平台扬帆迈向智慧诊疗领域新纪元!

不在线第一只蜗牛

人工智能 低代码 数智化 医疗健康

2023-07-10:Kafka如何做到消息不丢失?

福大大架构师每日一题

福大大架构师每日一题

率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX

BlockChain先知

MySQL生态的下一代HTAP数据库创新与实践 | StoneDB邀您参加第12届数据技术嘉年华(2023 DTC)

StoneDB

MySQL 数据库 StoneDB

API全场景零码测试机器人——ATGen带来“超自动化”测试模式

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

神州数码:我们和阿里云是市场和技术的共同体

新云力量

云计算 阿里云 神州数码

低代码平台实用吗?有哪些大型企业在用低代码?

优秀

低代码

活动回顾 | StoneDB亮相2023数据技术嘉年华:增强AP、升级TP、信创替换,让万千DBA用得更省心,企业用得更省钱

StoneDB

数据技术 StoneDB 数据技术嘉年华

率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX

股市老人

从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

汀丶人工智能

人工智能 自然语言处理 深度学习 知识图谱 智能搜索

率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX

鳄鱼视界

面向大模型的存储加速方案设计和实践

Baidu AICLOUD

数据湖 大模型 并行文件系统 缓存加速

StoneDB 开源社区月刊 | 202303期

StoneDB

MySQL 数据库 StoneDB

【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

OpenTiny 前端组件库正式开源啦!面向未来,为开发者而生

OpenTiny社区

开源 前端 UI组件库

华为云“All in ”大模型:革命性助推!华为盘古3.0点燃人工智能巨星之梦

EquatorCoco

华为云 盘古大模型 大模型 数智化

消除企业信息孤岛的低代码开发平台

力软低代码开发平台

软件测试/测试开发丨Windows系统chromedriver安装与环境变量配置

测试人

软件测试 windows 环境变量 测试开发 chromedriver

区块链与数据库技术对比及融合展望_区块链_孙君意_InfoQ精选文章