1 数据库发展概述
芯片、操作系统、数据库是现代信息技术领域的三大核心基础。其中,数据库作为数据存取、管理和应用的核心工具,决定了IT运行处理数据的高效性。
自20世纪60年代至今,数据库的发展已相继经历了如下几个阶段:
层次数据库和网状数据库
世界上第一个网状数据库系统是1964年诞生于通用电气公司的IDS(Integrated Data Storage,集成数据存储)。世界上第一个层次数据库系统是1968年诞生于IBM公司的IMS(Information Management System,信息管理系统)。
关系型数据库
层次和网状数据库虽然解决了数据集中存储、管理和共享的问题,但在数据独立性和抽象级别上仍有较大欠缺。1970年E.F.Codd提出了关系数据模型后,很多关系型数据库应运而生。目前主流的数据库包括Oracle、MySQL、PostgreSQL、DB2、SQL Server等均为关系型数据库。
NoSQL数据库
关系型数据库可以很好的处理结构化数据,但对于数据量巨大、数据类型多样化的问题则无法处理。因此衍生出了很多非关系型NoSQL数据库。NoSQL数据库又包括几种不同的类别,如:
Key-Value存储:如Redis、Memcached等
列存储:如BigTable、HBase等
文档数据库存储:如MongoDB等
图数据库存储:如InfoGrid、GraphDB等
NewSQL数据库
NoSQL数据库虽然解决了关系型数据库无法处理的场景,但同时又丧失了关系数据库的强一致性、事务支持等特性。因此,结合关系型数据库及NoSQL数据库两者优点的数据库便产生了,此类数据库称为NewSQL数据库。常见的NewSQL有CockroachDB、Greenplum、TiDB、EsgynDB等。
2 国产数据库发展概述
国内数据库的起步较晚,大约是20世纪90年代改革开放以后才开始进入萌芽阶段,那个阶段的数据库研究主要是源自国家的相关研究计划或大学科研需求,缺乏实际的业务场景驱动,因此数据库技术的发展相当缓慢。
自21世纪至今,随着中国经济的迅猛发展,国内数据库行业也有了巨大的改观。虽然Oracle、IBM这些数据库巨头仍然占据着国内数据库领域的绝大部分市场,但国产数据库已经逐步开始了相关的替代工作。
据统计,目前国产数据库厂家已经超过200余家。而在这200多家国产数据库厂商中,排名靠前的有PingCAP的TiDB、华为openGauss、阿里OceanBase、达梦数据库DM、南大通用GBase、人大金仓KingBase、腾讯TDSQL、中兴GoldenDB、易鲸捷的EsgynDB等。具体排名情况如下图所示(摘自中国数据库排行 - 墨天轮 (modb.pro))
3 主流数据库介绍
3.1 TiDB
3.1.1 产品简介
TiDB是PingCAP公司基于Google Spanner/F1论文实现的开源分布式关系型数据库,是一款定位HTAP(即同时支持OLTP和OLAP)的数据库。TiDB具备如下核心特性:
SQL支持(兼容MySQL)
水平线性扩展
分布式事务
跨数据中心数据强一致性保证
故障自恢复的高可用
3.1.2 产品架构
TiDB的架构如下图所示:
注:以上架构图摘自TiDB 整体架构 | PingCAP Docs
从上图可以发现,TiDB架构中主要包含以下几种角色:
TiDB Server
SQL执行层,负责接受客户端连接,执行SQL解析并生成分布式执行计划。TiDB Server是无状态的,一般启动多个实例,通过负载均衡组件(如LVS、HAProxy或F5)对外提供统一的接入地址。TiDB Server本身不作数据存储,只是将数据请求转发给TiKV或TiFlash。
PD Server
整个TiDB的元信息管理模块,存储每个TiKV节点的数据分布情况和集群整体拓扑结构。提供TiDB Dashboard管理界面。为分布式事务分配事务ID。不仅存储元信息,还根据TiKV节点实时上报的数据分布状态,下发数据调度命令给具体的TiKV节点。一般至少3个节点,保证高可用。有些类似于Zookeeper的功能。
存储节点
TiKV
TiKV是一个分布式的提供事务的Key-Value存储引擎。存储数据的基本单位是Region,每个Region存储一个Key Range的数据,每个TiKV节点负责多个Region。TiKV的API在KV层面提供分布式事务的原生支持,默认提供SI(快照隔离)隔离级别。TiDB的SQL解析完SQL后,会将执行计划转换为TiKV API的实际调用。
本质上,TiKV是使用RocksDB+Raft协议实现的。TiKV是把数据保存在RocksDB中,每个TiKV节点都有一个RocksDB。为了满足高可用,使用Raft协议进行数据复制功能(以Region为单位)。
TiFlash
TiFlash是TiKV的列存扩展,在提供良好的隔离性的同时也兼顾强一致性。列存副本通过Raft Learner协议异步复制,但在读取时时通过Raft校对索引配合MVCC的方式获得Snapshot Isolation一致性隔离级别。
3.1.3 产品特点
开源
分布式
HTAP
兼容MySQL
读写分离(写TiKV,读可以从TiFlash及TiKV读)
存算分离
KV存储(TiKV)、列式存储(TiFlash)
乐观锁+悲观锁(3.0.8版本及以后)+MVCC
3.2 openGauss
3.2.1 产品简介
openGauss是一款开源的关系型数据库,内核源自PostgreSQL。采用客户端/服务器、单进程多线程架构,支持单机和一主多备部署方式,备机只读,支持双机高可用和读扩展。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路业务、数据安全、基于AI的调优和高效运维的能力。
3.2.2 产品架构
openGauss的架构如下图所示:
注:以上架构图摘自了解产品 | openGauss
从上图可以发现,openGauss架构中主要包含以下几种角色:
OM
运维管理模块(Operatio