上一篇文章介绍了分布式数据库与区块链的缘起与差异性,本文将以区块链技术的典型应用—— DeFi 业务场景和交易所场景,以及分布式数据库代表 TiDB 为例来讨论分布式数据库与区块链的结合。

分布式数据库 TiDB 介绍

TiDB 是 PingCAP 公司自主研发的开源分布式数据库,也定位为一款 HTAP 数据库,用于同时解决 TP 和 AP 问题。TiDB 集群的三大核心组件 TiDB、TiKV 和 PD构成了分布式数据库的典型架构,可以当作可线性扩展的 MySQL 以满足 TP 需求。2019年8月,TiDB 引入新的 TiFlash 组件,进一步增强 TiDB 的 AP 能力,使之成为一款真正意义上的 HTAP 数据库。TiDB 的核心优势包括:

  • 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容

  • 支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL

  • 默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明

  • 支持 ACID 事务,对于一些有强一致需求的场景友好

  • 具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景

TiDB 的 HTAP 技术架构

TiDB 采用计算、存储分离的架构,可对计算、存储分别进行弹性扩容和缩容,支持海量数据存储。同时 TiDB 列存储引擎 TiFlash 结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。

不同于传统数据库的主从复制方案,TiDB 基于 Raft 多数派分布式选举算法,自动完成多副本写入、数据分片(region)的拆分、聚合、重分布,是目前唯一能100%保证跨数据中心数据强一致性的数据库,同时保证在任意数据中心宕机或者集群故障时,数据100%不丢失且自动切换,真正意义上实现业务连续性与无人值守的运维自动化。

分布式数据库在 DeFi 业务场景中的应用

DeFi 业务场景对数据存储系统的需求

DeFi (Decentralized Finance)通常是指基于以太坊的数字资产是建立在区块链上的金融软件,是众多去中心化应用 (DApps) 中的一种。和传统金融行业中有很多关键角色,如银行、证券、保险一样,DeFi 也有很多板块,如抵押借贷、去中心化交易所、稳定币、资产管理、基础设施。DeFi 与传统金融很类似,它把比特币与其它币种进行交易、抵押,且这些交易都是发生在链上。目前 DeFi 处于发展的早期阶段,业务创新与迭代随时都会发生,未来的想象空间非常大。

繁杂的 DeFi 应用

大多数情况下这类业务与数据库结合的应用不太多,因为大部分交易信息都在以太坊的节点上,但也有很多场景需要拉到链下来处理。简单来说,链上的数据本身是去中心化的,如果需要做一些中心化的分析业务,那么对存储系统就有以下需求:

  • 海量存储空间:将多种公链上的数据拉下来可能需要十几 T、上百 T 的存储空间,而且数据会持续增长

  • 既能提供强大的实时分析性能,也能支持高并发的交易明细数据查询

  • 能支持 SQL 入口,业务开发更简单,满足业务的快速创新与迭代

分布式数据库如何满足需求

仔细分析 DeFi 业务场景的几点技术需求,不难发现上文提到的分布式数据库强调的可扩展能力、HTAP 混合负载查询,以及对标准 SQL 的支持等特性恰好可满足。

这里以几个具体的应用场景来展示分布式数据库与这类 DeFi 业务的融合:

  • 链上交易数据分析: 一些区块链技术服务商为企业或个人客户提供行业信息、研究报告、资讯,或者提供量化交易算法模型等服务、机器学习回放数据,所以他们需要把很多公链数据拉下来,做一些聚合或者分析来帮助企业的客户对复杂的链上业务数据进行索引搜索和数据分析,然后推送给他们的客户。

这个场景与 TiDB 这种分布式数据库 HTAP 架构非常契合,分析检索可以直接利用 SQL 执行 join、groupby、filter 等操作;通过 Raft 进行实时的在线同步,TiFlash 拥有准实时的新鲜数据,可以减少引入 BI 等工具进行离线数据分析。

  • DeFi 钱包:个人账户查询场景,比如账户资产、合约、保险,以及交易明细和合约的信息。最大型的以太坊公链,全量+归档 node 数据量在 10T 以上,这个场景的出块速度:

    • 交易量:当前 12.5 亿多条交易,每个块 60-400笔交易;

    • 每日增量:200万-1000万之间,2G-5G左右;

通常,这样的速度对于数据库来说增量已经很高,而且 transaction 的历史会持续增加,数据量、计算量也会持续增加。而往往业务上会存储很多的公链数据,这就对数据库的写入、存储的扩展性提出要求。分布式数据库 TiDB 完全能够满足需求,它可以应对大量的访问者,且读取与写入能力都可以按需扩展。

  • DApps 基础设施:DApps 是更广义的去中心化应用,其运行都必须先构造一套分布式基础设施,因此行业中有一些分布式基础设施公司,为客户构建 dapp 开发平台设施,以提供共识算法服务,开发人员不用从头构建分布式后端,分布式数据库也可以派上用场。