SQL Server 2005与DB2 8.2对比分析
对比结果概述
本文中对两种数据库平台的对比结果显示了在构建数据库应用程序时,使用SQL Server 2005(代码代号“Yukon”)结合Visual Studio进行开发比使用DB2 UDB 8.2(代码代号“Stinger”)结合Visual Studio有着显著的优势。在开发、调试和部署数据库解决方案的时候,这些优势就将转化为在时间和资金上的节省。在本文中特别说明了SQL Server 2005与DB2 UDB 8.2相比,对.NET数据库对象的支持要广泛的多。另外,你会发现在构建和管理数据库对象时,SQL Server 2005和Visual Studio集成的程度要比DB2 UDB 8.2和Visual Studio的集成紧密的多。在本文中,你还会看到SQL Server 2005所提供的开发平台除了关系型数据库之外,还有其他许多功能,这一点超过了DB2 UDB 8.2。
前言
在过去,IT开发技术分成了程序开发语言、产品环境配置和数据操作这三种相对独立的专业技能。为了综合使用这些相对独立的技能往往需要专门的技术和大量的人力。现在,有了SQL Server 2005和Visual Studio 2005,我们拥有了一个统一的开发环境,集成于其中的编程模型提供了整体的解决方案,包容了客户端数据库应用程序、服务器管理工具和服务器端数据库对象的构建。如此对工具和框架功能性的改善将使得开发者和客户都能从中受益,因为它将会对应用程序的可用性、性能、安全性和可伸缩性带来一个全面的提升。
SQL Server 2005和DB2 8.2中对Visual Studio环境和数据库数据提供程序的集成将简化和改善应用程序的开发流程。它们提供了旨在提高生产率的构建和部署应用程序的工具,这将会给程序开发和应用程序管理带来更好的性能表现。SQL Server 2005和DB2 UDB 8.2中对.NET框架的集成带来了一个更加高效和更加灵活的数据库应用程序开发环境,由此得到了比先前版本执行效率更高的更加健壮的数据库解决方案,它拥有更好的易用性和可伸缩性。通过利用集成的.NET环境,数据库开发人员就可以实现以前使用SQL代码不可能得到的结果。通过使用.NET框架,开发人员写出的代码能具有更加复杂的逻辑,更加适合于解决计算问题,并能访问到外部的系统和网络资源,因为.NET语言,例如Visual Basic、C#和C++,都是完全的面向对象编程语言,具有像封装、继承和多态性这样的面向对象编程的特性。它们还具有许多在SQL语言中不存在的功能,例如数组、结构化异常处理、集合等。
如今,Microsoft .NET提供了最先进、最高效的构建和整合数据库应用程序的环境。在这篇文章中,我们将比较SQL Server 2005和DB2 UDB 8.2分别提供的.NET集成的程度。为了能充分说明这其中的差别,我们将做一个详细的技术演示来显示分别使用SQL Server 2005和DB2 UDB 8.2构建一个.NET存储过程的具体步骤。
核心技术比较
虽然SQL Server 2005和DB2 UDB 8.2都集成了.NET框架和Visual Studio,但各自的集成程度有着显著的差别。下面这张表格中列出了关于它们对.NET的集成程度的比较。
数据提供程序
SQL Server 2005和DB2 UDB 8.2都自带了.NET数据提供程序,使得.NET客户端程序能够访问数据库平台。这些“天生的”数据提供程序与基于OLE DB的数据提供程序相比,会给服务器应用程序带来更好的性能和可伸缩性。这两种数据提供程序有着非常相似的功能,都能执行基本的ADO.NET对象,包括Connection、Command、DataReader、DataSet和DataAdapter。但它们有一个关键的差别:SQL Server .NET数据提供程序有两种模式可用,一个针对于客户端应用程序,另一个针对于服务器端应用程序。这一点对于服务器端应用程序开发特别重要,因为SQL Server服务器端.NET数据提供程序是一个驻于内存的程序,它不用像客户端数据提供程序那样去考虑网络流量的限制,因此,服务器端.NET数据提供程序能针对.NET数据库对象实现更好的性能。另外,服务器端数据提供程序还开放了一组只适合于服务器端代码的功能,例如服务器端游标。针对客户端应用程序的数据提供程序所开放的功能在System.Data.SqlClient命名空间中,而服务器端数据提供程序所开放的功能在System.Data.Sqlserver命名空间中。在DB2 UDB 8.2中,只有单独的IBM.Data.DB2命名空间。DB2 .NET数据提供程序使用DB2Context对象来创建驻于内存的数据库连接。
在服务器端,它们同样有相似之处。DB2和SQL Server都支持使用.NET语言构建应用程序以及随后在服务器端部署。其实除了这一基本概念,这两种数据库平台对.NET的集成程度有着很大的差异。DB2 UDB 8.2支持创建.NET存储过程和.NET用户定义函数。可是,Visual Studio IDE只支持创建DB2 UDB 8.2 .NET存储过程,DB2 UDB 8.2 .NET函数必须手工创建。与之相比,SQL Server 2005对.NET的支持要广泛的多。和DB2一样,SQL Server支持创建.NET存储过程和.NET用户定义函数。除此之外,SQL Server还支持.NET触发器、.NET用户定义类型(UDT)以及.NET用户定义聚集。所有这些对象的创建都被完全集成到Visual Studio 2005 IDE中了。能使用.NET语言构建存储过程和函数对数据库开发人员来说肯定是个好消息,这将使得他们能够实现更加复杂的商业逻辑和函数功能而不必受限于标准SQL的功能。这一点无疑是将.NET与数据库集成的关键所在,当然,使用.NET语言创建触发器、用户定义类型以及用户定义聚集也很有用。使用.NET语言创建触发器将使得触发器的代码能更加完全地封装商业逻辑,同时还能执行一些附加的操作,例如访问外部资源记录操作日志。使用.NET语言创建用户定义类型能使得数据库开发人员能扩展系统中原有的数据类型,这些用户定义类型能拥有自己独立的属性和操作符,这使得开发人员可以无缝地扩展原有的数据类型,在使用的时候就和原有的数据类型一样,具有各自的操作符和聚集。同样地,使用.NET创建用户定义聚集使开发人员能创建自定义的聚集操作应用于原有的数据类型或是用户自定义的数据类型。
除了这些基本的.NET功能,在.NET框架与各自的数据库服务器集成方面还有重大的差异。在下一部分中,我们将更深入地讨论.NET集成的细节。