直播中
眾所周知,數(shù)據(jù)庫系統(tǒng)并不是在計(jì)算機(jī)產(chǎn)生的同時(shí)就出現(xiàn)的,而是隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,在特定的歷史時(shí)期、特定的需求環(huán)境下出現(xiàn)的。人類在1946年發(fā)明了世界上的第一臺計(jì)算機(jī)到20世紀(jì)60年代這漫長的20年里,計(jì)算機(jī)操作系統(tǒng)還主要局限于文件的操作,同樣,對數(shù)據(jù)的管理也主要是通過文件系統(tǒng)來實(shí)現(xiàn)。進(jìn)行計(jì)算所需要的各種數(shù)據(jù)存放在各自的文件里面。當(dāng)要使用這些數(shù)據(jù)的時(shí)候,將文件打開,讀取文件中的數(shù)據(jù)到內(nèi)存中。當(dāng)計(jì)算完畢后,將計(jì)算結(jié)果仍舊寫入到文件中去。
雖然這種在文件中存放數(shù)據(jù)的方式目前在很多系統(tǒng)中還在使用,但是,這樣的數(shù)據(jù)存放方式在三四十年前的當(dāng)時(shí),就已經(jīng)顯示出了非常明顯的不足。這些不足主要集中在無法對數(shù)據(jù)進(jìn)行有效的統(tǒng)一管理。具體表現(xiàn)在這樣幾個(gè)方面:
程序員編寫應(yīng)用程序非常不方便。應(yīng)用程序的設(shè)計(jì)者需要對程序所使用的文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)都了解的非常清楚。而計(jì)算機(jī)操作系統(tǒng)只提供將文件打開、關(guān)閉、保存等非常低級的操作,而對數(shù)據(jù)的修改、查詢操作則需要應(yīng)用程序來解決,如果程序所需要的數(shù)據(jù)存放在不同的文件里,而且這些文件的存儲格式又迥然不同。這樣就給應(yīng)用程序的開發(fā)帶來了巨大的麻煩,程序員要為程序中所用到的每一個(gè)文件都寫好相應(yīng)的接口,而且不同的文件格式相差很大,這樣就大大的增加了編程的工作量,從而使得在文件級別上開發(fā)應(yīng)用程序的效率非常低下,嚴(yán)重影響應(yīng)用軟件的發(fā)展。
文件結(jié)構(gòu)的每一處修改都將導(dǎo)致應(yīng)用程序的修改,從而使得應(yīng)用程序的維護(hù)工作量特別大。編過程序的人都有這種體會,就是每當(dāng)自己開發(fā)完畢的程序需要修改的時(shí)候,又不得不將源程序重新修改、編譯、鏈接。其麻煩程度可想而知。因?yàn)橛腥藨蚍Q編程人員為“老改”人員,個(gè)中滋味,外人恐怕很難體會到的。
計(jì)算機(jī)操作系統(tǒng)中的文件系統(tǒng)一般不支持對文件的并發(fā)訪問。而在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,為了充分發(fā)揮計(jì)算機(jī)系統(tǒng)的資源使用效率,一般都允許多個(gè)程序“同時(shí)”運(yùn)行,即并發(fā)性。對數(shù)據(jù)庫系統(tǒng)同樣有并發(fā)性的要求,現(xiàn)在比較大型的數(shù)據(jù)庫都有非常強(qiáng)的并發(fā)訪問機(jī)制,這樣可以充分利用數(shù)據(jù)庫服務(wù)器的軟、硬件資源,避免浪費(fèi)。
由于基于文件系統(tǒng)的數(shù)據(jù)管理缺乏整體性、統(tǒng)一性,在數(shù)據(jù)的結(jié)構(gòu)、編碼、表示格式等諸多方面不能做到標(biāo)準(zhǔn)化、規(guī)范化,不同的操作系統(tǒng)有風(fēng)格迥異的表示方式,因此在一定程度上造成了數(shù)據(jù)管理的混亂。另外,基于文件系統(tǒng)的數(shù)據(jù)管理在數(shù)據(jù)的安全性和保密性發(fā)面難以采取有效的措施,在一些對安全性要求比較高的場合,這種安全上的缺陷是完全不允許的。
針對文件系統(tǒng)的這些重要缺點(diǎn),人們逐步發(fā)展了以統(tǒng)一管理數(shù)據(jù)和共享數(shù)據(jù)為主要特征的系統(tǒng),這就是數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫系統(tǒng)就是在這樣的背景下發(fā)展起來了。1964年,美國通用電氣公司開發(fā)成功了世界上的第一個(gè)數(shù)據(jù)庫系統(tǒng)——IDS(Integrated Data Store)。IDS奠定了網(wǎng)狀數(shù)據(jù)庫的基礎(chǔ),并且得到了廣泛的發(fā)行和應(yīng)用,成為數(shù)據(jù)庫系統(tǒng)發(fā)展史上的一座豐碑。1969年,美國國際商用機(jī)器公司(IBM)也推出世界上第一個(gè)層次數(shù)據(jù)庫系統(tǒng)IMS(Information Management System),同樣在數(shù)據(jù)庫系統(tǒng)發(fā)展史上占有重要的地位。
七十年代初,E.F.Codd在總結(jié)前面的層次、網(wǎng)狀數(shù)據(jù)庫優(yōu)缺點(diǎn)的基礎(chǔ)上,提出了關(guān)系數(shù)據(jù)模型的概念。他提出了關(guān)系代數(shù)和關(guān)系演算(直到今天,在E.F.Codd的這些基本理論還在左右這數(shù)據(jù)庫系統(tǒng)的發(fā)展,也依然是高校計(jì)算機(jī)專業(yè)課堂上所要講述的重要內(nèi)容)。在整個(gè)七十年代,關(guān)系數(shù)據(jù)庫系統(tǒng)無論從理論上還是實(shí)踐上都去的了豐碩的成果。在理論上,確立了完整的關(guān)系模型理論、數(shù)據(jù)依賴?yán)碚摵完P(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論(在后面將重點(diǎn)講述這些關(guān)系數(shù)據(jù)庫的基本理論);在實(shí)踐上,世界上出現(xiàn)了很多著名的關(guān)系數(shù)據(jù)庫系統(tǒng),比較著名的如System R,INGRES,Oracle等。
和文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)有一系列的特點(diǎn),具體表現(xiàn)在以下幾個(gè)方面:
數(shù)據(jù)庫系統(tǒng)向用戶提供高級的接口。在文件系統(tǒng)中,用戶要訪問數(shù)據(jù),必須了解文件的存儲格式、記錄的結(jié)構(gòu)等。而在數(shù)據(jù)庫系統(tǒng)中,這一切都不需要了。數(shù)據(jù)庫系統(tǒng)為用戶處理了這些具體的細(xì)節(jié),向用戶提供非過程化的數(shù)據(jù)庫語言(即通常所說的SQL語言),用戶只要提出需要什么數(shù)據(jù),而不必關(guān)心如何獲得這些數(shù)據(jù)。對數(shù)據(jù)的管理完全由數(shù)據(jù)庫管理系統(tǒng)(DBMS: Database Management System)來實(shí)現(xiàn)。
查詢的處理和優(yōu)化。查詢通常指用戶向數(shù)據(jù)庫系統(tǒng)提交的一些對數(shù)據(jù)操作的請求。由于數(shù)據(jù)庫系統(tǒng)向用戶提供了非過程化的數(shù)據(jù)操縱語言,因此對于用戶的查詢請求就由DBMS來完成,查詢的優(yōu)化處理就成了DBMS的重要任務(wù)。
并發(fā)控制。前面曾經(jīng)提到,文件系統(tǒng)一般不支持并發(fā)操作,這樣大大的限制了系統(tǒng)資源的有效利用。在數(shù)據(jù)庫系統(tǒng)中,情況就不一樣了?,F(xiàn)代的數(shù)據(jù)庫系統(tǒng)都有很強(qiáng)的并發(fā)操作機(jī)制,多個(gè)用戶可以同時(shí)訪問數(shù)據(jù)庫,甚至可以同時(shí)訪問同一個(gè)表中的不同記錄。這樣極大的提高了計(jì)算機(jī)系統(tǒng)資源的使用效率。
數(shù)據(jù)的完整性約束。凡是數(shù)據(jù)都要遵守一定的約束,最簡單的一個(gè)例子就是數(shù)據(jù)類型,例如定義成整型的數(shù)據(jù)就不能是浮點(diǎn)數(shù)。由于數(shù)據(jù)庫中的數(shù)據(jù)是持久的和共享的,因此對于使用這些數(shù)據(jù)的單位來說,數(shù)據(jù)的正確行顯得非常重要。在關(guān)系數(shù)據(jù)庫系統(tǒng)中,比較重要的完整性約束有實(shí)體完整性、域完整性、參照完整性和用戶自定義的完整性等,在后面的文章中將有重點(diǎn)講述。
進(jìn)入二十世紀(jì)八十年代之后,計(jì)算機(jī)硬件技術(shù)有了飛速的提高。計(jì)算機(jī)技術(shù)的提高促使計(jì)算機(jī)應(yīng)用不斷深入,產(chǎn)生了許多新的應(yīng)用領(lǐng)域,例如計(jì)算機(jī)輔助設(shè)計(jì)、計(jì)算機(jī)輔助制造、計(jì)算機(jī)輔助教學(xué)、辦公自動化、智能信息處理、決策支持等。這些新的領(lǐng)域?qū)?shù)據(jù)庫系統(tǒng)提出了新的要求。但是由于應(yīng)用的多元化,不能設(shè)計(jì)出一個(gè)統(tǒng)一的數(shù)據(jù)模型來表示這些新型的數(shù)據(jù)及其相互關(guān)系,因而出現(xiàn)了百家爭鳴的局面,產(chǎn)生了演繹數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、分布式數(shù)據(jù)庫、工程數(shù)據(jù)庫、時(shí)態(tài)數(shù)據(jù)庫、模糊數(shù)據(jù)庫等新型數(shù)據(jù)庫的研究和應(yīng)用。
不過到目前為止,在世界范圍內(nèi)得到主流應(yīng)用的還是經(jīng)典的關(guān)系數(shù)據(jù)庫系統(tǒng),比較知名的如Sybase,Oracle,Informix,SQL Server,DB2等。在本系列專題文章中,我們也將根據(jù)數(shù)據(jù)庫系統(tǒng)的實(shí)際應(yīng)用情況,重點(diǎn)介紹關(guān)系數(shù)據(jù)庫系統(tǒng)。其他的數(shù)據(jù)庫系統(tǒng),也將作簡單的介紹。