中国掌握数据库核心技术,甲骨文暗然退出

qju 发表于 2022/02/05 10:37 一品 人文历史 (www.ywpw.com)

加跟贴 发新贴

2020年09月25日,媒体报道中国工商银行开始采用蚂蚁自研数据库OceanBase,其对公(法人)理财系统已完成从大型主机到OceanBase分布式架构的改造。在为期3个月的观察验证之后,中国工商银行同蚂蚁集团OceanBase、阿里云技术团队共同制定该系统的主机下移方案,并于今年9月正式投产。此次合作中,OceanBase为工商银行搭建了横跨两地三中心的分布式集群,以五副本+主备模式提升高可用水平,为业务提供非常强的业务连续性保障,并且在保证系统性能和稳定性的前提下有效降低成本。

OceanBase是蚂蚁集团自主研发10年以上的分布式数据库,历经阿里和蚂蚁集团内部磨合,已经在支付宝、网商银行等核心系统上顺利运行。2020年6月,OceanBase成立独立公司运营,加速商业化,并在多家金融机构落地应用,包括南京银行、人保健康险、常熟农商行、苏州银行、广东农信等数十家商业银行和保险公司。

OceanBase为什么这么神奇,可以撼动Oracle的地位?

杨传辉现任蚂蚁金服基础数据部(OceanBase团队)研究员,目前负责数据库事务开发工作,著有《大规模分布式存储系统:原理解析与架构实战》一书,他从武汉大学毕业后加入百度从事大规模分布式存储系统开发,后随着阳振坤转战阿里系从事OceanBase系统开发,是OceanBase 0.5和1.0版本的总体设计师。

杨传辉总结OceanBase的六大特点:第一高可用、第二强一致、第三易用性、第四高性能、第五可扩展、第六低成本。

OceanBase作为分布式关系型数据库,最大的特色在于分布式架构,而分布式架构的一个基本特征是能够基于普通的PC服务器,构建一个满足金融级更高的可靠性以及数据一致性要求的业务核心。而PC服务器硬件的不可靠,可以通过架构设计和软件的可靠性来弥补,蚂蚁金服的多年实践已经非常清楚地向业界证明了这一点。

OceanBase又被称为原生的分布式关系型数据库,即OceanBase是真正把所有与高可用及数据一致性相关的问题在数据库内核层面就解决掉了,这和现在很多互联网公司采用的中间层+单机数据库的分层设计方式有很大的差别。从技术复杂度上看,选择走原生分布式数据库这条路,无疑是非常艰难和痛苦的,这意味着在这样的一个复杂的分布式内核上,哪怕是实现一个简单的功能,也需要付出比单机数据库大得多的代价,但正是这样的选择,使得OceanBase真正具备了商业数据库最重要的特征:高度集成、整体交付,对业务无侵入;同时也真正解决了分层设计中无法同时实现的水平扩展及跨库查询等缺陷。

OceanBase的一个基础设计思想是把每一份数据存放在三台不同的机器上,那么一台PC服务器出故障的概率为千分之一的话,两台同时坏的概率可能就是百万分之一,三台同时坏的概率则是十亿分之一。这样做的成本虽然下来了,但如何保证三台机器上数据的强一致性,这对于金融业务来说至关重要。

OceanBase高可靠的核心是基于PAXOS协议。PAXOS协议原来为分布式理论上的算法,OceanBase在分布式数据库中实现了这一协议。PAXOS协议本质是少数服从多数的协议,具体实现:在n个(n>=3)个数据库中,其中一个为主库,其余为备库,每一笔事务不是同步到所有备库,而是同步到超过半数的库(包括主库自身),比如3个库中的2个、5个库中的3个等等。一旦主库故障,只要存活的库超过半数,就可以自动选举出新的主库,并且恢复所有已经提交的事务(超过半数库或者保证了每一笔提交的事务至少在一个库上存在),这样就允许少数的库故障而不丢失数据、不中断业务。基于PAXOS协议,OceanBase能够实现单机/机房/城市级别,真正的无损容灾;在少数库故障的时候,RPO(恢复目标)为零,即没有数据因为故障而损坏或丢失;同时基于完全自动的主备切换,能把RTO(恢复时间)缩短到30秒以内。

在强一致性方面,OceanBase还做了大量优化工作。比如对于事务消息改造为异步消息机制:事务开始时把消息投入消息系统,当交易全部完成后才通知消息系统投递消息,而这个是一个非常关键性的改造,解决了高并发支撑同时的一致性问题。

所谓事务(transaction),这是面向OLTP交易型关系数据库的一个关键流程。对于交易来说,数据库的事务必须是“原子”的,典型的是银行转账:这边扣了100块钱,另一边就必须加上100块钱,而不能这边扣了那边却没有加上。

为了保证数据库的高可用,OceanBase实现了三地五中心容灾架构在核心业务的落地,即使一个城市的所有数据中心都完全不可用,整个系统在数据层面仍然会做到不丢一行数据并继续提供服务。例如支付宝的会员ID采用了OceanBase的三地五中心部署方案,即使其中一个城市故障,剩下的两个城市至少还有3个活着的库,仍然能够自动选举出新的主库、立即恢复数据,并继续提供服务。

在易用性方面,OceanBase作为后来者,必须要考虑到已有数据库用户的习惯,必须要兼容已经有的技术与产品,特别是在做数据库迁移的时候,最好是原有的软件代码不需要改动一行也能直接迁移到OceanBase上,这就是易用性。

在可扩展性方面,每一个城市里面的机房可以想象为一个可分片的大型数据库,可作为数据拆分的基础,例如把全中国的所有用户分成一百份,那么一份放在第一个机房,依此类推使得整体伸缩能力可达到机房级。理论上只要增加机房,就能无限增加伸缩能力。不论跨越多少个机房、多少个城市,所有参与部署的数据库服务器在逻辑上是一个OceanBase集群的一部分,这就是所谓“原生”的概念,无论从应用视角还是运维视角,都是整体交付。

加跟贴 发新贴一品 人文历史索引首页

Powered by AFpost Sat Feb 5 10:37:17 2022.

本论坛上所有文章只反映送交者的观点。我们保留删除任何被认为不适合本坛的文章的权力。