數(shù)據(jù)庫定義:
數(shù)據(jù)庫是依照某種數(shù)據(jù)模型組織起來并存在二級存儲器中的數(shù)據(jù)集合,此集合具有盡可能不重復,以最優(yōu)方式為特定組織提供多種應用服務,其數(shù)據(jù)結(jié)構(gòu)獨立于應用程序,對數(shù)據(jù)的CRUD操作進行統(tǒng)一管理和控制,數(shù)據(jù)庫是數(shù)據(jù)管理的高級階段,是在文件系統(tǒng)上發(fā)展起來的。
基本結(jié)構(gòu):
數(shù)據(jù)庫分三個層次:分別為物理數(shù)據(jù)層、概念數(shù)據(jù)層、邏輯數(shù)據(jù)層。
物理數(shù)據(jù)層:它是數(shù)據(jù)庫的最內(nèi)層,是物理存貯設備上實際存儲的數(shù)據(jù)的集合。這些數(shù)據(jù)是原始數(shù)據(jù),是用戶加工的對象,由內(nèi)部模式描述的指令操作處理的位串、字符和字組成。
概念數(shù)據(jù)層:它是數(shù)據(jù)庫的中間一層,是數(shù)據(jù)庫的整體邏輯表示。指出了每個數(shù)據(jù)的邏輯定義及數(shù)據(jù)間的邏輯聯(lián)系,是存貯記錄的集合。它所涉及的是數(shù)據(jù)庫所有對象的邏輯關(guān)系,而不是它們的物理情況,是數(shù)據(jù)庫管理員概念下的數(shù)據(jù)庫。
邏輯數(shù)據(jù)層:它是用戶所看到和使用的數(shù)據(jù)庫,表示了一個或一些特定用戶使用的數(shù)據(jù)集合,即邏輯記錄的集合。數(shù)據(jù)庫不同層次之間的聯(lián)系是通過映射進行轉(zhuǎn)換的。
數(shù)據(jù)庫特點:
⑴實現(xiàn)數(shù)據(jù)共享。
數(shù)據(jù)共享包含所有用戶可同時存取數(shù)據(jù)庫中的數(shù)據(jù),也包括用戶可以用各種方式通過接口使用數(shù)據(jù)庫,并提供數(shù)據(jù)共享。
⑵減少數(shù)據(jù)的冗余度。
同文件系統(tǒng)相比,由于數(shù)據(jù)庫實現(xiàn)了數(shù)據(jù)共享,從而避免了用戶各自建立應用文件。減少了大量重復數(shù)據(jù),減少了數(shù)據(jù)冗余,維護了數(shù)據(jù)的一致性。
⑶數(shù)據(jù)的獨立性。
數(shù)據(jù)的獨立性包括邏輯獨立性(數(shù)據(jù)庫中數(shù)據(jù)庫的邏輯結(jié)構(gòu)和應用程序相互獨立)和物理獨立性(數(shù)據(jù)物理結(jié)構(gòu)的變化不影響數(shù)據(jù)的邏輯結(jié)構(gòu))。
⑷數(shù)據(jù)實現(xiàn)集中控制。
文件管理方式中,數(shù)據(jù)處于一種分散的狀態(tài),不同的用戶或同一用戶在不同處理中其文件之間毫無關(guān)系。利用數(shù)據(jù)庫可對數(shù)據(jù)進行集中控制和管理,并通過數(shù)據(jù)模型表示各種數(shù)據(jù)的組織以及數(shù)據(jù)間的聯(lián)系。
⑸數(shù)據(jù)一致性和可維護性,以確保數(shù)據(jù)的安全性和可靠性。
主要包括:①安全性控制:以防止數(shù)據(jù)丟失、錯誤更新和越權(quán)使用;②完整性控制:保證數(shù)據(jù)的正確性、有效性和相容性;③并發(fā)控制:使在同一時間周期內(nèi),允許對數(shù)據(jù)實現(xiàn)多路存取,又能防止用戶之間的不正常交互作用。
⑹故障恢復。
由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時發(fā)現(xiàn)故障和修復故障,從而防止數(shù)據(jù)被破壞。數(shù)據(jù)庫系統(tǒng)能盡快恢復數(shù)據(jù)庫系統(tǒng)運行時出現(xiàn)的故障,可能是物理上或是邏輯上的錯誤。比如對系統(tǒng)的誤操作造成的數(shù)據(jù)錯誤等。
數(shù)據(jù)結(jié)構(gòu)模型
⑴數(shù)據(jù)結(jié)構(gòu)
所謂數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系。如果用D表示數(shù)據(jù),用R表示數(shù)據(jù)對象之間存在的關(guān)系集合,則將DS=(D,R)稱為數(shù)據(jù)結(jié)構(gòu)。例如,設有一個電話號碼簿,它記錄了n個人的名字和相應的電話號碼。為了方便地查找某人的電話號碼,將人名和號碼按字典順序排列,并在名字的后面跟隨著對應的電話號碼。這樣,若要查找某人的電話號碼(假定他的名字的第一個字母是Y),那么只須查找以Y開頭的那些名字就可以了。該例中,數(shù)據(jù)的集合D就是人名和電話號碼,它們之間的聯(lián)系R就是按字典順序的排列,其相應的數(shù)據(jù)結(jié)構(gòu)就是DS=(D,R),即一個數(shù)組。
⑵數(shù)據(jù)結(jié)構(gòu)種類
數(shù)據(jù)結(jié)構(gòu)又分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯的角度(即數(shù)據(jù)間的聯(lián)系和組織方式)來觀察數(shù)據(jù),分析數(shù)據(jù),與數(shù)據(jù)的存儲位置無關(guān)。數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計算機中存放的結(jié)構(gòu),即數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的實現(xiàn)形式,所以物理結(jié)構(gòu)也被稱為存儲結(jié)構(gòu)。這里只研究數(shù)據(jù)的邏輯結(jié)構(gòu),并將反映和實現(xiàn)數(shù)據(jù)聯(lián)系的方法稱為數(shù)據(jù)模型。
比較流行的數(shù)據(jù)模型有三種,即按圖論理論建立的層次結(jié)構(gòu)模型和網(wǎng)狀結(jié)構(gòu)模型以及按關(guān)系理論建立的關(guān)系結(jié)構(gòu)模型
2.層次、網(wǎng)狀和
關(guān)系數(shù)據(jù)庫系統(tǒng)
⑴
層次結(jié)構(gòu)
模型
層次結(jié)構(gòu)模型實質(zhì)上是一種有根結(jié)點的定向有序樹(在數(shù)學中"樹"被定義為一個無回的連通圖)。下圖是一個高等學校的組織結(jié)構(gòu)圖。這個組織結(jié)構(gòu)圖像一棵樹,校部就是樹根(稱為根結(jié)點),各系、專業(yè)、教師、學生等為枝點(稱為結(jié)點),樹根與枝點之間的聯(lián)系稱為邊,樹根與邊之比為1:N,即樹根只有一個,樹枝有N個。
按照層次模型建立的數(shù)據(jù)庫系統(tǒng)稱為層次模型數(shù)據(jù)庫系統(tǒng)。IMS(Information Manage-mentSystem)是其典型代表。
⑵網(wǎng)狀結(jié)構(gòu)模型
按照網(wǎng)狀數(shù)據(jù)結(jié)構(gòu)建立的數(shù)據(jù)庫系統(tǒng)稱為網(wǎng)狀數(shù)據(jù)庫系統(tǒng),其典型代表是DBTG(Data Base Task Group)。用數(shù)學方法可將網(wǎng)狀數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為層次數(shù)據(jù)結(jié)構(gòu)。
⑶關(guān)系結(jié)構(gòu)模型
關(guān)系式數(shù)據(jù)結(jié)構(gòu)把一些復雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式)。例如某單位的職工關(guān)系就是一個二元關(guān)系。
數(shù)據(jù)庫類型包括Oracle,MS Sql,Mysql,Nosql,Sybase,Infomix,DB2,VF,Access等數(shù)據(jù)庫類型,
一個數(shù)據(jù)庫系統(tǒng)的生命周期可以分成:設計、開發(fā)和成品三個階段。在設計階段進行數(shù)據(jù)庫性能優(yōu)化的成本最低,收益最大。在成品階段進行數(shù)據(jù)庫性能優(yōu)化的成本最高,收益最小。
數(shù)據(jù)庫的優(yōu)化通常可以通過對網(wǎng)絡、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)和應用程序的優(yōu)化來進行。最常見的優(yōu)化手段就是對硬件的升級。根據(jù)統(tǒng)計,對網(wǎng)絡、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進行優(yōu)化所獲得的性能提升,全部加起來只占數(shù)據(jù)庫系統(tǒng)性能提升的40%左右,其余的60%系統(tǒng)性能提升來自對應用程序的優(yōu)化。許多優(yōu)化專家認為,對應用程序的優(yōu)化可以得到80%的系統(tǒng)性能的提升。
本系列我們將針對MS SQL數(shù)據(jù)庫做一些優(yōu)化方面的實踐:
?