SQLSEVER体系结构.docx
《SQLSEVER体系结构.docx》由会员分享,可在线阅读,更多相关《SQLSEVER体系结构.docx(13页珍藏版)》请在冰豆网上搜索。
SQLSEVER体系结构
SQLSERVERARCHITECTURE
TURLEY
PROFESSIONALSQLSERVER2005REPORTINGSERVICES,Chapter3,ReportingSevicesArchitecture,TURLEY.SecondEdition.NewYork:
JohnWilley,2007.Page71~Page121
SQLSEVER体系结构
特利
SQLSEVER2005专业报告服务,第三章,报告服务体系结构,特利.第二版.纽约:
约翰威利出版社,2007.第71页~第121页
1.通信
SQLServer使用分层的通信体系结构,把应用程序和底层的网络和协议隔离开来。
这个体系结构允许用户在不同的网络环境中实施同一个应用程序。
通信体系结构中的组件包括:
应用程序、数据库接、网络库、
客户机和服务器可以同时使用多个Net-Library,但是为了成功通信,它们必须使用一个公共的网络库。
SQLServer支持这样的一些网络协议:
TCP/IP,命名管道,NOVELLIPX/SPX,BANYANVINES/IP和APPLETALKADSP。
表数据流(TDS)这是一个应用程序层的协议,用于客户应用程序与SQLServer之间的通信。
TDS包封装在为网络库使用的协议栈创建的网络数据包中,例如,如果使用WindowssocketsNet-Library,则TDS数据包封装在底层协议的TCP/IP数据包中。
开放数据服务这是一个SQLServer组件,处理网络连接,把客户的请求传给SQLServer进行处理,并把任何结果和应答返回给SQLServer客户。
开放数据服务自动监听在服务器上安装的所有服务器网络库。
2.应用程序开发
用户通过使用一个数据对象接口或API写的应用程序访问SQLServer。
SQLServer支持常用的和正在出现的数据接口,它支持底层的固有的API,以及容易使用的数据对象接口。
2.1应用程序编程接口
数据库API定义如何写一个应用程序连接到数据库,和把命令传递给数据库。
SQLServer提供对两大类数据库API的固有支持,而这些API有确定可以使用的数据对象接口。
使用数据库API对应用程序行为和性能有更大的控制。
OLEDB这是一个基于组件对象模型(COM)的数据访问接口,它支持使用OLEDB的数据对象接口写的应用程序。
OLEDB可以访问SQLServer,其他关系数据库和其他数据源中的数据。
ODBC这是一个调用级的接口,它直接访问SQLServerTDS协议,并支持使用ODBC的数据对象接口写的应用程序或组件。
ODBC可以访问SQLServer和其他关系数据库中的数据,但一般不能用于访问其他数据源中的数据。
2.2数据对象接口
一般来说,数据对象接口比数据库API更容易使用,但没有显露API那样多的功能。
ActiveX数据对象(ADO)ActiveX数据对象(ADO)在一个简化的数据模型中封装OLEDBAPI,降低了应用程序开发和维护的成本。
ADO可以从MicrosoftVisualBasic,VisualBasicforApplications,ActiveServerPages(ASP)和MicrosoftInternetExplorer脚本对象模型中使用。
远程数据对象(RDO)RDO映射和封装ODBCAPI,可以从MicrosoftVisualBasic和VisualBasicforApplications中使用。
3.使用SQLServer
3.1设计SQLServer应用程序
计划一个数据库设计要求想建模的业务对象的知识,和用于表示这些业务功能的数据库概念及特性。
在设计一个SQLServer应用程序之前,花一些时间设计一个数据库对业务对象准确建模是很重要的。
一个很好设计的数据库要求极少的更改通常更有效的执行。
选择的体系结构将影响如何开发、部署和管理软件应用程序。
3.2软件体系结构
可以使用某个应用程序体系结构实现客户机/服务器应用程序,但是选定一个分层的应用程序方法会得到灵活性和管理选项的选择。
可以把软件应用程序分为3个逻辑层,他们可以位于一个或多个服务器上。
3.3体系结构设计
典型的应用程序部署选项包括:
智能服务器(两层)大多数的处理发生在服务器上,而表示服务在客户机上处理。
在许多例子中,业务服务逻辑的大部分在数据库中实现。
这个设计在客户机没有足够的资源处理业务逻辑时是很有用的。
但是,服务器会变成一个瓶颈,因为数据库和业务服务竞争相同的硬件资源。
以数据库为中心的视点设计的团体应用程序是这种设计的一个例子。
智能客户机(两层)大多数处理发生在客户机上,而数据服务在服务器上处理。
这个设计是广泛使用的传统客户机/服务器环境,但是网络交通会很繁忙,而且事务更长,这又会影响性能。
使用MicrosoftAccess这样的产品为小单位开发的应用程序是这种设计的一个例子。
N层处理在数据库服务器、应用程序服务器和客户机之间划分。
这个方法把逻辑与数据服务分开,可以根据需要很容易添加更多的应用程序服务器或数据库服务器。
但是,复杂的可能性增加,且这个方法对小型应用程序较慢。
多层企业应用程序和使用事务处理监视程序开发的应用程序是这种设计的一个例子。
Internet处理分为3层,业务和表示服务位于Web服务器上,客户机使用简单的浏览器。
有浏览器的任何客户机都可以被支持,且软件不需要在客户机上维护。
使用几个Web服务器管理客户机的连接,和使用一个SQLServer数据库服务数据请求的Web站点是这种设计的一个例子。
4.实现SQLServer数据库
实现一个SQLServer数据库意味着计划,创建和维护一些相互关联的组件。
数据库应用程序的性质和复杂性,以及计划数据库的过程,它们之间的差异是非常大的。
例如,一个数据可以很简单,有一个人设计即可;它也可以很大,很复杂,处理成千上万客户的银行事务。
不管数据库的规模和复杂性符合,实现一个数据库通常都包括以下任务:
·设计数据库。
使得应用程序最优化的使用硬件,并允许未来的扩展;标识和建模数据库对象和应用程序逻辑,规定每个对象的信息类型和关系的类型。
·创建数据库和数据库对象。
包括表、数据库完整性机制、数据输入和获取对象(常常是存储过程)、合适的索引、和安全策略。
·测试和调试应用程序与数据库。
设计数据库时,要保证数据库正确迅速的执行重要的功能。
正确的数据库设计、索引的的正确使用、RAID和文件组,它们的组合对于获得好的性能是必需的。
·设计应用。
包括分析工作负载和建议SQLServer数据库的最优索引配置。
·应用后的应用程序管理。
包括配置服务器和客户机,监视服务器性能,管理作业、报警和操作员,管理安全策略,和管理数据库备份过程。
5.存储过程
5.1介绍存储过程
本节介绍不同类型的存储过程,描述存储过程的处理,包括初始处理和后续执行,并列出使用存储过程的一些优点。
5.2定义存储过程
存储过程是SQL语句的命名集合,存放在服务器上。
存储过程是包装重复任务有效执行的一种方式,支持用户声明的变量,条件执行和其他强功能的程序设计特性。
MicrosoftSQLServer7.0版支持5类存储过程:
(1)系统存储过程(sp_)
系统存储过程(由前缀sp标识)存放master数据库中,提供获取系统表信息的快捷方式。
它们允许系统管理员执行数据库管理任务,更新系统
(2)局部存储过程
局部存储过程在各个用户数据库中创建。
(3)临时存储过程
临时存储过程可以是局部的,名字前有一个磅符(#),也可以是全局的,名字前有两个磅符(##);局部临时存储过程在单个用户会话中可用,全局临时存储过程在所有会话中都可用。
(4)远程存储过程
远程存储过程是从连接到不同服务器的远程服务器或客户机调用的存储过程。
6.ODBC目的
微软开放式数据库连接(ODBC)接口是为了应用从各种各样的数据库管理系统(DBMS)使之有可能到访问数据的一种C编程语言接口。
ODBC接口许可最大限度连机操作—任一应用程序都能在不同的的DBMS(数据库管理系统)中通过一个单一的接口访问数据。
进而,请求将不依赖于它从其中访问数据的任何DBMS。
应用程序的用户能增加请求驱动程序的软件组成部分,此驱动程序是请求和具体的DBMS之间的接口。
开放式数据库连接(ODBC)是数据库访问的广泛地可接受的应用编写程序接口(API)。
它基于水平接口(CLI)规则以,X/Open和ISO/IEC做为数据库API借口并使用结构化查询语言作为数据库访问语言。
ODBC被设计用于能允许使用相同源代码通过单一请求访问不同数据库管理系统的最大限度联机操作。
在ODBC接口中的数据库应用请求定义,是在具体的数据库模块访问驱动程序中别实现的。
对驱动程序的使用将应用程序与具体数据库隔开,如打印机驱动程序将字处理与打印机具体的命令隔开一样。
因为驱动程序在运行时被装载,一个用户可以仅增加一个新的驱动程序访问新的DBMS,不必要再编辑或者再连接应用程序。
7.Command对象
Command对象特定地为处理各种类型的命令而设计,特别是那些需要参数的命令。
与Connection对象相似,Command对象可以运行返回记录集和不返回记录集两种类型的命令。
实际上,如果命令不含有参数,那么它并不关心是使用Connection对象,还是Command对象,还是Recordset对象。
8.存储过程
存储过程的使用是Command对象得到应用的一个领域。
存储过程(有时也称存储查询)是存储在数据库中预先定义的SQL查询语句。
为什么应该创建和使用存储过程而不是在代码中直接使用SQL字符串呢?
主要有以下几个理由:
•存储过程被数据库编译过。
这样可以产生一个“执行计划”,因此数据库确切地知道它将做什么,从而加快了过程的执行速度。
•存储过程通常被数据库高速缓存,这样使它们运行得更快,因为此时不需从磁盘中读取它们。
并非所有的数据库都支持这种缓存机制,比如微软的Access就不支持,而SQLServer却支持。
•通过指定数据库中的表只能被存储过程修改,可以确保数据更安全。
这意味着具有潜在危险的SQL操作不会执行。
•可以避免将ASP代码和冗长的SQL语句混在一起,从而使ASP代码更易于维护。
•可以将所有SQL代码集中存放于服务器。
•可以在存储过程中使用输出参数,允许返回记录集或其他的值。
一般说来,存储过程几乎总是比相当的SQL语句执行速度快。
为了使用存储过程,只要将存储过程的名字作为命令文本,并设置相应的类型。
1.COMMUNICATION
SQLServerusesalayeredcommunicationarchitecturetoisolateapplicationfromtheunderlyingnetworkandprotocols.Thisarchitectureallowsyoutodeploythesameapplicationindifferentnetworkenvironment.Thecomponentsinthecommunicationarchitectureinclude:
Application、Databaseinterface、Networklibrary.
ClientsandserverscanusemorethanoneNer-Libraryconcurrently,buttheymustuseacommonnetworklibraryinordertocommunicatesuccessfully.SQLServersupportnetworkprotocolsuchasTCP/IP,Namedpipes,NovellIPX/SPC,BanyanVINES/IP,andAppleTalkADSP.
Tabulardatastreamtabulardatastream(TDS)isaapplicationlevelprotocolusedforcommunicationbetweentheclientandSQLServer.TDSpacketsareencapsulatedinthenetworkpacketsbuiltfortheprotocolstackusedbytheNet-libraries.Forexample,ifyouusethewindowsSocketNet-Library,thentheTDSpacketsareencapsulatedintheTCP/IPpacketsofunderlyingprotocol.
OpenDataServicesThisisacomponentofSQLServerthathandlesnetworkconnections,passingclientrequeststoSQLServerforprocessingandreturninganyresultandrepliestoSQLServerclient.OpenDataServicesautomaticallylistensonallserverNet-Librariesthatareinstalledontheserver.
2.APPLICATIONDEVELOPMENT
UsersaccessSQLServerthroughanapplicationthatiswrittenwithadataobjectinterfaceoranAPI.
SQLServersupportscommonlyusedandemergingdatabaseinterfaces.Itsupportslow-levelnativeAPIs,aswellaseasy-to-usedataobjectinterfaces.
2.1ApplicationProgrammingInterfaces
AdatabaseAPIdefineshowtowriteanapplicationtoconnecttoadatabaseandpasscommandstothedatabase.SQLServerprovidesnativesupportfortwomainclassesofdatabaseAPIs,whichinturndeterminethedataobjectinterfacethatyoucanuse.UsethedatabaseAPIstohavemorecontroloverapplicationbehaviorandperformance.
OLEDBThisisaComponentObjectModel(COM)-baseddataaccessinterface.ItsupportsapplicationwrittenusingOLEDBordataobjectinterfacethatuseOLEDB.OLEDBcanaccessdatainSQLServer,otherrelationaldatabases,andotherdatasources.
OpenDatabaseConnectivityOpenDatabaseConnectivity(ODBC)isacall-levelinterface.ItdirectlyaccesstheSQLServerTDSprotocolandsupportsapplicationsorcomponentsthatarewrittenusingODBCordataobjectinterfacethatuseODBC.ODBCcanaccessdatainSQLServerandotherrelationaldatabase,butgenerallyitcannotbeusedtoaccessotherdatasources.
2.2DataObjectInterfaces
Ingeneral,dataobjectinterfacesareeasiertousethandatabaseAPIsbutmaynotexposeasmuchfunctionalityasanAPI.
ActiveXDataObjectsMicrosoftActiveXDataObject(ADO)encapsulatetheOLEDBAPIinasimplifiedobjectmodelthatreducesapplicationdevelopmentandmaintenancecosts.ADOcanbeusedfromMicrosoftVisualBasic,Visualbasicforapplications,ActiveServerPages(ASP),andtheMicrosoftInternetExplorerscriptingobjectmodel.
RemoteDataObjectRemoteDataObject(ROD)mapoverandencapsulatetheODBCAPI.RDOcanbeusedfromVisualBasicandVisualBasicforapplications.
3.WORKINGWITHSQLSERVER
3.1DesigningAnApplicationForSQLServer
Planningadatabasedesignrequiresknowledgeofthebusinessfunctionsthatyouwanttomodelanddatabaseconceptsandfeaturesthatyouusetorepresentthosebusinessfunctions.
BeforeyoudesignanapplicationforSQLServer,itisimportanttospendtimedesigningadatabasetomodelthebusinessaccurately.Awell-designeddatabaserequiresfewerchangesandgenerallyperformancemoreefficiently.Thearchitecturethatyouselectaffecthowyoudevelop,deployandmanageyoursoftwareapplication.
3.2SoftwareArchitecture
Youcanuseoneofseveralapplicationarchitecturetoimplementclient/serverapplications.However,selectingalayeredapplicationapproachaffordsflexibilityandachoiceofmanagementoptions.Youcandividesoftwareapplicationsintothreelogicallayers,whichcanphysicallyresideononeormoreservers.
3.3ArchitecturalDesign
Typicalapplicationdeploymentoptionsinclude:
IntelligentServer(2-tier)Mostprocessingoccursontheserver,withpresentationserviceshandledontheclient.Inmanyinstance,mostofthebusinessserviceslogicisimplementedinthedatabase.Thisdesignisusefulwhenclientsdonothavesufficientresourcestoprocessthebusinesslogic.However,theservercanbecomeabottleneckbecausedatabaseandbusinessservicescompeteforthesamehardwareresources.
Corporateapplicationsdesignedfromadatabase-centricpointofviewareanexampleofthisdesign.
IntelligentClient(2-tier)Mostprocessingoccursontheclient,withpresentationserviceshandledontheserver.Thisdesigniswidelyused.However,networktrafficcanbeheavyandtransactionslonger,whichcaninturnaffectperformance.
ApplicationsdevelopedforsmallorganizationswithproductsuchasMicrosoftAccessareanexampleforthisdesign.
N-TierProcessingisdividedamongadatabaseserver,anapplicationserver,andclients,.Thisapproachseparateslogicfromdataservices,andyoueasilycanaddmoreapplicationserversordatabaseserversasneeded.However,thepotentialforcomplexityincreases,andthisapproachmaybe