盘点 | 主流云原生数据库技术方案
共 5037字,需浏览 11分钟
·
2021-09-28 12:23
作者:RadonDB 开源社区
来源:SegmentFault 思否社区
作者:柯煜昌 顾问软件工程师
目前从事 RadonDB 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验。
你将 Pick 这些内容:
云原生的概念 云原生数据库的概念 两种主流技术路线分析 六种云原生数据库方案和功能介绍 云原生数据库的核心功能和价值
背景
提供按需服务; 用户只愿支付运营费用而不愿支付资产费用; 云服务提供商集群规模越来越大,甚至遍布全球,集群达到云级规模(Cloud-Scale)。
RDS 的挑战
![](https://filescdn.proginn.com/0b3ee571cb3f5cf43cb5106b76604ebd/93abc3711e1b87d9415bbd9d51aee94c.webp)
![](https://filescdn.proginn.com/f1fd75666519e2649742061a52bbcf80/52e18e36459e52c6622f372220df553d.webp)
云原生数据库简介
![](https://filescdn.proginn.com/10c822662048ecca03af317f5a00835c/6d45f7277ab7be2213a165b5ff9c7b6e.webp)
1 Spanner 类
1.1 架构
![](https://filescdn.proginn.com/51e2a3ab928d03ba8a2b786f0055eb5b/e816234430a62ccf3aaaac1ab50f6af0.webp)
1.2 存储高可用性
![](https://filescdn.proginn.com/543c1b0804a054f0b3b6966b58719a66/016a70e598be7ac93d8afbe36c5c0d95.webp)
1.3 优缺点
![](https://filescdn.proginn.com/794d33efcd2265b49283c7532ca5eff9/ef163f7c7f5c7bdb7809abd7e2943029.webp)
2 Aurora 类
2.1 架构
![](https://filescdn.proginn.com/d4179a053e2801e0143f6b96a648a7e1/48532ae1d1349cf3ebe3ba5630e77315.webp)
![](https://filescdn.proginn.com/d6f985035778b2b2de46a4fbd2e6f582/734306baeebd9b9373bf963e7ae5c83e.webp)
Aurora 网络 IO
数据库主实例变成计算节点,数据库主实例不再进行刷脏页动作,仅仅向存储写日志,存储应用日志实现持久化,即日志应用下沉到存储。数据库主实例没有后台写动作,没有 cache 强制刷脏替换,没有检查点;
数据库复制实例获取日志内容,通过日志应用更新自身的 buffer/cache 等内存对象;
主实例与复制实例共享存储;
将崩溃恢复,备份、恢复、快照功能下放到存储层。
将存储分段(Segment),以 10G 作为分段单位大小, 每个分段共六个副本,部署于三个可用区(Available Zone),每个可用区两个副本,Aurora 将这六个分段称为一个保护组(Protection Group,PG),实现高可用。
存储节点能接收日志记录应用来实现数据库物理页的持久化,并且使用 Gossip 协议同步各个副本间的日志。
![](https://filescdn.proginn.com/34b29f7ba44b7ecd97c2dc8f561968fa/aebdaff2ece250dcb0dfaa575939e869.webp)
2.2 高可用
![](https://filescdn.proginn.com/a68883e44559346844248fe6d3b82582/7b827656794e659120f9e79d08745f14.webp)
存储多副本之间用 Raft 算法保证高可用,Raft 算法包含了 Quorum 仲裁算法,而且更加灵活;
与 Aurora 一样,主从计算节点通过网络传输 redo 日志,同步双方的 buffer cache 以及其他内存对象。
4 PolarDB 方案
![](https://filescdn.proginn.com/1a36d3736d8f01a2e1ff54ece64c5ac3/2d2f41e0151a96d4ac82b377c9d6628f.webp)
5 Socrates 方案
![](https://filescdn.proginn.com/20fd2c8be695e35ba91970c3b14194d5/17f3ad224ba15fc433947e1266e06d5e.webp)
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 方案
![](https://filescdn.proginn.com/700862bb75f5950a7b567a65a90f1434/2ec0219c44ad413b13ea2131d1d073f0.webp)
总结
云原生数据库的核心功能
计算与存储分离,计算节点保持少状态,甚至无状态;
基于日志的进行持久化;
存储分片/分块,易于扩容;
存储多副本与共识算法;
备份、恢复、快照功能下放到存储层。
知名方案的非核心功能
![](https://filescdn.proginn.com/69eb8d0a22824e10c0a98b03c9680e1a/ddd4a2c11db2d5f55b0b1113b13c9a8f.webp)
云原生数据库的核心价值
基于日志进行持久化与复制更轻量,避免写放大效应,各大厂商均号称比原版 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技术详解——架构设计
![](https://filescdn.proginn.com/3d0c5cd2ffe0b18af220c3627520e410/b232392225ffd8a979a9eeea2497a1f8.webp)