Microsoft数据引擎 MSDE
概述
创建应用程序的开发人员面临着这样一个选择:在众多的数据库选项中,应该选择哪一种技术?在选择一种数据库技术之前,开发人员需要考虑很多因素。比如,该应用程序需要支持多少个用户?所有的用户是否会同时访问数据库系统?该应用程序的开发涉及到哪些费用?如果该应用程序的需求随着时间的推移而发生变化,该技术是否允许对该数据库的功能和规模进行扩充?
直到最近,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作为数据库的引擎是你最好的选择。
……