概述
创建应用程序的开发人员面临着这样一个选择:在众多的数据库选项中,应该选择哪一种技术?在选择一种数据库技术之前,开发人员需要考虑很多因素。比如,该应用程序需要支持多少个用户?所有的用户是否会同时访问数据库系统?该应用程序的开发涉及到哪些费用?如果该应用程序的需求随着时间的推移而发生变化,该技术是否允许对该数据库的功能和规模进行扩充?
直到最近,Microsoft推出了两种数据库管理方案:Microsoft Jet (即Microsoft Access 数据引擎,该引擎随同access 和Microsoft Visual Studio发布) 和 Microsoft SQL Server。由于每一种技术方案都有自身的优势,同时又存在某些局限性,因此,以前如果要求开发人员选择这样一种数据库技术:使它既满足从桌面到数据中心环境下运行,而数据库应用程序又适应长期和短期需要,一般而言是很困难的。由于基于Jet的解决方案具有易于使用和开发成本低的优点,因此,对于桌面或者共享的应用程序而言,它是一种很不错的选择。然而,开发人员发现:随着应用系统规模的扩大,在他们将Jet应用程序移植到SQL Server的平台之前,需要对程序代码进行大量的修改。值得开发人员高兴的是:随着一个与SQL Server 兼容的数据引擎—Microsoft 数据引擎(MSDE)的发布,开发人员可以选用一种新的方式来创建基于桌面和共享环境的数据库应用程序。利用MSDE,开发人员可以创建自由分布的桌面和共享的数据库解决方案。当需要对系统的规模进行扩充时,采用这种解决方案的数据库应用程序可以很容易地移植到SQL Server中。
数据引擎涉及哪些技术
从本质上讲,一个处于运行状态的“数据引擎”就是一个核心进程。一个数据库管理系统,比如access 或者 SQL Server,将利用这个核心进程来存储和管理数据库中的数据。从这种意义上讲,我们通常可以把一个数据引擎看作是一个没有相应的图形管理工具的数据库管理系统。数据引擎主要有两种作用:一是用来存储数据,二是用来处理其它对象对存储的信息所提交的请求。我们通常把用来检索或者更新数据的请求称作数据库查询。
通常,数据引擎与自定义数据库应用程序一起对客户机应用程序提交的数据库请求进行响应。自定义数据库应用程序是用某种开发工具,比如Microsoft Visual Studio创建的。在这种情况下,由于自定义的数据库应用程序已经包含了内置的工具对底层的数据库进行管理,因此,在数据引擎中,就没有必要包含图形工具来对数据库进行管理了。此外,由于数据引擎具有容易分布的特点,开发人员可以将相应的数据引擎包含到自定义应用程序中,在应用程序的安装过程中,用户可以通过选取该引擎组件而将其安装到系统中。
Microsoft数据引擎
Microsoft 数据引擎(MSDE)与SQL Server完全兼容,在以Visual Studio 6.0 或者Access 2000为开发工具所创建的桌面和共享的数据库解决方案中,该引擎可以用来对数据库进行处理。对于Visual Studio 6.0 或者 Access 2000开发人员来说, 他们可以在不单独对MSDE进行注册的情况下发布使用MSDE创建的数据库应用程序。MSDE用到了SQL Server提供的一些技术,并且与SQL Server 7.0完全兼容。在Access 2000中,MSDE是代替Jet(access 2000数据库使用的缺省引擎)的理想选择。此外,对于Visual Studio 6.0开发人员而言,如果他们想创建自定义的数据库应用程序,并且希望在这些自定义的应用程序中使用与SQL兼容的的数据库,那么,他们可以通过采用MSDE作为数据引擎的方式来达到这一目的。MSDE与SQL的兼容性意味着:开发人员可以对现有的以MSDE作为数据引擎、桌面和共享的数据库应用程序代码不作任何修改,就可以将其移植到SQL Server中。
MSDE以提供某种服务的方式在后台运行。在此,服务指的是以后台进程运行的应用程序。服务与其它的应用程序的运行方式有所不同。比如,只要用户通过从“开始”菜单选取“启动”选项,对应的应用程序就可以投入运行。但对于服务而言,如MSDE,情况就不是这样。它们的启动和关闭通常是由操作系统来完成的。以MSDE作为数据引擎的桌面和共享的数据库应用程序通常具有以下限制:在数据库应用程序存活期间,MSDE服务应该处于运行状态。一般而言,使用服务的对象是其它应用程序,而不是终端用户。一般情况下,服务在后台运行,当它接收到客户机应用程序向它提交的处理请求时,它就转去执行相应的请求。对于MSDE来说,这些请求是一些将要对数据库执行的操作。由于使用服务的对象是客户机应用程序,而不是终端用户,因此服务不需要有用户界面。在access 2000中创建的一个工程或者一个Visual Basic应用程序可以直接与某个服务进行交互。对于MSDE而言,这些客户机应用程序充当了用户界面。
MSDE的特性:
* 完全与Microsoft SQL Server 7.0 以及以前的版本相兼容。
* 对于Visual Studio 6.0 或者 Microsoft Office 2000 开发人员而言,他们可以将基于MSDE的数据库应用程序免费发布给最终用户。
* 可以在Windows 95, Windows 98, Windows NT, 以及Windows 2000 (Intel 和 Alpha)平台上运行。
* 具有客户机/服务器的体系结构(MSDE在数据库服务器,而不是在客户机上执行对数据库的操作)。
* 以提供服务的方式在后台运行。
* 在数据库的开发过程中,开发人员不需要为该引擎创建相应的用户界面。其它应用程序,比如用access 2000 或者 Visual Basic开发的自定义应用程序需要为数据库提供相应的用户界面.
Jet 4.0
Jet 4.0是在Microsoft Access 2000中使用的缺省的数据引擎。在Visual Studio 6.0 开发工具包中,也包含了这一引擎。Jet是基于文件的数据库管理系统。这种类型的数据库管理系统具有如下特点:系统中的数据库包含在一个独立的数据库文件中,并且对数据库的读写操作是由客户机控制的。Jet 可以在多用户的环境下使用,并且开发人员还能够将采用Jet作为引擎的数据库应用程序扩充为桌面和共享的数据库应用程序。Microsoft access为Jet数据引擎提供了一个易于使用的界面。开发人员还可以利用 Visual Basic或者其它开发工具来创建自定义的前端应用程序,在这些应用程序中,包含了以Jet作为引擎的数据库。
SQL Server
SQL Server是一个基于客户机/服务器模式的数据库管理系统。与基于文件的数据库中使用的引擎不同,在基于客户机/服务器模式的数据库管理系统中,数据引擎将负责管理数据库的读写操作。由于这一特性,基于客户机/服务器模式的数据库管理系统,比如SQL Server,可以在很大的程度上提高系统能够处理的并发用户数和数据量。当前,企业中使用的大型数据库应用程序需要支持的并发用户数和处理的数据量在不断增加,SQL Server就是为满足这一迫切需要而设计的。这些数据库应用程序包括在今天已经实现和在将来还需要进一步改进的企业管理系统和决策支持系统。SQL Server具有各种发行版本,以满足在不同的环境下对处理的数据量、并发用户数和硬件的不同要求。
数据库与SQL的兼容性
数据库与SQL的兼容性指的是,数据库在多大程度上与用来进行数据库通信的ANSI结构化查询语言(ANSI-SQL)行业标准保持一致。MSDE 和 SQL Server两者都遵从Transact-SQL (T-SQL)中定义的语言规范,而Jet则没有采用这种规范。与此不同的是,Jet定义并实现了它自己的一套查询语言。在这种查询语言中,Jet可以调用Visual Basic应用程序(VBA)中的函数过程。Transact-SQL是一套定义完善的语言,开发人员可以通过这种语言来进行数据库应用程序和数据库服务器之间的通信,并能够对数据库服务器进行编程处理。Transact-SQL是ANSI-SQL的一个超集,利用Transact-SQL,开发人员可以通过对服务器进行编程的方式来使服务器执行一些定制的事务逻辑处理。用户可以通过在客户端调用这些以事件或者消息的方式驱动的事务逻辑处理过程,而实际执行时,这些逻辑处理过程则是在服务器上完成的。MSDE与Transact-SQL的语言规范保持一致意味着:MSDE中的对象不加修改就能够在SQL Server中运行。因此,在这一点上,MSDE要优越于Jet。
如何选择数据引擎
如果你手头的数据库应用程序的功能和规模已经不能满足数据库系统的需求,你可能准备新建一个基于功能强大的数据引擎的应用程序,也可能打算通过使用一个新的数据引擎来代替原来的引擎的方式对现有的数据库应用程序进行移植,不管你采用哪一种方式,对现有的条件和计划使用的每一种数据引擎的特性进行一定的了解是非常重要的。那么,你到底应该选择哪种数据引擎呢?如果你希望创建桌面和共享的数据库应用程序,那么,你可以考虑用MSDE来代替Jet。在本节中,我们讨论了在开发的过程中很多数据库应用程序对系统提出的需求,另外,我们还提供了一些建议,以告诉开发人员如何选择一个合适的数据引擎,使该引擎能够在最大程度上满足他们将要创建的工程需求。
数据库应用程序的需求
表1列出了在企业环境下运行的数据库应用程序的需求,并说明了每一种数据引擎在多大程度上能够满足这些需求。如果你的应用程序在当前(或者在将来会)具有在表1最左边的一列中所给出的任何需求,你就应该考虑用MSDE来代替Jet作为数据库的引擎了。
在哪些情况下应选择MSDE作为数据库系统的引擎
在以下两种情况下,我们可以选用MSDE作为数据库应用程序的引擎。一是用MSDE 代替Jet来移植现有的数据库应用程序,以提高它的可伸缩性。二是以MSDE作为引擎来创建桌面和共享的数据库应用程序,当系统的规模扩大时,这些数据库能够很容易地移植到SQL Server。
MSDE与SQL Server的兼容性
MSDE数据引擎与SQL Server完全兼容。因此,在MSDE中创建的表格、存储过程、触发器,以及其它数据库对象在不进行任何修改的情况下就可以在SQL Server数据库中运行。但是,在Jet中创建的对象,比如查询对象,就不能在不进行任何修改的情况下移植到SQL Server数据库中运行。如果希望在将来把当前创建的数据库应用程序移植到SQL Server中,或者现有的数据库应用程序在处理的并发用户数、数据量或者在其它某一方面已经或者将要超过Jet引擎的限制,那么,应该选择MSDE作为应用程序的数据引擎。采用这种解决方案,你可以在不修改任何代码的情况下,毫不费力地在将来某一天将自己的数据库应用程序移植到SQL Server。
基于服务器的处理
与Jet不同,MSDE不是一个基于文件的数据引擎,因此以MSDE作为引擎的数据库应用程序不会受到基于文件的数据库对处理的数据量的限制。由于在基于文件的数据库中,对数据库的操作是在客户机上进行的,因此这种类型的数据库影响了应用程序的性能。而在基于服务器的数据库系统中,比如在SQL Server和MSDE中,用来对客户机应用程序提交的请求进行处理的操作是在服务器上完成的,在对请求处理完毕后,服务器将相应的结果返回给提交请求的客户机应用程序。采用这种处理方式,大大减少了网络的负荷,并且,它还可以使用户在没有较高配置终端的情况下,以能够被接受的速度访问数据库。
当多个用户在同时使用一个基于文件的数据库时,每一个用户都必须打开同样的文件以从中读写信息。由于每一个用户只有轮到了他的顺序才能对数据库文件执行相应的操作,因此,基于文件的数据库就会成为影响系统性能的一个瓶颈。基于服务器的数据库管理系统专门设计用来解决客户机应用程序访问数据库管理系统时所遇到的这一问题,因此它可以提高系统的性能。
当客户机应用程序分布在网络上的不同机器时,在客户机处理数据的方式会使基于文件的数据库系统的性能进一步下降。当一个基于文件的共享数据库放在网络中的一个文件服务器上时,如果客户机应用程序向文件服务器提交一个查询请求以对共享数据库执行相应的操作,即使执行该请求的结果只产生一条记录,文件服务器也需要将该请求中包含的所有源数据通过网络传递给提交请求的客户机应用程序。在基于服务器的数据库中,数据引擎将在服务器上执行客户机应用程序提交的所有处理请求,在处理完毕后,只将处理的结果返回给客户机。在这种模式下,应用程序在带宽较窄的网络连接上仍然能够以较好的性能来访问服务器上的数据库。
如果你的数据库应用程序分布在网络上、多个用户需要同时访问你的数据库、或者用户只能通过一条带宽较窄的网络连接进行访问,只要存在以上的任何一种情况,你就应该选用MSDE作为你的数据库应用程序的引擎。
安全性
虽然MSDE和Jet都允许对表格或者存储过程这些独立的数据库对象进行必要的保护,但在Windows NT 或者 Windows 2000平台上运行的MSDE数据库可以利用Windows 2000提供的安全机制来保护数据库对象,但Jet数据库却不具备这种特性。
如果你希望在数据库应用程序中利用Windows 2000中提供的这种安全机制,那么你应该选择MSDE作为你的数据引擎。
授权
任何注册了Office 2000 专业版或者学习版的客户, 或者任何注册了在Visual Studio 6.0 企业版或者专业版中包含的工具组件的用户都可以免费获得MSDE,这些工具组件包括:
* Visual Studio 6.0, 专业版和企业版
* Visual Basic 6.0, 专业版和企业版
* Visual C++(r) 6.0, 专业版和企业版
* Visual InterDev(tm) 6.0 专业版
* Visual J++(r) 6.0, 专业版
* Visual FoxPro(r) 6.0 专业版
对于那些采用MSDE作为数据引擎来创建桌面和共享的数据库解决方案的开发人员而言,只要他们对下面的软件进行了注册,就可以获得授权免费发布他们创建MSDE解决方案。这些需要注册的软件产品包括:
* Microsoft Office 2000 开发版
* Microsoft Visual Studio 6.0 专业版或者企业版中的相关工具组件(在本节的前面列出了这些工具组件)
对于那些以Microsoft Office 或者Visual Studio作为开发工具的开发人员而言,如果他们在应用程序中包含了以Jet作为引擎的数据库,他们也被授权免费发布这些数据库。但是,以Jet作为引擎的桌面和共享的数据库应用程序却不能方便地移植到SQL Server中。如果开发费用是影响创建数据库应用程序的一个重要因素,把MSDE作为数据库的引擎是你最好的选择。
MSDE小结
如果开发人员希望创建桌面或者共享的数据库应用程序,并且计划在将来对这些数据库应用程序的功能和规模进行扩充,那么,选用MSDE作为数据引擎将具有以下优点:从近期来看,能够降低系统的开发费用,从远期来看,又提供了最为方便的方式,以对当前创建的数据库应用程序进行移植。当你所在组织的规模扩大后对数据库系统的功能和性能提出新的需求时,你可以在不修改现有数据库应用程序中的任何代码的情况下,将它完全移植到基于SQL Server的平台上运行。此外,由于MSDE与SQL 完全兼容,开发人员可以使用同样的数据访问语言在规模相对较小的MSDE数据库系统和规模较大的SQL Server数据库系统之间实现无缝转换。
在哪些情况下选用Jet
对于一些特殊的数据库系统而言,以Jet 4.0作为引擎也是一个很不错的选择。在这一节中,我们将讨论在哪些情况下应该选用Jet作为数据库引擎。
分布性
在采用Jet作为引擎的数据库系统中,由于数据库包含在一个独立的文件中,因此备份和发布数据库的工作就变得非常容易。虽然在数据库系统的运行过程中,其它文件会通过诸如Visual Basic 或者 Microsoft access这种类型的应用程序来访问Jet数据库文件,但由于开发人员对这些文件之间的相关性进行了良好的定义,因此,访问数据库文件的操作不会占用系统大量的存储空间或者使用大量的处理器资源。与Jet 数据库相比,MSDE数据库比较难于发布和安装。因此,如果希望简化数据库的发布和安装的过程,选用Jet作为数据库的引擎是一个很不错的选择。
开发费用
开发人员可以将基于Jet 4.0的数据库随同用下面的工具开发的数据库应用程序一起发行:
* Microsoft Office 2000
* Microsoft access 2000
* Visual Studio 6.0 任何版本中的相关工具组件(在文章的前面部分列出了这些组件)
如果开发费用是创建数据库应用程序时要考虑的重要因素,选用Jet作为数据引擎是一个很不错的选择。
可伸缩性
MSDE 和 Jet数据库都可以在桌面和共享的数据库应用程序中运行。对于有些数据库应用程序而言,它们所处理的数据量可能永远也不会超过2GB,并且所支持的用户数也不会超过20个。如果你手头有一个Jet数据库应用程序,即使随着系统规模的增长,它所处理的数据量也不会很大,并且需要支持的用户数也不够多,那么,将Jet作为现有数据库的引擎仍不失为一个好的选择.
对系统资源的需求
由于Jet数据库经过了压缩处理,因此在那些资源有限的平台上,选用Jet作为数据库的引擎是合适的。在这篇文章所讨论的三种数据引擎中,以Jet作为引擎的数据库占用的存储空间和消耗的系统内存最少。如果使用的机器的磁盘空间或者系统内存非常有限,那么选用Jet作为引擎将是非常明智的选择。
与以前版本的兼容性
Jet 4.0对那些基于以前的版本的数据库提供了最大的兼容性。你可以将现有的多个不同版本Jet数据库应用程序放在同一个系统中运行。只要你不将SQL Server 或者 MSDE加入到数据库系统中,那么你现有的系统仍将是一个基于Jet/access解决方案的数据库系统。如果在你现有的一个Jet数据库应用程序中调用了在Jet以前版本中定义的一个函数,或者调用了这样一个函数:你需要进行大量的处理工作才能将该函数转化到与SQL兼容的数据库中运行,那么,采用Jet作为数据库的引擎将比采用MSDE 或者 SQL Server 7.0具有更大的优越性。
JET小结
对于那些在当前要求处理的数据量不大、需要支持的并发用户数也不多,并且在将来也不会有很大增长的的数据库管理系统而言,基于Jet的数据库系统具有开发费用低、维护方便的优点,并且与以前版本的Jet数据库系统具有最大的兼容性。
在哪些情况下应选择
SQL Server
看到这一节的标题,你可能想问:为什么不以MSDE或者Jet作为引擎来开发所有的数据库系统呢?对这个问题的答案是:基于Jet 甚至是MSDE的数据库系统在有些情况下已经不能满足实际的需要了。在下面,我们对这些情况进行了说明。
数据库的容量
基于MSDE的数据库最多能存储2GB大小的数据。基于Jet的数据库中的每一个文件能够存储的数据也无法超过2GB。由于Jet数据库文件可以通过相互链接的方式来增大存储能力,因此最终存储的数据量只受到磁盘空间大小的限制。但是,管理多个数据文件将是一项非常困难的工作。因此,如果你现有的数据库的大小超过了2GB,或者是在将来会突破这一限制,那么选用SQL Server作为数据库系统的引擎将是最佳的选择。
支持的并发用户数
当数据库系统需要支持的并发用户数不超过5个时,采用MSDE作为数据库的引擎将会获得最优的系统性能。Microsoft极力推荐:为了使MSDE数据库系统表现出优越的性能,系统所支持的并发用户数不要超过5个。
从技术和授权的角度上来讲,基于Jet的数据库系统支持的用户数可以达到255个,但在实际中,系统支持的用户数最好不要超过20个。这样的原因是:Jet 数据库系统采用基于文件的方式来存储数据,因此,随着连接的用户数量的增加,需要对文件执行读写操作的用户数也将不断增加,从而使系统的性能变差。
由于SQL Server 可以支持成千上万个并发用户,因此可以在最大程度上满足企业级数据库系统的性能需求。因此,如果一个数据库应用程序需要支持的用户数超过了5个时,选用SQL Server将是最明智的选择。
SQL Server小结
如果用户要求一个独立的数据库处理的数据量超过2GB,并且用户要求在访问数据库系统时能够获得良好的性能,那么,应该选用SQL Server作为数据库系统的引擎。在所有的数据引擎中,SQL Server提供了最优越的性能和最好的可伸缩性。
对MSDE许可的解释
任何注册了Office 2000 专业版或者学习版的用户, 或者任何注册了在Visual Studio 6.0 企业版或者专业版中包含的工具组件的用户都可以免费获得MSDE,这些工具组件包括:
* Visual Studio 6.0, 专业版和企业版
* Visual Basic 6.0, 专业版和企业版
* Visual C++(r) 6.0, 专业版和企业版
* Visual InterDev(tm) 6.0 专业版
* Visual J++(r) 6.0, 专业版
* Visual FoxPro(r) 6.0 专业版
发布MSDE解决方案所需的许可
如果Visual Studio 6.0 或者 Office 2000开发人员在他们创建的解决方案中使用MSDE,只要他们遵守了在开发过程中所用到的其它软件产品的最终用户许可协议,就可以将他们的解决方案发布给他们的客户或者最终用户,Microsoft 不会因为开发人员使用了MSDE而收取相应的版权费。
当MSDE解决方案与SQL Server进行互操作时需要获得的许可
如果开发人员发布的基于MSDE的数据库应用程序在运行的过程中需要与SQL Server进行交互,那么,对于开发人员在客户机上安装的数据库应用程序的每一份拷贝,他们需要获取一份Microsoft客户访问许可(CAL)。对于中心的SQL Server数据库,开发人员也需要为安装的每一个拷贝获取一份许可。如果你想了解有关SQL Server 7.0报价和授权许可的更详细的信息,请访问SQL Server Web站点中的相关内容:
http://msdn.microsoft.com/isapi/gomscom.asp?Target=/sql/70/gen/pricing.htm.。