OceanBase 社区版 4.0,首个兼容 MySQL 的单机分布式一体化数据库上线
11 月 3 日,2022 年云栖大会现场,OceanBase 社区版 4.0 正式上线(代号:小鱼),定位为 Beta 版本,兼容 MySQL 能力全面开放,与企业版同等性能。
根据测试,同等硬件环境下,OceanBase 社区版 4.0 Beta 的 TP 性能是 MySQL 企业版 8.0 的 1.9 倍,AP 性能是 Greenplum 6.22.1 的 5 至 6 倍。
,时长04:02
OceanBase CTO 杨传辉现场演练社区版 4.0 的 TPC-H 性能。同等硬件环境下(3 台 32C,128G),OceanBase 社区版 4.0 Beta(蓝色)与 Greenplum 6.22.1(橙色)在 22 项复杂查询及并行数据修改任务中的压测时长,柱状图的长度对应任务用时的长度。从测试结果可见,OceanBase 整体性能优于 Greenplum,在并行执行尤其是分区内并行执行上具有明显优势。
据介绍,OceanBase 社区版 4.0 版本在保证功能特性不丢失的前提下,重新审视了数据库与分布式系统两个领域最基础的设计,实现单机分布式一体化架构。由此,从架构上解决了此前版本的设计瓶颈,支持更多用户业务关注的多个核心能力,在内核功能、兼容性、稳定性、性能上取得突破。
易用性方面,OceanBase 社区版 4.0 特别提供了一体化极简安装包,将所有组件提前做好适配测试并给出推荐组合版本,对于刚接触分布式数据库的用户,提供一键安装命令“obd demo”,2 分钟内即可完成 Demo 环境的搭建部署。
GitHub 链接:https://github.com/oceanbase/oceanbase/releases/tag/v4.0.0_CE
本次 Beta 版核心能力如下:
- 架构升级与受益:支持单机分布式一体化架构,包含自适应日志流、支持超大事务、RTO 时间降低到 8s 以内、NTP 服务依赖优化、支持分区数量能力上限等版本基础核心能力构建。
- 内核能力增强:Online DDL 能力增强,支持租户级备份,字符集扩展,支持数据编码,支持 IOPS 隔离,LOB 规格上限扩展,支持表锁和死锁检测等。
- 兼容性增强:支持 DDL 语句的外键约束,支持视图列信息展示,支持 DML 触发器,支持更多 SQL MODE 和函数等。扩展支持 SEQUENCE 对象,支持存储程序,支持 SQL 文本中的预处理,支持自增列做为分区键。
- 性能提升:Sysbench 性能优化,综合读写性能(Read Write)1024 并发测试性能较 V3.1 版本提升 1 倍;TPC-H 查询性能优化,100GB 数据量顺序执行 22 条 SQL,整体性能较 3.1 版本提升 5 倍。
- 运维能力提升:支持全链路追踪,支持 SESSION 状态的监控和诊断(ASH),标准化视图优化,支持 Schema History 回收功能,支持自动清空回收站功能等。
OceanBase 社区版 4.0:进一步降低分布式数据库使用门槛
关于数据库发展是集中式还是分布式的争论由来已久,主流观点——或者说稳妥起见,大部分从业者在被问及时都会表示,两者在相当长的时间内将共存,因为各有优点,适用于不同的场景。
但 OceanBase CTO 杨传辉明确指出,他认为「分布式是未来面向云的下一代数据库的基石,未来云数据库的底层都是原生分布式」。
为了让分布式数据库不仅仅适用于可扩展这一细分场景,还要同时具备完整的 SQL 功能和极致的单机性能,OceanBase 提出了「单机分布式一体化」的理念,其架构要求兼具分布式数据库的可扩展性与集中式数据库的功能和单机性能,而产品上则需适用于大企业、中小型公司乃至初创团队在各自不同发展阶段对数据库的不同需求。
2022 年 8 月 10 日,OceanBase 4.0 小鱼(Paetica)发布,单机分布式一体化架构首次亮相。经过 85 天的研发迭代,完成在蚂蚁集团内部和不同行业用户小范围邀测后,本次上线的社区版 4.0 与企业版享有同等性能。下面是 OceanBase 4.0.0(上)与 3.1.4(下)架构示意图对比。
可以发现,OceanBase 4.0 通过引入「自适应日志流」,实现了单机和分布式的融合。
OceanBase 早期版本的架构体系里以分区为基本单元进行操作,当系统内的分区数量达到一定程度后,以分区为单元的操作的消耗也随之增大,逐渐形成了 OceanBase 的使用痛点——单节点支持的分区数量受到限制,单节点上涉及跨分区的数据修改也需要两阶段提交协议来保证事务的原子性等问题。
自适应日志流是一种融合了服务器级静态日志流(典型代表如 MySQL、PostgreSQL)与分区级静态日志流(典型代表如 CockroachDB)的方案:当系统处于稳定状态时,每台服务器的日志流数量是固定的,但发生迁移时这个对应关系会改变,支持将一个分区从一个日志流迁移到另外一个日志流,从而实现在线水平扩展。
例如,在 OceanBase 数据库实例内部有一个均衡层,新建表和新增分区时,系统会按照均衡原则选择合适的日志流创建 Tablet。当租户的属性发生变更,新增了机器资源,或者经过长时间使用后,Tablet 在各台机器上不再均衡时,均衡层通过日志流的分裂和合并操作,并在这个过程中配合日志流副本的移动,让数据和服务在多个服务器之间再次均衡。
这在技术上极具挑战,OceanBase 团队克服了诸多难题,实现了在线水平扩展的同时不增加分布式相关 overhead,从而能像集中式数据库一样部署在小型服务器上,并且单节点性能达到甚至超越集中式数据库的水平。
这也使得 OceanBase 4.0 能够支持机构最初仅使用单机数据库,随着业务压力的变化将数据库集群平滑的从单机扩容到多机,同时具备多机平滑缩容到单机的能力。目前,OceanBase 4.0 将可部署最小规格降低到 4C8G,且未来还会进一步降低。
开放 TPC-H 全球前三能力:在确保稳定可靠的 OLTP 基础上,做好 OLAP
MySQL 高可用一直是业内频繁讨论的话题。业界通常采用的方式,如 MySQL 主备复制、MHA(Master High Avaliable),包括 MySQL 官方推荐的 MGR(组复制)方案,在实际使用中都不能很好地解决数据不丢失的问题。
OceanBase 从 0.5 版本开始就将 Paxos 融入到数据库中实现无损容灾,其首创的「RPO = 0,RTO < 30 秒」已经成为数据库行业高可用的事实标准。在单机分布式一体化架构下,OceanBase 4.0 基于全新的自动选主协议和全面的探活机制,进一步将机器故障场景下系统恢复时间降低到 8s 以内,引领故障恢复进入秒级时代。
同时,OceanBase 社区版 4.0 全面提升了数据库的读写性能。在 OLTP 场景下,全新设计的融合日志缓冲区将同时支持聚合提交和分布式共识协议,显著减少内存拷贝和 CPU 指令开销,大幅度提升交易处理能力。
同等配置下,OceanBase 社区版 4.0 Beta 与 MySQL 企业版 8.0 的 TP 性能对比。
OceanBase 在企业版 3.2.3 全面实现了向量化引擎,以 Architecture aware 的设计,改造了全部的算子和绝大部分常用的执行表达式,充分发掘现代 CPU 的 cache 特性以及优化指令。向量化带来了大量的算法优化可能,通过在向量化的框架下进行算法和数据结构优化,实测整体执行性能相比原先非向量化执行引擎性能提升普遍在 4-5 倍,很多算子和单场景可获得 10 倍以上的性能提升。
基于这一能力基础,OceanBase 向国际数据库决策支持权威基准 TPC-H Benchmark 发起挑战,并在 2021 年 5 月 21 日,以 1526 万 QphH 成绩打破世界纪录,登顶 TPC-H 权威榜单。现在,向量化引擎及行列混存的能力已全部融入 OceanBase 社区版 4.0。
从测试结果可见,同等硬件环境下,OceanBase 社区版 4.0 Beta 的 TPC-H 性能优于 Greenplum 6.22.1。
HTAP 混合事务与实时分析处理是行业内强诉求,大型企业往往会选择多款数据库产品分别支持 OLTP 和 OLAP 类应用场景,这种组合式的解决方案需要数据在不同系统间流转,数据同步过程会带来时间延迟和数据不一致的潜在风险,还会产生数据冗余推高成本。
OceanBase 希望尽可能用一套数据库满足不同场景的需求,并且认为:真正的 HTAP 要先有高性能的 OLTP,然后在 OLTP 的基础上支持实时分析。换句话说,OLTP 是基础,没有足够强的 OLTP,OLAP 无从谈起。
OceanBase 的 OLTP 能力已经有目共睹,4.0 架构通过自适应日志流弥合了单机和分布式的架构差异,通过类 LSM Tree 架构在一套系统中实现 OLTP、实时 OLAP、Key-Value、JSON、GIS 等多种数据模型的处理,从根本上保持数据的一致性,并最大程度降低数据冗余,实现了「基于一个系统、一份数据、一个引擎,同时支持 OLTP + OLAP 工作负载」,帮助企业大幅降低总成本。
除了在计算层开源向量化引擎,存储层也开源了数据编码能力。OceanBase 通过数据编码压缩技术实现了数据的高压缩比,本次开源多种数据编码方法,包括字典编码、RLE 编码、常量编码、差值编码、前缀编码、列间编码等,并支持每一列自动选择最合适的数据编码。通过编码和压缩,使用相同的块大小(16KB)以及相同的压缩算法(lz4),同样的数据存放在 OceanBase 中,要比在 MySQL 5.7 中平均节省一半的空间,同时没有损失任何查询性能。
OceanBase CTO 杨传辉表示,除了「小就是大」,OceanBase 社区版 4.0 还有一个充满寓意的代号叫「从小到大」,既能支持大企业,也能够支持中小企业,甚至是初创企业,能够从小到大支持企业全生命周期的数据库需求,帮助企业更好的降本增效以及做数据库的业务创新。
「既能够支持在分布式多机场景,也能够支持应用在单机场景,既能用在一些比较大规格的高配置的机器,也能够用在低配置的机器,既能用在关系型的数据模型,也能够用在多模的模型,既能够处理 OLTP 核心业务场景,也能够用来处理 OLAP 实时分析场景……让企业能够实现一次选择,终身受用。」
云化能力加强:全托管的 OceanBase Cloud 4.0 开启邀测
云栖大会现场演讲的最后,杨传辉还宣布,全托管的 OceanBase Cloud 4.0 也正式开放邀测,新的功能和特性包括:
更多的部署规格:从4C16G到8C32G,到16C64G,再到42C400G,乃至多机分布式部署;
更强的降本增效:TP性能相比之前的版本提升50%,AP性能也得到大幅度的提升,并且有更好多租户隔离能力;
更好的运维体验:支持全链路诊断的能力、数据迁移的可观测性等。
根据 GitHub 统计数据,本次新版本的上线让 OceanBase 在项目活跃度上有了一个明显的提升。下图为过去一年 OceanBase (绿)、PostgreSQL (橙)、TiDB (蓝) 的 GitHub Commits 情况。
从过去一年 GitHub Commit 数据统计看,本次 OceanBase 社区版 4.0 上线让其项目活跃度有了明显的提升。来源:GitHub Stats,2022 年 11 月 06 日 19:00,下同
自 2021 年 6 月开源后,OceanBase 的 GitHub 单日最高 Star、Fork 和 Commit 数值,均明显高出 PostgreSQL 等流行数据库,充分证明了开发者对 OceanBase 给予的热情和期望。
过去一年三者的 GitHub Star 情况。
过去一年三者的 GitHub Fork 情况。
当然,每个版本走向成熟都离不开大量真实业务场景的打磨。OceanBase 还需要进一步的持续完善,才能实现他们的目标——把单机分布式一体化架构做成数据库的主流。
但是,你我感受中国自研原生分布式数据库的技术,以及加入到构建这样一个生态的过程,现在就可以开始了。
OceanBase 社区版 4.0 Beta GitHub 链接:https://github.com/oceanbase/oceanbase/releases/tag/v4.0.0_CE