解析甲骨文首款硬件产品:大型数据仓库Exadata

Oracle于2008年9月推出Exadata,这也是Oracle在完全并行数据仓库上的第一款主要产品。Oracle由此弥补了数据仓库产品型上最大的缺口。的确,Exadata在架构上实现了一定程度的飞跃,在"数据层"之外又建立了一个单独的"存储层",这是此前其他商业产品所未曾做过的。加上Oracle数据库管理系统(DBMS)已经具备的丰富功能–包括强大的处理高并发工作负荷的能力–Exadata有望成为市场上最强大的数据仓库产品。当然,它还提供了"Oracle兼容性",而这也是其他厂商所普遍欠缺的。

优点

  • • 丰富的功能
    • 兼容性
    • 架构看起来很有效率(理论上)

缺点

  • • 架构上做出了一些牺牲,复杂性高
    • 缺乏经过验证的参考实施
    • 价格高

数据仓库DBMS架构需要在各方面做平衡,有时要牺牲一些功能,因此Oracle仍然缺乏一些其他厂商已经提供的功能。当和面向列的DBMS作对比时,这种缺点就非常明显;如果面向列的数据仓库比起面向行的数据仓库更能够满足你的需求,那么Oracle Exadata很可能并不是你的理想选择。但是其他面向行的厂商–Teradata和其他的厂商–同时也提供Exadata所不能具备的功能。

更重要的是,任何支持Exadata的理由都假设它的实际运行效果和宣传的差不多。这种假设目前还未得到证实–至少还没有足够多的验证。虽然Oracle已经披露了使用测试产品的客户名称,但是Oracle还没有提供任何真实的产品参考。Oracle甚至不愿意在客户站点上进行Exadata的概念验证,而是倾向于在它自己的设施内进行测试。Oracle的测试结果和其他已经公布的信息看起来足够让人相信:和没有Exadata的Oracle DBMS部署相比,Exadata可以带来显著的性能提升。但是,我们还缺少Exadata与其他厂商替代系统的对比情况。

最后一个问题是价格–或者说,总拥有成本(TCO)。Oracle的报价是,根据系统大小,分为5-6万美元/TB(低速磁盘),11-13万美元/TB(高速磁盘)。Exadata的定位是面向高端市场。从Oracle过去在软件定价上的传统策略来看,这个定价范围是合理的,而且从硬件/成本节约指标(比如裸分析请求性能或数据压缩)来看,Exadata也并不是行业领先者。(欲了解更多的详细的价格信息,参见《Oracle数据库机以及Exadata定价》,这篇文章中列出了竞争对手的价格)。但是,现实地说,这些费用还只是初步估计,因为每家企业的议价能力是不同的。

Exadata针对的是TB级(用户数据)的数据仓库。你所能买到的最小的配置也有6TB容量,并配有两个存储单元(这是最少的数量)。两个最标准的配置分别拥有14个存储单元,根据所使用的磁盘类型,容量配置分别为42和92TB。需要注意的是所有这些数据都是近似数据,因为用户数据量与磁盘的比例很大程度上受到裸数据类型的影响。

Exadata所解决的问题

毫无疑问,Oracle是企业级联机事务处理(OLTP)DBMS的销量冠军。其他可值得称道的竞争对手通常提供那些虽然不如Oracle,但也"足够好"的产品,然后再通过价格优势或在总拥有成本上的其他优势来与Oracle竞争。

不过,在数据仓库这个领域,格局就完全不一样了。在这个领域中,从产品渗透率来看,Teradata是领先厂商,在海量数据库系统(VLDB)上拥有很高的市场占有率。DB2在一些技术上领先Oracle,尤其是在并行处理领域。还有一些初始厂商,比如Netezza,Vertica,Greenplum和Aster Data等,也不断在数据库市场上斩将夺旗。因此,即使Oracle的产品被广泛用于数千个数据集市和数据仓库,Exadata仍然需要花费一定的努力才能赶上–或超过–高端数据仓库竞争对手。

几乎所有与Oracle数据仓库相竞争的系统都拥有同一个架构功能,而这个功能是Oracle长期以来一直缺乏的:对磁盘的完全并行访问。(Sybase IQ是一个例外,目前的微软SQL Server也不具备该功能,不过SQL Server的迈蒂森计划将会在2010年改变这一点)。在Oracle竞争对手的系统上,不同的处理器可以同时从不同磁盘读取数据,因此可以在短时间内浏览和查询大量的数据。虽然Oracle DBMS在设计上针对OLTP作了优化,但是它将所有的磁盘都看成一个磁盘。(这种方法被人们普遍称为"共享所有"架构–与之相对的是"无共享"架构,不过卖力的软件营销人员在这些术语的解释和推广上倒是越描越黑)。因此,Oracle产品在处理I/O密集型分析查询会遇到瓶颈,而它的裸性能和性价比也相应地受到影响。即使Oracle的性能还可以接受,但是必要的数据库设计和管理工作仍然需要大量的人工,尤其是在许多数据库规模超过了10TB的情况下。

Exadata解决方案

Oracle并没有完全从"共享所有"转向"非共享"架构。(与此形成对比的是,IBM很久以前就推出了"非共享"结构的DB2,而微软最近也准备通过迈蒂森计划改弦易辙)。Oracle推出Exadata是想同时享有这两种结构的长处。Exadata有两个相互独立的CPU池,每个池都有自己的子系统。惠普Oracle数据库机以普通的方式来运行"共享所有"的Oracle系统。惠普Oracle Exadata存储服务器采用并行的、"非共享"的方式来访问磁盘,然后将所读取到的数据传输给Oracle主数据库。从理论上来讲,Exadata存储服务器所带来的数据节约效应足以克服传统的"共享所有"架构所带来的瓶颈,而系统中的Infiniband网络也可以避免产生新的瓶颈。

因此,Oracle的DBMS已经从一个层次的计算架构(数据库)转变为两个层次(数据库和存储)。配置Infiniband网络的惠普Proliant服务器已经为这两个层预先设定好了运行设置。客户的主要硬件选择就是在大型/慢速SATA驱动器和小型/快速SAS驱动器之间作抉择。虽然这两款产品中都出现了"惠普"的名字,不过Oracle表示,比起数据库层,目前的存储层更加依赖惠普的硬件。这种情况的出现也是合情合理,因为数据库层基本上是运行Oracle已经发布的软件,而存储层的设计是全新的,而且储层是Oracle和惠普的工程师共同开发的。

从理论上来说,将架构分成数据库层和存储层能够让Oracle同时拥有"共享所有"和"非共享"架构的好处。磁盘的数据被读出后,一边停留在存储层,一边由系统进行一系列并行的数据操作。然后,中间结果被传送给数据库层,以便进行进一步的分析处理。

Oracle已经公布了测试结果,从结果来看,比起没有Exadata的Oracle系统,Exadata能够带来性能上的极大提升。不过,我们还不清楚Exadata在生产环境中的表现(甚至我们也没有看到在放松控制的测试环境下的测试结果)。我们同时还不清楚Exadata需要多少持续性的管理开销。一方面,克服磁盘瓶颈后,系统应该不再那么需要复杂的分区策略,先进的索引,以及其他需要花费数据库管理员大量时间的策略和实践。另一方面,Exadata包含了一个核心DBMS,一个附加的并行化系统(Oracle Real Application Clusters),以及一个第二并行化系统(Exadata存储服务器)。因此Exadata实际上不能将系统简单性作为其亮点。

数据查询加速功能

无论你怎样看待Oracle的基本架构,不可否认的是Oracle的确提供了丰富的数据仓库功能。虽然这些资源并不是Exadata独有的,但是在评估整个Oracle Exadata产品的时候,我们必须考虑这些因素。这些功能中的许多功能可以让分析查询运行得更快。其中最重要的两个功能是:

物化视图。Oracle可以预先计算并保留其查询结果。这种方式所带来的明显好处就是后来的查询可以采用事先查询所产生的结果,其查询速度得到了很大提升。不过这种方式也有明显的缺点,就是CPU开销比较大,对磁盘空间的要求大,给数据库管理员也带来一定负担。

专门索引。专门的分析索引有位图索引和星型索引等。特别是星型索引,这种索引和物化视图的功能差不多–它们都需要事先消耗一定的系统资源,进行查询处理等工作,然后,当真正的查询发生时,查询的执行速度就可以变快。
Oracle还提供了一系列静态和动态的SQL语句调整功能。其他厂商已经提供类似的功能,但是它们没有这么复杂。这种差别部分是源于产品在成熟度上的差别。但是一些分析人士质疑这些SQL语句调整功能是否有用,他们认为其他厂商所采用更简单的SQL语句调整功能有可能更好。Oracle是通过灵巧的方式,利用一系列工具来实现SQL语句调整功能,而其他系统则采用更为直接的方式–扫描从磁盘中读出的数据,直接处理这些数据,同时优化其处理过程。客户经验告诉我们争论的正反两方都有自己的道理。

分析处理功能

Oracle同时还提供了大量的其他功能。这些功能已经超过了简单的SQL范畴,包括完全的SQL 2003分析工具,以及大量的数据挖掘工具。例如,SPSS的报告称Oracle的数据库数据挖掘技术具有很强的性能优势。不过,我们还需要继续观察Oracle是否可以为许多客户构建有价值的数据挖掘模型。比起多数其他新的竞争对手,Oracle针对数据分析的并行化方案虽然更灵活,但是也更繁琐。

安全性

安全性是数据库所有者永恒的话题。在数据仓库领域中,安全性问题经常涉及隐私问题–特别是当数据仓库中的数据是客户数据的时候。Oracle在安全保护功能上投入了大量时间和精力,比如它的细粒度访问控制和透明加密。对于关注隐私和安全问题的公司来说,Oracle和Oracle Exadata对它们比较有吸引力。

总结

Oracle在数据库领域有丰富的经验和技能。Oracle Exadata拥有合理的架构。毫无疑问,Exadata最终能够满足用户在数据仓库上的不同需求。不过,我们还不太清楚的是:Exadata的许可证定价、复杂性是否会使它在总拥有成本上失去优势。Exadata缺乏客户实施验证,而且Oracle也不愿实施现场的概念验证测试,这使人们怀疑目前的Exadata是否可以满足企业的需求。

如果你已经是一名Oracle用户,而且你的数据仓库容量在5TB以上,那么你应该考虑Exadata。但是除非你是Oracle的忠实用户,或者你和Oracle有很好的关系,可以得到慷慨的价格折扣,那么你应该优先考虑其他厂商更为廉价且经过验证的产品。