数据库内核月报 - 2020 / 05

Database · 技术方向 · 下一代云原生数据库详解

云原生数据库风起云涌

近十年是数据库市场发展最快的十年,根据Gartner的数据,目前数据库市场营收已经达到整个软件市场的18.4%,而云数据库贡献了其中的68%。 特别是近几年,云原生数据库的理念为市场和各大云厂商所认可,各大厂商纷纷在自研云原生数据库领域持续发力,未来的云数据库市场是自研云原生数据库之间的竞争。

云原生数据库和托管/自建数据库最大的区别就是:云原生数据库是面向独立资源的云化,其CPU、内存、存储等均可实现独立的弹性,利用大型云厂商的海量资源池,最大化其资源利用率,降低成本,同时支持独立扩展特定资源,满足多种用户不断变化的业务需求,实现完全的Serverless; 而托管数据库还是局限于传统的服务器架构,各项资源等比率的限制在一个范围内,其弹性范围,资源利用率都受到较大的限制,无法充分利用云的红利。

当前的云原生数据库现状

目前主流云原生数据库刚走出了第一步,即实现了存储和计算的分离,并基于此实现了一写多读集群架构.

存储和计算分离:

  • 存储和计算分离,打破了存储的单机限制,使得存储独立弹性成为可能,并为后续的一写多读集群奠定了基础

一写多读架构:

  • 基于分布式共享存储的一写多读架构,使得数据库的读能力可以快速Scale Out,同时由于多个读节点和写节点共享同一份存储,降低了成本,提升了资源利用率。

云原生数据库领域,AWS的Aurora是先行者.国内目前PolarDB是一枝独秀,其他厂商正在跟进中:

  • 阿里云的PolarDB为领头羊,早在2017年就进行了公测,2018年实现商业化,并支持最大100T存储,1写15读集群
  • 腾讯云的CynosDB单节点的已开始售卖,最大支持5T存储,一写多读尚不支持
  • 华为云的TaurusDB,目前还处于宣传阶段,尚未公开售卖

下一代云原生数据库架构

当前基于共享存储一写多读的云原生架构虽然解决了存储的弹性问题和读扩展问题,极大的提升了云原生数据库的弹性和扩展能力,但是依然存在2个比较大的瓶颈点,即内存弹性单点写入问题。因此下一代云原生数据库将在如下两个方向实现突破:

基于CPU和内存分离的分布式共享内存池

  • 当前的云原生架构虽然实现了存储和计算分离,存储独立弹性;但是计算节点仍然包含了CPU和内存,因此无法真正实现秒级弹性扩容和Serverless
  • 因此在云原生数据库中实现CPU和内存分离内存独立弹性非常有必要。同时CPU和内存分离可以让多个CPU共享同一份内存,降低内存资源开销。

基于分布式共享内存池的多点可写技术

  • 当前一写多读的云原生架构,虽然实现了读能力的扩展,但是写能力仍然受到单机的限制,无法扩展。而采用分库分表的分布式数据库扩展,又会牺牲兼容性,需要应用感知和改造。
  • 多写架构主要困难在于信息交互的低效,导致线性扩展性低下。在CPU和内存分离以后,多个CPU可以共享同一个内存池来交换页面信息和事务信息,同时结合高性能RDMA网络和NVM,使得高性能多写架构成为可能

因此云原生数据库下一代架构必然是基于分布式共享内存池的多点可写架构。目前AWS也看到了这一个方向,也推出了Aurora Multi-Master产品,但是该产品直接基于共享存储实现多点可写,因此多个写节点间数据/事务信息同步效率低下,导致只能采用乐观冲突机制,同时冲突场景下性能非常低下。

PolarDB团队在发布基于共享存储的一写多读PolarDB的时候,就开始着手研发下一代基于分布式共享内存池的多点可写架构。目前已经在CPU和内存分离,多节点缓存一致性,多节点事务控制等多个关键技术点实现突破。

多写架构一直以来都被认为是数据库技术皇冠上的明珠,目前国内外核心银行/电信/政府等行业仍然被Oracle/IBM等的多写架构所统治着。因多写架构存在较大的技术挑战,因此无论是开源数据库还是新兴的基于分区的分布式NewSQL都绕开了单行多写这个数据库技术高峰。这一次PolarDB团队正在登顶数据库技术高峰的路上,这也是突破数据库核心市场的机会。希望有志之士可以加入我们,共攀技术高峰,共创历史!

欢迎对 数据库,云原生技术,分布式存储,分布式架构,高性能网络,新硬件 感兴趣的同学,一起交流技术,共同进步!

微信: zhangyq_zju 邮箱: yingqiang.zyq@alibaba-inc.com