作者介绍
欧阳辰,超过15年的软件开发和设计经验,目前就职于小米公司,负责小米广告平台的架构研发。曾为微软公司工作10年,担任高级软件开发主管。热爱架构设计和高可用性系统,特别对于大规模互联网软件的开发,具有丰富的理论知识和实践经验。个人公众号:互联居。
在去IOE的时代,一起聊聊Oracle Exadata貌似有些不明智。在各种“免费”,“开源”,"Scale Out",“大数据”等喧嚣中,走进另一种技术创新的世界,回溯一下过去10多年的互联网经历,还是有些点滴的感悟。
Oracle是一个伟大的公司,它能把很多企业服务产业格局想透,并且鲨鱼般地执行起来,每次巨额吞都会有整合阵痛后的欢愉,包括PeopleSoft、WebLogic、Sun等等。不管技术发展成怎样,有3个方面是企业软件永远需要的: 更快、更好用、性价比更高,Oracle Exadata就是这么一个战略性的产品。
为什么今天聊这个话题,这也是我自己对于"Scale out everything"(谷歌的魔咒)和“开源”的一些反思。多年以来,我也一直相信使用大量便宜的硬件,搭建一套牛逼的高性能软件系统是一种美德和必然。Software defined everyting。现在,回顾这个问题,自己才真正想清楚:能解决业务问题的才是王道,不管是Scale out还是Scale Up,不管是Software还是Hardware。
举一个Scale up例子,Stackoverflow.com的流量世界排名第56(Alexa排名),相当于搜狐(76名)和京东(64名),但这家公司只使用了24台机器,包括4台内存768G的数据库服务器,技术有部分使用老旧的.NET,“够用就好”是他们CTO给出的答案。
过去,我多年从事互联网搜索引擎的研发项目,其中Index Serve需要将全部网页的索引都装进去,需要大量机器资源,特别是内存资源。那时候,经过各种成本权衡之后,购买高配置的硬件往往能够节省整体费用,其中主要原因有几个:
高配置硬件内存更大:需要更少的机器,更少的电费(电费是数据中心重要成本)。
高配置硬件的性能更好:需要更少的机器。
而且,每隔几年,就要更新一遍这些高端的机器,因为新机器的配置更高,效率更高,更加省电。长期使用高端配置和利用最新硬件创新,却成为一个重要成本节省的方法。搜索引擎的系统开发难度,就是需要对最新软硬件的融合开发。
更新的硬件(网络,CPU,存储,显卡等)==》适配的系统和软件
另外一个随想,是关于Hadoop的MapReduce效率;经常使用Hadoop MR/Hive的同学,应该都有过经历:一个简单查询,有时候M/R执行起来,执行慢的要命,这是一种“不必要的痛苦和可笑的低效成本”。有时候恨不得把所有数据拷贝出来,自己写一个Java程序搞定的。还有时候,往往会想起数据库的高效率,每个SQL都能是可期待的执行时间。与其在海量低熵值的数据中找豆子,不如把关心的数据整理好放到一个数据库里,进行高效简单查询。
好了,啰嗦这么多,回到正题,今天学习一下“软硬件一体”的Oracle Exadata。它是一个软硬件一体的解决方案,把数据库、存储的软硬件都一起打包解决了,支持OLTP和数据仓库(Data Warehousing)的应用,它有一个优势就是可以自主地使用各种高性能硬件解决各个模块间的瓶颈,也可以使用软件解决效率问题。这个产品线从2008年开始,以每12-18个月升级一次,今年发布的叫做X6。
这个数据库的定位,实际上是处理TB级别的高可靠交易数据,同时支持数据仓库和分析功能。
既然是硬件,先看看颜值,Oracle Exadata的外观一看就是Sun的作品,工程师范十足,完全没有艺术元素,标标准准老老实实的Rack,兼容行业标准的。对比IBM的Mainframe Z13,IBM的工业设计还是完胜Oracle啊,当然价格要比Exadata要高一些。
Oracle Exadata整体架构如下,数据存储和数据处理,分别有数据存储服务(软件+硬件),数据库服务(软件+硬件),之间由高速网络(InfiniBand)连接。
下图是一些组件详图,蓝色为硬件部分,红色为软件部分。
DBRM(Database Resource Mgn): 数据库资源管理
ASM(Automatic Storage Mgn):自动存储管理,用于管理CellSrv;
OEL(Oracle Enterprise Linux):Oracle定制的Linux
CellSRV:用于管理存储的专用软件服务
IORM(I/O Resource Manager):I/O资源管理
1)InfiniBand网络
InfiniBand并非通用的网络协议,而是专门用于服务器之间通信的底层数据通信协议,它有两个特点:贵且快(菊与刀)。最新的Oracle Exadata采用最新的InfiniBand,速度可以达到40Gb/s。虽然,现在有很多千兆以太网协议,有些网卡甚至支持10Gb/s或更高,但是在服务器之间的数据传输场景下,InfiniBand有绝对的优势。有些公司也在尝试使用InfiniBand在Hadoop集群中,但是貌似两种东西的气质不符,很难融合在一起。另外一个特点是稀贵,这个很好理解,一个网线200元(是美金),一个交换机也要上万元(也是美金)。
InfiniBand用于Exadata中,数据库服务器和存储服务器(也包括CPU处理能力)之间的通信,是非常成功的一个应用 。
2)高性能闪存卡
Oracle Exadata使用了Oracle Flash Accelerator F320 PCIe Card(Oracle越来越硬了),这个闪存加速卡使用PCIe接口,采用3D V-Nand技术,这是三星公司SSD的独门绝技,闪存单元更加高密度,容量更大。这个加速卡单卡容量为3.2T,一个Rack最多8个闪存加速卡,容量能到25.6G。
1) Smart Scan(智能扫描)
这是一个Common Sense的创新,在Exadata的架构下,数据获取主要在存储服务上,复杂计算(例如Join)主要在数据库服务器,因此每次查询,存储服务器需要准备好相关的数据,通过InfiniBand高速网络传给数据库服务器。所谓Smart Scan,就是在扫描数据的时候,只返回相关的数据,满足Where条件的数据。这样可以减少数据传输量,并且加快速度。
2)Hybrid Columnar Compression(混合列式压缩)
这个一个非常有意思的技术,数据库既提供经典的行式数据存储,支持OLTP,也支持高压缩比的列式存储,支持数据仓库的各种分析场景。它还提供一些灵活的功能,把旧的行式数据转换成压缩比高的列式数据。压缩算法支持LZO、ZLIB、BZIP2等。列式数据库之所以可以高效压缩,由于每个所有类似的数据都放在一起,很容易做一些字典编码,行程编码等。
为了提高数据查询的效率,Exadata Columnar Flash Cache提供将查询获得的行数据,动态转换成列数据,放在Flash中,方便后面的数据分析工作。前面提到的Smart Scan也可以根据Flash列式数据获得相关最小数据集合。
3)存储索引
这个技术看起来像一个小trick,系统会对一些列的每个区记录最大和最小值,如果查询语句在Where中有制定范围时,可以快速获取数据或者skip数据。这个内部索引对于用户是完全透明的,无需任何操作,就可以利用这个技术提高范围查询的性能。这个技术就是为一些列做一些粗粒度的简单索引。
4)Oracle Exadata云服务
可以让Oracle处理所有的部署问题,动态的增减资源,按照预定的资源付费,起步配置为,2个数据库服务,3个存储单元。有兴趣可以看看Cloud.oracle.com
最后,看了这么多,一直没有涉及到一个关键问题,它的答案会直接影响阅读的心情,这个玩意多少钱? 我没有花太多时间了解Exadata的详细定价,大概的价格范围是1百万之间/Rack,(对,价格是美元)。其实,对于一些银行/电信业务,Exadata的客户还是蛮多,也是数据仓库数据库不错的选择。
Exadata虽然已经X6版本了,销量还是比宝马X6少很多,美国的国际化客户不少,中国的一号店、工商银行、招商证券等也都开始使用这种软硬件一体的创新,也有更多的客户开始使用Oracle Exadata Cloud了。
本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-09-06