Oracle 在 2024 年 3 月4 日由Juan Loaiza面向全球发布了自治分布式数据库产品(Oracle Globally Distributed Autonomous Database),其分布式数据库战略再次引发业界的关注。
分析师转引 Juan 在演讲中的表述:在分布式数据库方面,Oracle显然遥遥领先于竞争对手。那么 Oracle 的分布式数据库策略是什么呢?Oracle 的分布式数据库真的已经实现了行业领先吗?让我们从16 年前的一篇文章说起。2008年,Oracle 的一位技术专家发表了一篇演讲,题目是:Global Scale Web 2.0 Data Platforms Sharding with Oracle Database。在这篇文章中,详尽地分析了各种分布式架构的优缺点,并指出,为了减少分片带来的复杂跨库查询的性能衰减,分布式的一种全量变体实现是,将每个分片通过复制建成N 个全量数据集。大约在这篇文稿发布的 10 年之后,这篇文章的作者作为 Oracle Sharding 的产品负责人,在 2017 年发布了 Oracle 的分布式数据库解决方案,该方案的完整实现之一就包括“全量变体实现”。这篇文章的作者就是 Wei Hu,他现在领导 Oracle 的高可用技术部门,向 Juan Loaiza 汇报。我在下图的总结中,概括了 Oracle 早期的思考。分布式的架构实现主要有 3 种:中间件分布式、一体化分布式和原生分布式。中间件分布式一般通过松耦合的外挂式中间件来完成架构搭建,一体化则更进一步,中间件演进为协调节点,形成一体化架构,但是这两者在存储上,都以分片架构为主。原生分布式则更进一步,通过基于分布式协议的同步机制实现原生化。
Oracle 在 3 月4 日发布的自治分布式数据库版本,是基于分片建构实现的。以下是这一架构的简图。Shard分片的高可用和安全可以通过 Data Guard 技术来实现。这种架构和 MySQL 的 Master-Slave 主从架构的分库分表解决方案完全相同。 Oracle的 Sharding 自 2017 年发布为时 7 年,因为 Oracle RAC 极强的Scale-Out集群扩展能力,导致 Sharding 在现实中的应用非常有限。那么现在,Oracle 是如何为这一架构找到现实的应用场景呢?
Oracle 为分布式定义的典型场景包括:支付处理、信用卡欺诈检测、个性化营销、移动消息、互联网基础设施和物联网(IoT)等。显然 Oracle 并未将传统的 OLTP 作为分布式的场景,新应用需求才是 Oracle 的主攻方向。尤其是基于数据主权(Data Sovereignty)的场景。当下从全球看,数据的疆域属性越来越明显和突出,通过数据分片将主权数据置于合规的不同区域,有利于简化用户的数据环境布局。以印度为例,法律规定当支付双方都属于印度实体,则数据必须位于印度。在这种场景下,Oracle 的解决方案提供了技术以外的现实意义。Juan Loaiza 指出,Oracle 分布式数据库在 SQL 方面的强大优势让 Oracle 领先于竞争者。其他分布式数据库运行于 NoSQL 引擎之上,它们补齐 SQL 能力需要花费数年的时间。而 Oracle 在分区等方面的优势也是经年累月的,这些是用户更好使用分布式数据库的基础。当然,在 Oracle 23c 中,Oracle 同样将分布式更进一步,实现了基于 Raft 复制的原生分布式解决方案:我们已经看到 Oracle 数据库在分布式方向上,不足的,已经补齐;优势的,不断展开。Oracle 仍然在不断向前。那么中国分布式数据库的创新者,他们的最近进展又将如何?其实从整体架构演进上,Oracle 走过的历程和国产分布式数据库异曲同工。例如阿里云的分布式数据库 PolarDB-X就是从基于 MySQL的 DRDS 方案逐步演进到云原生分布式数据库形态:又例如华为云的 GaussDB 分布式数据库,也是由 PG-XC 出发,不断进化,演进为:“基于分布式数据库理论实现的分布式数据库。这条路线是根据分布式一致性协议做底层设计。原生分布式数据库将分布式存储、事务和计算结合在一起,数据由系统自动打散并存储多个副本,通过一致性协议保证多个副本和事务的一致性。”OceanBase则是由原生分布式出发,其分布式数据库集群由三个子集群组成,构成基本的三副本数据存储架构,底层存储采用 Shared-Nothing 模式,每个数据节点都是对等的。日志信息同步采用 Multi-Paxos 分布式共识协议。我一直认为 OceanBase 的实现非常巧妙,和 Oracle 有很多异曲同工之处,Oracle 早期讨论的全量变体分布式实现也成为了其最终的选择。不过 Oracle 具有底层存储的技术优势,共享存储、一体机一直是其底层的有力支撑。
最后让我们回到主题,Oracle的分布式已经实现超越了吗?在我看来,从技术上其实 Oracle 从未将分布式作为主力解决方案,它只是 Oracle 传统优势的一个有益补充;从销售上,挟 RDBMS 王者的优势,找到了更为明确的适用场景,Oracle 很容易在数百亿美元的营收中为分布式拓展 1 亿美元的小目标,这也就超越了多数独立的分布式数据库厂商。即便如此,Oracle Scale-Out 的执念从未改变,在分布式的架构上,你仍然可以用 Exadata 一体机进行单 Shard 的极致扩展。顺便说一句,云和恩墨的 zData X 一体机产品,可以支持通用数据库,实现极致的性能扩展,欢迎大家关注!