[译]流言终结者 —— SQL Server 是Sybase的产品而不是微软的

http://www.cnblogs.com/xxxtech/archive/2011/12/30/2307859.html
by Euan Garden

这些年来我听说过关于这个流言的许多版本,其中最有趣的要数是“微软来不及去混淆购买来的Sybase代码,所以SQL Server其实还是Sybase的产品”。

首先让我们来回顾一下历史。1987年,微软和Sybase公司展开了合作,共同建立和销售基于Sybase DataServer的数据库管理系统。Sybase享有SQL Server在Unix/小型机平台上的的权利,而微软享有SQL Server在当时新生的OS/2平台和任何微软开发的平台上的权利。

那个时期,Ashton Tate的dBase 在“PC”数据库系统(非大型机/小型机/Unix)中处于的领先地位(我的第一个数据库应用就是在DOS 3.3平台上使用的dBaseIII+)。为了更好的利用现有的大型dBase并使Ashton Tate提供真正的客户服务器,微软和Ashton Tate在Sybase的帮助下发布了Ashton Tate/Microsoft SQL Server(Sybase后来将他们在UNIX和VMS平台上的产品重命名为Sybase SQL Server),这后来也成为了Sybase DataServer在OS/2平台上的名称。

Ashton Tate/Microsoft SQL Server的第一个版本在1989年发布。最初,dBase IV计划为SQL Server提供前端的开发工具(基于先前的合作),但是dBase IV在当年的延迟发布导致了该计划的流产。于是,微软和Ashton Tate解除了合作关系,产品也被命名为Microsoft SQL Server(现在仍有一些当时的开发组成员非常得意的拥有印着Ashton-Tate/Microsoft SQL Server的包装盒)。

此后微软继续改进SQL Server,在1990年发布的SQL Server 1.1中加入了对Windows平台的支持。然而其中大部分的工作仍由Sybase完成,微软只负责测试、项目管理和一些次要的开发。到了1991年,为了修正产品中的缺陷,微软的团队才得以阅读而后变为修改SQL Server的代码。第一个真正意义上的合作版本是1992年发布的4.2版,其OS/2版本的代码和Sybase 4.0的代码相同步。值得注意的是微软的代码首次像Sybase的代码一样被用于该版本。

而后事态开始升温,微软着手于32位版SQL Server,Sybase则展开了在System  10平台上的研发。这个时候,OS/2平台显示出了缺乏竞争力,而微软已完成了beta版的Windows NT并且只有32位的版本。所以SQL Server团队决定在稳定的4.2版本代码的基础上建立NT平台上的端口,而Sybase继续着为System  10平台开发。现在再用“端口”这个词已经不太贴切了。NT平台为产品使用操作系统的特性提供了很多机会,关键是操作系统提供了支持运行在SMP系统上的能力,而不是必须写入数据库的代码里。这个团队所做的,导致了OS/2平台上的4.2版和NT上的SQL Server有了很大的不同(边注:sqlnt曾经是用于开发通信的内部邮件账号,该账号如今仍然存在并拥有开发团队,支持团队,文档和课件团队中的成员)。

至此,微软和Sybase的合作开始失去了它的价值。Sybase希望保持平台中立性,而微软希望完全投入于Windows NT平台。另外,受限于协议,微软必须得到Sybase批准后才能为SQL Server添加新特性。他们的合作在1994年瓦解,Sybase第一次被允许在OS/2和Windows平台上发行自己的产品,微软则可以将产品带向自己想要的方向。在短短18个月内,微软在原先NT平台SQL Server代码的基础上,发布了SQL Server 6.0和6.5。这些版本重写了现存的代码并添加了新的代码。也正是在这个时候,微软成功的拥有了SQL Server的权利和代码,并使之显著区别于原先OS/2平台上4.2版本的Sybase代码。

在这个转变过程中,微软决定在数据管理前沿做大。这意味着他们还有很多工作要做,包括建立一个更强大的团队。微软聘请了一些数据库行业中最优秀和最富经验的专家(来自DEC的Hal Berenson, Peter Spiro, David Campbell等人, IBM的 James Hamilton, Lubor Kollar等人, 甲骨文的Bill Baker, Pedro Celis, 和Tandem的Pat Hellan),并为他们配备的最好的研究人员(Jim Gray, Phil Bernstein等人)以及来自全球最聪明的数据库专业硕士和博士。他们和原来团队中的灵魂人物(如Ron Soukup)以及一些微软内部的人员在短时间内组建了一个伟大而专注团队。团队中的一些人致力于SQL Server 6.0/6.5,而大部分人则进行代号为Sphinx即SQL Server 7.0的研发。

Sphinx的目标很明确,建立一套新的标准以简化完整的数据管理。这意味着在未来的几年中要建立一个可扩展的平台,并从先前各SQL Server版本和其它数据库平台中吸取教训。为此必须重写数据库引擎、新的查询处理器、新的存储引擎和一套新的数据访问API(OLE DB and ADO, 最终置入了dblib)。

尽管SQL Server以关系型数据库管理系统闻名,微软希望在SQL Server 7.0中提供一个完整的数据解决方案。其通过OLAP服务添加对联机分析处理的支持(这部分的代码来自于对以色列“Plato”公司的收购),通过DTS集成了数据提取、转换和加载(这部分的代码由内部的Starfighter/Tools团队开发)。

SQL Server 7.0 RTM版于1998年11月发布(那周我正好在Redmond接受访问,还记得主园区的1号楼和3号楼非常热闹)并在1999年1月发布了正式版。虽然我有些偏见,但我相信微软所做的工作远比我以上所列出的要多。所以还能说Microsoft SQL Server是Sybase的产品吗?主要的组件不是新添加的就是重写过的,因此Microsoft SQL Server 和 Sybase SQL Server没有任何关系。

显然SQL Server的征程并没有止于7.0版。紧随其后的是2000年8月的发布SQL Server 2000。其主要的工作包括了多实例和集群的实现(所有的代码都是微软自产的),数据挖掘(来自于早期微软研究院的进行的研究项目),SQLXML(来自于MDAC和网络与接口团队的辅助项目)。

在SQL Server 2005前,SQL Server 2000提供的最具影响力的新特性是报表服务。SQL Server 2000中的报表服务的代码完全是微软自产的。开发报表服务的团队由原先Repository/Meta Data Services 团队、一些英语查询团队的成员和一群新人组成。

SQL Server 2005中主要的新特性和代码值得用几篇博客来分别介绍,但我想特别强调SQLCLR(来自于对一个长期战略项目的集成),XML支持(我们调查研究了存储XML的最佳方法,在使用专用的XML数据库或将XML集成进SQL Server中选择了后者。这需要大量的二次规划和语言上的改变以支持XQuery),Service Broker(在Dave Campbell和在以色列MSMQ团队调查了messaging/queuing/SOA后,我们决定集成这个辅助项目),Integration Services(来自一些零碎的代码,由原先DTS团队和一些来自C++, hardware, AS and COM+团队的人组建了一个新的团队,加上一次小规模的收购来建立设计和执行的环境),Report Builder(基于一次收购的概念和架构,但代码是全新的)。

Dave Campbell曾讲述过他10年SQL Server生涯中的一天,现在仍有一些成员在团队中的时间比他还长,但SQL Server团队(MDAC, System.Data, System.XML 和 WinFS)所有1000人中,几乎没人见过一行不是微软员工写的代码。

结论:流言被终结了!

原文请见:http://blogs.msdn.com/b/euanga/archive/2006/01/19/514479.aspx

后续:http://blogs.msdn.com/b/euanga/archive/2006/05/23/597677.aspx

原文地址:https://www.cnblogs.com/svennee/p/4100995.html