区块链 ≠ 分布式存储

【背景】
随着区块链技术的发展和应用场景的逐步丰富,越来越多的人开始接触区块链。但在过程中,很多人提过这样的问题:“底层用区块链系统和用数据库有什么区别呢?”、“区块链系统是不是就是一个OLTP数据库系统?”…

直观的角度来看,完整的区块链系统内部一定会包含一个「存储模块」,整体而言,区块链系统确实可以起到持久化数据的作用。

但是如果从这个角度出发,直接将区块链系统看作是一个数据库,这样的观点也是有待商榷的。在作出最终比较之前,我们先来分析一下传统数据库系统的运行机制以及区块链系统内部存储模块的功能职责。

【传统OLTP数据库VS区块链存储】
▲ 传统OLTP数据库存什么?
现阶段的数据库系统、存储引擎的设计一般是面向某一通用场景的,比如sql型数据库、NoSQL型数据库(kv数据库、文档数据库等),而不是面向具体业务场景的,那一般的OLTP数据库内部的数据分为四大类:

数据库内部的管理性质的元数据。这部分数据基本上对用户是透明的,负责数据库内部的管理与控制逻辑;

用户自定义数据。这部分数据是用户通过API向数据库写入的数,数据库系统一般不关心这部分数据的具体内容,而是侧重于如何正确、完整的将这些数据保存到持久化设备;

索引数据。索引数据一般是数据库设计中不可或缺的一个组成部分。为了保证数据库“读数据”功能的响应时间在用户可接受范围内,几乎所有数据库系统都需要或多或少的引入索引;

日志数据。日志数据是一种数据库内部数据,其内容一般是记录数据变更行为,一般用于数据库宕机重启后的数据恢复。在不同的数据库中,日志数据的内容差距也非常大,比如:有的数据库使用日志来记录存储层的数据变更(磁盘上位置X开始,连续N个字节从Value1变成了Value2),有的数据库使用日志来记录用户的写入命令请求(比如插入操作,内容为key=1,value=“ABC”)等等。
在这里插入图片描述
▲ 区块链存储模块有何不同?
当我们站在区块链系统内部“数据存储”功能的角度看待“区块链系统”时,我们会发现,区块链系统具有确定性的系统架构、确定性的内部业务逻辑,以及一些通用的数据组织格式(比如:区块是一种append-only形式的数据、只有虚拟机执行指令的过程中会修改状态数据等)。区块链系统中的数据存储只需要满足这一套运转逻辑过程中的持久化需求即可,也就是说,区块链系统为其存储模块划定了比通用数据库更小的模块功能边界。

▲区块链存储存什么?——世界状态
从使用者角度来看,一个最常规的区块链服务是由一个区块链网络提供的。区块链网络由多个节点构成,用户可以向区块链服务发送交易,

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值