存储专栏:数据库定义存储之ORACLE篇

存储在线专栏文章:昨天我们谈了IBM如何把数据库和存储相互配合,协同工作的。(存储专栏:数据库定义存储之IBM篇)今天我们来看看ORACLE的情况。

大家都知道ORCLE的数据库是市场第一。ORACLE收购了SUN和Pillar Data Systems后,在NAS领域重点推出了ZFS存储,在SAN领域则主推Pillar Axiom存储,但感觉了解的人并不多,包括ORACLE内部的人。西瓜哥一直不太理解,如果说收购SUN主要看中JAVA,很多人都认为ORCLE会把SUN的硬件卖掉,但是又收购了Pillar Data Systems这个纯存储公司干啥?

但深入了解后,我发现事情不是那么简单,ORACLE的野心不仅仅是软件,虽然ORACLE的软件做得很好(最新的结果,ORACLE打败IBM成为全球第二大软件公司)。ORACLE的野心是通过软件的优势来带动硬件的销售,Larry根本不Care通用的硬件,因为只能拼价格战,那个不是他感兴趣的。因此,我们看到ORACLE的一体机大行其道,在市场上掀起一股热潮。现在,这个趋势也渗透到存储领域。

大家也许关注到今年9月份的时候,ORACLE发布了一个新闻,最新的Oracle ZFS Storage ZS3-4实现了存储性能委员会(Storage Performance Council)SPC-2针对处理吞吐量的最佳结果,其性价比比IBM System Storage DS8870 和HP P9500 XP Disk Array高三倍多,也击败了曾经的记录保存者富士通DX8700 S2,打破了世界记录。

ZS3-4其实就是一个中端存储,为什么打败了所有的高端存储?我们来看一下配置,ZS3-4就是一个两个节点的集群,但每个节点配置了1TB的CACHE。每个节点也就是一台SUN的服务器,配置INTEL的CPU,我猜上面跑的是Solaris的操作系统,当然,应该还有SUN开发了近10年的集群文件系统ZFS,然后在ZFS上再提供数据块服务,感觉思路和NETAPP差不多,都是以文件系统为基础。

ZS3-4集群的连接还是传统集群服务器的连接方式,采用两个串口做心跳,一个GE以太口做通讯。因此,西瓜哥认为ZFS文件系统还是很厉害的,一般的高性能集群都用高速连接,如Infiband,但ZFS集群只需要GE口的连接就足够了,说明ZFS的设计比较好,元数据交互不多。

一个中端存储的SPC-2可以达到17244 MBPS,世界第一,性价比肯定也是世界第一了。

ORACLE把ZFS存储叫做Application Engineered Storage(AES),也就是应用定制存储,确实是名不虚传的,今天就拿ORACLE和ZFS存储的配合为例,来讲讲ORACLE做存储的思路。

西瓜哥曾经在10多年前拿过一个ORACLE 8 OCP(Oracle Certified Professional)认证,当时也是费老劲了,考了5门课,据说当时的含金量和CCIE差不多。但后来转行做硬件了,这些知识基本还回给ORACLE了。因此,今天分析得不对,大家不要扔砖头哦。

不懂存储的DBA不是好DBA。现在的存储越来越复杂,原来只有FC盘,而且存储很直观,对DBA可见。现在下面的存储介质很多,特别是SSD加了进来,还有现在虚拟化技术大行其道,DBA根本不知道自己的数据实际存放的位置,是否是thin卷,是否压缩,是否重删,是否分层,DBA真是一个头,八个大。

为啥这么说,我们通过DBA的工作来说明一下。

1、性能调优。调优是目前DBA最大的工作量之一,但存储现在都虚拟化了,如果你不懂存储,是无法调优的。

2、SSD介质管理。SSD介质现在在数据库领域发挥了巨大的加速作用。但SSD不是万能的,他写的单位是page,即一次写一个块,不像传统硬盘一次写一个位(bit),而且page写前还得擦除,还有写次数寿命问题。DBA如果不懂这些知识,是做不好DBA的。

3、效率提升。目前的存储支持高效的空间管理,包含瘦分配、压缩和重删。但他们是有区别的,瘦分配减少浪费,但并没有真正节省空间;压缩一般是局部的,在一个文件或者一个卷内部,数据压缩后是无损的,安全的;而重删一般是全局的,是采用hash(指纹)判断数据块是否有重复,如果重复只保留一份COPY,不同的数据块可能会产生相同的指纹(虽然概率很小),hash冲突处理不好是有数据丢失隐患的。如果你作为DBA,不懂这些行吗?

4、排错。数据库出了问题,你需要端到端排错,你需要懂OS、网络、存储,仔细分析,看拥堵点在哪里,存储的问题还是网络的问题等等。

5、数据保护。备份是DBA的主要工作之一,现在数据量愈来愈多,但留给DBA的备份窗口越来越小,因此,不能简单采用数据库的备份工具进行备份,需要结合存储的快照和复制技术,来实现快速的备份、归档、容灾和恢复。而快照的时候,需要数据库静默,数据库Cache刷新,数据按顺序落盘后再做快照,否则可能造成数据库启动不起来。

6、大量的人工劳动。大家从上面的分析可以看到,DBA其实需要做很多和存储相关的工作,内容还是比较繁琐的。

7、编写脚本。由于存储和数据库不能很好配合,DBA需要写很多的脚本来完成日常的工作,如备份。但这些脚本由于是个人写的,因此没有经过严格测试,质量得不到保证。

8、TCO控制。现在数据在增长,但IT投资并没有同步增长。因此,DBA必须善于利用各种存储技术,比如各种压缩技术,减少容量损耗,减低TCO。公司希望你就像会巫毒教的还魂术一样,通过新技术的引用,让数据库起死回生。

ORACLE看到了这些问题,因此,它让ORACLE数据库和自己家的存储紧密配合,在最新发布的12c数据库版本融入了很多私有协议和ORACLE存储进行通讯,来解决这些问题。

我们先来看看ZS3存储的情况,前面我们说过,就是一个双控的中端存储(支持单控配置)。但和传统的中端存储不同,是采用服务器的集群方式实现的,类似NETAPP控制器分散部署的情况。这种方式我感觉应该就不支持cache镜像了吧。ZFS存储的的核心还是Zettabyte file systems(ZFS),虽然ZFS存储也支持SAN功能。我记得我做DBA的时候,ORACLE都是建议数据库采用裸设备,这样性能最好。但现在ORACLE采用ZFS存储的NAS功能,而不是SAN功能。

ZFS存储采用多种介质和数据库协调工作,这些介质组成Hybrid Storage Pools(HSP),ORACLE数据库通过私有协议告知存储数据如何存放,这个有点类似DB2和DS8000的CACHE协调,但ORACLE不仅仅是Cache协调,而是整个数据的生命周期管理协调。由于ZFS存储采用大容量的DRAM,ORACLE宣传90%的I/O可以在DRAM内完成,这个就是ZFS存储性能那么好的主要原因。大家知道,DRAM比SSD一般还要快10倍-20倍。

由于ZFS有大容量的DRAM,因此也可以优化对SSD的访问,ORACLE叫这个技术Dynamic SSD Optimization(DSO)。也就是数据先写到DRAM,然后把大块的数据再顺序写到SSD中,这样SSD的page size就可以设置得大一些,时延更小,使得ZFS有更高的效率,更好的性能。

由于有大容量DRAM,数据的重删在可以内存里完成,性能更高。

当然,ZFS存储利用SMP,多线程和多核技术实现多Cache的并行访问。

Hybrid Columnar Compression(HCC)混合列压缩是Oracle Database 11gR2推出的新特性。这个特性针对数据库的压缩是非常有效的,大家知道,数据库的列一般冗余数据最多。比如你统计全国的人口,那么年龄那一列肯定就是从1-150内的数字,重复的数值肯定非常多,因此按列压缩,效率肯定非常高。关键是这个压缩不仅能减少空间,而且还可以提高性能,因为ORACLE数据库查询这些值的时候不需要解压缩就可以查询。而ZFS存储支持这个特性,据说空间可以压缩50倍,同时查询性能可以提高3-8倍。

在ORACLE最新发布的 database 12c里有一个新特性Advanced Data Optimization,HCC可以感知数据的活跃度,从而采取不同的压缩策略。比如常用的数据就不压缩,一般的数据压缩率不用太高,如果是冷数据,则采取最高压缩率进行压缩。好处是显而易见的,压缩效率得到提升。

当然,ZFS存储提供了整合的图形化分析工具,这些分析工具和ORACLE数据库联动,DBA非常容易看出来性能瓶颈在哪里。而一般的存储分析工具是做不到的。

ZFS存储还支持通过API和ORACLE的RMAN, DATA GUARD, FLASHBACK联动。比如存储做快照的时候通知数据库静默,RMAN备份的时候直接备份存储HCC压缩的数据而不用再解压缩等等。ORACLE说他们采用ZFS专业备份存储,采用InfiniBand和数据库连接,备份速度高达25TB/hr,如果算上HCC压缩,那么每小时可以备份1.25PB原始数据,哇,相当厉害。恢复的速度也很快,可以做到10TB/hr。

ZS3存储可以和最新的12c数据库配合,采用数据库的heat map来把不同的热点的数据放到不同的介质中,同时可以和数据库的partition分区功能配合实现自动归档。比如每一年的数据存储在一个分区里,2013年的时候,可以把2012年的数据归档了。这些都可以自动去做,而不需要人工参与。

实现ORACLE和ZFS存储的通信的关键是ORACLE在最新的数据库版本12c中发布了一个Oracle Intelligent Storage Protocol(OISP)。OISP是一个私有协议,只能和ORACLE的存储通讯,呜呜,ORACLE太不厚道了。

通过上面我们的分析可以看到,如果采用ORACLE数据库+ORACLE ZFS存储,在OLAP应用方面,确实可以达到降低TCO的目的。

对比IBM DB2和DS8000的结合,我们发现ORACLE缺少一个端到端的I/O优先级协作。但我们前面讲过ORACLE的PA600支持ORACLE的数据库QOS模板部署,可以针对ORACLE提供QOS配置模板,但我认为这种不算感知,是单向的。当然,PA600也支持HCC压缩。

总结一下,ORACLE DATABASE 12c以后,提供了更多的特性和ORACLE存储联动。目前看主要是ZS3存储。数据库和存储采用专有的通讯协议OISP。我查了相关的资料,OISP利用了一个ORACLE数据库的特性direct NFS(dNFS),这个特性就是数据库绕开操作系统,直接和NFS存储通讯。也就是说,就算ORACLE开放这个特性,也只能支持NAS存储,这也就是PA600为什么也不支持OISP的原因。有了dNFS和OISP,传统的DBA认为数据库建在SAN上更快的老观念可能要更新了。

最后,我再来总结一下ORACLE的存储思路,不卖通用存储,在软件上开发更多的专用接口技术和存储联动,提高存储的附加值,利用软件的市场地位带动存储的销售。虽然ZFS存储也支持SAN,PA600也支持NAS,但从目前的迹象看,ORACLE软件和ZFS存储的结合更加紧密些,也就是在NAS方面。

由于ORACLE不开放OISP协议,其他的厂商估计暂时没有办法和ORACLE联动了,EMC也就是发布了一个ORACLE管理插件,可以在OEM(ORACLE ENTERPRISE MANAGER)界面里管理存储而已,当然,华为在上海HCC发布会上和ORACLE联合发布了DIX方案,可以实现端到端的数据保护。但这些合作我认为太初级了。

不知道有没有别的手段逼ORACLE开放OISP?告ORACLE垄断,或者学习华为当初数通兼容CISCO EIGRP协议的情况,开发出兼容OISP协议的存储?从技术上感觉可以办到,但不知道是否有知识产权的纠纷。

不过,ORACLE这种自我封闭的发展道路是否被用户接受?这种相当变相捆绑销售。西瓜哥其实认为ORACLE应该学习VMWARE,更加开放一些,毕竟核心的产品是ORACLE DATABASE,而不是存储。

好了,今天的分享就到这里。

希望大家积极反馈你的意见和建议,微信扫描如下二维码,关注微信公众号“高端存储知识”,与作者微信互动。通过掌上DOIT移动客户端,您可以订阅DOIT科技专栏,第一时间获得知名专家和业界领袖的深度剖析与趋势分析。