數據庫管理系統
數據庫管理系統是數據庫應用系統的核心。數據庫管理系統是由一組基于操作系統的數據管理通用軟件組成的軟件系統,是操作系統和用戶之間的數據管理軟件,負責實現數據庫中的數據組織、數據操作、數據維護和數據控制。1961年,美國通用電氣公司開發了世界上第一個數據庫管理系統——集成數據存儲(IDS ),這標志著第一代數據庫管理系統——網格數據庫管理系統的出現。1968年,IBM推出的IMS(信息管理系統)是第一個大型商業數據庫管理系統。1970年,Edgar F.Codd提出了一個關系數據模型來解決第一代數據庫管理系統的問題。1974年,IBM開發了第二代數據庫管理系統,關系數據庫管理系統SystemR。該系統證實了Edgar F.Codd的關系數據模型的可行性、有效性和優越性,并直接推動了數據操作語言SQL的出現。隨后,商用關系數據庫系統相繼出現。一般來說,數據庫管理系統的主要功能包括數據定義、數據操作、數據庫操作管理、數據存儲和管理、數據庫建立和維護、數據通信接口等。
發展歷史
背景
數據庫管理系統是隨著數據庫系統的誕生而出現的。50年代中期,計算機主要用于科學計算,沒有磁盤存儲設備和操作系統軟件。數據大多以穿孔紙帶的形式進行物理存儲和處理,數據管理主要依靠人工。50年代后期,隨著磁盤、磁鼓等直接存儲設備的出現,以及軟件領域操作系統的存在,計算機不僅可以用于科學計算,還可以用于數據管理,從而進入文件系統階段。在這個階段,操作系統中的文件系統模塊管理存儲的數據。但是,由于文件之間的相對獨立性,文件系統缺乏完整統一的管理和共享數據的能力,因此其缺點是數據冗余和不一致性較多,數據之間的聯系較弱,數據的邏輯獨立性較差,并且由于文件服務于特定的應用,因此很難在現有數據上擴展新的應用。
20世紀60年代以后,隨著計算機在數據管理領域的廣泛應用,人們對數據管理技術提出了更高的要求:希望為企業或部門組織數據,減少數據冗余,提供更高的數據共享能力,同時要求程序和數據具有更高的獨立性。當數據的邏輯結構發生變化時,不涉及數據的物理結構,也不影響應用程序,從而降低了應用程序的開發和維護成本。數據庫系統應運而生,數據管理進入數據庫系統階段。數據庫系統階段的應用與數據的關系是通過數據庫管理系統(DBMS)來實現的,數據庫管理系統由此誕生。
第一代:網絡數據庫管理系統
20世紀60年代,美國啟動了阿波羅載人登月工程。這個項目需要處理和管理龐大的數據。在此背景下,1961年,美國通用電氣公司開發了世界上第一個數據庫管理系統——集成數據存儲(IDS),標志著網絡數據庫管理系統的出現,這一系統在當時得到了廣泛的分布和應用。1968年,IBM推出了基于分層數據模型的IMS(信息管理系統),這是第一個標志性的大型商用數據庫管理系統,也是數據庫系統中的第一個商用產品,并成功應用于商業、金融等領域。
在此期間,為了幫助建立數據庫標準,數據系統語言會議(CODASYL)成立了一個表格處理工作隊,其中包括美國政府和商業界的代表。1967年,CODASYL更名為DataBaseTaskGroup (DBTG)。1971年,數據庫任務組(DBTG)發表了第一份正式報告,該報告包括三個部分:網狀數據庫模型、數據定義語言(DDL)和數據操作語言(DML)的規范。DBTG系統和分層方法代表了第一代數據庫管理系統。
因為第一代數據庫管理系統主要依賴于網格或層次數據模型。這類數據庫系統具有結構復雜、數據定義和數據修改不方便的缺點,因此很快被基于關系數據模型的第二代數據庫系統所取代。
第二代:關系數據庫管理系統
1970年,Edgar F.Codd在他的論文《大型共享數據庫的數據關系模型》中提出了關系數據模型,以解決網絡和層次數據庫系統中存在的問題。Edgar F.Codd建議將數據存儲在由行和列組成的簡單表格中,而不是存儲在層次結構中,這樣當用戶查詢數據時,就不需要知道它的數據結構。1974年,IBM開發了關系數據庫管理系統SystemR。該系統證實了Edgar F.Codd的關系數據模型的可行性、有效性和優越性,并直接推動了數據操作語言SQL的出現,成為關系數據庫管理系統(RDBMS)的標準語言。隨后,商業關系數據庫系統如雨后春筍般出現并得到廣泛應用。典型的關系數據庫管理系統包括Oracle、DB2、Informix、Sybase等。1976年,Honeywell公司開發了Multics關系數據庫(MRDS),這是第一個商用關系數據庫管理系統(RDBMS)。關系數據庫管理系統被稱為第二代數據庫管理系統。由于關系數據庫系統具有模型簡單明了、理論基礎好、數據獨立性強、數據庫語言非過程化、標準化等特點,因此在數據庫市場上迅速取得了壟斷地位,關系數據庫管理系統仍然是目前市場份額最大的數據庫管理系統。
第三代:對象關系數據庫管理系統
1976年,美籍華人計算機科學家彼得。陳提出的實體關系模型作為一種概念數據庫設計技術已被廣泛接受。此外,Edgar F.Codd試圖通過稱為RM/T(1979)和隨后的RM/V2(1990)的關系模型的擴展版本來解決他的工作中的一些缺點。擴展的關系模型更接近真實世界的描述,被歸類為語義數據建模。為了適應越來越復雜的數據庫應用,出現了兩種新型系統:OODBMS(面向對象數據庫管理系統)和ORDBMS(面向對象關系數據庫管理系統)。然而,與以前的數據模型不同,這些模型的實際組成并不清楚。這些變化促使了第三代數據庫管理系統的出現。
20世紀90年代以后,互聯網、多層B/S結構和企業數據庫與Web應用的集成已經成為一種趨勢。90年代末建立了對象關系數據庫管理系統,不僅支持廣泛使用的SQL,而且具有良好的通用性和面向對象特性,支持復雜對象和復雜對象的復雜行為。對象關系數據庫管理系統滿足了新的應用領域的需求和傳統應用領域深化發展的需要。人們將面向對象技術與數據庫技術相結合的系統稱為第三代數據庫管理系統或新一代數據庫管理系統。
系統原理
應用程序通過數據庫管理系統訪問和維護數據,而數據庫管理系統以特定的結構化方式管理和保存數據。為了從大量的數據中快速找到所需的數據,并對龐大的數據庫進行日常維護,有必要使用數據庫管理系統。數據庫管理系統是操縱和管理數據庫的大型軟件,用于建立、使用和維護數據庫。數據庫管理系統對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。用戶通過數據庫管理系統訪問數據庫中的數據,數據庫管理員也通過數據庫管理系統維護數據庫。數據庫管理系統可以制作多個應用程序,允許用戶在同一時間或不同時間使用不同的方法建立、修改和查詢數據庫。大多數數據庫管理系統都提供了數據定義語言、數據操作語言和數據控制語言,供用戶定義數據庫模式結構和權限約束,實現添加、刪除數據等操作。
系統分類
在數據庫中,因為數據是按照一定的數學模型組織的。因此,從數據模型的角度來看,根據計算機系統支持的數據模型的不同,數據庫管理系統主要可以分為以下幾類:
分層數據庫管理系統
分層數據庫管理系統的典型代表是IMS,它是美國IBM公司開發的第一個大型商用數據庫管理系統,并得到了廣泛的應用。在本系統中,數據管理模型是分層數據模型,即采用樹結構來表示實體及其關系。在層次模型中,文件或記錄之間的關系形成一個層次結構。分層數據庫將記錄集表示為倒置的樹結構。一棵樹的節點代表實體集,一棵樹可以定義為一組節點,即有一個專門指定的節點叫做根(node),其他節點只有一個父節點。節點之間的連線表示兩個相連的實體集之間的關系,只能是“1: m”。通常代表1的實體集放在最上面,稱為父節點,代表M的實體集放在最下面,稱為子節點。記錄之間的聯系是通過指針來實現的,查詢效率高,但缺點是復雜難掌握。
網絡化數據庫管理系統
網絡數據庫管理系統的典型代表是CODASYL提出的DBTG系統。在這個系統中,數據模型是一個網絡模型,即實體類型和實體之間的關系用有向圖結構來表示。和層次模型一樣,記錄之間的關系也是通過指針來實現的,可以很容易地實現M: N關系,查詢效率高。但它也有和層次模型類似的缺點,就是數據結構復雜,編程也復雜。
關系數據庫管理系統
關系數據庫管理系統的數據模型采用IBM研究員Edgar F.Codd在他的論文中提出的關系模型。在關系模型中,用一個叫做“關系”的二維表來組織數據,也就是用一個二維表結構來表示實體和實體之間的關系。背后可能有復雜的數據結構來保證對各種數據操作的快速響應,但數據庫系統的用戶不需要關聯,從而提高了數據庫開發人員的效率。
常見系統
MySQL
MySQL是一個關系數據庫管理系統(RDBMS),由瑞典的MySQL AB公司開發。MySQL是流行的關系數據庫管理系統之一,MySQL是Web應用中最好的RDBMS應用之一。關系數據庫將數據存儲在不同的表中,而不是將所有數據存儲在一個大倉庫中,這提高了速度和靈活性。
Oracle
Oracle是美國Oracle公司(甲骨文公司)提供的一套以分布式數據庫為核心的軟件產品,是目前最流行的客戶機/服務器或B/S架構的數據庫之一。比如SilverStream就是一個基于數據庫的中間件。Oracle數據庫是目前世界上應用最廣泛的數據庫管理系統。作為一個通用數據庫系統,它具有完整的數據管理功能。作為關系數據庫,它是完全關系的產物;作為一個分布式數據庫,它實現了分布式處理功能。但是它的所有知識,只要在一個機型上學習甲骨文知識,就可以用在各種類型的機器上。
MicrosoftSQL Server
SQL Server是微軟公司推出的關系數據庫管理系統,具有使用方便、可擴展性好、與相關軟件集成度高等優點。它可以跨多種平臺使用,從運行Microsoft Windows 98的筆記本電腦到運行Microsoft Windows 2012的大型多處理器服務器。MicrosoftSQL Server是一個全面的數據庫平臺,它通過使用集成的商業智能(BI)工具來提供企業級數據管理。MicrosoftSQLServer數據庫引擎為關系數據和結構化數據提供了更加安全可靠的存儲功能,使用戶能夠為企業構建和管理高可用性和高性能的數據應用程序。
Access
Access是微軟公司推出的小型關系數據庫管理系統。和Word、Excel、PowerPoint一樣,也是Office系列辦公軟件的重要組成部分之一。Access功能強大,操作簡單,為用戶提供了數據管理工具集和數據庫應用程序的開發環境。它主要適用于小型數據庫系統的開發,是目前流行的桌面數據庫管理系統之一。
PostgreSQL
PostgreSQL是一個自由軟件對象關系數據庫管理系統(ORDBMS ),功能齊全,基于加州大學計算機系開發的PostgreSQL。POSTGRES的很多領先概念是在相對較晚的階段才出現在商業網站的數據庫中的。PostgreSQL支持大多數SQL標準,并提供許多其他現代功能,如復雜查詢、外鍵、觸發器、視圖、事務完整性和多版本并發控制。類似地,PostgreSQL可以在許多方面進行擴展,例如添加新的數據類型、函數、運算符、聚合函數、索引方法和過程語言。此外,由于許可證的靈活性,任何人都可以出于任何目的免費使用、修改和分發PostgreSQL。
BigTable
BigTable是一個非關系數據庫管理系統。它是一種稀疏的、分布式的、持久的多維排序圖,可以快速可靠地處理PB級數據,可以部署到數千臺機器上。BigTable已經應用于60多個谷歌產品和項目,包括谷歌分析、谷歌財務、Orkut、個性化搜索、Writely和谷歌地球。這些產品對BigTable提出了不同的要求,有的需要高通量批處理,有的需要及時向終端用戶提供響應數據。他們使用的BigTable集群的配置也大相徑庭。一些集群只有幾臺服務器,而另一些集群需要數千臺服務器,存儲數百TB的數據。
Cassandra
Cassandra是一個免費、開源、分布式、寬列存儲NoSQL數據庫管理系統,旨在處理許多商業服務器上的大量數據。
MongoDB
MongoDB是由其同名公司(原名10Gen)開發的開源軟件,其特點是高性能和高可擴展性。這是一個面向文檔的NoSQL數據庫管理系統。
CouchDB
CouchDB是一個開源的面向文檔的數據管理系統。CouchDB可以安裝在大多數操作系統上,包括Linux和MacOSX X,CouchDB的文檔更新模型是無鎖的,所以CouchDB、SQL和CouchDB的結構不需要預定義,沒有固定的模式,所以它是任意結構的文檔集合。數據不必滿足任何范式,存在數據冗余;用戶不需要知道文檔結構,甚至不需要知道文檔名稱;屬于動態模式下的靜態查詢。
系統組成
連接管理器和安全管理器
連接管理器提供了建立數據庫連接的設備。可以在本地設置,也可以通過網絡設置,后者更常見。它驗證登錄憑證,如用戶名和密碼,并返回連接句柄。數據庫連接可以作為單個進程運行,也可以作為進程中的一個線程運行。線程代表進程的內部執行路徑,是處理器調度的最小單位。一個進程可以包含多個線程,這些線程可以共享資源(比如內存)。安全管理器驗證用戶是否具有執行所需數據庫操作的適當權限。例如,一些用戶擁有讀取數據的權限,而另一些用戶擁有寫入數據的權限。安全管理器從目錄中檢索這些權限。
DDL編譯器
DDL編譯器編譯DDL中的數據定義。理想情況下,DBMS應該提供三個DDL:一個用于內部數據模型,一個用于邏輯數據模型,一個用于外部數據模型。然而,對于使用SQL作為DDL的關系數據庫,在大多數情況下,它是具有三個不同指令集的單個DDL。DDL編譯器首先解析DDL定義并檢查其語法正確性。然后,它將數據定義轉換為內部形式,并在出現錯誤時輸出錯誤提示。編譯成功后,它將在目錄中注冊數據定義,數據庫管理系統的所有其他組件都可以通過目錄使用這些定義。
詢問處理程序
查詢處理器是數據庫管理系統最重要的組成部分之一。它幫助我們執行與數據庫查詢相關的操作,例如從數據庫中檢索數據、插入數據、更新數據和刪除數據。大多數DBMS供應商都有自己專用的查詢處理器,通常包括DML編譯器、查詢解釋器、查詢重寫器、查詢優化器和查詢執行器。
四層架構:存儲管理器
存儲管理器管理物理文件訪問,以確保正確有效地存儲數據。它由事務管理器、緩沖管理器、鎖管理器和恢復管理器組成。
DBMS工具
除了前面討論的組件之外,數據庫管理部門還附帶了各種工具。加載工具支持從各種來源(如其他數據庫管理部門、文本文件、Excel文件等)加載信息。)到數據庫里。重組工具自動重組數據以提高性能。性能監控工具報告各種關鍵性能指標,如占用的存儲空間、查詢響應時間和事務吞吐量,以監督數據庫管理系統。用戶管理工具支持用戶組或帳戶的創建以及權限的分配。數據庫管理工具通常包括備份和恢復工具。
DBMS接口
數據庫管理系統需要與許多成員進行交互,如數據庫設計者、數據庫管理員、應用程序和最終用戶。為了促進這些交互,它提供了各種用戶接口,如基于網絡的接口、獨立查詢語言接口、命令行接口、基于表單的接口、用戶圖形接口、自然語言接口、應用編程接口(API)、管理接口和網絡接口。
系統功能
一般來說,數據庫管理系統的功能主要包括以下六個方面。
數據定義功能:數據定義包括定義構成數據庫結構的模式、存儲模式和外部模式,定義外部模式和模式之間的映射,定義模式和存儲模式之間的映射,定義相關約束。例如,為確保數據庫中數據的正確語義而定義的完整性規則、為確保數據庫的安全性而定義的用戶密碼和訪問權限等。
數據處理功能:數據操作包括數據庫數據的檢索、插入、修改和刪除等基本操作。
數據庫操作管理:管理數據庫的操作是數據庫管理系統的核心部分,包括并發控制、安全檢查、完整性約束的檢查和實現以及數據庫的內部維護(如索引和數據字典的自動維護)。所有訪問數據庫的操作都應在這些控制程序的統一管理下進行,以確保數據的安全性、完整性和一致性,以及多個用戶對數據庫的并發使用。
數據存儲和管理功能:數據庫需要存儲各種數據,如數據字典、用戶數據、訪問路徑等。數據庫管理系統負責將這些數據分門別類地組織、存儲和管理,確定用什么樣的文件結構和訪問方式在物理上組織這些數據,如何實現數據之間的聯系,從而提高存儲空間的利用率,提高隨機查找、順序查找、添加、刪除、修改的時間效率。
數據庫建立和維護功能:數據庫的建立包括數據庫初始數據的輸入和數據轉換。數據庫維護包括數據庫轉儲和恢復、數據庫重組和重建、性能監控和分析等。
數據通信接口功能:數據庫管理系統需要提供與其他軟件系統通信的功能。例如,它提供了與其他數據庫管理系統或文件系統的接口,以便可以將數據轉換為另一個數據庫管理系統或文件系統可以接收的格式,或者可以接收來自其他數據庫管理系統或文件系統的數據。除上述功能外,為適應數據共享環境,現代數據庫管理系統一般還具有數據完整性維護、安全保護、多用戶并發控制和故障恢復等功能。
工作模式
數據庫管理系統是管理數據的軟件系統,是數據庫系統的核心組成部分。用戶在數據庫系統中的所有操作,包括數據定義、查詢、更新和各種控制,都是通過數據庫管理系統進行的。
數據庫管理系統的工作模式如下:
1接收來自應用程序的數據請求和處理請求。
將用戶的數據請求轉換成復雜的機器代碼。
3 .實現對數據庫的操作。
4接收對數據庫操作的查詢結果。
5.處理查詢結果。
6.將處理結果返回給用戶。
數據庫管理系統總是基于某種數據模型,因此它可以看作是某種數據模型在計算機系統上的具體實現。根據不同的數據模型,數據庫管理系統分為層次型、網絡型、關系型和面向對象型。在不同的計算機系統中,由于缺乏統一的標準,即使是具有相同數據模型的數據庫管理系統,在用戶界面和系統功能方面也往往是不同的。
系統特征
數據是統一組織和管理的:由于數據庫系統使用復雜的數據模型來表示數據結構,數據模型不僅描述了數據本身的特征,還描述了數據之間的關系,因此數據不再是面向某個特定的應用,而是面向整個應用系統。數據維護簡單方便,易于擴展,數據冗余明顯減少,真正實現了數據共享。
高度的數據獨立性:數據的獨立性是指數據和程序的獨立性,將應用程序中的數據定義和管理功能分離,由DBMS負責數據的存儲和管理。由于數據在數據庫管理系統的管理下采用三層模式結構,數據的邏輯獨立性和物理獨立性得到了明顯的體現。應用程序員不用關心數據的存儲位置和存取方法,只需要知道數據的邏輯結構,這樣就減輕了負擔。