|
SQL Server的5年期待 |
|
千呼万唤始出来 2005年11月,微软公司发布了其数据库软件的又一个升级版本SQL Server 2005。这是5年来,微软公司首次发布新版本的数据库软件。用上千人的研发力量、大规模团队开发、现代软件研发管理方式、耗时5年方才打造出来一个产品,无论对于微软还是任何一家软件企业来说,都是非常少见的。且让我们在这一时刻简单回顾一下SQL Server这5年的历史吧。 2000年,微软发布SQL Server 2000,同时宣布代号为Yukon的下一代数据库正在进行研发。 2001年,微软发布Yukon的技术细节,包括新一代存储引擎 WinFS 等一些激动人心的新特征的对外公布吸引了众多技术人员和媒体的关注。 2002年,微软发布了.NET开发工具,一度神秘的.Net技术真实地展现在人们眼前。而被认为同是微软.NET战略中重要部分的Yukon却被首次宣布将延期发布。 2003年,微软再次宣布推迟Yukon发布日期至2004年底,后在2004年再次宣布推迟。同年,微软发布了报表服务、通知服务等数据库组件,这些将集成在Yukon中,也可以安装在SQL Server 2000上。这一年,微软发布Yukon 的第一个预览版。 2004年,微软再发Yukon a2版。微软确认,WinFS将不会在Yukon和Longhorn同时发布,而是在更远的将来作为一个可安装软件单独发布。这让许多曾经对Yukon和Longhorn寄予厚望的技术FANS深感失望。 2004年12月、05年6月,微软相继发布B1、B2版。2005年10月30日,微软向MSDN订阅用户提供SQL Server 2005 RTM版本下载。2005年11月7日,微软正式发布SQL Server 2005。 到这里,可以说是微软赢得了一个MileStone,而Yukon的研发之路还并没有结束。例如,尽管在B版本中,SQL Server2005提供了数据库镜像功能,但在正式发布版本中,还是撤下了这个非常重要的功能,而改为在2006年上半年作为单独安装的组件提供。显然,微软认为,这个功能还需要经过更多的测试。 昨夜星辰昨夜风 2000年,微软发布SQL Server 2000时,我刚刚开始用ASP/VC编写SQL Server 7.0数据库应用程序,还清楚地记得当时我所在的公司给我的第一个任务是:实现用Web方式将图像保存到数据库中。 2001年,为了编写一个项目的二期方案,开始深入了解SQL Server 2000。然而,SQL Server 2000相对于SQL Server 7.0,实在很难说得上有多少明显的差异,以至于有很长一段时间我都为如何说服非常理性的客户而苦恼不已。最终,客户同意升级到SQL Server 2000已经是一年以后,在我们提出了一些利用SQL Server 2000开发的长期计划后,系统才得以升级。 2003年,因为项目的需要,我和我所在的开发团队打造出了一个很好的数据展示和分析产品,具有较强的历史数据处理、分析和展示功能是它的亮点。在这一年的Tech-ED大会上,我看到了微软新发布的报表服务的展示。客观地说,在那时,报表服务还是很粗糙,从界面 的友好性、分析功能的实用性上来说,和我们的产品还是有一些差距。然而报表服务的一个非常好的理念是允许业务人员自己设计报表,它清晰地划分了报表的开发、管理、使用层次,虽然它还需要针对此进行更多改进。而这些是我们这个资源和人力都很有限的技术团队所难以长期承担的。毕竟,数据展示部分也只是我们所提供产品的一个环节,尽管它在那一年帮助我们的产品赢得了客户的好评。可以说,只专注于某一个方面并进行持续改进是报表服务最终胜过我们的产品的一个主要因素。 我遇到的许多开发人员非常关心的是如何实现问题,我们的产品也包括了一个完整而又灵活的数据处理和转换、包括元数据定义部分,而SQL Server 2005的数据仓库部分同样提供了很方便地从多种数据源提取数据、转换和装载功能。 这一年,因为朋友的推荐,还在业余时间为一家出版社编写了一本SQL Server书籍中的部分章节。记得当时刚刚答应朋友的时候,还是自信满满的,真正开始动手写了,却发现很多地方原来还是模糊不清。我不得不去翻阅大量的文档和资料,甚至把SQL Server的联机丛书从头到尾都阅读了一遍,终于能在预定时间交上了书稿。这一段经历帮助我发现,原来SQL Server 2000中还有很多微妙的地方,运用好了,会非常有助于开发和管理SQL Server。 2004年,我们为一家电信企业提供了一个针对客户消费行为相关的技术课题分析。尽管所有的样本数据抽取、转换工作都是在SQL Server 2000中完成的,但在选择数据挖掘模型的时候,由于SQL Server 2000只提供了两种数据挖掘模型,我只能借助于市场上一些免费的数据挖掘工具,以及相当数量的手工计算完成最后的数据发现工作,其间的痛苦可想而知。那时候,对Yukon提供了丰富的数据挖掘算法这一点非常关注。 回首与SQL Server亲密接触的这五年,从基本的SQL Server 应用开发技巧到SQL Server的理论知识,从简单的使用到深入的运用以致感觉SQL Server现有的功能不够用,如果从学习知识的角度看,实在耗费了太长太久的时间。某种程度上,这也和国内缺少深入分析和研究、介绍SQL Server的资料有关。书店里堆放的相关书籍,几乎都可用三个字总结:全而浅。在2005年夏天,我在书店终于读到了一本很好的SQL Server 2000开发书籍,是被誉为国内SQL Server技术论坛第一高手的邹建所写的。然而,却也让我感叹它来得太晚太晚。 在另外一个方面,对于SQL Server开发,国内几乎绝大多数的开发人员都认为非常简单,进行SQL Server开发应该是不在话下。然而,我遇到的一些大大小小的项目中,对于SQL Server的使用,大多数却都曾出现了问题,有些甚至影响到了项目整体给客户的满意度。 现在,SQL Server 2005发布了,它远比SQL Server 2000更为复杂和强大,你我他又会用多少时间才能深入地运用和掌握这个系统,国内什么时候才能出现全面深入的介绍SQL Server 2005的书籍呢? 却在灯火阑珊处 从SQL Server 2000到SQL Server 2005,不仅仅是数据库系统具有更高的性能、处理能力,新版本的系统还带来了许多新的、在旧版本中从未出现的特性。而这些新特性也都是和现代数据库的发展方向一致的。例如,对XML的支持、在SQL语言中嵌入高级语言的支持。在企业环境中,更注重安全性、高可用性、集成的管理工具等。 下面是SQL Server 2005中的新特性和重要改进的一张简单列表。 1、支持XML数据类型、XQuery查询 几年前,我的一位朋友曾经是当时世界上唯一的纯XML数据库厂商的技术支持。在他的带动下,那一段时间我也对XML数据库非常关心。然而,后来的事实证明,虽然对XML的支持很重要,但数据库还是必须以支持关系型数据为主。SQL Server 2005在这方面提供了可以说目前最为完美的方案。 2、CLR编写数据库对象 包括Oracle、DB2等其它大型数据库系统,现在都已经开始在SQL语言之外,提供直接使用高级编程语言编写数据库对象的支持。主要的原因是两个:SQL语言本身的功能还比较弱,使用高级语言可以实现更强大的功能。此外,高级编程语言如Java、C#等已经拥有非常庞大的开发队伍,直接使用高级语言开发数据库对象对这些程序开发者来说使得开发难度、程序的维护难度都大大降低了。 3、UDT SQL Server 2005里面真正开始支持自定义数据类型。正如面向对象数据库现在被认为是下一代数据库的方向,如何使用UDT取决于开发人员具有怎样的想象力。 4、Service Broker 提供了一个足够稳定可靠而又高效的异步消息排队队列。 5、ADO.NET 2.0 ADO.NET也有许多新的改进,如对多种异构数据库之间实现分布式事务的支持、新的连接提供程序模型、对异步编程的支持等。 6、T-SQL增强 除了一些功能更强的SQL函数,还增加了包括支持异常处理等一些新的内容。 7、数据库镜像(Mirroring) 一个针对企业关键应用非常关注可用性而设计的热备方案,可以大大提高SQL Server的高可用性,能在数据库发生故障几秒钟内切换负载到备用系统上。 8、全文索引增强 Google的成功表明,在信息量急速增长的时代,如何快速高效地找到需要的数据已经是企业和个人都非常迫切的需要。全文索引提供了将大量文档存储在数据库中而又能够快速搜索这些文档的支持。SQL Server 2005在全文索引的存储、搜索性能上比旧版本有了明显的增强。 9、管理、监控、开发工具的集成和增强 将管理、监控、开发工具集成到一起方便了企业的DBA。 10、BI的增强和改进 如果用SQL Server 2005来做我前面提到的那个客户行为分析的课题,相信可以很轻松地实现。在数据挖掘方面,除了系统提供的九种经典的数据挖掘模型,还支持自定义模型算法。 11、存储引擎的改进 在数据库核心的存储引擎部分,SQL Server 2005做了大量的改进,因而整体性能、稳定性和可靠性都比SQL Server 2000有明显增强。 限于篇幅,我不能在这里列出所有的SQL Server 2005的改进。但从这些已经可以看到,SQL Server 2005的确是一个很适合企业环境关键应用的商业数据库系统。而相信一个功能强大而稳定的基础平台,一定能够为行业用户的信息化带来实实在在的好处,同时也会给软件开发和系统集成商们提供更多的信心和能力。 |
|
2006-02-09 |
|
|