Server作为一款面向企业级应用的关系数据库产品.docx
- 文档编号:26479152
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:28
- 大小:585.53KB
Server作为一款面向企业级应用的关系数据库产品.docx
《Server作为一款面向企业级应用的关系数据库产品.docx》由会员分享,可在线阅读,更多相关《Server作为一款面向企业级应用的关系数据库产品.docx(28页珍藏版)》请在冰豆网上搜索。
Server作为一款面向企业级应用的关系数据库产品
Server作为一款面向企业级应用的关系数据库产品
SQLServer作为一款面向企业级应用的关系数据库产品,在各行业和各软件产品中得到了广泛的应用,专门是SQLServer2008的公布使得SQLServer不管在效率上依旧功能上较SQLServer2000都得到了专门大的改善和提高。
本章将要紧讲解SQLServer2008的基础知识及其安装和使用方法。
1.1SQLServer2008简介
本节将要紧介绍SQLServer的进展历史和特点,通过对数据库进展历史和SQLServer进展历史的了解,使读者更好地确定学习的目标。
1.1.1SQLServer进展历史
1946年世界上第一台运算机“ENIAC”的产生标志着人类进入了运算机时代。
使用运算机中所必须面临的一个问题确实是资料的储备。
早期的运算机是将信息通过打孔的方式储备在纸带上,然而这种储备在纸带上的信息既不容易检索也不容易修改。
后来随着磁储备介质的发明,信息才以文本文件或二进制文件的形式储备。
这种以单独的文件来存放信息就叫做文件处理系统(file-processingsystem)。
不同的信息被存放到不同的文件和不同的路径下,人们编写不同的应用程序来记录和处理需要的文件。
文件处理系统的要紧缺点有:
❑许多据格式标准。
由于文件和程序是在比较长的一段时刻由不同的程序员编写的,而文件中并没有统一的格式来标注文件中的信息内容,容易造成对数据的明白得不一致。
比如一个学生治理系统,a文件中记录了a学生选修的5门课程的成绩,b文件记录的是b学生选修的7门课程的成绩。
由于a和b选修的课程不同造成文件中的记录含义不同。
由于没有统一的格式标准,大量的这种文件放在一起必定造成程序处理的困难。
❑数据冗余。
采纳文件储备的方式,由于缺乏唯独性检查容易造成相同的信息在几个文件中重复储备。
这种储备不但使得文件访问的开销增大,还会导致数据的不一致。
❑数据检索困难。
由于文件系统中没有索引,若要检索出文件内容中的某行数据,程序就必须打开所有文件,找出其中符合条件的数据。
还往常面提到的学生治理系统为例,若要找出英语分数最高的同学,程序必须打开每一个学生成绩的文件找到其中的英语成绩才能最终找到结果。
关于几万或是几十万个文件,若要遍历每一个文件,其处理效率可想而知。
传统的文件处理系统不支持以一种方便而高效的方式去猎取所需数据。
而随着运算机的普及,需要处理的数据不断膨胀,在面对几百万条、几千万条的情形下,文件处理系统差不多无能为力。
而且随着处理业务的不断复杂化,数据完整性问题、原子性问题、并发操作问题、数据安全问题等更使文件处理系统捉襟见肘。
在这种情形下数据库治理系统(databasemanagementsystem,DBMS)应运而生。
早期的数据库依旧以数据储备和数据检索为主,使用网状数据模型和层次数据模型来描述数据、数据联系、数据定义和数据一致性约束。
1970年,美国IBM(要紧产品DB2)公司的E.F.Codd发表的闻名论文ARelationalModelofDataforLargeSharedDataBanks中第一提出了关系数据模型。
后来Codd又提出了关系代数和关系演算的概念、函数依靠的概念、关系的三范式,为关系数据库系统奠定了理论基础。
接着各大数据库厂商都推出了支持关系模型的数据库治理系统,标志着关系数据库系统新时代的来临。
随着关系数据库系统时代的到来,各大数据库厂商都开始推出自己的关系数据库产品。
1989年Sybase和Ashton-Tate公司(以其dBase软件成为当时数据库市场的霸主,1991年被Borland并购)合作开发了数据库产品SQLServer1.0。
而Microsoft为了能在关系数据库市场和甲骨文公司(要紧产品Oracle)以及IBM相抗衡,其在1992年劝说Sybase公司进行5年的合作,共同研发数据库产品。
并在之后推出了应用于WindowsNT3.1平台上的MicrosoftSQLServer4.21版本,从此标志着MicrosoftSQLServer的正式产生。
20世纪90年代,数据库市场百花齐放,竞争十分猛烈。
SQLServer的早期版本由于其自身的不足,仅局限在小型企业和个人应用上。
直到1998年SQLServer7.0的推出才使SQLServer走向了企业级应用的道路。
而随后公布的SQLServer2000更是一款优秀的数据库产品,凭借其优秀的数据处理能力和简单易用的操作使得SQLServer跻身世界三大数据库之列(另外两个是Oracle和IBMDB2)。
如表1.1给出了SQLServer各版本的公布时刻和开发代号。
表1.1SQLServer各版本公布时刻和开发代号
年代
版本
开发代号
1993年
SQLServerforWindowsNT4.21
无
1994年
SQLServerforWindowsNT4.21a
无
1995年
SQLServer6.0
SQL95
1996年
SQLServer6.5
Hydra
1998年
SQLServer7.0
Sphinx
2000年
SQLServer2000
Shiloh
2003年
SQLServer2000Enterprise64位版
Liberty
2005年
SQLServer2005
Yukon
2008年
SQLServer2008
Katmai
尽管微软凭借着SQLServer2000成为世界数据库三巨头之一,然而与Oracle和IBM的DB2相比,SQLServer2000在数据处理效率、系统功能和市场占有率上仍有比较大的差距。
到2004年,据IDC统计,Oracle的市场占有率为41.3%,而IBM和微软的市场份额则分别为30.6%和13.4%。
自从2000年微软公布SQLServer2000以后,5年来一直没有对SQLServer进行大的版本升级。
2005年SQLServer2005的公布可谓是微软在数据库市场投放的重磅炸弹,SQLServer2005不愧为微软“十年磨一剑”的精品之作。
其高效的数据处理、强大的功能、简易而统一的界面操作,以及诱人的价格赶忙受到众多软件厂商和企业的青睐。
SQLServer的市场占有率不断增大,微软和Oracle、IBM又站在了同一起跑线上。
3年后,SQLServer2008在原有SQLServer2005的架构上做了进一步的更换。
除了继承SQLServer2005的优点以外,还提供了更多的新特性、新功能,使得SQLServer上升到新的高度。
1.1.2SQLServer2008的特点
SQLServer自从6.0版脱离Sybase架构后,每一个重大版本的公布都引入了新的特性和功能。
❑SQLServer7.0使用了全新的关系引擎和查询引擎设计,并领先在数据库治理系统中引入OLAP和ETL。
这标志着SQLServer进入商务智能(BI)领域。
❑SQLServer2000使得总体性能提高了47%,同时增加了其扩展性和对XML的支持。
另外SQLServer2000还领先引入了通知服务、数据挖掘、报表服务等。
❑SQLServer2005在性能上较SQLServer2000有了更进一步的提高。
在企业级数据治理平台方面的高可用性设计和全新的安全设计也专门引人注目。
在商务智能数据分析平台上,SQLServer2005增强了OLAP分析引擎、企业级的ETL和数据挖掘能力。
同时其还实现了与Office集成的报表工具。
另外在数据应用开发平台上,SQLServer2005实现了与.NET的集成、WebService集成、NativeXML支持以及ServiceBroker等。
❑SQLServer2008除了在SQLServer2005的基础上优化查询性能外,还提供了新的数据类型、支持地理空间数据库、增加T-SQL语法、改进了ETL和数据挖掘方面的能力。
因此,作为微软在数据库市场的主打产品SQLServer2005的升级版,SQLServer2008的特性不仅仅如此。
微软官方网站给出了SQLServer2008的关键功能列表,以供读者参考。
总体来说,SQLServer正朝着更高的性能,更可靠更安全的方向进展,并提供商务智能的集成,成为了集数据治理和分析于一体的企业级数据平台。
1.2SQLServer2008架构简介
本节要紧介绍SQLServer2008的系统架构、数据储备方式、读写方式以及SQL程序的运行方式。
读者只有对系统架构有了一个差不多的认识,才能对更好地学习和明白得SQLServer2008的相关知识。
1.2.1SQLServer2008系统架构
SQLServer2008功能模块众多,然而从总体来说能够将其分成两大模块:
数据库模块和商务智能模块。
数据库模块除了数据库引擎以外,还包括以数据库引擎为核心的ServiceBroker、复制、全文搜索等功能组件。
而商务智能模块由集成服务(IntegrationServices)、分析服务(AnalysisServices)和报表服务(ReportingServices)3大组件组成。
各组件之间的关系如图1.1所示。
图1.1SQLServer2008组件之间的关系
从图中能够看出,数据库引擎是整个SQLServer2008的核心所在,其他所有组件都与其有着密不可分的联系。
由于数据库引擎的重要性,笔者在此就要紧讲解一下数据库引擎的内部架构。
如图1.2显示了SQLServer2008的总体结构。
SQLServer数据库引擎有4大组件:
协议(Protocol)、关系引擎(RelationalEngine,查询处理器,即QueryCompilation和ExecutionEngine)、储备引擎(StorageEngine)和SQLOS。
任何客户端提交的SQL命令都要和这4个组件进行交互。
图1.2SQLServer2008架构
协议层同意客户端发送的要求并将其转换为关系引擎能够识别的形式。
同时它也能将查询结果、状态信息和错误信息等从关系引擎中猎取出来,然后将这些结果转换为客户端能够明白得的形式返回给客户端。
关系引擎负责处理协议层传来的SQL命令,对SQL命令进行解析、编译和优化。
假如关系引擎检测到SQL命令需要数据就会向储备引擎发送数据要求命令。
储备引擎在收到关系引擎的数据要求命令后负责数据的访问,包括事务、锁、文件和缓存的治理。
SQLOS层则被认为是数据库内部的操作系统,它负责缓冲池和内存治理、线程治理、死锁检测、同步单元和打算调度等。
1.2.2SQLServer2008的协议
当客户端向SQLServer发送SQL命令时,客户端发出的命令必须符合一定的通信格式规范才能被数据库系统识别,而那个规范确实是TDS(TabularDataStream)。
服务器和客户端上都有Net-Libraries,它能够将TDS信息包转换为标准的通信协议包。
SQLServer能够同时支持来自不同客户端的多种标准协议,其支持的协议有:
❑共享内存(SharedMemory)。
这是SQLServer默认开启的一个协议。
该协议简单,无须配置。
顾名思义,共享内存协议确实是通过客户端和服务端共享内存的方式来进行通信。
因此使用该协议的客户端必须和服务端在同一台机器上。
由于共享内存协议简单,协议效率高而且安全,因此假如客户端(比如IIS)和数据库是在同一台机器上,那么使用共享内存协议是一个不错的选择。
❑命名管道(NamedPipes)。
该协议是为局域网而开发的协议。
命名管道协议和Linux下的管道符号有点接近,一个进程使用一部分内存来向另一个进程传递信息,一个进程的输出是另一个进程的输入。
两个进程能够是同一台机器,也能够是局域网中的两台机器。
❑TCP/IP。
该协议是因特网上广为使用的协议。
该协议能够用于不同硬件、不同操作系统、不同地域的运算机之间通信。
由于TCP/IP协议没有共享内存协议和命名管道协议的限制,因此该协议在SQLServer上被大量使用。
❑虚拟接口适配器(VIA)。
该协议是一种和VIA硬件一起使用的专门化协议。
相关细节需要从硬件供应商处获得。
1.2.3SQLServer2008的查询
查询处理器由解析器、优化器、SQL治理器、数据库治理器和查询执行器组成。
它要紧负责SQL命令处理。
查询处理器是整个SQLServer中最为复杂的组件,其性能的好坏就决定了整个SQLServer数据处理能力的高低。
当一个SQL命令从协议层传输到查询处理器时,各模块的分工如下:
❑命令解析器第一接收到协议层传来的T-SQL语句。
命令解析器第一对T-SQL语法进行检查。
假如解析器无法正确识别语法,则直截了当抛出错误并标出错误的地点。
在语法检查通过后命令解析器会将SQL命令翻译成查询树,并将查询树传给查询优化器。
至此命令解析器的任务终止,而源SQL命令也将不再可用。
❑查询优化器负责查询树的执行优化并生成最终的执行打算。
查询优化器从命令解析器中获得查询树后,将不能优化的操纵流DDL命令等编译成一种内部格式,而能够优化的DML语句(如select、insert、update和delete)将由查询优化器进一步判定最佳的处理方式。
关于可优化语句,查询优化器先将每个查询进行规范化,然后基于成本选择成本最低的执行打算。
执行成本以内存使用量、CPU使用率和I/O数量为依据。
查询优化器会考虑语句的类型并检查受阻碍的各个表的数据量,查询每张表中可用的索引和统计信息来决定最优的执行打算。
在规范化和优化完成后,查询树会被编译成执行打算。
执行打算实际上是一种数据结构,其中包含了每个命令将会阻碍的表,会使用的索引,进行安全检查和必须判定为确实选择条件。
❑SQL治理器负责治理与储备过程(StorageProcess,简称SP)执行打算有关的一切事务。
SQL治理器会判定什么时候一个执行打算需要重新编译并治理储备过程缓存以便其他进程重用这些缓存。
另外,SQL治理器还负责治理查询的参数自动化,也确实是说SQL治理器能够从某些SQL命令中提取出参数,而将参数形式的SQL命令的执行打算缓存起来,从而提高SQL语句查询的效率。
❑数据库治理器治理查询编译和查询优化所需的对元数据的访问。
❑查询执行器运行查询优化器生成的执行打算。
该模块逐步运行执行打算中的每一个命令,治理其中的事务和锁,并将需要数据操作的执行打算传入储备引擎。
如图1.3所示为SQLServer2008的查询流程图。
图1.3查询过程
1.2.4SQLServer2008的数据操作
SQLServer2008的数据操作要紧由储备引擎来完成。
当查询处理器向储备引擎发出数据操作要求时,储备引擎会调用存取方法的代码向缓存治理器发出要求,缓存治理器负责从缓存中提供数据或者从硬盘上把数据读取到缓存中,下次再查询该数据时查询处理器就能够直截了当从缓存中读取数据,而不需要进行硬盘的I/O操作。
如图1.4形象地表示了数据的读取方式。
由于内存的访问速度远远高于硬盘的访问速度,这种缓存读取的方式尽量减少了硬盘的读写操作,从而大大提高了数据处理效率。
SQLServer在数据访问中的最小单位是页(Page)。
也确实是说,即使只需要查询一个字节的数据,SQLServer至少也要访问1个页来查找结果。
每个数据库差不多上由页组成的集合。
1个页的大小是8KB,而8个连续的页组成了1个区(Extent)。
SQLServer中使用了8种类型的页:
数据页、LOB(大数据类型)页、索引页、页面自由空间页(PFS)、全局分配图和共享全局分配图页(GAM和SGAM)、索引分配图(IAM)页、大批量修改图(BCM)页和增量修改图(DCM)页。
尽管每个页的大小是8KB,然而SQLServer中规定表中行(不包括可变长度数据类型的列)的最大长度是8060字节。
所有的用户数据都储存在数据页或大型数据页上,所有的索引行都储存在索引页上。
PFS页用来跟踪数据库中哪些页是空的,能够用来记录新数据。
分配页(GAM、SGAM和IAM)用来跟踪其他页面,不含任何用户数据同时只能在内部使用。
大批量修改图页和增量修改图页用来使数据库备份和复原效率更高。
如图1.4展现的是数据的读取方式,然而关于数据的写入,SQLServer的处理方式有一定的不同。
为了保证事务的原子性——一个事务要么全部做完,要么什么都不做,但数据库必须要实现事务的回滚。
假如一个事务要先修改A表然后修改B表,当事务修改完成A表刚要修改B表时系统发生了故障,那么该事务对A表的修改必须回滚到事务还没有开始前A表的状态。
先写日志技术使得事务回滚成为可能。
先写日志技术如图1.5所示,SQLServer是先将数据修改操作在日志文件中进行,直到事务提交时才将对日志中的修改同步到数据文件中。
若事务被回滚,只需要复原日志文件中的修改,数据文件并未修改过。
图1.4数据读取方式图1.5SQLServer先写日志技术
另外,为了提高SQLServer的性能,采纳了“懒写入”(LazyWrite)技术。
即对日志文件的修改和数据文件的修改差不多上在内存中的修改,SQLServer并可不能赶忙把修改写入硬盘。
懒写入技术使得对未写入硬盘的数据页的回滚成为可能。
除了一样的数据查询和数据写入操作外,储备引擎还要负责事务隔离级别的操纵、锁的操纵、批量装载、DBCC命令、备份和复原操作等功能。
这些功能将在接下来的章节进行详细的介绍。
1.3SQLServer2008的安装
通过前两节的学习,相信读者对SQLServer差不多有了一个初步的认识。
本节将要紧讲解SQLServer2008的安装,为以后SQLServer的使用做环境预备,并正式开始踏上SQLServer2008的学习之旅。
1.3.1SQLServer2008的版本选择
依照数据库应用环境的不同,SQLServer2008发行了不同的版本以满足不同的需求。
总地来说,SQLServer2008要紧包括4种要紧版本:
精简版(SQLServer2008ExpressEdition)、工作组版(SQLServer2008WorkgroupEdition)、标准版(SQLServer2008StandardEdition)和企业版(SQLServer2008EnterpriseEdition)。
每个版本的要紧特点如下所述。
1.精简版
免费的精简版与其前身MSDE相似,使用核心SQLServer数据库引擎。
但其缺少治理工具、高级服务(如AnalysisServices)及可用性功能(如故障转移)。
然而,精简版在一些关键方面对其前身进行了改进。
其中最值得一提的是微软排除了MSDE的“节流”限制——在数据库同时处理超过5个查询时性能下降。
精简版限于不超过1GB的内存,而且只能使用单颗处理器运行(而在MSDE能够访问两颗处理器和2GB内存)。
精简版的每个实例可支持高达4GB的数据库,而MSDE是2GB的限制。
精简版包含ReportingServices。
此版本仅能使用SQLServer关系数据库作为报表数据源同时那些数据库必须位于运行报表服务器的物理机器上。
此外,精简版不包含ReportBuilder功能。
%说明:
精简版是完全免费的。
若用户需要使用精简版SQLServer能够到微软官方网站下载。
2.工作组版
新的工作组版可用于专门多往常由SQLServer标准版提供服务的场合,但售价略低一些。
其硬件限制与MSDE相似——两颗处理器、至多3GB内存(MSDE支持2GB)——但数据库大小不限。
工作组版包含用于批量导入和导出数据的SQLServerIntegrationServices向导,但不支持数据转换功能。
它不包含AnalysisServices而包含ReportingServices,但限于储存在运行报表服务器的物理机器上的关系数据库。
与SQLServer先前的标准版和企业版相同,工作组版能够采纳每处理器或者服务器与“客户端访问许可证(CAL)”模型进行授权。
3.标准版
标准版对与之对应的SQLServer2000标准版进行了更新,保持四颗处理器的限制,但排除了2GB内存的上限。
有两种针对Itanium和X86X64处理器的版本,承诺服务器访问大量内存。
标准版包含IntegrationServices,带有企业版中可用的数据转换功能的子集。
例如,标准版包含诸如差不多字符串操作功能的数据转换,但不包含数据挖掘功能。
标准版还包括AnalysisServices和ReportingServices,但不具有在企业版中可用的高级可伸缩性和性能特性。
标准版中的ReportingServices能够使用关系及非关系数据源(如OLAP多维数据集),并能够使用不同SQLServer的数据库系统。
4.企业版
企业版位于产品系列的高端,排除了大部分可伸缩性限制。
其支持任意数量的处理器、任意数据库尺寸以及数据库分区。
企业版包含所有BI平台组件功能齐备的版本。
IntegrationServices包含所有的数据转换功能。
企业版中的AnalysisServices获得改进的性能和可伸缩性功能,如主动缓存、跨多个服务器对大型多维数据库进行分区的功能。
与标准版相同,企业版中的ReportingServices能够使用关系及非关系数据源,并能够使用不同于SQLServer的数据库系统。
它还得到高级可伸缩性功能,治理员能够配置ReportingServices群集。
其中,多个报表服务器共享单个报表服务器数据库。
如表1.2列出了各版本的SQLServer2008之间的差异,以方便读者查看。
表1.2各版本的SQLServer2008比较
精简版
工作组版
标准版
企业版
最大处理器颗数/RAM/数据库容量
1颗处理器、1GBRAM、4GB数据库
2颗处理器、3GBRAM、无限制的数据库
4颗处理器、无限制的RAM、数据库
无限制的处理器、RAM、数据库、分区
集成服务
无
导入/导出
核心ETL功能、受限数据转换
包含所有数据转换
分析服务
无
无
核心SSAS功能
核心SSAS功能、主动缓存、分区的多维数据集
报表服务
仅包含SQLServer关系数据库、
无ReportBuilder
仅包含SQLServer关系数据库、
无ReportBuilder
无限制的数据源、
ReportBuilder
无限制的数据源、
ReportBuilder、
外扩的报表服务器
另外微软还公布了开发者版(SQLServer2008DeveloperEdition)和180天评估版(SQLServer2008EvaluationEdition)等。
然而这些版本由于许可证限制,一样不用于生产服务器,因此在此不作比较。
除了使用在PC和服务器上的版本外,SQLServer2008还有一个移动版(CompactEdition)。
移动版是一个免费的嵌入式SQLServer数据库,能够用于创建移动设备
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Server 作为 一款 面向 企业级 应用 关系 数据库 产品