數據庫技術是應數據管理任務的需要而產生的。數據管理是指對數據進行分類、組織、編碼、存儲、檢索和維護,它是數據處理的中心問題。而數據的處理是指對各種數據進行收集、存儲、加工和傳播的一系列活動的總和。
在應用需求的推動下,在計算機硬件、軟件發展的基礎上,數據管理技術經歷了人工管理、文件系統、數據庫系統三個階段。
數據管理三個階段比較
人工管理階段 | 文件系統階段 | 數據庫系統階段 | ||
背景 | 應用背景 | 科學計算 | 科學計算、數據管理 | 大規模數據管理 |
硬件背景 | 無直接存取存儲設備 | 磁盤、磁鼓 | 大容量磁盤、磁盤陣列 | |
軟件背景 | 無操作系統 | 有文件系統 | 有數據管理系統 | |
處理方式 | 批處理 | 聯機實時處理、批處理 | 聯機實時處理、分佈處理、批處理 | |
特點 | 數據的管理者 | 用戶(程序員) | 文件系統 | 數據庫管理系統 |
數據面向的對象 | 某一應用程序 | 某一應用程序 | 現實世界(部門、企業、組織等) | |
數據的共享程度 | 無共享,冗餘度極大 | 共享性差,冗餘度大 | 共享性高,冗餘度低 | |
數據的獨立性 | 不獨立,完全依賴程序 | 獨立性差 | 具有高度的物理獨立性和一定的邏輯獨立性 | |
數據的結構化 | 無結構 | 記錄內有結構,整體無結構 | 整體結構化,用數據模型描述 | |
數據控制能力 | 應用程序控制 | 應用程序控制 | 由數據庫管理系統提供數據安全性、完整性、併發控制和恢復能力 |
1. 人工管理階段
20世紀50年代中期之前,計算機只用於科學計算,沒有直接存取的存儲設備,也沒有操作系統和數據管理軟件,處理方式還是批處理。
人們把計算機當成一種計算工具,主要用於科學計算。這一時期就是我們說的數據的人工管理階段。通常的辦法是:用戶針對某個特定的求解問題,首先確定求解的算法;然後利用計算機系統所提供的編程語言,直接編寫相關的計算機程序;最後將程序和相關的數據通過輸入設備送入計算機,計算機處理完之後輸出用戶所需的結果。不同的用戶針對不同的求解問題,均要編寫各自的求解程序,整理各自程序的所需的數據,數據的管理完全由用戶負責。
因此這個階段的數據管理具有數據不保存、應用程序管理數據、數據不共享、數據不具有獨立性等特點:
1.數據不保存
當時計算機主要用於科學計算,一般不需要將數據長期保存,只是計算某一課題時輸入數據,用完就撤走。
2.應用程序管理數據
數據需要由應用程序自己設計、說明(定義)和管理,沒有相應的軟件系統負責數據的管理工作。應用程序中不僅要規定數據的邏輯結構,而且要設計物理結構(包括存儲結構、存取方法、輸入方式等),所以程序員負擔很重。
3.數據不共享
數據是面向應用程序的,一組數據只能對應一個程序。多個應用程序涉及一些相同的數據時,只能各自定義,無法相互利用、參照,因此程序與程序間有大量冗餘數據。
4.數據不具有獨立性
數據的邏輯結構或物理結構發生變化後,必須相應地修改應用程序,因此加重了程序員的負擔。
2.文件系統階段
20世紀50-60年代,這個時候已經出現了磁鼓、磁盤等直接存取存儲設備,操作系統中出現了專門的數據管理軟件,稱爲文件系統,在處理方式上,不僅有批處理,還出現了聯機實時處理。
計算機用於大量處理數據工作,大量的數據存儲、檢索和維護成爲緊迫的需求。爲了方便用戶使用計算機,提高計算機系統的使用效率,產生了以操作系統爲核心的系統軟件,以有效的管理計算機資源。文件是操作系統管理的重要資源之一,而操作系統提供了文件系統的管理功能。在文件系統中,數據以文件形式組織與保存。文件是一組具有相同結構的記錄的集合。記錄是由某些相關數據項組成的。數據組織成文件以後,就可以處理與它的程序相分離而單獨存在。數據按其內容、結構和用途的不同,可以組織成若干不同命名的文件。文件一般爲某一用戶(或用戶組)所有,但也可供指定的其他用戶共享。文件系統還爲用戶程序提供一組對文件管理與維護的操作或功能,包括對文件的建立、打開、讀/寫和關閉等。應用程序可以調用文件系統提供的操作命令來建立和訪問文件,應用系統就成了用戶程序與文件之間接口
該階段的文件系統數據管理具有數據可以長期保持、文件系統管理數據、數據共享性差,冗餘度大、數據獨立性差等特點:
1.數據可以長期保存
由於計算機大量用於數據處理,數據需要長時間保留在外存上反覆進行查詢、修改、插入和刪除等操作。
2.由文件系統管理數據
由專門的軟件即文件系統進行數據管理,文件系統把數據組織成相互獨立的數據文件,利用“按文件名訪問,按記錄進行存取”的管理技術,可以對文件進行修改、插入和刪除的操作。文件系統實現了記錄內的結構性,但整體無結構(文件由記錄構成,記錄內部有某些結構(記錄由若干屬性組成),但記錄之間沒有聯繫)。程序和數據之間由文件系統提供存取方法進行轉換,使應用程序和數據之間有了一定的獨立性,程序員可以不必過多地考慮物理細節,將精力集中於算法。而且數據在存儲上的改變不一定反映在程序上,大大節省了維護程序的工作量。
3.數據共享性差,冗餘度大
在文件系統中,一個(或一組)文件基本上對應一個應用程序,即文件仍然是面向應用的。不同的應用程序具有部分相同的數據時,也必須建立各自的文件,而不能共享相同的數據,因此數據的冗餘度(redundancy)大,浪費存儲空間,而且由於重複存儲、各自管理,容易造成數據不一致,增加了數據修改和維護的難度。
4.數據獨立性差
文件系統中的文件爲某一特定應用服務,文件的邏輯結構對該應用程序來說是優化的,所以要想對現有的數據再增加新的應用是很困難的,系統不易擴充。
一旦數據的邏輯結構改變,必須修改相應程序,修改文件結構的定義。因此數據與程序之間仍然缺乏獨立性。
可見,文件系統仍然是一個不具有彈性的無結構的數據集合,即文件之間是孤立的,不能反映現實世界事物之間的內在聯繫。
3.數據庫系統階段
從20世紀60年代後期開始,計算機應用於管理的規模更加龐大,需要計算機管理的數據急劇增長,對數據共享的要求也與日俱增。
隨着大容量磁盤系統的使用,計算機聯機存取大量數據成爲可能;軟件價格相對上升,硬件價格相對下降,使獨立開發系統和維護軟件的成本增加,文件系統的管理方法已無法滿足要求。爲了解決獨立性問題,實現數據統一管理,最大限度地實現數據共享,必須發展數據庫技術。於是爲了解決多用戶、多應用共享數據的需求,使數據爲儘可能多的應用服務,數據庫技術應運而生,出現了統一管理數據的專門軟件系統——數據庫管理系統。
數據庫技術爲數據管理提供了一種較完善的高級管理模式,它克服了文件系統方式下分散管理的缺點,對所有數據實行統一、集中管理,使數據的存儲獨立於它的程序,從而實現數據共享。
相比於人工管理和文件系統,數據庫系統具有明顯的優點,其主要特點如下:
1.數據結構化
數據庫系統實現整體數據的結構化,這是數據庫的主要特徵之一,也是數據庫系統與文件系統的本質區別。“整體”結構化指在數據庫中的數據不再僅僅針對某一應用,而是面向全組織;不僅數據內部是結構化的,而且整體也是結構化的,數據之間是有聯繫的,而文件系統只是內部有結構,但整體無結構,記錄之間沒有聯繫。
在數據庫系統中,不僅數據是整體結構化的,而且存取數據的方式也很靈活,可以存取數據庫中的某一個數據項、一組數據項、一個記錄或一組記錄,而在文件系統中,數據的存取單位是記錄,粒度不能細到數據項。
2.數據的共享性高,冗餘度低,易擴充
數據庫系統從整體角度看待和描述數據,數據不再面向某個應用而是面向整個系統,因此數據可以被多個用戶、多個應用共享使用。數據共享可以大大減少數據冗餘,節約存儲空間,還能避免數據間的不相容性和不一致性。數據的不一致性指同一數據不同拷貝的值不一樣。
由於數據面向整個系統,是有結構的數據,不僅可以被多個應用共享使用,而且容易增加新的應用,這就使數據庫系統彈性大、易於擴充。可以選取整體數據的各種子集用於不同的應用程序,當應用需求改變或增加時,只要重新選取不同的子集加上一部分數據,便可滿足新需求。
3.數據獨立性高
數據獨立性包括數據的物理獨立性和數據的邏輯獨立性。
物理獨立性指用戶的應用程序與存儲在磁盤上的數據庫中的數據是相互獨立的。數據在磁盤上的數據庫中怎樣存儲是有DBMS管理的,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構,這樣當數據的物理存儲改變時,應用程序不用改變。
邏輯獨立性指用戶的應用程序與數據庫的邏輯結構是相互獨立的。當數據的邏輯結構發生改變,用戶程序也可以不變。
數據獨立性是由DBMS的二級映像功能來保證的。
數據與程序的獨立,把數據的定義從程序中分離出去,加上存取數據的方法又由DBMS負責提供,從而簡化了應用程序的編制,大大減少了應用程序的維護和修改。
4.數據由DBMS統一管理和控制
數據庫的共享是併發的共享,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中同一個數據。
爲此DBMS還必須提供以下幾方面的數據控制功能:
(1)數據的安全性(Security)保護
數據的安全性是指保護數據,以防止不合法的使用造成數據的泄密和破壞。使每個用戶只能按規定對某些數據以某些方式進行使用和處理。
(2)數據的完整性(Integrity)檢查
數據的完整性指數據的正確性、有效性、相容性。完整性檢查將數據控制在有效的範圍內,或保證數據之間滿足一定的關係。
(3)併發(Concurrency)控制
當多個用戶的併發進程同時存取、修改數據庫時,可能會發生相互干擾而得到錯誤的結果或使數據庫的完整性遭到破壞,因此必須對多用戶的併發操作加以控制和協調。
(4)數據恢復(Recovery)
計算機系統的硬件故障、軟件故障、操作員的失誤以及故意的破壞也會影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失。DBMS必須具有將數據庫從錯誤狀態恢復到某一已知的正確狀態(也稱爲完整狀態或一致狀態)的功能,這就是數據庫的恢復功能。
綜上所述,數據庫是長期存儲在計算機內有組織的大量的共享的數據集合。它可以供各種用戶共享,具有最小冗餘度和較高的數據獨立性。DBMS在數據庫建立、運用和維護時對數據庫進行統一控制,以保證數據庫的完整性、安全性,並在多用戶同時使用數據庫時進行併發控制,在發生故障後對數據庫進行恢復。
數據庫系統的出現使信息系統從以加工數據的程序爲中心轉向圍繞共享的數據庫爲中心的新階段。這樣既便於數據的集中管理,又有利於應用程序的研製和維護,提高了數據的利用率和相容性,提高了決策的可靠性。