- 新型數據庫系統:原理、架構與實踐
- 金培權 趙旭劍編著
- 4541字
- 2024-06-06 18:41:11
1.1 數據庫系統的相關概念
數據庫系統是對應用了數據庫技術的計算機系統的一種概稱,因此數據庫技術基本都包含在數據庫系統的范疇中。數據庫系統的相關概念在現實應用中很容易混淆,也是人們學習數據庫技術必須首先要了解和區分的對象。
1.1.1 數據
第一個基本概念是數據。數據是數據庫中存儲和管理的基本對象。在現實生活中,我們對數據這個名詞并不陌生,例如“財務數據”和“采購數據”等都是我們經常會聽到或接觸到的。那么,什么是數據?下面給出數據的定義。
定義1.1(數據):數據是人們用來反映客觀世界而記錄下來的可以鑒別的符號。
這個定義的核心意思是“數據是符號”。之所以強調這一點,是因為數據庫系統除了存儲和管理數據之外,還同時管理另一些內容(例如后面馬上要介紹的模式)。
由于現實世界中存在不同類型的符號,因此數據也可分為兩種基本類型:數值數據和非數值數據。數值數據記錄了由0到9這幾個阿拉伯數字所構成的數值,例如職工張三的年齡是一個數值數據,學生李四的英語成績也是數值數據。非數值數據則包括像字符、文字、圖像、圖形、聲音等特殊格式的數據。在實際應用中,非數值數據也很常見,例如人的姓名(字符)、照片(圖像)等。現有的數據庫技術可以同時支持數值數據和非數值數據的存儲和管理。
在實際應用中,如果僅存儲數據一般來說是沒有什么意義的。這是因為數據本身只是符號而已,而同樣的符號在不同的應用環境中可能會出現完全不同的解釋。例如,“65”這一數據在教學管理系統中可能代表了某名學生某門課程的成績,在職工管理系統中可能表示的是某個職工的體重,而在學生管理系統中還可能是計算機系2011級的學生人數。因此,數據與其代表的語義是不可分的,在存儲數據的同時必須說明數據所代表的語義。
除了“93”和“張三”這類表示單一值的簡單數據外,現實生活中還存在復合數據。復合數據是由若干簡單數據組合而成的。例如,學生記錄(李明,197205,中國科學技術大學,1990)就是由簡單數據“李明”“197205”“中國科學技術大學”和“1990”構成的一個復合數據。復合數據同樣也和其語義是不可分的。像上面的學生記錄,其語義在不同應用環境下可能完全不同,例如在高校畢業生管理系統中它可能表示學生姓名、出生年月、所在學校和畢業年份這樣的語義,而在另一個系統中它則可能表示學生姓名、出生年月、錄取大學和入學時間另一種語義。
1.1.2 數據庫
簡單來講,數據庫是一個數據的倉庫,它存儲著數據的集合。但是,這種定義還不夠確切,因為數據庫中的數據并不是隨便存放的,而是有一定的組織和應用特點的。嚴格的數據庫概念定義如下。
定義1.2(數據庫):數據庫(database,DB)是長期存儲在計算機內、有組織的、可共享的大量數據的集合。
這個定義指出了數據庫的幾個特點。
1)數據庫是數據的集合,因此數據庫只是一個符號的集合,本身是沒有語義的。
2)數據庫中的數據不是雜亂無章存放的,而是有組織的。確切地說,是按一定的數據模型組織、描述和存儲的。
3)數據庫中存儲的數據量通常是海量的。如果是少量的數據,通常不需要使用數據庫技術來管理,借助文件系統就可以實現。實際上,存儲的數據量越大,越能體現數據庫技術相對于文件系統的優勢。
4)數據庫通常是持久存儲的,即存儲在磁盤等持久存儲介質上。
5)數據庫一般是被多用戶共享的。換句話說,如果一個數據集合只是為單用戶服務的(例如手機中的通訊錄),那么依靠傳統的文件系統等數據管理技術基本可以滿足要求。只有在多用戶共享的環境中,才能充分發揮數據庫技術的優點。目前,除了少數專用的數據庫產品外,絕大多數商用數據庫產品都是面向多用戶應用的。
6)數據庫一般服務于某個特定的應用,因此數據間聯系密切,具有較小的冗余度和較高的獨立性。現實世界中有銀行數據庫、航班數據庫、圖書數據庫等面向特定應用的數據庫,但是不存在通用的數據庫。即便都是圖書數據庫,不同的應用環境對數據組織、數據存儲等也會有不同的要求。例如,某學校的圖書數據庫中需要存儲每一種圖書的供應商,而另一個學校則可能不需要存儲。這些都會影響數據庫中數據的表示和組織方式。因此,可以說,數據庫一般都是專門針對某個特定應用的。
1.1.3 數據庫模式
由于數據庫本質上是數據的集合,因此它也是符號的集合,本身是沒有語義的。數據庫的語義可以用另一個概念——數據庫模式(database schema)來表達。數據庫模式的定義如下。
定義1.3(數據庫模式):數據庫模式是數據庫語義的表達,它是對數據庫中全體數據的邏輯結構和特征的描述。
圖1-1顯示了數據庫與數據庫模式之間的關系。兩者之間的關系與“數據”和“數據的語義”之間的關系是類似的。實際上,因為數據庫本身就是數據的集合,因此數據庫中所有數據的語義就構成了數據庫的語義,即數據庫模式。
圖1-2給出了數據庫與數據庫模式的一個例子。在這個例子中,假設數據庫中只存儲了學生數據。圖1-2的左邊顯示了使用關系數據模型表示的數據庫結構與內容(如前所述,數據庫中的數據一般都是按某種數據模型進行組織的),右邊則分別顯示了對應的數據庫和數據庫模式。關系數據模型是目前最流行的數據模型(現有的商用數據庫產品基本都基于關系數據模型),它的基本數據結構就是圖1-2左邊顯示的二維表格。二維表格本身包含了表頭和下面的數據行,從概念上講,二維表格的表頭表示了下方數據行的語義,所對應的結構就是此二維表格的模式(由于假設數據庫中只有這一個表,因此此模式就是數據庫的模式),而下方的數據行集合則構成了數據庫——它是數據的集合。

圖1-1 數據庫與數據庫模式之間的關系

圖1-2 數據庫與數據庫模式示例
1.1.4 數據庫管理系統
第四個概念是數據庫管理系統。下面給出數據庫管理系統的定義。
定義1.4(數據庫管理系統):數據庫管理系統(database management system,DBMS)是一個計算機軟件,它用于創建和管理數據庫。
數據庫管理系統從軟件的分類上屬于計算機系統軟件。系統軟件一般是管理計算機資源的軟件。常見的系統軟件有操作系統、數據庫管理系統等。同樣是系統軟件,操作系統管理計算機中的全部資源,包括處理器、存儲器、外設等,而數據庫管理系統則只管理計算機中的數據資源。操作系統本身也有數據管理的能力,即文件管理功能,但正是因為操作系統的文件管理功能在管理大規模共享數據時容易出現存取性能差、數據不一致等問題,所以才有了數據庫管理系統。可以這么理解,數據庫管理系統是一種專門用于高效管理數據資源的系統軟件。
通常情況下,數據庫管理系統運行在操作系統之上。也就是說,當涉及底層的磁盤操作時,數據庫管理系統通常利用操作系統提供的磁盤存取服務來實現底層數據的存取。目前,大多數的商用DBMS都采取了這種方式。但是,理論上,數據庫管理系統也可以完全繞過操作系統提供的數據輸入/輸出(Input/Output,I/O)服務,直接跟底層的磁盤打交道。現在一些大型的DBMS如IBM DB2、Sybase ASE等已經可以支持這種數據訪問方式。此外,DBMS通常不直接面向應用。作為系統軟件,其職責在于管理和維護數據資源。同時,用戶可以在DBMS之上創建直接服務于應用的數據庫應用系統(或稱數據庫應用軟件),從而構建基于數據庫技術的應用軟件,滿足實際應用的需求。圖1-3顯示了用戶應用、DBMS和操作系統之間的層次架構。

圖1-3 用戶應用、DBMS和操作系統之間的層次架構
由于數據庫中的數據需要按某種邏輯結構進行組織,因此任何一個DBMS在實現時必須基于某種數據模型(數據模型描述了數據的邏輯組織結構、操作等內容,此部分內容將在后面詳細討論),以保證所管理的數據庫都能夠按照統一的邏輯結構進行存取。例如,目前常見的DBMS如Oracle、Microsoft SQL Server等都是基于關系數據模型的,因此也被稱為關系DBMS;而另一些DBMS,如Versant、O2等是基于面向對象數據模型的,通常稱它們為面向對象DBMS。正是因為數據模型決定了DBMS中數據的組織和操作方法,所以基于什么樣的數據模型成為區分數據庫管理系統的最主要因素。
在實際應用中常見到的一些數據庫產品,如Oracle、Microsoft SQL Server等,從嚴格意義上講都是DBMS。但隨著計算機軟件技術和應用的不斷發展,現在的Oracle、Microsoft SQL Server已經不單純是DBMS,而是一套以DBMS為核心的套件。也就是說,它們不僅提供了DBMS的核心功能,還提供了其他一些軟件功能,例如數據的導入/導出、備份管理等。這一點與C++和Visual C++的區別有點類似。C++好比是DBMS,而Visual C++好比是Oracle等各種大型商用數據庫軟件,雖然Visual C++提供了多種多樣的開發功能,但C++是其核心,其本質仍然是C++開發工具。在實際生活中,只要知道Oracle、Microsoft SQL Server這些產品的本質是DBMS就可以了。
圖1-4顯示了DB-Engines網站(https://db-engines.com)上排名前十的DBMS(截至2021年12月)。可以看到,Oracle、MySQL、Microsoft SQL Server仍是最受歡迎的三大DBMS產品。列表中還包括了MongoDB、Redis等NoSQL數據庫系統,本書將在后面對它們進行介紹。
需要注意的是,DB-Engines主要根據互聯網上DBMS受歡迎程度的信息對DBMS進行排名。排名依據以下五個因素:
1)Google及Bing搜索引擎中的關鍵字搜索數量。
2)Google Trends中的關鍵字搜索數量。
3)Indeed網站的職位搜索量。
4)LinkedIn上提到關鍵字的個人資料數。
5)Stackoverflow上的相關問題和關注人數。
因此,DB-Engines的DBMS排名只代表了互聯網中各個DBMS的受關注程度,某種意義上可以看作“熱度排名”。這一排名沒有包括實際的DBMS產品銷售和裝機數據,另外也沒有考慮我國市場的影響(例如沒有考慮我國用戶主要使用百度中文搜索引擎),因此僅具有參考價值。另一方面,要給出一個綜合各種因素的DBMS綜合排名有較大的難度,因為各類數據的獲取存在困難。

圖1-4 DB-Engines網站上排名前十的DBMS
1.1.5 數據庫系統
最后一個重要的概念是數據庫系統。數據庫系統是一個泛指的概念,其定義如下。
定義1.5(數據庫系統):數據庫系統(database system,DBS)是指在計算機系統中引入了數據庫后的系統,即采用了數據庫技術的計算機系統。
數據庫系統與其他計算機系統的區別在于,它是以數據庫為基礎的。現實中所見的許多系統,例如銀行信息系統、電子政務系統等都可以稱為數據庫系統,因為它們背后都有DBMS和數據庫的支持。隨著應用數據類型和數據量的不斷增長,在計算機系統中采用數據庫技術來管理數據已經成為一種普遍性的解決方案,因此數據庫系統在實際應用中已經非常普及。
作為一個計算機系統,數據庫系統同樣包含了軟件、硬件、用戶等要素。一個數據庫系統通常包括計算機硬件平臺、操作系統、DBMS(及數據庫)、應用程序及用戶。圖1-5給出了數據庫系統的組成。
在圖1-5中,數據庫系統中的用戶分為兩種類型:終端用戶與數據庫管理員(database administrator,DBA)。從圖中可以看到,終端用戶直接與應用程序交互,而數據庫管理員則直接跟DBMS打交道。終端用戶相當于銀行的前臺柜員,而數據庫管理員則好比是銀行數據庫系統的管理員和維護人員,他們負責管理和維護數據庫系統的正常運行。通常,數據庫管理員會通過對DBMS的一些參數進行配置和調優,或者利用DBMS提供的一些管理功能,如備份、監控、訪問控制等,進行系統維護。
數據庫、數據庫管理系統、數據庫系統這三個概念在實際應用中容易混用。不過,如果在上下文語義清晰的情況下,可以用“數據庫”來指代數據庫管理系統或者數據庫系統。舉個例子,“你們上機用什么數據庫啊?”“Oracle 12g。”在這一場景下,“數據庫”指的是數據庫管理系統的概念。但是,如果在論文或者其他規范化文檔的寫作中,則要求嚴格區分這些概念,保證論文的嚴謹性。例如,不能將“高校信息化數據庫的設計”混淆為“高校信息化數據庫管理系統的設計”,前者是指數據庫的設計,而后者是指數據庫管理系統的設計,兩者的內涵和難度不是一個量級的。

圖1-5 數據庫系統的組成
- 計算機組成原理與接口技術:基于MIPS架構實驗教程(第2版)
- 文本數據挖掘:基于R語言
- Ceph源碼分析
- 基于Apache CXF構建SOA應用
- 從0到1:JavaScript 快速上手
- 圖數據實戰:用圖思維和圖技術解決復雜問題
- 高維數據分析預處理技術
- IPython Interactive Computing and Visualization Cookbook(Second Edition)
- 聯動Oracle:設計思想、架構實現與AWR報告
- 中文版Access 2007實例與操作
- Python數據分析從小白到專家
- Access數據庫開發從入門到精通
- SQL Server 2008寶典(第2版)
- 大數據分析:R基礎及應用
- MySQL技術內幕:InnoDB存儲引擎