數據庫基本概念
一、 數據庫與數據庫管理系統
1.什么是數據(data)
我們可以這樣來定義數據:描述客觀事物的符號記錄成為數據。數據是數據庫中存儲的基本對象,數據不僅僅是狹義上的數字表現形式,如整數、實數、浮點數等,它在廣義上還包含了文本文字(text)、圖形(graph)、圖像(image)、音頻(audio)、視頻(video)等非數字的表現形式,因為他們通過數字化處理之后就可以存入計算機內。
當然,這些數據無論是數字形式的還是非數字形式的,都沒辦法真正的表達出數據的真實含義,要想完整地表達出數據的含義,我們需要對數據進行解釋才行。數據的解釋實質就是指對數據含義的說明,即對數據的語義進行說明,數據和數據的語義是不可分的。
例如,178既可以指一個人的身高是178cm,也可以指這個人的體重是178斤,甚至還可以認為是某個社團協會的總人數,我們如果不知道數據的語義,就沒辦法說明數據的含義。
記錄是計算機內表示和存儲數據的一種格式或方法。例如,我們把某個學生的姓名、性別、出生日期,所在院系、入學時間等組織在一起,就構成了一個記錄。
2. 數據庫(DB:DataBase)
數據庫,指的是按一定格式將數據存儲在計算機存儲設備上的數據倉庫。如果要嚴格地定義數據庫,那么,數據庫是長期存儲在計算機內、有組織的、可共享的大量數據的集合。數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗余度(redundancy)、較高的數據獨立性(data independency)和易擴展性(scalability),並可為各種用戶共享。更概括地說,數據庫具有永久存儲、有組織和可共享三個基本特點。
3. 數據庫管理系統(DBMS:DataBase Mangement System)
數據庫管理系統是用於管理數據庫的系統軟件,有數據庫和用於訪問管理數據庫的程序組成,DBMS可以組織和存儲數據,獲取、檢索、管理和維護數據庫中的數據,是數據庫系統的核心組成部分。
數據庫管理系統是位於用戶和操作系統之間的數據管理軟件,它和操作系統一樣屬於系統軟件,主要包括以下功能:
(1)數據定義功能
數據庫管理系統提供數據定義語言(DDL:Data Definition Language),用戶可以通過它方便地對數據庫中的數據對象的組成和結構進行定義。
(2)數據組織、存儲和管理功能
數據庫管理系統要分類組織、存儲和管理各種數據,包括數據字典、用戶數據、數據的存取路徑等。要確定以何種文件結構和存取方式在存儲級別上組織這些數據,如何實現數據之間的聯系。數據組織和存儲的基本目標是提高存儲空間的利用率和方便存取,並提供多種存取方法(如索引查找、哈希查找、二分查找等)來提高存取效率。
(3)數據操縱功能
數據庫管理系統還提供了數據操縱語言(DML:Data Manipulation Language),用戶可以使用它操縱數據,實現對數據庫的基本操作,如插入、刪除、修改和查詢等。
(4)事務管理和運行管理功能
數據庫在建立、運行和維護時有數據庫管理系統進行統一管理和控制,以保證事務的正確運行,保證數據的安全性、完整性、多用戶對數據的並發使用以及故障發生后的系統恢復。
(5)數據庫建立和維護功能
數據庫的建立和維護功能包括數據庫初始數據的輸入、轉換功能,數據庫的轉儲、恢復功能,數據庫的重組織功能和性能監視、分析功能等。這些功能通常由一些實用程序或者管理工具來完成。
(6)其它功能
其它功能包括數據庫管理系統與網絡中其他軟件系統的通信功能,一個數據庫管理系統與另一個數據庫管理系統或文件系統的數據轉換功能,異構數據庫之間的互訪和互操作功能等。
4. 數據庫系統(DBS:DataBase System)
數據庫系統是由數據庫、數據庫管理系統(及其應用開發工具)、應用程序和數據庫管理員(DBA:DataBase Administrator)組成的存儲、管理、處理和維護數據的系統
數據庫管理系統主要分為以下兩類:
4.1 關系數據庫
關系數據庫是創建在關系模型基礎上的數據庫,借助於集合代數等數學概念和方法來處理數據庫中的數據。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。
幾乎所有的數據庫管理系統都配備了一個開放式數據庫連接(ODBC)驅動程序,令各個數據庫之間得以互相集成。
典型代表有:MySQL、Oracle、Microsoft SQL Server、Access及PostgreSQL等
4.2 非關系型數據庫 NoSQL
非關系型數據庫是對不同於傳統的關系數據庫的數據庫管理系統的統稱。與關系數據庫最大的不同點是不使用SQL作為查詢語言。
典型代表有:BigTable(Google)、Cassandra、MongoDB、CouchDB;
還包括鍵值數據庫:Apache Cassandra(Facebook)、LevelDB(Google)
5.數據庫架構
數據庫的架構可以大致區分為三個概括層次:內層、概念層和外層。
內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
外層:最接近用戶,即有關個別用戶觀看數據的方式。
概念層:介於兩者之間的間接層