引:改造企业数据库需要花多少钱?虽然市面上可供DBA(数据库管理员)选择的数据库管理产品种类繁多,但大把花钱并非解决问题的答案。
最近一段时间内,将有大量新的数据库管理软件包涌入市场。甲骨文刚刚发布的数据库11g,承诺将为DBA提供超出DBA理解范围的新特性;微软的SQL Server 2008即将于明年2月发布,成为SQL Server 2005的继任者;Informix推出了新的“Cheetah”版本,IBM希望利用该产品夺回失去的市场份额;FileMaker公司的同名软件第9版,该厂商表示该产品已经为Web 2.0准备就绪,同时保持了良好的易用性。
新产品的功能可能相当诱人,但有经验的DBA一定明白新版本通常具有更多特性,就意味着任何性能的提高更可能来自伴随数据库升级而来的昂贵的硬件升级,而不是数据库升级本身。同时,性能提升可能也是有限的,如果基本的设计缺陷或操作问题依然存在的话。
正如旅游运营商Globus公司的DBA Amy Stuemky所说:“利用硬件解决问题永远是错误的。”那么,如何在不把大笔的钱花在咨询师或新硬件上的前提下,解决数据库应用的常见问题呢?一些DBA表示,解决这样的问题需要的是一点智慧和汗水,还有精心选择的第三方工具。
修补不良SQL代码
对于钢铁制造企业Lone Star Steel公司的数据库与系统管理员DeWayne Treadway而言,数据库问题表现在公司的两个甲骨文数据库“整体速度缓慢”,但却不能确定其中的原因。
当Treadway两年前来到这家公司时,公司的数据库在IBM AIX服务器上运行Oracle 8i,其中的一台服务器是16路System p570,另一台是较老的RS/6000 M80。Treadway凭直觉感到问题与SQL代码有关。这些代码是由承包商在5年前编写的,当时公司数据库从大型机迁移到了Unix服务器上。
Lone Star Steel遇到的情况比较普遍。开源PostGreSQL数据库的开发者之一Josh Berkus就表示:“数据库应用就像是不老松。一个‘临时的一次性’应用的平均寿命长达4年,目前仍有60年代编写的代码仍在运行。”所以,找出问题代码并非易事。Treadway表示,伴随甲骨文数据库的Statspack应用不保存历史性能数据,它已经“不适合”担任这项任务了。
在分析了多个数据库性能优化软件包后(包括Oracle Enterprise Manager和Quest Software的Spotlight on Oracle),Treadway选择了Confio Software公司的Ignite for Oracle。利用这款工具的“等待时间分析”特性,Treadway能够迅速确定造成数据库一半延迟的3段SQL代码。例如,Treadway能够重写Ignite确定的一段代码,使以前运行需要4分钟的一个进程只需运行10秒钟。
自从一年前开始使用Ignite后,Treadway把数据库的性能提高了30%。他说他可以通过进一步的调整,再将系统性能提高50%,不过他没有去这样做,因为公司已经打算从Oracle 8i迁移到Oracle 10g R2。然而,Treadway估计通过使用Ignite,在部署新的甲骨文数据库时,他依然能够更好地测试其运行情况。
正确构建数据库支持网站
支持动态内容或电子商务网站近几年已经成为最流行的数据库应用之一。不过, Walmart.com的前CIO Neil Day表示,绝大多数网站并不是以高效率的方式构建的。Day指出,在典型的三层Web应用架构中,数据库会承载很大的负荷。为了防止数据库出现瓶颈,DBA必须利用缓存技术和传输流的智能平衡技术,实现数据库与应用请求的隔离。
为此,Walmart.com建立了节点,每个节点由4台轻型商用PC服务器构成。Day说:“没有使用一台Cisco、Sun或EMC设备,我们使用的全是廉价的x86机器,以及其他廉价的硬件。”由于整个应用栈包括大型Walmart.com数据库,因此每个节点都能缓存某个用户可能发出的所有传输流请求。这就大大减少了瓶颈和由此而来的延迟,并且确保用户的请求始终保持在本地。
Day说,Google采取的将搜索索引数据库复制到数万台PC服务器上来获得速度和冗余性的战略(“分片”方法),就是与他们的方法类似且不太复杂的版本。不过,“分片”并不适合用于媒体内容网站和像Walmart.com这样的电子商务网站。Walmart.com拥有巨大的商品目录以及数以百万的图形元素和图像,因此拥有比Google数据库容量大得多的数据库。
Day并不愿透露更多细节。不过他说,“利用目前的战略,尽管我们运行在价值两百万美元的硬件上,但Walmart.com仍能够成为世界上最大的电子商务网站之一。”如今,Day将一种类似于Walmart.com的技术引入到了其目前服务的Web音乐新兴公司MediaMaster。
对于对Walmart.com的方法感兴趣但又不想重建基础设施的DBA,Day给出的建议是,不妨考虑采用前Walmart.com首席设计师Ari Zilka开发的Terracotta公司的开源Java群集软件,这样可以有效利用许多同样的技巧。他说:“Terracota为应用中使用的数据提供真正高级、智能的缓存。同样重要的是,它找到了如何让缓存无缝地在应用层之下的代码中运行方法,使缓存能够透明地工作。” |