【SQL Server惊险一跳系列】
【IT168专稿】随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高,数据类型也已经不再是单纯的关系型数据。Oracle,mysql数据库因其各自特点在多数企业中受到广泛使用,而SQL Serve数据库因为和Windows的联系,在企业数据库中也占有一席之地。但是对于许多业务来说,SQL Server 2008已经被公认为是一种知名的、具有稳定性但同时又存在许多疑点的数据库。
第一篇:SQL Server 2005是熊掌还是鸡肋?
第三篇:SQL Server 2008重拳出击 加速企业升级
第四篇:SQL Server 2008升级硬伤:缺乏大型应用
虽然SQL Server 2008已经推出了约1年了,奇怪的是,很多公司仍然没有将自己的数据库升级。现在这些公司面临着再次作出决定:是跳过升级到SQL Server 2005 还是直接到SQL Server 2008?没有使用SQL Server的是否要使用?要作出这个选择并不简单,IT168记者走访了很多企业,旨在将目前企业数据库应用状况如实呈现。本期采访的是阿里巴巴高级DBA 简朝阳。
嘉宾简介
简朝阳,阿里巴巴(中国)网络技术有限公司高级DBA,曾参与过公司多个核心数据库应用系统的设计与实施,目前主要负责 MySQL 数据库应用系统的架构设计与相关维护工作。活跃于 iMySQLer 数据库论坛(http://imysqler.com) 和 MySQL 邮件组(mysqler@googlegroups.com, http://groups.google.com/group/mysqler),欢迎大家以 Open 的心态一起分享 MySQL 数据库方面的经验心得。
阿里巴巴数据库在关键性业务上的应用
对于阿里巴巴的数据库在关键性业务的应用,简朝阳表示,目前公司的主要核心应用暂时都是使用的 Oracle 数据库,采用比较高端的集中式主机和存储设备来运行 Oracle 数据库软件。但是考虑到 Oracle 集中式的特性对硬件设备的过渡依赖性所带来的高昂成本,以及在Scale Out 方面的缺陷,目前也正在考虑将某些应用逐步从 Oracle 数据库迁移至 MySQL 数据库。
目前正在使用 MySQL 数据库的应用主要是一些业务逻辑比较简单单纯,而数据量产生速度又特别快,访问负载又很大的新业务。当然,一些老的非核心业务也有使用到 MySQL 数据库。采用 MySQL 数据库的主要目的一个是可以通过使用低端的 Pc Server 自行搭建分布式 MySQL 集群来摆脱对高昂硬件设备的依赖,在成本上得到极大的降低。同时也让整个系统的 Scalable 大大提升。
阿里巴巴关键型业务为什么不采用SQL Server?
简朝阳认为,从个人观点来看,使用任何一种数据库,基本上都可以完成任何商业应用的需求,只是一个擅长程度而已。就像 MySpace 这样庞大的网站,使用的数据库却是被大多数人们不太看好的MS SQL Server,依然运行的很好,像纳斯达克证券交易所这样对高并发极端要求的系统也同样构建在 SQL Server 数据库之上。此外,对数据库软件的技术把所至能力,决定了一个数据库应用系统最终的表现。
当然,每个数据库的特点肯定会对业务实现的方式以及实现的难易程度会带来一定的影响。就比如 Oracle 数据库在高并发场景下的响应能力,确实是其他任何数据库所无法比拟的;而 MySQL 数据库在 Scalable ,自适应能力,维护便利性以及其开源的特性,成为其吸引大量拥护者的主要亮点。而 SQL Server 在易用性以及维护和操作的便利方面,以及和 Windows 系统的紧密结合,也成为 Windows Fans 不二的选择。
所以,个人觉得,任何公司的业务,实际上都是可以更换数据库来完成目前所有功能需求的。只是在更换数据库系统的时候所带来的架构改造,开发改造以及技术积累等成本可能成为一个公司更换数据库最大的阻碍。
目前Oracle数据库的使用场景仍然以集中式高端设备为主,比如使用高稳定性和运算能力的小型机,高端集中式FC存储环境。Oracle所使用的这种架构方式在很大程度上降低的应用系统的开发成本,因为数据库的对外服务接口简单统一,应用系统不需要考虑太多数据切分以及切分后的整合问题。
MySQL 插件式存储引擎的架构,是其他任何数据库都不具备的。该架构在很大程度上面给 MySQL 使用人员在存储引擎方面的选择带来了极大的灵活性。尤其是最新的 MySQL 所支持的可在线插拔式存储引擎管理方式的架构,给了数据库维护人员在存储引擎的维护方面非常大的便利。
而MySQL 另一个吸引大量使用者的最大优势就是其 Replication 功能。虽然这并不是 MySQL 所独有的功能,但是 MySQL Replication 实施和维护的便利性,确实是其他数据库难以比拟的。由于其 Replication 的便利性,让 MySQL 在 Scalable 方面具有很大的优势,使大规模系统的扩展不再特别困难。
三种数据库优劣势分析
简朝阳表示,在最初选择使用 Oracle 数据库,主要所考虑的是其高并发下优异的性能表现,以及 Oracle 数据库的高稳定性。当然,其业界认可度和技术普及度可能也是一个重要的决策依据。我想任何一个了解多个数据库软件的人都会知道,Oracle所公开的官方文档比任何其他数据库软件都要多出很多。无论是概念原理还是技术细节,Oracle公司都提供了大量的在线文档供大家学习参考,而且是完全免费非的。
Oracle 数据库的高性能表现,与其UNDO 和锁定实现原理有非常大的关系,个人觉得这也是其最大的核心竞争力所在。其基于 UNDO 所实现的多版本机制,让系统的并发响应能力非常之高,同时也为目前所具有的很多高级特性如 flashback 等功能提供了实现依据。而其去中心化的锁定机制,使得 Oracle 在实现基于行级锁定的时候,仍然让获取和释放锁定所消耗的成本非常低,极大的降低了系统中的各种阻塞现象。
由于 Oracle 数据库较大的市场和普及程度,基于 Oracle 数据库的各种图形化客户端工具也非常丰富,这对于习惯通过图形化工具来进行各种维护工作的数据库维护人员来说,即使维护非常复杂的 Oracle 数据库也同样变得非常简单。而Oracle本身所提供的丰富的系统表和视图,使用者可以在任意时刻通过基本的 SQL 语句来查看这些系统表和视图里面的动态信息。这让希望了解数据库中各种运行细节的维护人员可以在任何时刻都清晰的了解数据库的运行状态,这在 Performance Tuning 和 Trouble Shooting 的时候非常有用。
由于Oracle数据库目前比较成熟的运行环境仍然是集中式的,所以其扩展性方面主要还是以主机和存储的 Scale Up 为主。虽然 Oracle 从 9i 开始也提供的 RAC,但是在 OLTP 类型的应用系统中,非常成功的案例仍然不多,在 OLAP 方面的应用可能更多一些,可能这也与 RAC 的 Share Everything 的架构有关吧。由于在 Scale 方面主要依赖硬件设备的 Scale Up,势必会造成其总体成本居高不下的尴尬局面,这也正是目前在慢慢加强 MySQL 数据库来提供业务支撑的一个较为重要的因素。
众所周知,开源数据库中当之无愧的王者 MySQL 之所以能够发展如此的迅猛,与其优异的性能表现,极高的 Scale Out 能力以及开源的特性有非常大的关系。
而由于开源软件所具有的开放性是其他商业软件不可能做到的。基于其开放性,活跃于开源社区的开源爱好者所编写的大量开源工具,让MySQL数据库的使用以及维护管理工作变得更有乐趣,也更为简单。如非常著名的 InnoTop,Maatkit,MysqlReport等等。而且,如果技术能力允许,我们自己也完全可以根据自己的一些特定需求,为MySQL增加各种 Patch 或者 Plugin,以定制适用于我们特定应用系统的特殊功能。如比较成熟的Memcached Functions For MySQL等。
随着SQL Server的不断改进优化,在目前较为成熟的数据库软件中,其优异的性能表现在中小企业的应用已经非常广泛,而且性能方面较之前的版本也有了非常大的提高,但与Oracle相比,似乎还有些力不从心。作为各种应用系统非常核心的底层支持系统来说,性能表现无疑是非常重要的一个考虑。但是SQL Server只能安装在Windows上,这势必在某种程度上也限制了他的发展。
综上看来,SQL Server不能像Mysql那样0成本,又不能像Oracle那样有强势的性能表现做支撑,目前,又受到Windows的影响。难道SQL Server真的生于Windows,毁于Windows?