从 Oracle 迁移到 TiDB,架构哲学的碰撞|TiDB vs Oracle 第二篇

0 阅读11分钟

引言

在当前数字化转型的浪潮中,“去 O”逐渐成为企业数据库升级的重要趋势。一方面,传统集中式数据库在成本、扩展性上存在一定局限;另一方面,国产化政策也越来越明确。

这一趋势并非国内独有,随着数据规模不断增长和应用需求的多样化,全球范围内的数据库架构也正在从传统集中式逐步演进到分布式和云原生架构。这种变化可以类比为汽车工业中从传统燃油车向电车的发展:燃油车依然以稳定、可靠著称,而电动车则在基础稳定可靠的基础上,在智能化和扩展性方面具备更强的适应力——正如分布式架构在灵活性、扩展性和未来业务创新方面展现了更多可能。

为此,“TiDB vs Oracle”系列文章将从企业 IT 架构现代化架构选择、分布式数据库与集中式数据库的对比、迁移全流程拆解、案例拆解、收益分析等方面展开分享,希望为面对数据库选型的广大人群提供参考建议。

作者:TiDB 解决方案架构师 柳冬冬

TiDB vs Oracle 术语命名差异

首先,我们看下两款数据库产品的术语和实现机制的差异。

Oracle 与 TiDB 在多数能力与行为上并非绝对的有无之别,而是因底层架构范式不同,在功能命名、实现路径与设计侧重点上存在差异。

Oracle,特别是 RAC 架构,历经多年沉淀,在一致性控制与事务完整性方面建立了高度成熟的机制。其通过集中式控制文件与 Cache Fusion 实现节点间的数据一致性,事务模型基于 XID 与 Undo 技术,稳定可靠,广泛应用于核心关键业务系统。

TiDB 作为原生分布式数据库,天生面向云环境设计,从选举机制、节点管理、事务调度到存储引擎均采用去中心化架构。其高可用性通过 Raft 协议保障,事务层借助 TSO(全局时间戳)与 Percolator 模型,有效支撑大规模并发与弹性扩展。

在存储架构层面,TiDB 采用 KV-Region-Table 的分布式模型,支持在线扩缩容与高并发数据更新;Oracle 则延续传统 segment 结构,搭配多文件管理,在精细化存储控制方面依然表现出色。

Oracle 和 TiDB 的架构对比

Oracle RAC 架构

Oracle RAC (Real Application Clusters) 长期以来是集中式数据库在横向扩展和高可用领域的巅峰之作。它采用 Shared Everything 架构,多个计算节点共享同一份存储。其核心优势在于 Cache Fusion 技术,允许节点间直接在内存层面传输数据块,而非依赖磁盘 I/O,从而在保证全局一致性的同时,维持极高的事务处理性能。然而,这种架构的扩展能力受到共享存储 IOPS 承载能力的限制,并且因缓存同步带来的协调开销,在吞吐量扩展上存在天然的“天花板”。Oracle RAC 高度依赖专有共享存储阵列等昂贵硬件,实施和运维复杂度高。

TiDB 架构

与此形成鲜明对比,TiDB 秉持 Shared Nothing 原生分布式架构。它实现了计算与存储的彻底解耦。

计算层 (TiDB Server):专注于 SQL 解析与分布式执行计划的生成。

存储层 (TiKV):将数据动态、透明地划分为多个逻辑分片 (Region),并分布在多个节点上。底层通过 Raft 共识协议 保证多副本强一致性和高可用。LSM-Tree 存储结构对写入更友好。

调度层 (Placement Driver, PD):负责集群元信息管理、负载均衡,并提供 TSO (Global SCN) 全局时间戳,配合 Percolator 模型 实现分布式事务的 ACID 保证。

列存引擎 (TiFlash):TiDB 还内置 TiFlash,支持列式存储,进一步构建了 HTAP 架构,可同时满足事务处理与分析查询的需求。

这种架构能够突破集中式硬件瓶颈,实现更强的横向扩展能力。TiDB 可以部署在标准 x86/ARM/龙芯主机、Kubernetes 或云平台,无需特殊硬件依赖,成本效益更高。

我们可以看到,“Share Everything” 与 “Share Nothing” 的架构之争已经持续了三四十年。从今天的硬件条件和云计算环境来看,Share Nothing 架构(尤其是 Serverless 模式)已经展现出明显的优势和更强的延展性。相比之下,Share Everything 架构无论如何优化,始终存在架构上的天花板,难以突破。

基于现在的硬件和原生环境,“Share Nothing” 基本上已经被认为是最终演进方向,而 “Share Everything” 则逐渐退出主流。原生分布式架构,可以说是目前业内公认的选型“终局”和共识。

TiDB vs Oracle 应用场景角度

在企业应用场景上,Oracle 一直有着非常成熟的落地实践。比如在 OLTP 事务处理场景,银行核心账务、电商订单系统都依赖 Oracle 来保障强一致和稳定性。

在 OLAP 分析场景,企业级数据仓库、历史趋势预测等,也是 Oracle 长期积累的优势。

而在 HTAP 场景,像实时风控、用户行为分析等,Oracle 也提供了坚实的支持。甚至在批处理场景,比如财务月结等,Oracle 也能稳定运行。

这背后依赖的是它的事务强一致性、系统可靠性和分析处理能力。

TiDB 虽然走的是云原生分布式的技术路径,但也完全可以覆盖同样的业务诉求。

比如通过存储计算分离架构、Raft 多副本一致性、2PC+MVCC 事务模型,在 OLTP 上保证事务一致性与高并发。

通过 TiFlash 列存 + MPP,TiDB 能支撑复杂报表和实时分析,天然满足 HTAP 需求。

依托这种设计,TiDB 天生支持弹性扩缩容、读写分离与跨机房多副本容灾,不仅突破了传统集中式架构的扩展瓶颈,也满足了 OLTP 与 OLAP 融合的实时业务需求,逐步成为云原生数据库的重要代表。

两者虽然技术路径不同,但最终目标都是为企业提供稳定、可持续的数据底座。

因此,在相同的企业级挑战下,TiDB 用云原生、弹性扩展与 HTAP 一体化能力,带来了另一种值得信赖的发展方向。它代表的是一种面向未来的数据库演进思路——让企业能够在同一套架构之上,同时获得一致性、弹性与实时智能的能力。

TiDB vs Oracle 产品特性对比

刚才在应用场景里阐述了一些核心系统所需要的核心特性,这里再完整的列举一些重要的特性。

从架构层面来看,Oracle 以集中式和共享集群架构为主,支持如 RAC 方案。而 TiDB 则采用原生分布式架构,具备良好的横向扩展能力,特别适合云原生和大规模并发场景下的数据库服务构建。

其实,从实际的情况来看,Oracle 4节点的 RAC 在国内,真正的核心场景可能不超过 10 个,实施难度非常的大。

当年淘宝最多的时候用过 16 个节点,非常顶级的水平和高度了,而 TiDB 多节点的集群就非常的多了,弹性的扩展,在大集群的情况下, tidb是更容易被掌握、更稳定的一个技术,在这方面 TiDB 是比 Oracle 有优势的。

在高可用方面,Oracle 提供包括 RAC 和 Data Guard 在内的完善解决方案;而 TiDB 则通过 Raft 协议实现自动故障恢复与强一致性,架构简洁,具备更高的自动化能力,部署更加灵活。

在数据写入性能上,Oracle 借助一体机,在高吞吐事务处理方面表现优异;TiDB 则结合 LSM-Tree、列式存储等技术,实现了良好的写入扩展性,能够轻松支撑持续增长的业务流量。

此外,Oracle 属于闭源商业产品,适用于对稳定性和长期支持有严格要求的企业场景;TiDB 则是开源数据库的代表之一,具备活跃的生态、强大的社区支持,以及对云平台和容器化环境的良好适配能力。

综上可以看到,TiDB 以云原生、分布式为核心设计理念,兼顾强一致性与弹性扩展能力,已能覆盖 Oracle 在主流场景中的关键能力,具备承载核心业务系统的能力,在技术现代化、架构解耦、运维自动化等方面提供了更具前瞻性和灵活性的选择。

从 Oracle 到 TiDB 不是平替,是为企业提供一条面向未来的新路径

前面从多个维度对比了 Oracle 和 TiDB,在这里用这张图总结一下。

在企业数据库的发展历程中,Oracle 等传统体系以集中式架构为核心,配合大型硬件支撑,确保了事务处理和关键任务的极致可靠性。但这种模式往往带来两个局限:一是业务和数据库趋于“肥大”,依赖硬件,横向扩展受限;二是架构相对复杂,维护成本高。

针对 Oracle 的这些问题,很多企业引入了分库分表的方案,但基于分库分表中间件的这种方案和设计,带来很大的业务入侵和运维成本,对于大多数客户来说掌握难度大。比如阿里双十一用分库分表模式替代了 Oracle,但花了 10 倍的人力投入。他们想要的是一个像 Oracle 一样好用的,高扩展,易掌控的数据库。

而随着企业 IT 架构向云原生演进,TiDB 以分布式架构提供了另一条路径。它通过 “多” 的理念——业务模块可拆分,数据库自动分片分布,解决了硬件依赖与单点瓶颈;通过 横向扩展与自动调度,让系统能够一键扩展而不中断业务;同时在 无侵入性 上保持灵活,支持多样的数据模型和混合负载。相比传统模式下的复杂维护,TiDB 的架构更加简洁,维护成本低,也不需要额外引入庞杂的技术栈。

针对 Oracle 与 TiDB 的对比,最后总结几点:

1、Oracle 是集中式的天花板,40 多年来一直在技术迭代持续的演进,(好比是油车)走的是融合的路线。

2、TiDB 是依据 Google 分布式架构的最佳实践,通过融合的方式从分布式走向云原生,(好比是电车)更加智能化,实现了“换道超车”。

3、两者努力的方向是一致的,因为基础架构不同实现的路径不一样,集中式数据库难以超越 Oracle,Oracle 因为集中式也无法达到原生分布式的扩展性和性价比。

4、原生分布式是基于 2010 年代的硬件和云环境所诞生的,架构的扩展性和延伸性更高,美国欧洲日本很多大型银行也都因为 Oracle 的扩展性不足和高成本,在逐步的迁移到更加开放的分布式数据库。

5、在“好用”这一点上,Oracle 和 TiDB 的追求是一致的,好用是多个能力的总体呈现,“好用”这里有一个关键是有多少客户打磨,TiDB 已有数千家,在跨行业核心场景得到验证。

结语

回到上文一个很贴切的比喻,为什么电车更容易实现自动驾驶,而油车却更难?核心原因就在于它们一开始的架构就不一样。虽然最终目的都是成为好用的交通工具,但路径完全不同。

同样的道理,中国电车能够实现后发先至,就是因为采用了更适合未来的架构,从而更容易在动力和智能方面不断提升。这个比喻放在数据库领域也非常形象:集中式数据库就像油车,而分布式数据库就像电车。

因此,TiDB 能“接住” Oracle,并不是在做平替,而是在承接成熟体系的同时,为企业打开了一条面向未来的新路径 ——这是云原生时代数据库演进的真正意义。