程序员2009精华本
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2001年以来的数据库技术领域回顾

█ 文/冯大辉

2001年对我自己来说,是一个比较重要的时间点——正式踏上工作岗位,也在这一年奠定了以后工作的技术方向。在2001年,《程序员》杂志经过两期试刊后也已正式创刊。转眼间,杂志即将出版第100期,让人心生感慨。自己几年来持续关注数据库技术领域,《程序员》是一份很重要的参考信息来源。这里回顾一下自《程序员》创刊以来的数据库大事,算是一份纪念,或有谬误,敬请指正。

2001

就从2001年说起吧,2001年6月的ORACLE OpenWorld 大会中,ORACLE发布了ORACLE9i。相比上一个主要版本,也就是Oracle8i 来说,最大的新产品特性就是真实应用集群(Real Application Clusters, RAC)了。ORACLE9i的RAC在TPC-C的基准测试中打破了数项纪录,一时间业内瞩目。刚在上一年发布SQLServer2000的微软在这一年产品上没什么更大的动作,正在积极拼抢市场。而MySQL在1月发布了3.23产品版,给不少开源爱好者以欣喜。

DB2在这一年产品上没什么亮点,但是以10亿美金收购了Informix的数据库的事情震动业界。记得自己当时正好有个Informix 项目要实施,着实看了几天Informix 技术文档。

这一年国内数据库领域有件小事值得一提,就是 ITpub.net 的创建。这个当初看似不起眼的论坛,随后几年中涌现出一大批数据库技术人才,在国内普及了Oracle数据库技术。

2002

IBM推出 DB2数据库 V8.1的测试版,估计是还在消化Infomix的客户资源,几个月之后正式版才能面世。而 Oracle 与Sun 庆祝了20年的合作伙伴关系。之后,Sun 不复.com大潮中的明星范儿,Oracle 因为全力支持 Linux 也与 Sun 关系愈加微妙。OracleOpenWorld 第一次在国内举行,地点是北京,会议规格不低,Larry Ellison在会上进行了主题演讲。此前,这位软件界的传奇人物已经来过中国数次了。

微软连续第二年没有对SQLServer发布新版本。

MySQL发布4.0 Beta版。从4.0开始,InnoDB 正式成为MySQL的默认引擎。在InnoDB的基础上,MySQL对于事务的处理能力有了极大提升。

2003

SQL:2003标准发布。这个版本针对SQL:99的一些问题进行了改进,支持XML,支持window函数、Merge语句等。随之而来,各大数据库厂商纷纷宣布新版本对该标准的支持,这是他们一贯的姿态。

MySQL4.0正式发布。在全文索引、嵌入式应用方面得到增强。这个时候的MySQL 仍然缺乏一些企业级数据库的关键功能。

Oracle发布了Oracle10g,g代表grid——网格计算。这一年中“网格计算”火爆程度不亚于现在的“云计算”。随后的几年,这个网格计算基本上还只存在于专家们的嘴里。所以,去年 Larry Ellison 在会议上对“云计算”表示不屑也正常。Oracle 本年也宣布针对Linux64位环境的产品准备就绪。接下来的一年里,Oracle 宣称雇佣了近万人的Linux 相关的开发人员,可谓不惜血本。当然,这些投入在日后得到了超值回报。从技术的角度上看,其贡献也是有目共睹的,Oracle 数据库在I/O能力、进程扩展能力上都作出很大提升。

雅虎技术人何伟平的一篇《PostgreSQL:昨天,今天和明天》对于PostgreSQL 的普及起到了很大作用。

2004

Danga Interactive 针对LiveJournal.com开发的Memcached 经过上一年的高频度发布,在这一年只发布了一个版本,标志着已经进入相对稳定阶段,只可惜“养在深闺人未必识”。关注者并不多。以此为滥觞,伴随着Web2.0的火热,类似的分布式对象缓存系统层出不穷,到现在已经成了各大网站标准配备。Memcached的出现,对于数据库方面相关应用设计也带来了更多思路。

这一年嵌入式数据库 SQLite 迎来了较大发展,版本3完成开发并发布了稳定版。这些努力为 SQLite 获得2005 OpenSource Award 打下很好的基础。

我自己第一次给技术杂志投稿《书写历史的甲骨文》,当然是发在《程序员》。

2005

PostgreSQL 8.0的发布宣告正式开始支持Windows 平台,成为真正意义上的 Windows 平台数据库(NativeServer)。这是PostgreSQL发展史上相当重要的一件大事。

微软时隔五年,终于发布了 SQLServer 新版,是为SQLServer2005。最大亮点在于对XML数据的支持,当时不少技术媒体对此都颇为关注。IBM发布DB2 V8.2。

Oracle发布了Oracle10g R2版本,10g的R1版本稳定性广为诟病,R2版本质量有很大增强,一部分用户终于可以放心一点从9i 升级到10g。10月,Oracle 抄了 MySQL 后路,将 InnoDB收归帐下。几年过去回头看,Oracle此举对MySQL影响太大,直到现在,MySQL也没能自己拥有一个超越InnoDB的存储引擎。当然,也不可能超出InnoDB的在线备份功能。历史不容假设,否则的话,或许MySQL最后仍将独立发展也说不定。

MySQL在这一年发布5.0 Beta版,引入数个新特性,比如存储过程、触发器等,而这些其实是其他主流商业

数据库早已实现的功能,从这个角度上看,MySQL 和其竞争对手比较,仍然是追赶者,甚至也落后于开源兄弟PostgreSQL。

2006

IBM在这一年发布了DB2 V9,最大特性是加入了PureXML 支持。IBM对XML方面寄予厚望,不过时间证明,XML 对于数据库市场的影响并没有那么大。

在嵌入式数据库方面,Oracle 收购 BerkeleyDB 的母公司SleepycatSoftware。到此,MySQL 两个最重要的存储引擎都控制在Oracle手里(Falcon引擎开发进度遥遥无期,最后不了了之),尽管现在来看关系并未僵化,但谁也说不好未来能怎样。Oracle 也宣布推出Enterprise Linux,进军操作系统市场,开始和Linux 厂商之间展开竞争又合作的关系。

SQL:2006发布,继续增强XML方面的特性。Ingres,这个早期数据库流派的标志产品,以GPL版权形式开放代码。

2007

Oracle发布了11g版本,引入物理DataGuard 算是最大新功能。MySQL的拥趸者要偷笑,其实MySQL的SlaveDB早就可以在恢复的同时提供查询了。MySQL 宣布将对5.0提供两个变种,社区服务器(CommunityServer)与企业服务器(EnterpriseServer),后者发布周期为1月一次,而社区服务器发布周期则不固定。

随着Firefox 的发行量增加,其内嵌的SQLite 也赢得了大量部署用户。如果单纯从部署数量来看,SQLite 倒也堪称最流行的DB。

2008

本年数据库领域的最大事件,是 Sun 以10亿美元收购MySQL。一年多时间过去,回头来看,这次收购对于MySQL 不是什么好事情。年尾,MySQL发布5.1生产版,质量并不好,引起不小争议。该版本正式提供对分区(partition)功能的支持。此外,在这一年中,开源社区对于给MySQL贡献的补丁和各种解决方案让人眼花缭乱,是可喜之事。Google和Facebook等大站都对MySQL做出不小的贡献。

微软发布SQL Server2008,没有提供什么更扎眼的功能。其实关系数据库发展到现在,要想做出更大革新已经是几乎不可能的事情了。对于微软来说,Windows 平台上SQL Server有其压倒性优势,可时过境迁,一方面的优势演变成了其他平台上的劣势。

PostgreSQL 8.3发布。应该说从2008年开始,PostgreSQL 在市场上表现已经不容小视,以其为基础的集群 BI 系统 GreenPlum已经引起了国内不少用户的关注。

SQL 标准SQL:2008发布。从SQL:99到SQL:2009,可以看到标准修订的周期越来越短,多少也反映了对技术的需求之快。

2009

到现在为止,这篇文章还缺席Sybase的信息。据称Sybase 将在3月份公布其列数据库(Column-basedDatabase)的新版本:SybaseIQ15。说起来,Sybase也是传统数据库厂商中唯一提供列数据库的公司。

此外,在云计算应用下涌现出的非关系型数据库(主要是Key/Value 存储)产品渐欲迷人眼,有人在疑惑关系数据库已到末日。“关系数据库已死”每隔几年就会有人跳出来喊,对关系型数据库(RDBMS)来说,百足之虫,死而不僵。到底何时才能见分晓,在波诡云谲的市场形势下,恐怕没有几个人能够预测。

不是总结的总结

以上只是软件行业发展过程中的一个小小的阶段。如果要做点总结的话,我觉得这几年的值得探讨的一个地方就是 MySQL的发展模式,从最初近乎玩具的软件,到现在对业界举足轻重的产品,其发展途径值得我们深思。反观国内,我们也有一些所谓的国产数据库,投入重金,多半昙花一现,恐怕技术因素不是主要问题吧?█