磁盘是当前主流数据库的主要瓶颈所在,而内存数据库是高响应要求数据库系统的最佳,甚至唯一选择。但是如何在性能和价格上取得一种平衡呢?
2009年数据库行业精彩纷呈,各大主流收费和免费数据库软件继续发力,技术革新和收购合并的大手笔应接不暇,新型数据库软件厂商异军突起。2009年已经进入第四季度,本文谨做预见性的展望。内存数据库应用日渐广泛
数据库技术在几十年的发展中,功能逐渐完善,现在主流的数据库软件动辄支持上TB的数据容量,而且经过各种技术革新后,能支持大业务并发操作。但一般的数据库软件,数据都无一例外的存储于磁盘,数据库软件在需要使用到某份数据时,通过操作系统调用,从磁盘读取出来,读入到内存中,进行运算、比较或其他文本型操作,从而实现业务需求。
磁盘是当前主流数据库的主要瓶颈所在。一般硬盘的读取速度为毫秒级时采用光纤盘阵,并部署成RAID机制,如读写速度更快的RAID0,但仍然逃脱不出毫秒级的范畴。毕竟,比起CPU和内存而言,磁盘的读取太慢,每次读取耗时需若干毫秒,内存的读取速度为n秒级,即每次内存读取仅需10-9秒。这意味这内存每秒的读写次数,是磁盘上百万倍。
根据多年DBA经验,数据库性能优化,实际上就是减少或尽可能的避免磁盘读写。衡量一个数据库调优效果的好坏,也在于此。因为只有磁盘读写减少了,CPU使用才会减少,内存的耗费也不至于太过巨大。
磁盘技术即使不断革新,到现在出现的SSD(Solid State Disk)技术,但对要求极其苛刻的大型数据库而言,仍然是杯水车薪。测试结果表明,SSD技术在随机读写方面的性能,比普通硬盘提升了约5倍。而且SSD技术目前不是特别完善,还存在硬盘容量小,价格过于昂贵等致命伤。
而SSD泛指使用NAND Flash组成的固态硬盘,其特别之处在于没有机械结构,利用传统的NAND Flash特性,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计,与目前的传统硬盘相较,具有低耗电、耐震、稳定性高、耐低温等优点。
笔者前段希望在SUN新型号服务器上使用SSD磁盘,但被告知仅支持36GB的容量。这简直就是开玩笑嘛,谁家的数据库只有几十GB?
内存数据库是高响应要求数据库系统的最佳、甚至唯一选择。现在,不仅仅电信级数据库,甚至包括大型互联网数据库,也要求业务操作的响应时间为毫秒级。这对数据库的响应速度提出了很苛刻的要求。唯一的途径就是,将数据缓存在内存里。让应用程序直接从内存里读写数据,规避硬盘读写,从而极大的提高数据库对外性能。
现在内存数据库技术已经相对完善,有些主流大厂商已自主研发、或收购第三方软件商,实现了该技术。主流内存数据库技术解决了一个关键问题,其一,内存数据同步到磁盘的问题。
内存的数据毕竟是暂存,数据终归要保存在硬盘上,一旦数据库服务器因为断电等问题意外关机或重启,内存的数据肯定丢失殆尽。因此必须保证数据周期性存储到磁盘上,但又不允许因批量磁盘存入,而导致影响性能。
数据中心软件厂商异军突起
随着各行各业使用IT系统时间的加长,积累的历史数据越来越多,另外,类似网络游戏和C2C、B2C应用网站的大规模兴起,众多公司对海量数据的存储,提取和处理,挖掘及分析提炼的要求变得愈加迫切。
传统的主流数据库软件在大型数据中心上显得很是力不从心。很多企业的数据中心,一天的数据导人就达到几百GB,甚至若干TB,而且因为业务的需要,数据库软件需完成的操作不仅仅包括这些数据的插入,还包括将这些数据与历史已有数据的对比,更新和删除。传统的数据库软件,无论采用多先进的技术,有一个事情是一定的,即基于单一的数据库,虽然这个数据库后面可以是SAN等很多磁盘阵列构成的存储网络予以支持。
这意味着,无论如何,你的处理速度受到极大的限制,即使有些数据库厂商可以实现双节点甚至多节点对数据库存储的并发访问,但多节点的前置服务器,只能解决CPU和内存的问题,而磁盘作为主要瓶颈依然存在。另外,采用SAN存储网络等一个致命缺点是,价格过于昂贵,这并非一般公司所能接受,维护成本也相对非常的高。
有办法解决大型数据中心的需求,且付出的费用却相对十分低廉呢?答案是肯定的。现在已有类似的数据库厂商实现了此功能。这实际上是对传统数据库软件设计和功能的颠覆性提高。这种实现的方法,类似于化整为零的思想。即,单个数据库无法支持,那我们就采用多个数据库来实现。这时,每个数据库相互独立,但又对外展现为单一的个体,供外部应用的访问和操作。
这些数据库使用各自的CPU、内存和磁盘,既然单一数据库的磁盘存储无法满足需求,那我们设计这样的系统,允许无限制的增加数据库,这样就规避了单一存储性能的问题,也规避了价格昂贵的SAN等存储网络。
这种架构下的服务器,采用价格低廉的PC服务器即可,费用比采用小型机等的数据库,直降很多,另外,甚至不需采用服务器外挂的磁盘阵列了,直接使用服务器本地硬盘即可,现在ITB的SATA硬盘已经能够做到价格低廉且比较稳定。
这种架构下的数据库软件,完全可以采用业务免费稳定的产品。根据一些网络游戏公司的对比测试,采用专业数据中心软件和架构下的数据提取等操作,并对比传统数据库软件,耗费的时间从20到30小时,缩短到1到2小时,速度提高很多倍。而且提升的速度,随着独立数据库的增加,可提升空间更多。
开源数据库前景仍然光明
今年Oracle收购SUN的大事件,曾经让业界十分担心Mysq1的存亡问题,毕竟Mysq1早已被SUN公司收购。Mysq1是免费开源软件,这和Oracle这种纯商业软件是直接冲突的。Oracle之前已收购了INNODB数据引擎,而后者恰恰是吸引大量用户依然使用Mysq1的十分重要的一个理由。Mysq1数据库最令人欣赏的特性之一在于,他是一种开放式的架构,甚至允许第三方开发自己的数据存储引擎,这吸引了大量第三方公司的注意并乐于投身于此。但最优秀的引擎当属INNODB,INNODB支持事务处理,锁的机制做得也不错,足以支持中小企业的一般性业务需求。并可见,Oracle对Mysq1窥视已久,并非因其免费开源而忽略。
因此Oracle是否让Mysq1自此消失,或者对Mysq1不管不问任其自然消亡吗?目前来看,这种可能性不大。Mysq1因其免费、开源、结构开放,且对事务的支持较好等特性,占据了大量的市场,并拥有自己坚定的使用群体。Mysq1目前受到不仅仅预算紧张的中小企业的青睐,而且也受到新型行业的广泛应用。
互联网时代已经真正开始,一个搜索引擎,购物网站或者平台,一个网络游戏,往往并发使用者数以十万。这样庞大的并发访问,即使如Oracle数据库系统,也无法支撑。反而通过化整为零的思想,利用若干Mysq1数据库,组合起来得以实现。
事实上,Oracle在最近开始透露其将来针对Mysq1的真正意图,即利用Mysq1和微软的Microsoft SQL Server在中小企业进行抗衡。Microsoft SQL Server因为其较低的价格,不断改进的数据库技术和较简单的管理维护等特性,也占据了不小的市场。Oracle数据库的劣势之一是,日常运维和维护成本较高,企业为此负担的人员成本和后期投入较多,而这刚好是Microsoft SQL Server和Mysq1的优势所在。