
在之前的几篇文章里我们已经讨论过Oracle的Exadata和HP的Neoview瞄准的对手都是Teradata这说明Teradata的市场利润太丰厚所以惹来群雄觊觎。Oracle更是在广告上直接针对Teradata开火。这场竞争不仅是一场商业战争更是一场技术路线的较量其背后的深意值得细细品味。01集中式与分布式的路线之争图1 Oracle Exadata的广告拉里·埃里森Larry Ellison曾在公开场合多次嘲讽Teradata 的系统又贵又慢而Teradata则通过广告回击Oracle的系统是不稳定的“科学实验”。图1是Oracle的一则广告展示了Exadata替换Teradata的案例最下面的一行小字是赤裸裸的嘲讽——“Save the planetdump your Teradata”。为了应对ExadataTeradata编写了一本竞争力分析手册其主题是《Exadata依然是Oracle》。这份报告的核心观点是Oracle对其共享磁盘架构的依赖限制了其克服大规模数据仓库主要缺陷的能力。Teradata认为Exadata声称的查询智能并不比Teradata或其他竞争性系统更靠近存储并且由于Oracle并未采用Shared-Nothing架构因此它将继续与共享资源的可扩展性问题作斗争。当然Exadata事实上也并不便宜。Exadata与Teradata之争其实就是Shared-Storage共性存储和Shared-Nothing无共享架构之争如图2所示。在面对大规模数据计算的能力扩展上只有Oracle选择了共享存储模式其它厂商基本上都选择了无共享架构。所以从这一点来说在很长时间内大家都不把Oracle作为大规模数据处理的对手。但是Exadata改变了竞争格局。图2展示了共享存储架构和无共享架构的基本差异。两者各有优劣——在共享存储架构中后端存储容易成为瓶颈前端计算节点之间的共享锁机制也较为复杂在无共享架构中数据拆分到各个节点访问被分散较易实现线性扩展但是对于前端应用来说较为复杂在跨库访问时成本高。图2 共享存储架构和无共享架构示意图Oracle的共享存储集群RAC技术在OLTP场景下取得了巨大成功。在OLAP场景Exadata解决了关键的网络带宽问题。如图3所示左边展示了传统RAC模式在大数据量交互下可能产生的网络瓶颈而右边则展示了网络带宽拓展后的高速响应。当然Oracle还在数据库软件层面进行了增强。图3 Exadata解决的核心挑战02迎难而上中国数据库的共享存储集群突破图4 崖山数据库logo在中国数据库市场上共享存储集群也一直被视为数据库这颗明珠上的天顶。率先实现国产数据库共享存储集群技术的领先厂商是达梦和崖山如图4所示等。崖山的共享存储集群技术被称为YAC。zData X数据库一体机已经与YAC实现了联合解决方案创新取得了卓越的竞争力成果。衡量YAC产品能力的核心指标有两点第一是单机能力第二是多节点线性比。存算分离架构的zData X for YashanDB一体机在“2计算节点3存储节点”经典配置下如图5所示崖山数据库2节点YAC集群单实例性能达231万tpmC双实例同时测试达345万tpmC性能线性比75%3个存储节点8KB随机I/O最高可达800万IOPSI/O延迟低于0.3ms。云和恩墨与崖山科技联合推出的“崖山数据库一体机”可以承载大型交易系统、大型报表系统、数据仓库等高性能需求场景。图5 zData X for YashanDB一体机经典架构03RAC之父罗杰·班福德的技术传奇比较而言Shared-Storage架构本质上是把复杂留给了数据库把简单留给了应用。Shared-Nothing架构则是把简单留给了数据库把复杂留给了应用。在共享存储模式下由于多节点可以同时读写数据并发控制就非常复杂另外跨节点之间传递数据块和锁定权也极其复杂。在心跳交换数据难以解决的时代Oracle曾经通过磁盘交换数据那性能简直是无法忍受的。图6 罗杰·班福德到20世纪90年代中期Oracle公司内部出现了激烈的争论是否应该放弃共享磁盘集群技术转而采用无共享数据库集群技术。争论的转折点是罗杰•班福德Roger Bamford见图6提出了一个突破性的设计方案——“高速缓存融合”Cache Fusion技术。最后埃里森亲自拍板走共享存储集群技术路线。这个决策体现了埃里森作为CEO的战略眼光。他相信共享存储架构虽然在实现上更加复杂但对于用户而言更加友好——应用不需要关心数据是如何分布的数据库会自动处理一切。这种对用户体验的关注正是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的技术创新奠定了基础。图7 罗杰·班福德的工作和教育经历离开Oracle后班福德仍然活跃在技术一线。2014年他以杰出架构师的头衔加入MongoDB的高级工程团队。这是一家以NoSQL数据库闻名的公司。这个选择本身就有意思——从关系型数据库到非关系型数据库从传统的企业数据库到新兴的云原生数据库班福德的技术生涯跨越了数据库技术的多个时代如图7所示。2019年班福德加入Xcalar担任杰出院士。Xcalar是一家专注于数据分析的公司其产品能够在云端处理大规模数据提供交互式的分析体验。这与班福德的技术背景非常契合都是关于如何高效处理并分析海量数据。04崖山的突破共享存储集群技术的本土创新图8 陈志标在中国数据库市场上崖山是共享存储集群技术的代表性企业之一。崖山科技CEO陈志标见图8认为共享存储集群是最能考验研发团队内核掌控力的关键技术。陈志标的表达一针见血。他说“Oracle RAC架构之所以好用第一是它大大降低了上层用户的负担第二是它是一个集大成者对数据库内核的各项功能实现百分百掌控。崖山数据库从一开始在整个架构和底层设计之初就把做共享集群的内容考虑进去了。在事务处理、缓存协同、数据块一致性、分布式锁机制等内核最基础的设计中就已具备支撑共享集群的基因。”陈志标的这番话道出了共享存储集群技术的本质。共享存储集群不是数据库的一个附加功能而是需要贯穿数据库内核设计的基础能力。从架构设计之初就考虑集群需求才能真正实现高性能、高可用的集群系统。事务处理是数据库的核心功能之一它确保了多个操作的原子性和一致性。在集群环境中事务处理的复杂性大幅增加。当多个节点同时处理事务时如何保证事务的隔离性和一致性是一个巨大的挑战。崖山数据库在架构设计之初就考虑了这个问题设计了分布式事务处理机制确保在集群环境下事务的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与崖山数据库这些产品的竞争背后是技术路线的竞争是商业模式的竞争更是创新理念的竞争。数据库一体机的发展史即是一部技术创新的历史也是一部企业竞争的历史。在这个过程中有成功、有失败、有坚持、有放弃但无论如何这些探索与实践都推动了数据库技术不断向前。