数据库杂谈(一)——数据库基本概念
文章目錄
- 1 數(shù)據(jù)庫(kù)基本概念
- 1.1數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)
- 1.2 數(shù)據(jù)庫(kù)系統(tǒng)和文件系統(tǒng)
- 1.3 數(shù)據(jù)模型
- 1.4 數(shù)據(jù)庫(kù)三級(jí)模式和兩級(jí)獨(dú)立性
- 1.4.1 三級(jí)模式
- 1.4.2 二級(jí)映像功能
- 1.4.3 數(shù)據(jù)獨(dú)立性
- 1.5 數(shù)據(jù)庫(kù)發(fā)展歷史及分類(lèi)
- 1.6 數(shù)據(jù)庫(kù)系統(tǒng)的組成和生命周期
- 1.6.1 三個(gè)概念
- 1.6.2 生命周期
- 1.6.3 存儲(chǔ)管理器
- 1.7 數(shù)據(jù)庫(kù)用戶和管理員
1 數(shù)據(jù)庫(kù)基本概念
1.1數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)庫(kù)管理系統(tǒng):由一個(gè)互相關(guān)聯(lián)的數(shù)據(jù)的集合和一組用以訪問(wèn)這些數(shù)據(jù)的程序組成,這個(gè)數(shù)據(jù)集合一般叫做數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System)是一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫(kù),簡(jiǎn)稱DBMS。它對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。用戶通過(guò)DBMS訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),數(shù)據(jù)庫(kù)管理員也通過(guò)DBMS進(jìn)行數(shù)據(jù)庫(kù)的維護(hù)工作。它可以支持多個(gè)應(yīng)用程序和用戶用不同的方法在同時(shí)或不同時(shí)刻去建立,修改和詢問(wèn)數(shù)據(jù)庫(kù)。大部分DBMS提供數(shù)據(jù)定義語(yǔ)言DDL(Data Definition Language)和數(shù)據(jù)操作語(yǔ)言DML(Data Manipulation Language),供用戶定義數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對(duì)數(shù)據(jù)的追加、刪除等操作。
數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)是“按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)”。是一個(gè)長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合。
從數(shù)據(jù)庫(kù)管理系統(tǒng)的定義可知,數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)管理系統(tǒng)的子集。
1.2 數(shù)據(jù)庫(kù)系統(tǒng)和文件系統(tǒng)
設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)的目的是為了管理大量信息。那為什么我們有文件系統(tǒng)了,可以放數(shù)據(jù)了,為啥還要用到數(shù)據(jù)庫(kù)呢?這就要討論它們的區(qū)別了。
在早期的計(jì)算機(jī)中,保存信息的方法是將它們保存在操作系統(tǒng)文件中。為了使用戶可以對(duì)信息進(jìn)行操作,系統(tǒng)中應(yīng)該有一些對(duì)文件進(jìn)行操作的應(yīng)用程序。這個(gè)談到的應(yīng)用程序不是我們說(shuō)的QQ啊,網(wǎng)易云啊這種程序,而是針對(duì)某種功能設(shè)計(jì)的特殊程序。比如大學(xué)學(xué)生管理系統(tǒng)中增加新的學(xué)生、教師和課程;為課程注冊(cè)學(xué)生,并產(chǎn)生班級(jí)花名冊(cè)。這些應(yīng)用程序都是由系統(tǒng)程序員根據(jù)大學(xué)的需求編寫(xiě)的。
也就是說(shuō),當(dāng)我們追求越完美的學(xué)生管理系統(tǒng),所需要的文件和應(yīng)用程序可能就越來(lái)越多。而這似乎有一些弊端。
文件和數(shù)據(jù)庫(kù)的區(qū)別(這里我們講的是在應(yīng)用開(kāi)發(fā)上的區(qū)別)
其實(shí)文件和數(shù)據(jù)庫(kù)我們都可以用來(lái)存數(shù)據(jù),但是文件是操作系統(tǒng)提供的一個(gè)最簡(jiǎn)單最基本的一個(gè)存取數(shù)據(jù)的機(jī)制;在操作系統(tǒng)里,數(shù)據(jù)在文件里沒(méi)有結(jié)構(gòu),而是一串平滑的字符流。所以,文件系統(tǒng)明顯地有下列5個(gè)缺點(diǎn):
- 數(shù)據(jù)訪問(wèn)困難;編寫(xiě)應(yīng)用程序很不方便。由于操作系統(tǒng)只提供打開(kāi)、關(guān)閉、讀、寫(xiě)等幾個(gè)低級(jí)的文件操作系統(tǒng),對(duì)文件的查詢、修改等處理都必須在應(yīng)用程序解決。
- 數(shù)據(jù)冗余不一致;文件的設(shè)計(jì)很難滿足多種應(yīng)用程序的不同要求,數(shù)據(jù)冗余往往是不可避免的 。相同的信息可能在幾個(gè)地方重復(fù)存儲(chǔ),比如一個(gè)學(xué)生是學(xué)數(shù)學(xué)和音樂(lè)的,數(shù)學(xué)課的文件上面有他的名字和學(xué)號(hào),音樂(lè)課上面也有;這樣的話如果該學(xué)生學(xué)號(hào)改變,兩個(gè)文件都要改,假如一個(gè)地方?jīng)]改,就會(huì)造成數(shù)據(jù)不一致。
- 維護(hù)艱難;對(duì)文件結(jié)構(gòu)的每個(gè)修改將導(dǎo)致應(yīng)用程序的修改,應(yīng)用程序的維護(hù)工作量很大。
- 并發(fā)訪問(wèn)異常;文件系統(tǒng)一般不支持對(duì)文件的并發(fā)訪問(wèn)。
- 數(shù)據(jù)孤立;由于數(shù)據(jù)缺少同一管理,在數(shù)據(jù)的結(jié)構(gòu)、編碼、表示格式、命名以及輸出格式等方面不容易做到規(guī)范化、標(biāo)準(zhǔn)化;在數(shù)據(jù)的安全和保密方面,也難以采取有效的措施。
- 原子性問(wèn)題;傳統(tǒng)的文件處理系統(tǒng)中,保持原子性很難做到。比如兩個(gè)發(fā)生銀行的轉(zhuǎn)賬,兩個(gè)賬戶的文件都要同時(shí)修改,也就是說(shuō),轉(zhuǎn)賬這個(gè)操作必須是原子的——要么不發(fā)生要么全發(fā)生,而這個(gè)是傳統(tǒng)的文件系統(tǒng)很難做到的。
也就是說(shuō),我們使用數(shù)據(jù)庫(kù)管理系統(tǒng)的優(yōu)點(diǎn)即為文件系統(tǒng)的缺點(diǎn)。
數(shù)據(jù)庫(kù)管理系統(tǒng)的好處
- 數(shù)據(jù)獨(dú)立性和有效訪問(wèn)。
- 減少應(yīng)用開(kāi)發(fā)時(shí)間。
- 數(shù)據(jù)完整性和安全性。
- 對(duì)數(shù)據(jù)庫(kù)的統(tǒng)一管理。
- 故障恢復(fù)。
1.3 數(shù)據(jù)模型
在講解這一部分之前,我們需要對(duì)幾個(gè)概念有些許了解。
數(shù)據(jù):就是描述現(xiàn)實(shí)世界的符號(hào),他是信息存在的形式。
數(shù)據(jù)模型:數(shù)據(jù)模型就是來(lái)描述數(shù)據(jù)的一組概念和定義;也可以理解為數(shù)據(jù)結(jié)構(gòu),實(shí)際上就是描述現(xiàn)實(shí)世界的方法。
數(shù)據(jù)模式:用一個(gè)給定的數(shù)據(jù)模型對(duì)一個(gè)具體數(shù)據(jù)的描述
實(shí)際上,如果學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu),就可以很輕松地了解以上的概念。你也可以這么理解:數(shù)據(jù)模型相當(dāng)于編程語(yǔ)言,比如C++,Java等,數(shù)據(jù)模式就是用對(duì)應(yīng)的編程語(yǔ)言寫(xiě)出來(lái)的軟件。
目前數(shù)據(jù)庫(kù)中主流的數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型,在數(shù)據(jù)庫(kù)原理的課程中一般都是圍繞關(guān)系數(shù)據(jù)模型作為講解。數(shù)據(jù)模型可以分為以下四類(lèi):
這里我們不過(guò)多提及
這里我們不過(guò)多提及
面向?qū)ο蟮某绦蛟O(shè)計(jì)已經(jīng)目前稱為主流的軟件開(kāi)發(fā)方法。這導(dǎo)致面向?qū)ο髷?shù)據(jù)模型的發(fā)展,面向?qū)ο蟮臄?shù)據(jù)類(lèi)型可以看成是E-R模型增加了封裝,方法(函數(shù))和對(duì)象標(biāo)識(shí)等概念的擴(kuò)展。對(duì)象-關(guān)系數(shù)據(jù)模型結(jié)合了面向?qū)ο蟮臄?shù)據(jù)模型和關(guān)系數(shù)據(jù)模型的特征。
這里我們不過(guò)多累述,但是我們要知道可擴(kuò)展標(biāo)記語(yǔ)言被廣泛地用來(lái)表示半結(jié)構(gòu)化數(shù)據(jù)。
需要注意的是,實(shí)際上在以前還有網(wǎng)狀數(shù)據(jù)模型和層次數(shù)據(jù)模型,下面我們也有講述,不過(guò)由于他們已經(jīng)過(guò)時(shí)了,除了在某些地方仍舊是用的舊數(shù)據(jù)庫(kù)之外,現(xiàn)在已經(jīng)很少使用了。
1.4 數(shù)據(jù)庫(kù)三級(jí)模式和兩級(jí)獨(dú)立性
1.4.1 三級(jí)模式
三級(jí)模式指的是:許多視圖、簡(jiǎn)單的概念(邏輯)模式和物理模式。這和Java中的MVC設(shè)計(jì)框架有點(diǎn)類(lèi)似。
-
外模式(視圖)描述的是如何去看數(shù)據(jù)。
-
概念模式定義邏輯結(jié)構(gòu)。
-
物理模式描述文件和索引的使用。
表只是一個(gè)邏輯概念,也就是我們說(shuō)的概念模式;那么表在磁盤(pán)上會(huì)怎么存呢?比如說(shuō)學(xué)生基本信息表,你是用一個(gè)堆文件來(lái)存,還是用一個(gè)哈希文件來(lái)存,還是用一個(gè)簇集,這都是取決于我們用什么結(jié)構(gòu)來(lái)存,而存法,就是physical Schema(物理模式)。概念模式,就是我們剛剛說(shuō)的表,表的結(jié)構(gòu)是什么,屬性有多少,長(zhǎng)度如何,這就是概念模式,我們把概念模式里的表叫做基表,基表是用真正的某種結(jié)構(gòu)存儲(chǔ)在磁盤(pán)上的。而外模式(視圖),是通過(guò)對(duì)基表的改造,來(lái)呈現(xiàn)不同的樣子給用戶看,不同權(quán)限的用戶看到的視圖是不一樣的。
概念模式一般也叫結(jié)構(gòu)模式或簡(jiǎn)稱模式,其作用是對(duì)數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的整體邏輯結(jié)構(gòu)和特征的描述。
而外模式也叫子模式或用戶模式,是數(shù)據(jù)庫(kù)用戶看到的視圖。
物理模式也叫存儲(chǔ)模式或內(nèi)模式,是數(shù)據(jù)庫(kù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。
舉個(gè)例子,如果拿大學(xué)數(shù)據(jù)庫(kù)的例子來(lái)說(shuō)明上面的三級(jí)模式的話:
概念模式
Student(sid:string,name:string,login:string,age:integer,gpa:real) Course(cid:string,cname:string,credits:integer) Enrolled(sid:string,cid:string,grade:integer)物理模式
- 以堆文件來(lái)存放
- 在學(xué)生表的第一列建一個(gè)B+樹(shù)索引
視圖
Course_info(cid:string,enrollment:integer)視圖可以不是基表的信息,可以是通過(guò)基表的信息計(jì)算出來(lái)的。
基表是真真實(shí)實(shí)存在的,他的數(shù)據(jù)顯式地存儲(chǔ)在數(shù)據(jù)庫(kù)中,或者換一種說(shuō)法就是,你當(dāng)時(shí)存的時(shí)候什么樣基表就長(zhǎng)什么樣。
而虛表是僅有邏輯定義,可以根據(jù)其定義從其他表(包括視圖)中導(dǎo)出,但不作為一個(gè)表顯式地存儲(chǔ)在數(shù)據(jù)庫(kù)中。換一種說(shuō)法就是,比如你數(shù)據(jù)庫(kù)里面已經(jīng)有個(gè)基表了,然后我通過(guò)某些要求過(guò)濾了一些條件,查詢出來(lái)的表就是虛表,虛表實(shí)際上不存在數(shù)據(jù)庫(kù)里,他只是通過(guò)一些計(jì)算和邏輯語(yǔ)言提取出來(lái)的。
當(dāng)基表的模式修改時(shí),通過(guò)定義適當(dāng)?shù)囊晥D,仍可以為用戶提供修改前的數(shù)據(jù)模式,避免修改應(yīng)用程序,從而有利于提高數(shù)據(jù)的邏輯獨(dú)立性。也就是說(shuō),即使你基表改了,但是為了視圖還是和以前一樣,我們可以在基表的基礎(chǔ)上做一些其他的操作,使他改變操作后算出來(lái)的虛表和之前沒(méi)改的虛表一模一樣。
1.4.2 二級(jí)映像功能
數(shù)據(jù)庫(kù)管理系統(tǒng)的三級(jí)模式對(duì)應(yīng)數(shù)據(jù)庫(kù)中數(shù)據(jù)的三個(gè)抽象級(jí)別。為了能夠在數(shù)據(jù)庫(kù)內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)系統(tǒng)提供了三級(jí)模式之間的兩層映像。
兩層映像指的是外模式/模式映像和模式/內(nèi)模式映像。
1.4.3 數(shù)據(jù)獨(dú)立性
實(shí)際上對(duì)于應(yīng)用程序來(lái)說(shuō),其可以不在意數(shù)據(jù)庫(kù)中的數(shù)據(jù)是怎么存放的,這是由于數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有數(shù)據(jù)獨(dú)立性。
邏輯數(shù)據(jù)獨(dú)立性:保護(hù)數(shù)據(jù)的邏輯結(jié)構(gòu)的改變
一個(gè)在數(shù)據(jù)庫(kù)的基礎(chǔ)之上開(kāi)發(fā)的應(yīng)用程序不受數(shù)據(jù)邏輯結(jié)構(gòu)的影響。
假如基表變動(dòng)(也就是數(shù)據(jù)結(jié)構(gòu)變動(dòng)),那么通過(guò)改變一些邏輯,能夠使得原來(lái)基表還未變動(dòng)之前的視圖不受改變。即基表雖然改變,但是視圖為了保證不變,我修改基表和視圖的映射。
物理數(shù)據(jù)獨(dú)立性:保護(hù)數(shù)據(jù)的物理結(jié)構(gòu)的改變
一個(gè)表結(jié)構(gòu)變化,比如我前面使用哈希文件存的,但是現(xiàn)在用堆文件存,只要表邏輯結(jié)構(gòu)不變,物理結(jié)構(gòu)變化是沒(méi)事的。
數(shù)據(jù)獨(dú)立性是DBMS最大的好處之一。因?yàn)槲募到y(tǒng)是沒(méi)有這樣的優(yōu)點(diǎn)的。
1.5 數(shù)據(jù)庫(kù)發(fā)展歷史及分類(lèi)
發(fā)展歷史我覺(jué)得幾個(gè)特別的需要記住,其他的就算了。
- 1964年,第一個(gè)DBMS:美國(guó)通用電氣公司Bachman等人開(kāi)發(fā)的IDS,采用網(wǎng)狀數(shù)據(jù)模型。
- 1969年,IBM公司推出了IMS,采用層次數(shù)據(jù)模型。
- 1970年,E.Fcodd(IBM)提出了關(guān)系數(shù)據(jù)模型,以關(guān)系(表)作為描述數(shù)據(jù)的基礎(chǔ)。
如果根據(jù)DBMS的發(fā)展歷史來(lái)分類(lèi)的話,如下:
在計(jì)算機(jī)發(fā)展早期,那時(shí)候沒(méi)有網(wǎng)絡(luò),一臺(tái)主機(jī)帶著一堆終端,大家通過(guò)終端來(lái)訪問(wèn)一臺(tái)機(jī)器,很明顯,那時(shí)候數(shù)據(jù)庫(kù)也是集中放在一臺(tái)機(jī)器上,所以當(dāng)時(shí)DBMS早期是一種集中式數(shù)據(jù)庫(kù)結(jié)構(gòu)。
70年代中后期,隨著局域網(wǎng)的發(fā)展還有其他網(wǎng)絡(luò)的普及,出現(xiàn)了分布式數(shù)據(jù)庫(kù)系統(tǒng);所謂并行計(jì)算機(jī)系統(tǒng)就是在一臺(tái)計(jì)算機(jī)上,可能會(huì)有多個(gè)CPU,每個(gè)CPU可能帶有自己的內(nèi)存甚至帶有自己的硬盤(pán)。在考慮并行計(jì)算機(jī)系統(tǒng)的軟硬件特點(diǎn),前人做出了能夠提高效率的并行式數(shù)據(jù)庫(kù)系統(tǒng);由于當(dāng)時(shí)電腦配置還不是很高級(jí),很多時(shí)候用一個(gè)分布式操作系統(tǒng)通過(guò)網(wǎng)絡(luò)控制多臺(tái)機(jī)器,使其協(xié)調(diào)共同完成一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的工作。
隨著無(wú)線網(wǎng)絡(luò)的發(fā)展,后來(lái)又出現(xiàn)了移動(dòng)數(shù)據(jù)庫(kù)的概念,也就是充分利用移動(dòng)網(wǎng)絡(luò)的能力,在隨時(shí)隨地都能夠訪問(wèn)到數(shù)據(jù)庫(kù)。網(wǎng)格計(jì)算和云計(jì)算都是這方面的技術(shù)。
根據(jù)數(shù)據(jù)庫(kù)架構(gòu)的話可以分為以下兩種:
CS結(jié)構(gòu)(兩層體系架構(gòu))
C/S又稱Client/Server或客戶/服務(wù)器模式,服務(wù)器通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫(kù)系統(tǒng),如Oracle、Sybase、Informix或 SQL Server??蛻舳诵枰惭b專(zhuān)用的客戶端軟件。也就是說(shuō),在CS架構(gòu)中,應(yīng)用程序駐留在客戶機(jī)上,通過(guò)查詢語(yǔ)言表達(dá)式來(lái)調(diào)用服務(wù)器上的數(shù)據(jù)庫(kù)系統(tǒng)功能。像ODBC和JDBC這樣的應(yīng)用程序接口標(biāo)準(zhǔn)被用于進(jìn)行客戶端和服務(wù)器的交互。
BS結(jié)構(gòu)(三層數(shù)據(jù)庫(kù)結(jié)構(gòu))
B/S是Brower/Server的縮寫(xiě),客戶機(jī)上只要安裝一個(gè)瀏覽器(Browser),如Netscape Navigator或Internet Explorer,服務(wù)器安裝Oracle、Sybase、Informix或 SQL Server等數(shù)據(jù)庫(kù)。BS結(jié)構(gòu)中用戶端的瀏覽器通過(guò)應(yīng)用服務(wù)器同數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。
拿VPN來(lái)說(shuō),現(xiàn)在比如說(shuō)校園網(wǎng),都是通過(guò)IE瀏覽器然后訪問(wèn)互聯(lián)網(wǎng),然后互聯(lián)網(wǎng)給Web服務(wù)端(應(yīng)用服務(wù)器)發(fā)請(qǐng)求,如果成功,則通過(guò)App服務(wù)端(用戶端)訪問(wèn)校園網(wǎng)數(shù)據(jù)庫(kù),如果失敗則進(jìn)入不了校園網(wǎng)。
C/S架構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。缺點(diǎn)主要有以下幾個(gè): 只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來(lái)越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問(wèn)需要專(zhuān)門(mén)的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專(zhuān)門(mén)的設(shè)計(jì)來(lái)處理分布式的數(shù)據(jù)。 客戶端需要安裝專(zhuān)用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺(tái)電腦出問(wèn)題,如病毒、硬件損壞,都需要進(jìn)行安裝或維護(hù)。特別是有很多分部或?qū)Yu(mài)店的情況,不是工作量的問(wèn)題,而是路程的問(wèn)題。
1.6 數(shù)據(jù)庫(kù)系統(tǒng)的組成和生命周期
1.6.1 三個(gè)概念
在最開(kāi)始的時(shí)候我們提到數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)子集,對(duì)于很多人來(lái)說(shuō),數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)三個(gè)概念常常容易混淆,這里給出三者定義方便做對(duì)比:
數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織、可共享的數(shù)據(jù)集合,數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述、存儲(chǔ),冗余度小,具有較高的數(shù)據(jù)獨(dú)立性、共享性和易擴(kuò)展性。
數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)庫(kù)系統(tǒng)的核心組成部分,它是介于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,是用戶和數(shù)據(jù)庫(kù)的接口。
數(shù)據(jù)庫(kù)系統(tǒng)是帶有數(shù)據(jù)庫(kù)的計(jì)算機(jī)系統(tǒng),一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、相關(guān)的硬件、軟件和各類(lèi)人員組成。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)的核心。
綜上所述:數(shù)據(jù)庫(kù)系統(tǒng)=應(yīng)用+DBMS+數(shù)據(jù)庫(kù)+DBA
1.6.2 生命周期
數(shù)據(jù)庫(kù)和軟件一樣,也有一個(gè)生存周期,它包含下列五個(gè)階段。
數(shù)據(jù)庫(kù)系統(tǒng)的規(guī)劃
它包含系統(tǒng)的應(yīng)用和功能的確認(rèn)、應(yīng)用環(huán)境的分析、DBMS及其支持環(huán)境的選擇和配置、人員的配置和培訓(xùn)以及投資估算和效益分析等活動(dòng)。
數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)際上主要是數(shù)據(jù)的表示方法和存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì)。
數(shù)據(jù)庫(kù)建立
數(shù)據(jù)庫(kù)的運(yùn)行、管理和維護(hù)
數(shù)據(jù)庫(kù)投入運(yùn)行后,還必須監(jiān)視和調(diào)優(yōu)其性能,聽(tīng)取用戶的反饋,必要時(shí)對(duì)數(shù)據(jù)庫(kù)做相應(yīng)的調(diào)整
數(shù)據(jù)庫(kù)的擴(kuò)充和重構(gòu)
一個(gè)單位的組成、結(jié)構(gòu)和功能是會(huì)變化的,其對(duì)應(yīng)的數(shù)據(jù)模式也須做相應(yīng)的改變。
1.6.3 存儲(chǔ)管理器
存儲(chǔ)管理器負(fù)責(zé)數(shù)據(jù)庫(kù)中數(shù)據(jù)的存儲(chǔ)、檢索和更新,其和文件管理器進(jìn)行交互,原始數(shù)據(jù)通過(guò)操作系統(tǒng)提供的文件系統(tǒng)存儲(chǔ)在磁盤(pán)上。
存儲(chǔ)管理器一般包括以下幾類(lèi):
| 權(quán)限及完整性管理器 | 它檢測(cè)是否滿足完整性約束,并檢查視圖訪問(wèn)數(shù)據(jù)的用戶的權(quán)限 |
| 事務(wù)管理器 | 它保證即使發(fā)送了保障,數(shù)據(jù)庫(kù)也保持在一致的狀態(tài),并保證并發(fā)事務(wù)的執(zhí)行不發(fā)生沖突 |
| 文件管理器 | 它管理磁盤(pán)存儲(chǔ)空間的分配,管理用于表示磁盤(pán)上所存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu) |
| 緩沖區(qū)管理器 | 它負(fù)責(zé)將數(shù)據(jù)從磁盤(pán)上取到內(nèi)存來(lái),并決定哪些數(shù)據(jù)應(yīng)該緩沖存儲(chǔ)在內(nèi)存中 |
存儲(chǔ)管理器還實(shí)現(xiàn)了一些數(shù)據(jù)結(jié)構(gòu),可以作為系統(tǒng)物理實(shí)現(xiàn)的一部分:
| 數(shù)據(jù)文件 | 存儲(chǔ)數(shù)據(jù)庫(kù)自身 |
| 數(shù)據(jù)字典 | 存儲(chǔ)關(guān)于數(shù)據(jù)庫(kù)結(jié)構(gòu)的元數(shù)據(jù),尤其是數(shù)據(jù)庫(kù)模式 |
| 索引 | 用于提供對(duì)數(shù)據(jù)項(xiàng)的快速訪問(wèn),在MySQL中一般采用B+樹(shù)索引 |
1.7 數(shù)據(jù)庫(kù)用戶和管理員
使用數(shù)據(jù)庫(kù)的人員一般分為數(shù)據(jù)庫(kù)用戶和數(shù)據(jù)庫(kù)管理員。
舉個(gè)簡(jiǎn)單的例子,我們要登錄QQ,那么在登錄界面當(dāng)你輸入賬號(hào)密碼后,后端馬上會(huì)去數(shù)據(jù)庫(kù)尋找關(guān)于你的數(shù)據(jù),一旦找到了就通過(guò)登錄。那么作為登錄用戶,你就是數(shù)據(jù)庫(kù)用戶;而對(duì)于后臺(tái)管理數(shù)據(jù)庫(kù)的人來(lái)說(shuō),它要設(shè)計(jì)你所在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表,還有負(fù)責(zé)一系列優(yōu)化、并發(fā)、恢復(fù)工作,這類(lèi)人就叫數(shù)據(jù)庫(kù)管理員,即DBA。
DBA主要的作用如下:
| 模式定義 | DBA利用DDL來(lái)書(shū)寫(xiě)關(guān)于表的定義 |
| 存儲(chǔ)結(jié)構(gòu)以及存取方式的定義 | |
| 模式和物理組織的修改 | DBA設(shè)計(jì)模式來(lái)適應(yīng)不同的需求,并且選擇不同的物理結(jié)構(gòu)來(lái)提高性能 |
| 數(shù)據(jù)訪問(wèn)授權(quán) | 對(duì)不同類(lèi)型的權(quán)限,DBA可以給不同權(quán)限看不同的視圖 |
| 日常維護(hù) | 主要是定期備份、監(jiān)視磁盤(pán)空間、監(jiān)視數(shù)據(jù)庫(kù)運(yùn)行 |
總結(jié)
以上是生活随笔為你收集整理的数据库杂谈(一)——数据库基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 10月Web服务器调查:Apache下降
- 下一篇: 搭建nginx + python + d