SQL,在这里我理解成SQL Server。二者是目前市占率最高(依加装量而非收入)的资料库系统,而且很有指标性。名列第三的DB2(属IBM子公司),与Oracle的功能定位和构架十分相近,就不约勒了。
如果要说明二者的差别,首先就要从历史侧发力。
Oracle:英文译为金文,这是一家巨作的子公司,有两个巨作的大老板Larry Ellision。 Ellision 32岁还不论如何,读了三个大学,没得到一个文凭毕业证书,换了十多家子公司,老公也离他而去。早已开始创业者时只有1200美元,却使得Oracle子公司连续12营业额每年增加一倍。
Oracle成立于1977年,早期的理论基础,反而来自于一则IBM的学术论文《A Relational Model of Data for Large Shared Data Banks》【1】。作者CODD挑选出了亲密关系拓扑的六种演算,并如前所述演算,构架了一种新式的统计数据储存数学模型。如前所述这种数学模型,Oracle成为了两个十分典型的资料库系统。因此也变的细致、安全、高速路、稳定,并且变的越来越巨大。
虽然其问世早、结构细致、高需用、高效能等特点,使其在传统资料库应用中大杀八方,金融、通讯、能源、货物运输、零售业、制造等各个行业的大型子公司基本都是用了Oracle,裂稃年的时候,世界500强几乎100%都是Oracle的使用者。MySQL :MySQL的最初的中心思想,主要是开放源码、方便快捷机能强大。其开发可追溯至1985年,而第两个内部发行版问世,早已是1995年。到1998年,MySQL早已能全力支持10中作业系统了,其中就包括win平台。但依然问题喔,如不全力支持外交事务操作、子查阅、定义方法、储存操作过程和快照等机能。右图是两个止至2006年的资料库市占率【2】:

图中能窥见,MySQL的爆发实际是在01、02年,尤其是02年发布的4.0 Beta版,正式选取InnoDB作为预设发动机,对外交会话潜能及数据内存潜能有了很大的提高。翌年4.1版早已开始全力支持子查阅,自此MySQL终于脱胎换骨成两个成熟的亲密关系型资料库系统。05年的5.0版又加进了储存操作过程、服务器端滑鼠、异步、查阅强化和分布式系统外交事务机能,但翌年被Oracle抄了退路,InnoDB被Oracle遣散。08年,MySQL被Sun全面收购,09年,Oracle全面收购了Sun和MySQL。
虽然MySQL的早期功能定位,其主要应用场景就是互联网开发。基本上,互联网的爆发成就了MySQL,LAMP构架风靡天下。而虽然MySQL更多的的追求轻量、机能强大,和早期的事物操作及复杂查阅强化的缺失,在传统的资料库应用场景中,份额极少。SQL Server:一提到SQL Server,大家一般都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase and Ashton-Tate三家子公司拦下的生意,是为IBM(又出现了)子公司的OS/2作业系统开发的。随着OS/2项目的失败,大家也分道扬镳。 Microsoft自然转向自己的win作业系统,作为windows NT软件方案的一部分。而Sybase则专注于Linux/Unix方向的资料库开发。
MS SQL Server主要面向中小企业。其最大的优势就是在于集成了MS子公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具,在快速构建商业智能(BI)方面颇有建树。 MS SQL Server是MS子公司在软件集成方案中的重要一环,也为WIN系统在企业级应用中的普及做出了很大贡献。典型应用场景
关于“大型资料库”,并没有严格的界定,有说以统计数据量为准,有说以恢复时间为准。如果综合资料库应用场景来说,大型资料库应用有以下特点:海量统计数据、高吞吐量;复杂逻辑、高计算量,和高需用性。从这点上来说,Oracle,DB2就是比较典型的大型资料库,Sybase SQL Server也算是吧。下面分别说明之前三种资料库的应用场景。Oracle。Oracle的应用,主要在传统行业的统计数据化业务中,比如:银行、金融这样的对需用性、健壮性、安全性、实时性要求极高的业务;零售业、物流这样对海量统计数据储存分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。而且虽然Oracle对复杂计算、统计分析的强大全力支持,在互联网统计数据分析、统计数据挖掘方面的应用也越来越多。两个典型场景是这样的:
某电信子公司(非国内)下属某分子公司的统计数据中心,有4台Oracle Sun的大型服务器用来加装Solaris作业系统和Oracle并提供计算服务,3台Sun Storage磁盘阵列来提供Oracle统计数据储存,12台IBM小型机,一台Oracle Exadata服务器,一台500T的磁带机用来储存历史统计数据,San连接内网,使用Tuxedo中间件来保证扩展性和无损迁移。建立全力支持高并发的Oracle资料库,通过OLTP系统用来对海量统计数据实时处理、操作,建立高演算量的Oracle统计数据仓库,用OLAP系统用来分析营收统计数据及提供自动报表。总预算约750万美金。MySQL。MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取潜能并不比大型资料库差,同时价格便宜,加装使用方便快捷快捷,深受广大互联网子公司的喜爱。并且虽然MySQL的开放源码特性,针对一些对资料库有特别要求的应用,能通过修改代码来实现定向强化,例如SNS、LBS等互联网业务。两个典型的应用场景是:
某互联网子公司,成立之初,仅有PC数台,通过LAMP构架迅速搭起网站框架。随着业务扩张、市场扩大,迅速发展成为6台Dell小型机的中型网站。现在花了三年,终于成为垂直领域的最大网站,计划中的统计数据中心,拥有Dell机架式服务器40台,总预算20万美金。MS SQL Server。windows生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱 MS SQL Server 。例如,自建ERP系统、商业智能、垂直领域零售业商、餐饮、事业单位等等。
1996年,Bill Gates亲自出手,从Borland挖来了大牛Anders,搞定了C#语言。微软02年搞定了http://ASP.NET。成熟的.NET、Silverlight技术,为 MS SQL Server赢得了部分互联网市场,其中就有曾经的全球最大社交网站MySpace,其发展历程很有指标性,可作为两个比较特别的例子【3】。其巅峰时有超过1.5亿的注册使用者及每月400亿的访问量。应该算是MS SQL Server支撑的最大的统计数据应用了。构架。其实要说执行的差别,主要还是构架的差别。正是构架导致了相同SQL在执行操作过程中的解释、强化、效率的差异。这里只做粗略说明,就不细说了:Oracle: 统计数据文件包括:控制文件、统计数据文件、重做日志文件、参数文件、归档文件、密码文件。这是根据文件机能行进行划分,并且所有文件都是二进制编码后的文件,对资料库算法效率有很大的提高。虽然Oracle文件管理的统一性,就能对SQL执行操作过程中的解析和强化,指定统一的标准:
RBO(如前所述规则的强化器)、CBO(如前所述成本的强化器)
通过强化器的选择,和无敌的HINT规则,给与了SQL强化很大的自由,对CPU、内存、IO资源进行方方面面的强化。MySQL:最大的两个特色,就是自由选择储存发动机。每个表都是两个文件,都能选择合适的储存发动机。常见的发动机有 InnoDB、 MyISAM、 NDBCluster等。但虽然这种开放插件式的储存发动机,比如要求资料库与发动机之间的松耦合亲密关系。从而导致文件的一致性大大降低。在SQL执行强化方面,也就有着一些不可避免的瓶颈。在多表关联、子查阅强化、统计函数等方面是软肋,而且只全力支持极简单的HINT。SQL Server :统计数据构架基本是纵向划分,分为:Protocol Layer(协议层), Relational Engine(亲密关系发动机), Storage Engine(储存发动机), SQLOS。SQL执行操作过程就是逐层解析的操作过程,其中Relational Engine中的强化器,是如前所述成本的(CBO),其工作操作过程跟Oracle是十分相近的。在成本之上也是全力支持很丰富的HINT,包括:连接提示、查阅提示、表提示。
注:本人经验尚浅,且未从事过DBA相关职业,欢迎纠正错误及共同学习。
【1:】:《A Relational Model of Data for Large Shared Data Banks》,http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
【2】:资料库市占率, http://online.creativesystemdesigns.com/projects/databases.asp
【3】:《MySpace构架历程》, http://wenku.baidu.com/view/ab4a826527d3240c8447ef45.html