You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
7.0 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 148 | SQL Server发展史
微软的SQL Server是整个数据库产业里面一个重要的产品。在2017年的时候SQL Server超过了IBM的DB2成为仅次于Oracle的第二大数据库产品。
有关SQL Server的发展一直有这样的一个传闻微软从另外一个数据库厂商Sybase那儿买了一份源代码然后微软就在这份源代码上改啊改。最后微软蒸蒸日上Sybase却每况愈下。Sybase做了历史上最亏本的生意。
事实上真的是这样吗当然不是。实际上微软SQL Server和Sybase之间的关系远比这个传闻复杂。今天我就来讲讲SQL Server的发展史。
1987年微软和Sybase签署了合作伙伴协议。这个协议的主要内容是微软和Sybase一起合作开发一款基于Sybase已经开发但还没发布的数据库产品。Sybase拥有这款产品在Unix相关平台上的发布权而微软则拥有对OS/2以及任何微软开发的操作系统的发布权。
那个时候整个个人计算机平台上占统治地位的数据库叫dBase是由Ashton-Tate公司开发的这个公司后来倒闭了关于它的故事在我们专栏的后面会讲。当时为了能够让新开发的数据库系统可以吸引大量dBase的开发者微软和Sybase决定跟Ashton-Tate合作为SQL Server提供dBase的接口。
很不幸的是1989年之于Ashton-Tate并不是个好年头。这一年它发布了dBase4。但是这个产品问题很多Ashton-Tate从此陷入了泥潭直到它被Borland收购。而微软和Sybase也跟Ashton-Tate结束了合作关系。但是微软和Sybase还是发布了SQL Server的1.0版只是传说中的Ashton-Tate的接口被取消了。
这个1.0版的合作关系大致是这样的Sybase负责开发所有的源代码而微软负责测试偶尔也打打酱油修点Bug。最初的时候微软对整个源代码只有只读权限并没有写的权限。可以说在这个合作关系里, Sybase主导了这整个项目的开发进展。
这种合作关系到1992年才有所改变。因为Sybase忙于开发新版微软拿到了Sybase 4.0的源代码负责把这个代码移植到OS/2上。这个产品最后以SQL Server 4.2发布了。
OS/2这个操作系统是微软和IBM合作的但是微软和IBM合作的时候心猿意马于此同时微软自己在做Windows。而微软和Sybase之间的合作以微软继续给老版本增加功能而Sybase开发新的版本的方式展开。
随着时间的推移对微软来说Windows NT变得越来越重要。所以微软决定把在OS/2上的4.2版本移植到Windows NT上。但是因为NT这个操作系统和OS/2很不一样而微软内部对于如何移植4.2也有很不一样的观点。具体来说就是:到底是应该大量利用某个特定操作系统的特有的功能和特性,还是说数据库系统自己实现某些需要在操作系统层面来实现的功能?
无论是Sybase还是现在数据库主流产品Oracle的做法都是后者。因为它们都希望数据库可以运行在不同的操作系统上。所以利用操作系统里面最基本的功能其他的东西都在数据库内部实现是一个数据库厂商常用的策略。
但是微软的SQL Server组却决定偷个懒让SQL Server充分利用Windows NT提供的新特性这样一来SQL Server的移植过程就简单很多。而且SQL Server在Windows NT上的运行效率也会高不少。但是同样的SQL Server的代码也就变得不再是独立于操作系统的了而是专门为Windows NT开发的。
因为这个本质观念上的不同微软对于继续和Sybase合作的兴趣也变得小起来。1994年微软和Sybase“和平分手”了。分手之后微软决定只在Windows NT上继续开发自己的SQL Server。而除了原来在Unix操作系统上独立发布数据库产品的权限外Sybase也第一次可以自由在微软开发的任何操作系统上发布数据库产品。在当时看这好像是个双赢的结局。
微软在接下来的18个月内重写了大量的代码并发布了SQL Server 6.0和6.5。这个时候,两个源代码看起来就很不一样了。
微软在数据库上开始大量投入到处挖人。很多业界知名的人士比如吉姆·格雷Jim Gray、菲尔·伯恩斯坦Phil Bernstein、大卫·坎贝尔David Campbell、彼得·斯皮罗Peter Spiro等后来大名鼎鼎的人物都是在这个时候被微软挖进来的。
当时的微软可谓财大气粗,有些人被挖的时候,不愿意来西雅图,比尔·盖茨就专门为这些人在硅谷修个办公室。微软网罗了这些人才以后,有了充足的人才,就开始大刀阔斧地开始下一个版本的开发。
这个后来以SQL Server 7.0命名的版本把整个数据库几乎每个模块从存储引擎到数据处理引擎全部重写了。不但如此微软觉得自己应该构建出完整的数据处理产品。SQL Server 7.0还增加了数据仓库的支持。这个支持来自于微软收购的一个以色列的创业公司Panorama。这个产品后来的查询语言叫做MDX最后成为了数据仓库业界的标准语言。另外7.0还增加了对ETL的支持。
SQL Server 7.0奠定了微软SQL Server的根基。
之后微软发布了SQL Server 2000这个版本增加了在多台机器上部署SQL Server的能力还增加了对数据挖掘和XML的支持。接下来SQL Server 2005又增加了SQLCLR的支持。这个支持让C#和.NET成为SQL Server支持用户定义类型、用户定义函数等的基础以及很多其他的新功能。
到这个时候SQL Server已经把Sybase远远地甩在后面了。而微软的SQL部门可谓人才济济无论是做学术的还是做数据库开发的微软都做了很多很有意思的尝试。Sybase却开始越来越举步维艰。
可微软后面的事情却多少有点“大跃进”的味道了。比尔·盖茨提出了要构建新的文件系统WinFS。这个文件系统底层基于数据库可以提供很先进的数据存储和查询能力。这个想法一出业界一片哗然。微软投入了无数的人力、物力去做这个系统最后却败得一塌糊涂。其实主要原因还是愿景超出了技术的能力即使是微软也开发不出来。
很多人都觉得微软之所以转向衰败比尔·盖茨的WinFS需要负很大的责任。如果换成另外一个公司浪费了如此多的人力、物力能不能活下来就不知道了。更何况微软还错过了很多其他比较好的机会。另外SQL Server队伍里面大量人员卷入这个项目对于SQL Server自身的发展也是一个束缚。
作为产品SQL Server最近几年又活跃起来只是和2000年前后的那种状态还是有所差别的终究是不可同日而语的。而微软里面曾经在SQL Server核心工作的很多员工也早离开微软去了亚马逊、谷歌、Facebook等新兴公司。这让SQL Server的研发力量大打折扣。但是不管怎么样比较SQL Server和Sybase的命运SQL Server还是好太多了。