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

简介: 破世界纪录的国产数据库OceanBase,如今入选了国际顶会VLDB 2022

作为一个分布式数据库,在 TPC-C 这个原本为集中式数据库而设的基准上取得如此成绩,OceanBase 团队遇到并解决了以下四个挑战。

第一个挑战是基准规范的持久性要求。测试时,OceanBase 数据库系统在商用硬件上运行,选择了具有 3 个区域部署的单个 Region。每个 Paxos 组由 3 个副本组成,即全能型副本、数据型副本和日志型副本。相较于使用 3 个全能型副本,这种配置将 MemTable 使用的 RAM 减少 2/3,将基线数据使用的存储减少 1/3。此外,通过消除数据型副本和日志型副本上重做的 redo log,某些 CPU 周期也得以缩短。

第二个挑战是关于生成基准测试初始数据的耗时过程。考虑到每个仓库(TPC-C 的基本数据单元)的行数(499,000+)、每个 OceanBase 节点的仓库数(共计55,944,000 和 36,000)以及所需数据量,基础测试的初始数据生成任务非常繁重。

为了缩短初始数据生成时间,OceanBase 集群首先配置为 1 个副本,而不是 3 个副本和 no-logging。另外,在初始数据生成期间通过单个事务将数千个行批量插入数据库。所有初始数据插入后,OceanBase 被重新配置为 3 个副本,即全能型副本、数据型副本和日志型副本,然后分区得以自动重新复制和重新平衡。No-logging 也被关闭,并且系统在完成上述重新复制、重新平衡以及主要压缩后准备好进行测试。

第三个挑战是 ITEM 表。由于 ITEM 表在 TPC-C 基准上被事务频繁地访问,因此应该在每个 OceanBase 节点上进行复制,以避免远程访问并保证性能。此外,对于 ITEM 表上的任何事务而言,都必须满足 ACID 属性。因此,ITEM 表被配置为了一个同步复制表。

第四个挑战是根据 TPC-C 基准规范,基准测试测量间隔期间累积性能吞吐量的变化不应超过 2%。对于 OceanBase 而言,它有几个后台操作,比如次要压缩、 混合压缩 (将几个次要压缩合并为一个)以及将次要压缩从全能型副本复制到数据型副本。所有后台操作的 CPU 线性池得到保留以将性能吞吐量变化降至最低。

此外,MemTable 大小的上限应该选得足够小,以便在 RAM 被新事务耗尽之前完成次要压缩。它还必须足够大以利用每个节点 RAM 并产生最少的次要压缩。最后,8 小时基准测试测量间隔期间的性能吞吐量累积变化小于 1%。

详细性能结果

使用上述配置,TPC-C 基准测试分别在 3、9、27、81、243、510 和 1554 台服务器的 OceanBase 集群上运行,测试间隔为 8 小时。结果如下图 8 所示,tpmC 性能分数随着数据节点的增加呈线性上升,具有高度扩展性,在 1554 台服务器上运行时超过 7.07 亿,这一新的世界纪录相较 2019 年 10 月 OceanBase 自己创造的 6088 万 tpmC 提升了近 11 倍。


新订单(New-Order)响应时间如下图 10 所示。图 10(a) 报告了新订单事务类型的最大、90%、平均和最小响应时间曲线图,后三项数值基本重合。最小响应时间为 103 ms,平均和 90% 响应时间接近,最小与最大差距分别为 5ms 和 33ms。图 10(b) 展示了新订单响应时间分布,其中绝大多数新订单事务在 20ms 内完成。


从新订单的角度,我们可以发现 OceanBase 具有很强的可扩展性。原因在于:1)无状态 OBProxy 的透明转发大大减少了分布式事务,并优化了本地事务;2)OceanBase 2PC 加速了分布式事务处理;3)存储过程加速了事务执行;4)优化的 LSM-tree 减少了事务写入操作;5)非常高效的快速 SQL 参数化有助于 OLTP 短查询场景。

支付(Payment)响应时间如下图 11 所示。图 11(a) 报告支付事务类型的最小、平均、90% 和最大响应时间曲线图,前三项数值重合。最小平均响应时间为 110ms(3 个节点),最大平均响应时间为 123ms(1554个节点);最小 90% 响应时间为 114ms(3个节点),最大 90%响应时间为 154ms(1554个节点)。图 11(b) 展示了具有 1554 个节点的支付响应时间分布。


订单状态(Order-Status)响应时间如下图 12 所示。图 12(a) 报告了订单状态事务类型的最大、90%、平均和最小响应时间曲线图,后三项数值大致重合。最小和最大平均响应时间分别为 107ms 和 117ms,最小和最大 90% 响应时间分别为 109ms 和 141ms。图 12(b) 展示了具有 1554 个节点的订单状态响应时间分布。


配送(Delivery)响应时间如下图 13 所示。图 13(a) 报告 事务类型的 90%、最大、最小和平均响应时间曲线图,其中 90% 响应时间大于平均响应时间。对于第 3、9、27、81、243 和 510 个节点,最小和最大平均响应时间分别为 17ms 和 19ms,而最小和最大 90% 响应时间分别为 22ms 和 27ms。图 13(b) 展示了具有 1554 个节点的交付响应时间分布。


存货水平(Stock-Level)响应时间如下图 14 所示。图 14(a) 报告存货水平事务类型的最大、90%、平均和最小响应时间曲线图,后三项数值基本重合。90% 的响应时间大于平均响应时间。最小和最大平均响应时间分别为 109ms(3 个节点)和 120ms(1554 个节点),最小和最大 90% 响应时间分别为 114ms(3 个节点)和 152ms(1554 个节点)。图 14(b) 展示了具有 1554 个节点的存货水平响应时间分布。


中国数据库未来:在不断突破中前行

在短短十余年的发展历程中,OceanBase 经历了多次产品定位和技术创新升级。

这一期间,OceanBase 成为全球唯一在 TPC-C 和 TPC-H 测试(用于评测数据库的分析型查询能力)上都刷新了世界纪录的分布式数据库。


从 OceanBase 的技术理念角度看,首先确保的是稳定可靠。例如,OceanBase 系统内部有一个数据校验机制,自动对多个副本之间进行实时的事务一致性校验和定期的基线数据一致性校验,为了实现该校验功能,会牺牲一些性能,且对存储格式的设计方案有一定约束,但 OceanBase 认为这是必须的,是数据库最基本最朴素的第一原则。

OceanBase 的分区技术使其非常重要的分布式能力之一,能够解决大表的容量问题和高并发访问时的性能问题。分区是指按照用户指定的一定规则,将表分成更小、更易于管理的部分,例如二级分区和基于虚拟列的分区。与分片相比,分区的好处有很多,比如访问 OceanBase 数据库的应用逻辑上只需访问一张表或一个索引、分区对应用程序完全透明且不会影响它们的业务逻辑、访问分区表不需要修改 SQL 语句等。

从分布式 NoSQL 存储系统到分布式 NewSQL 关系数据库系统,OceanBase 还总结了以下实践经验:1)应用层不应使用数据库系统作为键值存储系统,应依赖数据库的高级特性;2)存储过程对于OLTP应用还是有很大价值的;3)对于使用分布式数据库的应用程序,由于分布式系统网络和节点的故障率较高,每个事务和每个 SQL 都应该设置一个超时时间,如果应用程序设置了超时,数据库可能会在许多失败情况下重试以提高健壮性,无限超时时间在复杂情况下可能会导致逻辑死锁,不利于整体容灾。

从 2019 年 10 月首次荣登TPC-C性能榜首,到 2020 年 6 月再破世界纪录,OceanBase 让中国数据库拥有了挑战甚至战胜 Oracle、MySQL 等国外主流数据库的底气。

2021 年 6 月,OceanBase 宣布开源,开放 300 万行核心代码,允许所有社区参与者对代码进行自由修改、使用和引用。OceanBase 社区也同时上线。目前,开发者在开源社区能够完整使用 OceanBase 数据库内核。

当然,作为一个以通用数据库为定位的数据库产品,OceanBase 还有需要完善的地方,接下来也会遇到各种挑战,但在 TPC-C 性能这件事情上,OceanBase 已经不用试图证明什么。

本次通过论文的方式,将 OceanBase 的技术突破及创新向学界和工业界分享,成为 VLDB 2022 分布式数据库领域全球唯一获得可复现认可徽章(Artifact Available Badge)的工业论文,OceanBase 已经为数据库产业提供了有价值的新的思考。我们衷心期待 OceanBase 发展出一个与 MySQL、PostgreSQL 同等规模的一体化数据库产品和社区。

相关文章
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
409 0
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
413 1
|
4月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1328 2
|
4月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理在DI节点同步到OceanBase数据库时,出现SQLException: Not supported feature or function
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
10 3
|
1天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
13 3
|
1天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
17 2
|
15天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
98 15
|
8天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
15天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。