解密:金融级海量数据库OceanBase

简介: OceanBase是一个高性能、高可用、高可扩展并且廉价的关系数据库。

OceanBase是一个高性能、高可用、高可扩展并且廉价的关系数据库。

image.png

为什么要做OceanBase?

互联网金融对数据库系统提出了更高的要求。传统数据库在扩展性、事务特性以及数据强一致等方面已经做了大量的工作,但是仍不足以达到现在互联网飞速发展的要求。

以支付宝业务为例,其业务体量在平时几乎是一个固定的值,但是在淘宝、天猫以及其他一些电商业务有促销活动的时候,比如双11。如何在很短的时间之内把数据系统的能力提高一个数量级甚至更高?对于普通的基础设施系统,通过添加服务器或者存储设备等基本可以解决这个问题,但是传统数据库对于扩展能力有很大的制约。如果在数据库层面做得更好,毫无疑问,将极大地促进业务的发展,即便是高峰期时段,也能够给用户提供和平时一样的流畅体验。

比如,平时在淘宝交易的时间为2秒钟,那么,用户希望在双11这种极限情况下交易的时间依然是2秒钟。事实上,业界也有一些类似的技术,以试图解决这些问题,以获得更好的可扩展性和更高的性能,但是这些技术很难保证事务的完整性和一致性。而网络交易对数据一致性的要求极高,且服务不可中断。

OceanBase正是为了解决上述挑战而生。

为什么OceanBase是海量数据库?

OceanBase数据库是由阿里巴巴集团和蚂蚁金服集团自主研发的一款产品,其目标就是支持海量的数据的存储和计算。

和传统的数据库相比,OceanBase所具备的可靠性、稳定性和性能对硬件设备的依赖并不大。尤其是高可用性,OceanBase不依赖底层的硬件是无故障的。从设计之初,OceanBase的开发团队就假设底层的硬件是不靠谱的。OceanBase就是要用普通的硬件产品打造出更好的数据库服务。

2015年双11创造了每秒8.59万笔的交易支付,这是由OceanBase数据库支撑达成的,最关键的是,其达到数据0丢失的目标,也就是说完全保证了数据的一致性。OceanBase的完美表现也证明了,在普通的硬件平台之上,也可以打造出高可用的数据库服务。

为什么OceanBase是海量数据库?因为,目前在OceanBase的表单容量最大已经超过3000亿行,而且数据量还在不断增长。另外,OceanBase数据库还具备水平扩展能力,并且可以在线升级。迄今为止,在蚂蚁的核心业务上,OceanBase是零故障,表现比之前的系统好很多。

目前,OceanBase数据库处于不断发展的阶段,系统也在不断升级,不断演进。单个集群的规模已经超过100台服务器,就事务处理能力来看,单节点具备处理能力已经高达25万个TPS。

总结来说,OceanBase是全球第一个不依赖共享存储的金融级数据库。

OceanBase的技术原理及实现

OceanBase从开始就从设计理念上与传统数据库不同。技术团队认为,数据本身是有热度的,因此每天进行修改,但相对整体数据量来说都不多。为了设计更简单,OceanBase从架构上就做了简化。开发人员将数据分为两个部分,第一个部分是静态数据,持续化存储在SSD盘上;另外一个部分则是修改增量,比如新插入的订单数据,更新之后的账户数据等,都存放在内存里面。传统的数据库所有的修改都是发生在本地的,OceanBase把修改增量放到内存,其好处在于,使用很少的内存就可以支撑更大的业务。

世上没有完美的架构,OceanBase的这种方式会增多一些内部操作,产生一些消耗。不过,在技术团队的反复测试验证下,这一架构不仅能够保证系统的性能,而且拥有更强的扩展性。

以上就是OceanBase的整体设计思路。

现在,最新的OceanBase 1.0版实现了每一个节点都可以做查询、更新,处于一个完全对等的状态。这样的设计是为了增强系统的水平扩展能力。而在高可用方面,OceanBase的数据通常是至少拥有3个副本,并处于不同的机房。

OceanBase最大的集群规模数已经达到了上百个节点,支撑的是在线交易型的数据,一套集群可以服务很多个业务。甚至在上了公有云服务之后,可以支撑成百上千个租户。为此,开发人员将租户机制放进了数据库集群里面,这样的好处显而易见,那就是成本得到极大的降低。

在线交易中,每一笔交易都是非常少量数据的更新或者查询操作。但是要查大量数据,比如用户的详单、历史数据状态时,如果资源调度能力不强,那将是非常危险的。OceanBase可以在租户级别将资源的使用控制在安全的水位,从而避免了如双11中出现大查询而导致网络堵塞的情况。

对于OceanBase数据库来说,水平扩展其实是非常简单的。比如要增加一个节点,新购置一台服务器,剩下的数据库自己就能够解决,包括数据重新的分布等。

节点故障,硬件损坏,系统升级等,这些情况非常常见,如何做到持续可用呢?OceanBase提供了一种服务,在中间设置了一层OBProxy,主要是表分区信息、位置信息等。当要做某一个查询的时候,根据查询条件会自动化地将请求分发到OceanBase集群的特定节点上,这样就保证了路由是最短的,因此获得的性能也是最好的。

OceanBase与传统的数据库不一样,从诞生开始就没有准备采用磁盘,而是在SSD上,包括读写分离、批量回刷都基于此。另外,OceanBase还充分利用内存计算的能力来提升性能。当然,数据不可能一直放在内存,为此,技术团队设计了一些特别的机制,比如把内存里的数据回写到SSD,而且都是在系统运行低谷期进行这样的操作。

如果性能不提升,即便是扩展性非常好,也没有价值,因为那只意味成本的不断增加。为此,技术团队针对内存做了大量的性能优化工作。比如通常的应用场景有两种,一种是获取单条的记录,另一种是获取一批记录。OceanBase在内存里面维持两套索引,一个是Hash索引,一个是Btree索引,分别对应处理这两种不同的请求。同时,内存数据结构都是设计成无锁的,所以扩展性非常好。

这里对比一下MySQL。大家都认为MySQL的性能很好,路径很简单,但是测试数据显示,其单核的TPS能够达到1万,但是32核几乎难以做到10万的TPS。OceanBase的单核TPS是8000或16000,而10核的TPS则达到8万或16万,正因为如此,即便是跑在普通的服务器上,OceanBase也不会产生并发瓶颈。

OceanBase的发展

OceanBase现在支撑了支付宝的所有核心业务,如支付、交易、账务、花呗等,还有网商银行以及淘宝的很多交易业务也都基于OceanBase。

在OceanBase研发之初,技术团队在存储方面做了较多的工作,所以SQL能力不是特别强,因此也制约了一些拓展业务的能力。但近年来,技术团队投入很大的精力提升OceanBase的SQL能力,兼容并超越MySQL,甚至逐步具备Oracle的核心能力。这样,未来业务的迁移会变得平滑顺畅,且不需做改动。

OceanBase项目始于2010年。

在2011年开始做第一个业务,OceanBase还是一个KV系统。

2012年,OceanBase开始做SQL支持,也明确了其目的——为了支持更高要求的金融级的业务需求。

2014年,OceanBase发布了非常重要的0.5版本,通过架构的一些改进,已经可以做到持续可用且数据0丢失。在这一年,OceanBase也首次支撑了支付宝的核心业务,2014年双11,支付宝交易有一部分流量是跑在OceanBase上的。

2015年3月,支付宝所有的交易都切换到了OceanBase上,真正意义上彻底和Oracle说再见。

而很快,OceanBase就可以提供云数据库服务。

目录
相关文章
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
415 0
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
418 1
|
4月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1335 2
|
4月前
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
108 1
|
4月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理在DI节点同步到OceanBase数据库时,出现SQLException: Not supported feature or function
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版产品使用合集之支持将数据写入 OceanBase 数据库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
155 5
|
7月前
|
Apache 流计算 OceanBase
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
4月前
|
Oracle 架构师 分布式数据库
OceanBase数据库的发展历程是什么?
【8月更文挑战第11天】OceanBase数据库的发展历程是什么?
194 63
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase数据库简介
【8月更文挑战第9天】OceanBase数据库简介
447 60
|
4月前
|
存储 SQL 数据库
OceanBase数据库的分区策略
【8月更文挑战第13天】OceanBase数据库的分区策略
255 5