本文参考软件学报的《云原生数据库综述》一文。
1.商业化的云原生数据库
主要是几大云厂商提供。
1.1.PolarDB
阿里云出品https://www.aliyun.com/product/polardb
云原生数据库 PolarDB 是阿里云自研产品,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态,支持分布式扩展,高度兼容Oracle语法。
1.2.GaiaDB
百度云出品https://cloud.baidu.com/product/gaiadb.html
GaiaDB 是百度智能云自研的新一代企业级关系型数据库,100%兼容 MySQL ,最大容量可扩展500TB以上,吞吐达到150+万QPS,TCO相比自建降低50%。
1.3.TDSQL
腾讯云出品https://cloud.tencent.com/product/cynosdb
TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL,为用户提供极致弹性、高性能、高可用、高可靠、安全的数据库服务。实现超百万 QPS 的高吞吐、PB 级海量分布式智能存储、Serverless 秒级伸缩,助力企业加速完成数字化转型。
2.云原生数据库分类
从十年的发展历程来看,云数据库系统可分为两个发展阶段:
(1) 计算存储耦合架构的云托管数据库系统
(2) 计算存储分离架构的云原生数据库系统
两种系统的应用架构如下图所示:
数据库系统的上层应用主要包含两类工作负载, 包括
(1)面向事务处理场景的 OLTP
(2)面向数据分析场景的 OLAP.
二者具备完全不同的特性, OLTP重视事务的 ACID特性和事务的并发处理能力, 而OLAP重视大规模批量数据分析的效率。
相应地, 云原生数据库可被划分为两种类型:
(1)云原生OLTP数据库系统
(2)云原生OLAP数据库系统
后续文章将继续剖析上述两种云原生数据库系统。
3.云原生数据库关键技术的未来研究方向与挑战
云原生数据库技术方兴未艾, 带来了许多新的机会, 同时也面临着许多新的挑战. 总的来说, 主要有 4 个方面的问题需要解决, 包含:
(1)云原生多写技术
(2)基于无服务器感知计算的资源调度
(3)云原生 HTAP 数据库技术
(4)面向多云的数据管理技术
3.1.云原生多写技术
当前云原生 OLTP 数据库基本都只支持一写多读, 不能实现多节点写, 从而造成写扩展性受限, 特别是不能支 持写需求大的应用. 另外, 当写节点故障时, 需要切换到备节点, 切换过程将导致秒级或分钟级业务恢复时间 (recovery time objective, RTO). 针对计算存储分离架构的多写技术, 目前有两种架构有待进一步探索. 第 1 种为基 于 RDMA 的多写架构, 其通过 RDMA 来同步多个写节点对于远端共享存储的操作. 第 2 种为基于共享缓存的多 写架构. 其多写节点可通过特定协议更新本地缓存, 以减少网络通信. 当前, 两种多写架构都面临写偏斜的问题, 即 有大量的写操作集中在部分数据分片时, 系统的性能会大幅下降. 未来需要有特定技术解决该挑战.
3.2.基于无服务器感知计算的资源调度
针对云原生数据库的无服务器感知计算, 目前还存在诸多挑战. 首先, 针对基于函数服务的无服务计算, 如何对负载进行有状态的无服务器感知计算是一个主要挑战. 由于函数之间无法直接通信与共享状态, 需要一种 新的基于缓存的机制进行状态共享, 当前基于云存储的状态交换机制延迟较高, 无法满足实时计算的需求. 另外, 如何针对函数服务进行调度与配置也非常具有挑战性, 这主要需要权衡并发度与代价之间的关系. 最后, 针对基于 数据库实例的无服务器感知计算, 如何渐进式地进行平滑式的弹性扩容以避免震荡也非常具有挑战性. 此外, 结合 数据库与函数服务进行无服务器感知计算也是一个重要方向.
3.3.云原生 HTAP 数据库技术
基于计算与存储的分离架构, 云原生数据库支持 HTAP主要面临两大挑战. 首先, 尽管在云环境下, 计算可以无限扩容, 但如何在计算层动态调度资源分别给面向 OLTP 与面向 OLAP 的计算节点使得云服务满足 SLA (service-level agreement) 协议的要求具有很大的挑战性. 一方面, OLTP 负载强度过高时会导致 OLAP 负载所读取 的数据新鲜度不高. 另一方面, 分析型查询所资源过多会导致服务成本激增. 因此需要根据 SLA 协议通过资源调 度在服务性能与数据新鲜度之间找到一个平衡点. 其次, 如何设计新的存储方式从而同时加速事务读取与查询分 析操作也非常具有挑战性. 目前云原生针对事务型查询的存储使用行式的日志, 针对分析型查询的存储使用列式 文件, 但由于从日志读取记录需要额外解析, 而列式文件需要合并增量日志, 这造成事务读取与查询分析操作性能 都不高. 因此需要设计一种基于内存的统一存储格式来解决这个问题.
3.4.面向多云的数据管理技术
随着多云 (multi-cloud) 时代的到来, 企业会同时使用多家不同云计算厂商的服务, 这对数据管理技术提出 了许多新的挑战. 首先, 如何在多云环境下提供高可用服务具有很大挑战, 即当部分节点停机或整个区域发生灾 害, 如何利用多云环境进行快速恢复. 其次, 如何在多云环境下进行存储管理, 以便进行跨云的快速数据迁移也很 有挑战性, 这主要由于不同云厂商下的数据组织形式多样化, 且云存储互相隔离, 所以在线迁移延迟很高. 最后, 如 何针对多云环境设计高效且代价感知的查询优化算法也面临着巨大挑战.