数据库一体机简史:集中式还是分布式,这是一个问题?
在之前的几篇文章里我们已经讨论过,Oracle的Exadata和HP的Neoview瞄准的对手都是Teradata,这说明Teradata的市场利润太丰厚,所以惹来群雄觊觎。Oracle更是在广告上直接针对Teradata开火。这场竞争不仅是一场商业战争,更是一场技术路线的较量,其背后的深意值得细细品味。
01
集中式与分布式的路线之争
Exadata与Teradata之争,其实就是Shared-Storage(共性存储)和Shared-Nothing(无共享)架构之争(如图2所示)。在面对大规模数据计算的能力扩展上,只有Oracle选择了共享存储模式,其它厂商基本上都选择了无共享架构。所以从这一点来说,在很长时间内大家都不把Oracle作为大规模数据处理的对手。
但是Exadata改变了竞争格局。图2展示了共享存储架构和无共享架构的基本差异。两者各有优劣——在共享存储架构中,后端存储容易成为瓶颈,前端计算节点之间的共享锁机制也较为复杂;在无共享架构中,数据拆分到各个节点,访问被分散,较易实现线性扩展,但是对于前端应用来说较为复杂,在跨库访问时成本高。

图2 共享存储架构和无共享架构示意图
Oracle的共享存储集群(RAC)技术在OLTP场景下取得了巨大成功。在OLAP场景,Exadata解决了关键的网络带宽问题。如图3所示,左边展示了传统RAC模式在大数据量交互下可能产生的网络瓶颈,而右边则展示了网络带宽拓展后的高速响应。当然,Oracle还在数据库软件层面进行了增强。

图3 Exadata解决的核心挑战
02
迎难而上:中国数据库的共享存储集群突破
zData X数据库一体机已经与YAC实现了联合解决方案创新,取得了卓越的竞争力成果。衡量YAC产品能力的核心指标有两点:第一是单机能力;第二是多节点线性比。
存算分离架构的zData X for YashanDB一体机在“2计算节点+3存储节点”经典配置下(如图5所示),崖山数据库2节点YAC集群单实例性能达231万tpmC,双实例同时测试达345万tpmC,性能线性比75%;3个存储节点8KB随机I/O最高可达800万IOPS,I/O延迟低于0.3ms。云和恩墨与崖山科技联合推出的“崖山数据库一体机”,可以承载大型交易系统、大型报表系统、数据仓库等高性能需求场景。

图5 zData X for YashanDB一体机经典架构
03
RAC之父:罗杰·班福德的技术传奇
比较而言,Shared-Storage架构本质上是把复杂留给了数据库,把简单留给了应用。Shared-Nothing架构则是把简单留给了数据库,把复杂留给了应用。在共享存储模式下,由于多节点可以同时读写数据,并发控制就非常复杂;另外,跨节点之间传递数据块和锁定权也极其复杂。在心跳交换数据难以解决的时代,Oracle曾经通过磁盘交换数据,那性能简直是无法忍受的。
这一时期,共享存储集群技术是无人跟随的。NonStop SQL、Teradata等都在Shared-Nothing架构上走出了成功之路。Shared-Nothing的好处是,数据可以打散分布到不同节点上,用户负载分散,可以更容易地做到线性性能扩展,但是坏处是应用要做适配改造,架构复杂。
直到今天,Shared-Storage和Shared-Nothing的架构冲突仍然随着时代变迁而不断浮现。然而不容否认的是,在RDBMS的黄金时代,Oracle的RAC集群以压倒性优势在竞争中胜出了。
Oracle RAC技术公认的奠基者是罗杰·班福德,行业报道中经常称其为“RAC之父”。他在Oracle工作了30年,于2014年7月从Oracle离职。
罗杰·班福德的技术生涯堪称数据库领域的一个传奇。他曾经在IBM和Esvel工作,后来决定去Oracle试一下。班福德说:“我跟Bob Miner和Larry Ellison面试了一番,感觉Larry这个人魅力十足、精力充沛,有强烈的成功欲望;Bob Miner则是个非常好的人,也很聪明。于是我就去了Oracle。”
班福德的加入很大程度上改变了Oracle数据库的走向。他深度参与了Oracle RAC的架构设计与开发,使Oracle成为在OLTP领域具有统治地位的数据库系统。他的技术创新,特别是高速缓存融合技术,对整个数据库行业产生了深远影响。
班福德自1984年加入Oracle,直至2014年离开。他在Oracle的30年见证了数据库行业从单机到集群、从本地到云端的完整演进过程。他不仅是一位杰出的技术专家,也是一位优秀的技术领导者。在Oracle内部,他培养了一大批技术人才,为Oracle的技术创新奠定了基础。
04
崖山的突破:共享存储集群技术的本土创新
陈志标的这番话道出了共享存储集群技术的本质。共享存储集群不是数据库的一个附加功能,而是需要贯穿数据库内核设计的基础能力。从架构设计之初就考虑集群需求,才能真正实现高性能、高可用的集群系统。
事务处理是数据库的核心功能之一,它确保了多个操作的原子性和一致性。在集群环境中,事务处理的复杂性大幅增加。当多个节点同时处理事务时,如何保证事务的隔离性和一致性是一个巨大的挑战。崖山数据库在架构设计之初就考虑了这个问题,设计了分布式事务处理机制,确保在集群环境下事务的ACID特性。
缓存协同是另一个关键的技术难题。在共享存储集群中,每个节点都有自己的缓存,如何保证多个节点缓存的数据一致是性能的关键。传统的方式是通过加锁和定期刷新,但这种方式会带来较大的性能开销。崖山数据库借鉴了Oracle的高速缓存融合技术,设计了高效的缓存协同机制,实现了节点之间的快速数据同步。
正是因为这些内核级别的设计,崖山数据库才能在第一个单机版本发布后,仅用一年时间就推出成熟可用的共享集群版本。这不是简单的功能叠加,而是架构原生能力的自然延展。如果数据库没有从架构层面考虑集群需求,后期再想加入集群功能,将会面临巨大的技术困难和性能挑战。
05
技术路线之争的启示
Exadata与Teradata之争,实际上是Shared-Storage和Shared-Nothing架构之争。两种架构各有优劣,适用于不同的场景。
Shared-Storage架构的优势是对应用的透明性,应用不需要关心数据的存储与分布。这种架构特别适合OLTP场景,能够提供高性能的事务处理能力。Shared-Nothing架构的优势是扩展性好,性能可以随着节点的增加线性提升。这种架构特别适合OLAP场景,能够处理大规模数据,执行复杂的数据分析。
Oracle选择了Shared-Storage路线,通过高速缓存融合等技术,解决了共享存储架构的性能和扩展性问题,并且借助Exadata成功地将Oracle数据库扩展到了OLAP场景。
云和恩墨的zData X数据库一体机继承了Oracle Exadata最初的开放理念,并将其进一步发扬。zData X支持多种数据库,可以适配多种硬件,真正实现了“硬件开放、数据库开放”的理念。这种开放性在国产数据库时代展现出了巨大的优势。崖山数据库选择了与Oracle数据库相同的技术路线——共享存储集群。这个选择需要极大的勇气和实力,因为共享存储集群是数据库技术中最难的部分。但崖山成功了,证明了国产数据库厂商已经掌握了数据库的核心技术。
Exadata和zData X、Oracle与崖山数据库,这些产品的竞争背后是技术路线的竞争,是商业模式的竞争,更是创新理念的竞争。数据库一体机的发展史即是一部技术创新的历史,也是一部企业竞争的历史。在这个过程中,有成功、有失败、有坚持、有放弃,但无论如何,这些探索与实践都推动了数据库技术不断向前。




