破世界纪录的国产数据库OceanBase,如今入选了国际顶会VLDB 2022(1)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 破世界纪录的国产数据库OceanBase,如今入选了国际顶会VLDB 2022
登顶 TPC-C 不是靠数据库数量的堆叠,而是一系列技术的创新。

近年来中国数据库蓬勃发展,各种排行榜单不一而足,云原生、Sharding、混合负载等新名词层出不穷。

但盛景之下,各家数据库的技术实力究竟如何?

日前,OceanBase 研究成果论文《OceanBase: A 707 Million tpmC Distributed Relational Database System》,被数据库国际顶会 VLDB 2022 接收。VLDB 与SIGMOD、ICDE 并称为全球数据库三大学术顶会,收录研究机构以及工业界在数据库领域最前沿、最顶级的研究成果。


论文链接https://vldb.org/pvldb/vol15/p3385-xu.pdf


论文介绍了 OceanBase 的设计目标、设计标准、基础设施和关键组件,以及在 1500 多台服务器(分布于 3 个区域)的分布式集群中通过 TPC-C 基准测试并取得全球最高成绩背后的技术细节。

VLDB 评审专家也对 OceanBase 给予了高度评价:「作为创造 TPC-C 基准测试世界纪录的大规模分布式关系数据库系统,其架构和重要组件在论文中得到了非常全面的概述。OceanBase 设计并实现了一个分布式数据库,并在 OLTP 工作负载上实现了前所未有的性能和可扩展性。」

OceanBase 无疑是中国数据库的代表,而这篇论文则为我们提供了一个深入中国数据库技术的很好的通道。让我们研读论文,看看 OceanBase 为何能创下超过 7.07 亿 tpmC 世界纪录。

OceanBase 的「一体化架构」是什么?

先从 OceanBase 的设计思路讲起,作为一个分布式关系型数据库系统和可扩展的多租户系统,它基于 Share Nothing 架构,具备跨地域容错能力。

下图 1 为 OceanBase 的整体架构概览。从上到下看,应用层发送请求至代理层(OBProxy),经代理服务路由后发送至实际服务数据的数据库节点(OBServer),最后执行结果沿逆向路径返回至应用层。

每个节点都有自己的 SQL 引擎、事务处理引擎和存储引擎,运行在普通 PC 服务器组成的集群之上,各个节点之间完全对等。这些节点分属于若干个可用区(Zone),每个节点属于一个可用区。图示 OceanBase 数据库集群中的数据有三个副本,每个 Zone 存放一份。这三个 Zone 构成一个整体的数据库集群,为用户提供服务。

通过这种方式,OceanBase 用计算机网络将物理上分散的多个数据库单元连接起来,构成了一个在逻辑上统一的单一数据库,其中不同的组件以不同的方式实现了高可用性。

虽然拥有与其他分布式数据库系统(DBMS)相似的目标,如水平可扩展性和容错性等,但鉴于 MySQL 及 Oracle 等数据库的盛行,以及经典关系型数据库经受住了时间考验的关键技术和特性,OceanBase 在设计时考虑到了典型的 RDBMS 兼容性需求,尤其注重业务的迁移成本和用户的学习成本。

由此,OceanBase 数据库在经典关系型数据库的基础之上引入了分布式,实现了高可用和可扩展。研究人员指出 OceanBase 数据库具有以下 6 大特性:

  • 高性能:存储上采用读写分离架构,对计算引擎进行全面的性能优化,实现准内存数据库性能;
  • 低成本:使用 PC 服务器,用高存储压缩比降低存储成本,进而有效降低计算成本,并利用多租户部署充分利用系统资源;
  • 高可用性:数据多副本存储,少量副本的故障不会影响数据可用性。通过「三地五中心」方式的部署,实现了城市级的故障自动无损容灾;
  • 强一致性:Paxos 保证强一致性。默认情况下在主副本中执行读写操作,以确保强一致性;
  • 可扩展性:集群节点都是点对点,每个节点具备计算和存储能力,且没有单点瓶颈。支持线性、在线扩缩容;
  • 兼容性:除后台协议外,兼容常见的 MySQL 函数和 MySQL 前端,只需零修改或少量修改,事务便可以从 MySQL 迁移到 OceanBase。

实现这些的背后,主要归功于两个核心关键技术——分布式高效存储引擎和分布式事务处理引擎。

高压缩比的分布式存储引擎

OceanBase 具有一个类似于 Google Bigtable 的日志结构合并树(Log-Structured Merge-tree,LSM-tree)存储系统,并基于 LSM-tree 架构形成了自己的存储引擎。该存储引擎设计并实现了非对称读写数据块存储系统以及每日增量主要压缩,其性能接近于内存数据库。

在设计思路上,OceanBase意识到要借鉴经典数据库的优势,例如存储计算分离、一体化设计(即采用同一套引擎实现事务处理 OLTP 和事务分析 OLAP,基于资源组的逻辑隔离),以及采用本地化处理以实现极致性能。

那么,如何在分布式数据库上实现这些特性?

下图 3 为 OceanBase 分布式存储引擎的整体概览。从平衡成本与性能层面看,LSM-tree 架构更适合数据编码和压缩,部分额外 CPU 消耗换来的是存储成本的大幅降低,对 OLTP 服务的性能没有影响。在某些场景中使用编码特性来提高性能,如更高的缓存命中率、更快的查询和更低的 I/O 成本。因此 OceanBase 使用了基于 LSM-tree架构的存储引擎,平衡「性能」和「压缩比」。


OceanBase 还根据用户表(User Table)指定的方式对微块中的数据进行编码和压缩。在用户表中开启编码后,每个微块中的数据将按照列维度(column dimension)在列中进行编码,如此可以帮助用户压缩数据,同时通过提取列中的特征信息加快后续查询速度。经过编码和压缩后,支持进一步使用用户指定的通用压缩算法对微块数据进行无损压缩,以提高数据压缩率,比如支付宝的一个业务系统从 Oracle 迁移到 OceanBase,数据从 100TB 压缩到了 33TB。

针对集中式数据库无法实现存储层横向扩展、存储成本高昂的问题,OceanBase 将用户数据和日志数据分离,比如日志数据基于 Paxos 协议使用三副本(五副本)存储,而用户数据本身可以使用两副本(三副本/四副本)进行存储,在保障相同可用性的前提下,数据日志分离可节省 20%-40% 的用户数据存储成本。

分布式事务处理引擎:Paxos + 2PC

在分布式事务处理引擎设计方面,传统二阶段提交(2PC)协议常被用来实现分布式事务,但在 Share Nothing 架构中,如果一个节点在二阶段事务执行过程中出现故障,则该节点在账户上的操作状态不可访问。此外,该节点可能会很快恢复,也可能长时间无法恢复或永久损坏,无法评估其状态,导致分布式事务的执行结果也无法确定。

针对分布式场景下的故障恢复和并发控制难题,OceanBase 数据库将 Paxos 分布式一致性协议引入 2PC,提出了名为「OceanBase 2PC」的创新性二阶段提交协议,使得分布式事务具备了自动容错能力,首次在金融核心系统做到 RPO=0,也正是凭借这项技术,OceanBase 成为支付宝的最终选择。

下图 5 为 Paxos + 2PC 概览,二阶段提交的每个参与者(participant)都包含了多个副本,并且它们可以通过 Paxos 协议轻松获得。当一个参与者节点出现故障时,Paxos 可以快速选出另一个副本来替代原先参与者以继续提供服务,并恢复原先参与者的状态,进而可以确定分布式事务的执行,并继续推进二阶段提交协议的完成。

为了提升分布式事务处理的性能并降低延迟,OceanBase 选择通过优化参与者和协调者(Coordinator)的操作,进一步改进传统的二阶段提交协议。

下图 6 展示了传统 2PC 与 OceanBase 2PC 的架构比较。与传统的 2PC 相比,OceanBase 2PC 中 Coordinator 不需要持久化状态,而是在故障恢复时由参与者共同协商。基于这种实现方案,prepare 成功即可应答用户,不需要等到第二轮 commit 成功再应答用户,从而将 Paxos 同步的次数从 3 个减少到 2 个,并将事务延迟进一步缩短为仅 1 个 Paxos 同步。当然,这种方案也增加了故障处理的复杂度。


自我刷新,两度创下 TPC-C 性能世界纪录

有了上述积累,OceanBase 团队向国际数据库权威测试 TPC-C 发起了挑战。

TPC 是一系列事务处理和数据库基准测试的规范。其中,TPC-C(Transaction Processing Performance Council)是针对在线事务处理(OLTP)的基准测试模型,使用一个商品销售模型对 OLTP 系统进行测试,可以比较好地观察出数据库服务的稳定性、性能以及容灾等特性。

TPC-C 测试中包含以下五类事务,包括:NewOrder 新订单的生成,Payment 订单付款,OrderStatus 最近订单查询,Delivery 交付配送,StockLevel 库存缺货状态分析。测试开始前,TPC-C Benchmark 会规定被试数据库的初始状态,并使用 tpmC 值(Transactions per Minute)衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput)。

2019 年 10 月,OceanBase 成功通过 TPC-C 测试,并以 6088 万 tpmC 的在线事务处理性能,创下了当时的世界纪录。2020年 6 月,OceanBase 再次参与测试并二度登顶 TPC-C 榜单,以超过 7.07 亿 tpmC 的成绩,刷新了自己之前的纪录。

同样值得关注的,还有 OceanBase 在测试中所展现出的各项服务的稳定性,这个我们稍后看论文。

严苛的 TPC-C 基准测试

就像任何合格的产品在销售前要经过有关部门与行业协会的审批与认准一样,通过国际事务委员会(TPC)的 TPC-C 测试,说明了一个数据库系统通过了国际认证,可以与全世界的数据库产品同台竞技

OceanBase 论文披露了第二次 TPC-C 基准测试的技术细节。拓扑结构如下图 7 所示,共部署 2360 台阿里云 ECS 服务器,并使用 400 台远程终端模拟器(remote terminal emulator,RTE)来模拟 559,440,000 个用户。同时部署 400 台网络服务器,每个网络服务器接收来自数个 RTE 的请求,通过 OceanBase 的 SQL 引擎将 TPC-C 事务实现为 SQL 存储过程,并通过开放式数据库连接(ODBC)调用数据服务器。

再说 OceanBase 集群,它由 1557 台服务器组成,采用 Share Nothing 架构连接。每台服务器具有 84 个 vCPU(2.5GHz Intel Xeon Platinum 8163 Skylake 超线程处理器),712GB RAM 和 3.5TB*4 SSD。这些服务器平均分成 3 个可用区,每个区域部署 519 台服务器。




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
338 0
|
2月前
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
|
2月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
291 1
|
4月前
|
存储 运维 Cloud Native
核心系统转型问题之阿里云数据库在国际市场的布局情况咋样
核心系统转型问题之阿里云数据库在国际市场的布局情况咋样
|
4月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1099 2
|
4月前
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
91 1
|
4月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理在DI节点同步到OceanBase数据库时,出现SQLException: Not supported feature or function
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
18天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
32 1
|
20天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4