官术网_书友最值得收藏!

3.3 SQL Server 2016體系結(jié)構(gòu)和文件

對于通常的數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)和模式結(jié)構(gòu)在第1章中已介紹過,在此主要概述數(shù)據(jù)庫管理系統(tǒng)SQL Server 2016的體系結(jié)構(gòu)、模式結(jié)構(gòu)、組成結(jié)構(gòu)和文件種類及特點(diǎn)等。

3.3.1 SQL Server 2016的體系結(jié)構(gòu)

1.客戶機(jī)/服務(wù)器體系結(jié)構(gòu)

SQL Server 2016的客戶機(jī)/服務(wù)器(C/S)體系結(jié)構(gòu)主要體現(xiàn)在:由客戶機(jī)負(fù)責(zé)與用戶的交互和數(shù)據(jù)顯示,服務(wù)器負(fù)責(zé)數(shù)據(jù)的存取、調(diào)用和管理,客戶機(jī)向服務(wù)器發(fā)出各種操作請求(語句命令或界面菜單操作指令),服務(wù)器驗(yàn)證權(quán)限后根據(jù)用戶請求處理數(shù)據(jù),并將結(jié)果返回客戶機(jī),如圖3-1所示。

2.?dāng)?shù)據(jù)庫的三級模式結(jié)構(gòu)

SQL Server 2016支持?jǐn)?shù)據(jù)庫共有的三級模式結(jié)構(gòu),其中外模式對應(yīng)視圖,模式對應(yīng)基本表,內(nèi)模式對應(yīng)存儲文件,如圖3-2所示。

圖3-1 SQL客戶機(jī)/服務(wù)器結(jié)構(gòu)

圖3-2 SQL的三級模式結(jié)構(gòu)

(1)基本表

基本表(Base Table)也稱基表,是實(shí)際存儲在數(shù)據(jù)庫中的數(shù)據(jù)表,是獨(dú)立存在的,并非由其他表導(dǎo)出的表。一個基本表對應(yīng)一個實(shí)際存在的關(guān)系。關(guān)系模型中的數(shù)據(jù)(記錄)為基本表的行,屬性為列。

(2)視圖

視圖(View)是查看數(shù)據(jù)的一種方式,是從表或其他視圖導(dǎo)出的數(shù)據(jù)并按需要做成的虛表(如網(wǎng)頁中的圖書,只是其局部信息)。視圖只在剛剛打開的一瞬間,通過定義從對應(yīng)的基本表中搜集并調(diào)用數(shù)據(jù),展現(xiàn)給用戶的是數(shù)據(jù)庫外模式(可見的部分?jǐn)?shù)據(jù)形式)。用戶可以通過視圖(如網(wǎng)頁)調(diào)用數(shù)據(jù)庫中對應(yīng)基本表的數(shù)據(jù)。視圖以一種邏輯定義形式保存在數(shù)據(jù)字典中。當(dāng)基本表中的數(shù)據(jù)發(fā)生變化時,從視圖中查詢的數(shù)據(jù)也將相應(yīng)地發(fā)生改變。在第5章中將對視圖進(jìn)行具體介紹。

視圖和基本表的主要區(qū)別如下。

1)視圖是已經(jīng)編譯好的SQL語句,而基本表不是。

2)視圖沒有實(shí)際的物理記錄,而基本表有具體數(shù)據(jù)(記錄)。

3)基本表是具體的數(shù)據(jù)結(jié)構(gòu)及內(nèi)容,視圖是可見的窗口。

4)基本表占用物理(存儲)空間而視圖不占用,視圖只以邏輯概念(定義)存在;基本表可以及時進(jìn)行修改,視圖只能用創(chuàng)建的語句修改。

5)基本表是內(nèi)模式(存儲在計(jì)算機(jī)中),視圖是外模式。

6)視圖是查看數(shù)據(jù)表的一種方法,可以查詢數(shù)據(jù)表中某些字段構(gòu)成的數(shù)據(jù),只是一些SQL語句的集合。從安全的角度來說,視圖可以避免用戶接觸數(shù)據(jù)表,從而不知道表結(jié)構(gòu)。

7)基本表屬于全局模式中的表(結(jié)構(gòu)及數(shù)據(jù)),是實(shí)表;視圖屬于局部模式的表(部分?jǐn)?shù)據(jù)),是虛表。

8)視圖的建立和刪除只影響視圖本身,不影響對應(yīng)的基本表。

(3)存儲文件

存儲文件是數(shù)據(jù)庫內(nèi)模式(內(nèi)部存儲方式及邏輯結(jié)構(gòu))的基本單位,其邏輯結(jié)構(gòu)構(gòu)成了關(guān)系數(shù)據(jù)庫的內(nèi)模式。物理結(jié)構(gòu)(如存取路徑及索引)可由需要而定。存儲文件的存儲結(jié)構(gòu)對用戶很明確,各存儲文件與外存設(shè)備上的物理文件對應(yīng)。基本表和存儲文件的關(guān)系如下。

1)每個基本表可以對應(yīng)一個或幾個存儲文件(如索引文件)。

2)每個存儲文件可以存放一個或幾個基本表。

3)每個基本表可以有多個索引,索引存放在存儲文件中。

(4)SQL用戶

SQL用戶主要是指利用終端對數(shù)據(jù)庫系統(tǒng)及應(yīng)用程序進(jìn)行操作的操作者,包括終端用戶、數(shù)據(jù)庫管理員和數(shù)據(jù)庫應(yīng)用程序員。通常,各種用戶可以利用SQL依其具體使用權(quán)限,通過網(wǎng)絡(luò)應(yīng)用系統(tǒng)的界面對視圖和基本表進(jìn)行業(yè)務(wù)數(shù)據(jù)的操作如網(wǎng)上購物、網(wǎng)銀操作等。

3.SQL Server 2016的組成結(jié)構(gòu)

(1)SQL Server總體結(jié)構(gòu)和組件

SQL Server 2016的組件主要包括:數(shù)據(jù)庫引擎(Database Engine)、分析服務(wù)(Analysis Services)、集成服務(wù)(Integration Services)、報表服務(wù)(Reporting Services),以及主數(shù)據(jù)服務(wù)(Master Data Services)組件等。SQL Server 2016各組件的組成結(jié)構(gòu)如圖3-3所示。

用于操作、管理和控制的數(shù)據(jù)庫引擎是整個系統(tǒng)的主要核心,其他所有組件都與其有著密不可分的聯(lián)系。SQL Server數(shù)據(jù)庫引擎有四大組件:協(xié)議(Protocol)、查詢引擎(Query Compilation and Execution Engine)、存儲引擎(Storage Engine)和SQLOS(User Mode Operating System)。各客戶端提交的操作指令都與這4個組件交互。SQL Server 2016主要組件間的關(guān)系如圖3-4所示。

圖3-3 SQL Server 2016的組成結(jié)構(gòu)

圖3-4 SQL Server各組件間的關(guān)系

SQL Server 2016中,常用的五大服務(wù)器組件及其對應(yīng)的主要功能如表3-3所示。

表3-3 SQL Server 2016服務(wù)器組件

SQL Server 2016的服務(wù)器組件及功能主要如下。

1)數(shù)據(jù)庫引擎(Database Engine,DE)。是系統(tǒng)的最核心的組件,主要用于業(yè)務(wù)數(shù)據(jù)的存儲、處理、查詢和安全管理等操作。包括創(chuàng)建數(shù)據(jù)庫和表、執(zhí)行各種數(shù)據(jù)查詢,以及訪問數(shù)據(jù)庫等,常用于調(diào)用數(shù)據(jù)庫系統(tǒng)及有關(guān)操作。

2)分析服務(wù)(Analysis Services,AS)。具有提供商務(wù)智能解決方案,以及多維分析(也稱為聯(lián)機(jī)分析處理OLAP)和數(shù)據(jù)挖掘功能,支持用戶建立數(shù)據(jù)倉庫和商業(yè)智能分析。由數(shù)據(jù)庫引擎負(fù)責(zé)多維分析,利用AS服務(wù),設(shè)計(jì)、創(chuàng)建和管理包含其他數(shù)據(jù)源數(shù)據(jù)的多維結(jié)構(gòu),通過對多維數(shù)據(jù)多角度分析,可支持對業(yè)務(wù)數(shù)據(jù)的更全面的理解。還可完成數(shù)據(jù)挖掘模型的構(gòu)造和應(yīng)用,實(shí)現(xiàn)知識發(fā)現(xiàn)、表示、管理和共享。

3)報表服務(wù)(Reporting Services,RS)。利用提供基于服務(wù)器的報表平臺,為各種數(shù)據(jù)源提供支持Web的企業(yè)級的報表功能。用戶可方便地定義和發(fā)布滿足需求的報表,可輕松實(shí)現(xiàn)報表的布局格式及數(shù)據(jù)源,可極大地方便用戶高效規(guī)范的管理需求。例如,在航空公司的機(jī)票銷售信息系統(tǒng)中,用SQL Server提供的RS服務(wù)可方便地生成Word、PDF、Excel和XML等格式的報表。

4)集成服務(wù)(Integration Services,IS)。是用于生成企業(yè)級數(shù)據(jù)集成和數(shù)據(jù)轉(zhuǎn)換解決方案的平臺,是從原來的數(shù)據(jù)轉(zhuǎn)換服務(wù)派生并重新以.NET改寫而成的。可實(shí)現(xiàn)有關(guān)數(shù)據(jù)的提取、轉(zhuǎn)換和加載等。例如,對于分析服務(wù),數(shù)據(jù)庫引擎是一個重要的數(shù)據(jù)源,將其中的數(shù)據(jù)適當(dāng)處理加載到分析服務(wù)中可進(jìn)行各種分析處理。IS服務(wù)可高效地處理各種類型的數(shù)據(jù)源,包括處理Oracle、Excel、XML文檔和文本文件等數(shù)據(jù)源中的數(shù)據(jù)。

5)主數(shù)據(jù)服務(wù)(Master Data Services,MDS)。針對主數(shù)據(jù)管理解決方案,可配置其管理任何領(lǐng)域(產(chǎn)品、客戶和賬戶),可包括層次結(jié)構(gòu)、各種級別的安全性、事務(wù)、數(shù)據(jù)版本控制和業(yè)務(wù)規(guī)則,也可用于管理數(shù)據(jù)的處理Excel的外接程序。包括復(fù)制服務(wù)、服務(wù)代理、通知服務(wù)和全文檢索服務(wù)等功能組件,共同構(gòu)成完整的服務(wù)架構(gòu)。

(2)SQL Server 2016主要管理工具

在實(shí)際應(yīng)用中,經(jīng)常使用SQL Server 2016的管理工具,其主要管理工具如表3-4所示。

表3-4 SQL Server 2016主要管理工具

4.?dāng)?shù)據(jù)庫存儲結(jié)構(gòu)及文件種類

(1)數(shù)據(jù)庫的存儲結(jié)構(gòu)

數(shù)據(jù)庫的存儲結(jié)構(gòu)包括兩種:數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。

1)數(shù)據(jù)庫的邏輯結(jié)構(gòu)。表示數(shù)據(jù)庫中各數(shù)據(jù)之間的邏輯關(guān)系,數(shù)據(jù)庫由多個用戶界面可視對象構(gòu)成,主要包括數(shù)據(jù)庫對象,如數(shù)據(jù)表、視圖、約束、規(guī)則、默認(rèn)和索引等。

2)數(shù)據(jù)庫的物理結(jié)構(gòu)。數(shù)據(jù)庫中數(shù)據(jù)的存儲方式和方法(存儲如路徑及索引方式),主要描述數(shù)據(jù)存儲的實(shí)際位置,對應(yīng)一系列的物理文件,一個數(shù)據(jù)庫由一個或多個文件組成。

(2)數(shù)據(jù)庫文件

常用的數(shù)據(jù)庫文件主要有3種,包括主數(shù)據(jù)文件、次要數(shù)據(jù)文件和事務(wù)日志文件。

1)主數(shù)據(jù)文件。數(shù)據(jù)庫的起點(diǎn),指向數(shù)據(jù)庫中文件的其他部分,記錄數(shù)據(jù)庫所擁有的文件指針。每個數(shù)據(jù)庫有且只有一個主數(shù)據(jù)文件,默認(rèn)擴(kuò)展名為mdf。

2)次要數(shù)據(jù)文件。也稱為輔助數(shù)據(jù)文件,包含除主要數(shù)據(jù)文件外的所有數(shù)據(jù)文件。有些數(shù)據(jù)庫可能無次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫可能有多個,不是數(shù)據(jù)庫所必需的文件,默認(rèn)擴(kuò)展名是ndf。

3)事務(wù)日志文件。簡稱日志文件,是包含用于恢復(fù)數(shù)據(jù)庫所需的所有操作日志信息的文件。每個數(shù)據(jù)庫必須至少有一個日志文件,默認(rèn)擴(kuò)展名是ldf。

建議使用這些擴(kuò)展名,這樣有助于標(biāo)識文件的用途,但SQL Serve不強(qiáng)制使用mdf、ndf和ldf文件擴(kuò)展名。一個數(shù)據(jù)庫文件組織的案例如圖3-5所示。

圖3-5 數(shù)據(jù)庫文件組織案例

(3)數(shù)據(jù)庫文件組

為了便于管理和分配數(shù)據(jù),SQL Server將多個數(shù)據(jù)庫文件組成一個組。數(shù)據(jù)庫文件組是數(shù)據(jù)文件的邏輯組合,主要包括以下3類。

1)主文件組。包含主數(shù)據(jù)文件和未指明組的其他文件。如在創(chuàng)建數(shù)據(jù)庫時,未指定其他數(shù)據(jù)文件所屬的文件組。數(shù)據(jù)庫的所有系統(tǒng)表都被分配到(包含在)主文件組中。當(dāng)主文件組的存儲空間用完之后,將無法向系統(tǒng)表中添加新的目錄信息,一個數(shù)據(jù)庫有一個主文件組。

2)次文件組:也稱用戶自定義文件組,是由用戶首次創(chuàng)建或修改數(shù)據(jù)庫時自定義的,其目的在于數(shù)據(jù)分配,以提高數(shù)據(jù)表的讀寫效率。

3)默認(rèn)文件組。各數(shù)據(jù)庫都有一個被指定的默認(rèn)文件組。若在數(shù)據(jù)庫中創(chuàng)建對象時沒有指定其所屬的文件組,則將被分配給默認(rèn)文件組。

數(shù)據(jù)庫文件和文件組遵循的規(guī)則為:一個文件或文件組只能被一個數(shù)據(jù)庫使用;一個文件只能屬于一個文件組;日志文件不能屬于文件組。

注意:為了提高使用效率,使用數(shù)據(jù)文件和文件組時應(yīng)注意以下幾點(diǎn)。

1)在創(chuàng)建數(shù)據(jù)庫時,需要考慮數(shù)據(jù)文件可能會出現(xiàn)自動增長的情況,應(yīng)當(dāng)設(shè)置上限,以免占滿磁盤。

2)主文件組可以容納各系統(tǒng)表。當(dāng)容量不足時,以后更新的數(shù)據(jù)可能無法添加到系統(tǒng)表中,數(shù)據(jù)庫也可能無法進(jìn)行追加或修改等操作。

3)建議將頻繁查詢或頻繁修改的文件分放在不同的文件組中。

4)將索引、大型的文本文件和圖像文件放到專門的文件組中。

3.3.2 數(shù)據(jù)庫的種類及文件

1.SQL Server數(shù)據(jù)庫的種類和特點(diǎn)

數(shù)據(jù)庫對象是指數(shù)據(jù)庫中的數(shù)據(jù)在邏輯上被組成一系列對象(數(shù)據(jù)庫的組成部分),當(dāng)一個用戶連接到數(shù)據(jù)庫后,所看到的是邏輯對象,而不是物理的數(shù)據(jù)庫文件。如在“對象資源管理器”中可以查看的(數(shù)據(jù))表、索引和視圖等。數(shù)據(jù)庫對象的類型如圖3-6所示。

圖3-6 數(shù)據(jù)庫對象的類型

數(shù)據(jù)庫是存放各種對象(表、視圖、約束、規(guī)則和索引等)的邏輯實(shí)體。邏輯上表現(xiàn)(界面中看到的)為數(shù)據(jù)庫對象,物理上表現(xiàn)為數(shù)據(jù)庫文件(主數(shù)據(jù)文件、次要數(shù)據(jù)文件或事務(wù)日志文件)。

SQL Server數(shù)據(jù)庫的種類分為3種:系統(tǒng)數(shù)據(jù)庫、用戶數(shù)據(jù)庫和示例數(shù)據(jù)庫。

(1)系統(tǒng)數(shù)據(jù)庫

系統(tǒng)數(shù)據(jù)庫是存儲SQL Server系統(tǒng)的系統(tǒng)級信息數(shù)據(jù)庫,如系統(tǒng)配置、數(shù)據(jù)庫的屬性、登錄賬戶、數(shù)據(jù)庫文件、數(shù)據(jù)庫備份、警報和作業(yè)等信息。SQL Server 2016在安裝時創(chuàng)建了5種系統(tǒng)數(shù)據(jù)庫:Master數(shù)據(jù)庫、MSDB數(shù)據(jù)庫、Model數(shù)據(jù)庫、Resource數(shù)據(jù)庫和TempDB數(shù)據(jù)庫,具體如表3-5所示。

表3-5 SQL Server的系統(tǒng)數(shù)據(jù)庫

1)Master數(shù)據(jù)庫。為SQL Server系統(tǒng)最重要的數(shù)據(jù)庫,主要存儲所有的系統(tǒng)信息。包括登錄信息、系統(tǒng)配置信息、SQL Server的初始化信息、其他系統(tǒng)數(shù)據(jù)庫及用戶數(shù)據(jù)庫的相關(guān)信息。含有數(shù)據(jù)庫所用的磁盤空間、文件分配、空間使用率、系統(tǒng)級的配置設(shè)置、登錄賬戶密碼和存儲位置等。需要定期備份,不可人為修改。

2)Model數(shù)據(jù)庫。是建立和存儲新數(shù)據(jù)庫結(jié)構(gòu)特點(diǎn)的模板,對其修改可用于以后創(chuàng)建相同或相似結(jié)構(gòu)特點(diǎn)的新數(shù)據(jù)庫,還可對數(shù)據(jù)庫進(jìn)行局部更新或修改。如數(shù)據(jù)庫大小、排序規(guī)則、恢復(fù)模式和其他選項(xiàng)等。新建數(shù)據(jù)庫時,可利用模板構(gòu)成新數(shù)據(jù)庫結(jié)構(gòu)的基礎(chǔ),將后面初始化為空,以備存放數(shù)據(jù),同時將系統(tǒng)表復(fù)制到新建數(shù)據(jù)庫。禁止刪除此模板數(shù)據(jù)庫,以免SQL Server無法使用。

3)MSDB數(shù)據(jù)庫。代理服務(wù)數(shù)據(jù)庫,是SQL Server Agent服務(wù)所使用的數(shù)據(jù)庫,用于提供任務(wù)調(diào)度、管理報警和記錄操作員的操作等存儲空間。主要執(zhí)行一些事先安排好的任務(wù),常用于復(fù)制、作業(yè)調(diào)度和管理報警等。若不用,可忽略此數(shù)據(jù)庫。

4)Resource數(shù)據(jù)庫。只讀數(shù)據(jù)庫,用于保存數(shù)據(jù)庫系統(tǒng)對象,如表、視圖等。支持升級到新版本所需的系統(tǒng)對象。包含SQL Server 2016系統(tǒng)對象,在物理上保存在Resource數(shù)據(jù)庫中,而在邏輯上出現(xiàn)在各數(shù)據(jù)庫的SYS架構(gòu)中。

5)TempDB數(shù)據(jù)庫。臨時數(shù)據(jù)庫,用于為所有的臨時表、臨時存儲過程及其他臨時操作提供存儲空間,每當(dāng)SQL Server重新啟動后刷新。

系統(tǒng)數(shù)據(jù)庫及數(shù)據(jù)庫對象、數(shù)據(jù)表和記錄的位置如圖3-7所示。

圖3-7 系統(tǒng)數(shù)據(jù)庫及數(shù)據(jù)庫對象等的位置

(2)用戶數(shù)據(jù)庫

用戶數(shù)據(jù)庫是指由用戶建立并使用的數(shù)據(jù)庫,用于存儲用戶使用的數(shù)據(jù)信息。

用戶數(shù)據(jù)庫由用戶建立,且由永久存儲表和索引等數(shù)據(jù)庫對象的磁盤空間構(gòu)成,空間被分配在操作系統(tǒng)文件上。系統(tǒng)數(shù)據(jù)庫與用戶數(shù)據(jù)庫結(jié)構(gòu)如圖3-8所示。用戶數(shù)據(jù)庫和系統(tǒng)數(shù)據(jù)庫一樣,也被劃分成許多邏輯頁,通過指定數(shù)據(jù)庫ID、文件ID和頁號,可引用任何一頁。當(dāng)擴(kuò)大文件時,新空間被追加到文件末尾。

(3)示例數(shù)據(jù)庫

示例數(shù)據(jù)庫是一種實(shí)用的學(xué)習(xí)數(shù)據(jù)庫的范例,安裝SQL Server 2016時,在默認(rèn)情況下不能自動安裝,需要單獨(dú)安裝和設(shè)置。

2.?dāng)?shù)據(jù)庫邏輯組件

數(shù)據(jù)庫(空間)的存儲(安排),實(shí)際上是按物理方式在磁盤上以多個文件方式進(jìn)行實(shí)現(xiàn)的。用戶使用數(shù)據(jù)庫時調(diào)用的主要是邏輯組件,如圖3-9所示。

通常,每個SQL Server實(shí)例包括4個系統(tǒng)數(shù)據(jù)庫(Master、Model、Tempdb和MSDB),以及用戶數(shù)據(jù)庫。

圖3-8 系統(tǒng)數(shù)據(jù)庫與用戶數(shù)據(jù)庫結(jié)構(gòu)

圖3-9 使用數(shù)據(jù)庫時調(diào)用的邏輯組件

討論思考:

1)請解釋SQL Server 2016的體系結(jié)構(gòu)。

2)數(shù)據(jù)庫文件的種類具體有哪些?

3)SQL Server數(shù)據(jù)庫和系統(tǒng)數(shù)據(jù)庫有哪幾種?

主站蜘蛛池模板: 青冈县| 波密县| 迁西县| 邯郸市| 英超| 惠来县| 砀山县| 理塘县| 凉城县| 邵阳县| 平乡县| 禹城市| 昭通市| 嵊泗县| 黎平县| 依安县| 沐川县| 邮箱| 启东市| 嘉禾县| 丁青县| 右玉县| 贡嘎县| 巴马| 砀山县| 平湖市| 柘荣县| 凤山县| 秦安县| 桃园市| 城市| 中西区| 乡宁县| 盘锦市| 兴安盟| 汉源县| 和田县| 德昌县| 泌阳县| 博兴县| 肇东市|