盘点 | 主流云原生数据库技术方案
作者:RadonDB 开源社区
来源:SegmentFault 思否社区
作者:柯煜昌 顾问软件工程师
目前从事 RadonDB 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验。
你将 Pick 这些内容:
云原生的概念 云原生数据库的概念 两种主流技术路线分析 六种云原生数据库方案和功能介绍 云原生数据库的核心功能和价值
背景
提供按需服务; 用户只愿支付运营费用而不愿支付资产费用; 云服务提供商集群规模越来越大,甚至遍布全球,集群达到云级规模(Cloud-Scale)。
RDS 的挑战
云原生数据库简介
1 Spanner 类
1.1 架构
1.2 存储高可用性
1.3 优缺点
2 Aurora 类
2.1 架构
Aurora 网络 IO
数据库主实例变成计算节点,数据库主实例不再进行刷脏页动作,仅仅向存储写日志,存储应用日志实现持久化,即日志应用下沉到存储。数据库主实例没有后台写动作,没有 cache 强制刷脏替换,没有检查点;
数据库复制实例获取日志内容,通过日志应用更新自身的 buffer/cache 等内存对象;
主实例与复制实例共享存储;
将崩溃恢复,备份、恢复、快照功能下放到存储层。
将存储分段(Segment),以 10G 作为分段单位大小, 每个分段共六个副本,部署于三个可用区(Available Zone),每个可用区两个副本,Aurora 将这六个分段称为一个保护组(Protection Group,PG),实现高可用。
存储节点能接收日志记录应用来实现数据库物理页的持久化,并且使用 Gossip 协议同步各个副本间的日志。
2.2 高可用
存储多副本之间用 Raft 算法保证高可用,Raft 算法包含了 Quorum 仲裁算法,而且更加灵活;
与 Aurora 一样,主从计算节点通过网络传输 redo 日志,同步双方的 buffer cache 以及其他内存对象。
4 PolarDB 方案
5 Socrates 方案
SQL Server 为了支持 Snapshot 隔离级,提供了多版本数据页(Page Version Store)的功能;
使用 SSD 存储作为 buffer pool 的扩展(Reslilient Cache),可以加速故障崩溃恢复过程;
RBIO Protocol 是扩展的网络协议,用以进行远程数据页读取;
Snapshot Backup/Restore 快速备份与恢复;
新增 XLogService 模块。
尽量复用了原有 SQL Server 的特性,使用 SQL Server 组件充当 Page Server,模拟 Aurora 的存储节点;
Socrates 有一个很大的创新,日志与页面存储分离。它认为持久性(durability)不需要使用快速存储设备中的副本,而可用性(availability)不需要有固定数量的复制节点。因此 XLog 和 XStore 负责 durability,计算节点和 page server 仅用于可用性(它们失效的时候不会丢数据,仅仅是不可用);
redo 日志传递均借助 Xlog Service,而不是通过主从计算节点通过网络传输。主实例节点不需要额外进行日志缓存来适应从实例节点。
6 TaurasDB 方案
总结
云原生数据库的核心功能
计算与存储分离,计算节点保持少状态,甚至无状态;
基于日志的进行持久化;
存储分片/分块,易于扩容;
存储多副本与共识算法;
备份、恢复、快照功能下放到存储层。
知名方案的非核心功能
云原生数据库的核心价值
基于日志进行持久化与复制更轻量,避免写放大效应,各大厂商均号称比原版 MySQL 有 5~7 倍性能。
计算节点无状态或少状态,计算节点与存储扩展灵活。
将数据库持久文件分片,以小粒度方式副本方式降低 MTTR,以及共识算法来实现高可用。
计算能力与存储容量按需伸缩,减少资源浪费。
更少的资源、更少的浪费、更少的维护,最终达到更小的成本。
参考文献
【2】: "Spanner: Google’s Globally-Distributed Database"
【3】: TiDB: A Raft-based HTAP Database
【4】: PolarDB redo replication
【5】: PolarDB Architecture
【6】: GDPR
【7】: "Socrates: The New SQL Server in the Cloud"
【8】: Taurus Database: How to be Fast, Available, and Frugal in the Cloud
【9】: 腾讯云新一代自研数据库CynosDB技术详解——架构设计