- 數據庫系統原理與實踐
- 陸鑫等編著
- 4705字
- 2024-05-23 17:15:31
1.4 數據庫管理系統基礎
數據庫管理系統(DBMS)作為一種運行與管理數據庫的軟件系統,它與計算機操作系統一樣,都屬于核心基礎系統軟件。目前,IT領域國內外已有400多種數據庫管理系統的DBMS軟件,既包括商業DBMS軟件,也包括開源DBMS軟件,這些DBMS軟件在信息系統中得到廣泛應用。學習者首先需要了解DBMS軟件基本功能、DBMS基本工作原理、DBMS軟件分類,以及主流DBMS軟件特點,在此基礎上學習理解DBMS技術實現原理,才能掌握數據庫系統開發技術。
1.4.1 數據庫管理系統軟件基本功能
DBMS是實現數據庫運行與管理的系統軟件,它不但提供了數據庫執行引擎,還提供了不少數據庫管理工具。作為數據庫服務器的系統軟件,DBMS軟件均具有數據庫定義、數據操作訪問、數據庫運行控制、數據庫組織與存儲、數據庫運維、數據庫通信、數據庫安全等大類功能,其基本功能結構如圖1-10所示。
DBMS軟件在數據庫應用系統中承擔數據庫操作訪問與管理控制工作,它具有如下基本功能。
1)數據庫定義:DBMS軟件為DBA用戶提供數據庫及其對象(表、索引、視圖、約束、主鍵、外鍵等)的創建與管理功能。DBA用戶可以在DBMS服務器中執行數據定義語言語句,從而完成各種數據庫對象的創建、修改、刪除等功能,也可通過DBMS管理工具管理數據庫對象。

圖1-10 DBMS軟件的基本功能結構
2)數據操作訪問:應用程序通過提交數據操作語句到DBMS服務器,DBMS服務器執行該語句,實現數據庫中數據的插入、刪除、更新、查詢等操作處理。
3)數據庫運行控制:DBMS軟件為DBA用戶提供數據庫實例的運行控制管理功能,主要包括數據庫實例的運行啟停控制、多用戶環境下數據庫事務并發控制、數據庫事務管理、數據庫訪問操作完整性檢查、數據庫系統運行日志管理等功能。使用這些DBMS管理功能,可以實現數據庫系統運行管控,確保數據庫系統的正常運行。
4)數據庫組織與存儲:DBMS軟件為DBA用戶提供在數據庫中進行數據組織與存儲管理的功能,主要包括數據庫文件存儲、數據分區組織、數據索引組織、數據存取管理、緩沖區管理、存取路徑管理等功能。數據組織與存儲管理功能的目標就是實現合理的存儲空間利用率和數據存取效率。
5)數據庫運維:DBMS軟件為DBA用戶提供數據庫運行維護管理功能,主要包括數據載入、數據轉換、數據導出、數據庫重構、數據庫性能監控、數據庫性能優化等管理功能。DBA用戶使用這些管理功能可保障數據庫系統穩定可靠運行。
6)數據庫通信:DBMS軟件為應用程序提供數據庫通信管理功能,主要包括客戶端程序與數據庫服務器連接、不同數據庫節點之間數據復制與數據同步等管理功能。應用程序使用這些管理功能實現在遠程數據庫服務器中進行存取訪問,以及保障分布式數據庫節點之間的數據一致性。
7)數據庫安全:數據庫中的數據是最重要的信息資產,確保數據庫的數據安全至關重要。DBMS軟件為數據庫安全保護提供了用戶身份認證、存取權限控制、數據加密存儲、數據庫備份與恢復等管理功能。
1.4.2 數據庫管理系統軟件分類
DBMS軟件是計算機軟件領域中發展較快的一類系統基礎軟件。自從20世紀60年代數據庫管理系統軟件誕生以來,業界先后推出了很多DBMS軟件。DBMS軟件仍在多個維度上不斷發展,如從關系數據庫DBMS到對象-關系數據庫DBMS,從支持單一數據模型的DBMS到支持多種數據模型的DBMS,從集中式DBMS到分布式DBMS,從桌面級DBMS到企業級DBMS,從通用DBMS到專業領域DBMS,從商業DBMS到開源DBMS。
(1)不同開發技術的DBMS
DBMS軟件按照不同開發技術,可分為關系DBMS(Relational DBMS,RDBMS)、面向對象數據庫DBMS(Object Oriented DBMS, OODBMS)、對象-關系DBMS(Object Oriented Relational DBMS, OORDBMS)等。
(2)不同數據模型的DBMS
除使用最多的關系數據庫外,還有大量NoSQL數據庫,它們采用不同的數據模型來實現數據庫。NoSQL數據庫主要涉及面向對象(Object Oriented)數據模型DBMS、鍵值存儲(Key-value Stores)數據模型DBMS、列存儲(Column Stores)數據模型DBMS、文檔存儲(Document Stores)數據模型DBMS、事件存儲(Event Stores)數據模型DBMS、內容存儲(Content Stores)數據模型DBMS、圖(Graph)數據模型DBMS、時間序列(Time Series)數據模型DBMS、資源描述框架存儲(RDF Stores)數據模型DBMS、搜索引擎(Search Engines)數據模型DBMS、多值(Multivalue)數據模型DBMS、本地XML(Native XML)數據模型DBMS、導航(Navigational)數據模型DBMS等。
(3)不同專業領域的DBMS
與通用領域一樣,在專業領域中也有不少DBMS軟件,如地理空間DBMS、多媒體DBMS、移動計算DBMS、并行計算DBMS、嵌入式DBMS等。
(4)不同處理規模的DBMS
DBMS軟件按照數據庫處理能力與存儲規模不同,可分為終端級DBMS、桌面級DBMS、部門級DBMS、企業級DBMS。
(5)不同部署方式的DBMS
DBMS軟件按照數據庫不同部署方式,可分為單機DBMS、集中式DBMS、分布式DBMS、云服務DBMS。
(6)不同許可類型的DBMS
DBMS軟件按照不同許可類型,可分為商業DBMS、有限開源DBMS、完全開源DBMS。
1.4.3 開源數據庫管理系統軟件
在數據庫領域,開源DBMS軟件越來越受到廣大用戶的歡迎。從2024年2月DB-Engines機構發布的各類DBMS流行程度統計排名來看,排名前10位的DBMS軟件有Oracle Database、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB、Redis、ElasticSearch、IBM DB2、Snowflake、SQLite,其中開源DBMS占7成。在417種各類DBMS中,開源DBMS占226種,商業DBMS占191種。所有開源DBMS流行程度評分為50.3%,而所有商業DBMS流行程度評分為49.7%。這說明開源DBMS的受歡迎程度已經全面超越了商業DBMS。了解與掌握開源DBMS軟件是十分必要的。
1.開源DBMS軟件
開源DBMS軟件是一類可免費使用或付少量費用即可獲得許可的DBMS軟件,其源碼開放、可修改、可升級、可重新發布,但需遵從一定的開源許可限制。
2.開源DBMS為什么受到不少用戶偏愛
DBMS軟件是數據庫應用系統最重要的組成部分,商業DBMS軟件的購置成本和技術服務成本都是一筆不小的開銷。開源DBMS軟件作為一種可免費使用的DBMS軟件,它們在計算機信息系統應用中,可以幫用戶節省大量費用。目前,開源DBMS軟件大都具有典型DBMS軟件功能,可滿足一般的數據庫應用需求。對用戶來說,使用開源DBMS是一種不錯的選擇。此外,數據庫軟件廠商基于開源DBMS推出自己的數據庫軟件產品,遠比完全自主研發數據庫軟件產品容易很多。因此,開源DBMS軟件受到用戶和軟件廠商的廣泛歡迎。
3.開源DBMS的許可協議類型
DBMS軟件的開源許可協議主要有兩類:一類是以GPL、MPL、LGPL協議為代表的Copyleft License,另一類是以BSD、MIT、Apache、木蘭開源協議為代表的Permissive License。Copyleft License要求用戶嚴格遵循開源許可協議約束,不允許用戶將修改后的DBMS代碼閉源,其中GPL更是做了進一步的要求,不允許修改后的軟件在發布時更改開源協議內容。Permissive License則允許用戶修改開源代碼后閉源,因此,這類開源DBMS較受軟件公司青睞。
近年來,由于云數據庫托管服務的擴張,越來越多的數據庫用戶開始流向了云服務商,使得開源社區活躍度下降,開源軟件開發者獲利空間被進一步擠壓,這給開源生態帶來了較大挑戰。對此,不少開源DBMS提供商(如MongoDB、CockroachDB、Redis Labs、Elastic、Confluent和TimescaleDB等)都采取了相應的措施,如對其研發的DBMS軟件提出了更嚴格的許可協議,采用軟件代碼開源、技術服務收費模式。一些開源DBMS提供商提供社區版和企業版的DBMS軟件。社區版DBMS軟件僅提供基本功能,可以免費使用,而企業版DBMS軟件提供完整功能,其中高級功能模塊需要購買許可。
4.開源DBMS與商業DBMS比較
開源DBMS與商業DBMS的區別體現在以下幾個方面:①開源DBMS軟件的源碼是公開的,用戶可以免費使用,或付少量許可費用便可使用開源DBMS軟件;商業DBMS軟件的源碼不對用戶公開,并且用戶只有購買許可才能使用該軟件。②開源DBMS提供商僅為用戶提供有限的技術支持服務;商業DBMS提供商則為用戶提供全面的技術支持服務。③開源DBMS軟件由用戶自己進行軟件安裝與升級處理;商業DBMS軟件由提供商負責軟件安裝與升級處理。④開源DBMS軟件通常僅提供基本功能服務;商業DBMS軟件則提供更豐富的功能服務。
因此,開源DBMS與商業DBMS在數據庫應用中各有優劣。開源DBMS沒有昂貴的軟件許可費用和技術服務費用,但在易用性、穩定性、配套能力、服務能力、版本更新方面存在一定的局限,此外還有部署、遷移等額外成本。商業DBMS通常需要用戶付出昂貴的軟件許可費用和技術服務費用,但它在易用性、穩定性、配套能力、服務能力、版本更新方面具有明顯優勢。因此,在數據庫應用系統開發中,究竟選擇開源DBMS軟件,還是選擇商業DBMS,取決于應用系統的特性要求和用戶需求。
5.主流開源DBMS軟件
為了使學習者了解主流的開源DBMS軟件,下面介紹兩種主流開源DBMS軟件。
(1)MySQL
MySQL是最流行的開源關系DBMS之一。它最早由瑞典MySQL AB公司開發研制,后被Sun公司收購,目前是Oracle公司旗下的開源軟件。MySQL數據庫軟件具有體積小、速度快、可靠性好、適應性強、軟件免費使用、源代碼開放等特點。MySQL在互聯網應用的數據庫管理中得到廣泛使用,同時也被許多業務處理要求不高的中小規模信息系統采用。
MySQL是一個支持多用戶、多線程的關系型DBMS。該DBMS軟件采用標準SQL語言對數據庫進行操作。同時,MySQL采用客戶/服務器架構實現,它由一個服務器守護程序mysqld和若干不同的服務程序組成。通過使用復制、集群技術方案,MySQL還可支持較大規模的數據庫管理。
MySQL的主要技術特點如下:
1)使用C和C++代碼編寫,支持多種編譯器處理程序,保證了源代碼的可移植性。
2)支持FreeBSD、Linux、macOS、Solaris、Windows等多種操作系統。
3)為多種編程語言提供了API。其中包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和TCL等。
4)支持多線程運行,充分利用多核CPU資源。
5)提供優化SQL查詢算法,可有效地提高查詢速度。
6)為應用程序提供ODBC和JDBC等數據庫標準接口連接途徑。
7)為用戶提供多種數據庫管理與優化工具。
8)支持中等規模的數據庫管理能力,可以處理擁有上千萬條記錄的大型數據表。
9)支持GPL協議,用戶可以利用源碼來開發自己的MySQL系統。
(2)PostgreSQL
PostgreSQL是一種技術領先的開源對象-關系DBMS,它不但具有關系數據庫的功能特性,而且支持面向對象數據管理。PostgreSQL是在加利福尼亞大學伯克利分校計算機系研制的Postgres數據庫軟件基礎上開源演化而來的,得到了開源組織的不斷升級完善,并按照寬松的木蘭許可發行軟件。PostgreSQL作為一個功能強大、技術領先的對象-關系DBMS,提供了很多企業級DBMS具有的高級功能特性,擁有良好的性能和很好的可擴展性。它是開源類型的企業級DBMS軟件,支持許多大型信息系統的數據庫應用。
PostgreSQL的主要技術特點如下:
1)對SQL標準高度兼容,除支持SQL常規標準數據類型外,還支持數組、幾何、枚舉、組合、XML、JSON、UUID、對象標識、網絡地址、大對象等復雜數據類型,并允許用戶自定義數據類型。
2)支持時間點恢復(PITR)、表空間、異步復制、嵌套事務、在線熱備、復雜查詢、可更新視圖、多版本并行控制(MVCC)、數據完整性檢查等高級特性。
3)采用經典的客戶/服務器架構。支持進程運行,具有較高系統運行穩定性。
4)支持用較多高級編程語言實現數據庫應用開發,如C/C++、Java、.Net、Perl、Python、Ruby、TCL等,其中Java、Perl、Python、Ruby、TCL、C/C++和自帶的PL/pgSQL還支持數據庫函數、存儲過程、觸發器編程。
5)支持廣泛使用的操作系統平臺,如FreeBSD、HP-UX、Linux、NetBSD、OpenBSD、macOS X、Solaris、UNIX、Windows等。
6)支持大規模數據存儲、大用戶量并發訪問,具有企業級DBMS的高伸縮性、高穩定性。
7)具有繼承機制,可以創建對象數據庫表,并從“父表”繼承其特征。
(3)MySQL與PostgreSQL對比
MySQL和PostgreSQL都是業界最受歡迎的開源DBMS,它們各有優勢與局限。哪個DBMS軟件更好?哪個DBMS軟件更適合具體應用系統?這取決于用戶對它們的全面了解。下面從多個方面對MySQL和PostgreSQL進行比較,見表1-1。
表1-1 MySQL與PostgreSQL比較

(續)

從以上技術特性對比來看,PostgreSQL適合系統穩定性要求較高、復雜事務處理、數據訪問負載較大的企業級應用,如金融、電信、ERP、CRM等。此外,PostgreSQL具有JSON、JSONB、hstore等數據格式,適合非結構化數據管理和一些大數據分析應用。MySQL則適合簡單事務處理、數據可靠性要求較低的互聯網應用場景,如中小型Web信息系統、社交類系統等。不過,用戶對于MySQL和PostgreSQL的選擇,通常取決于應用的數據處理需求和用戶對DBMS的熟練程度。
課堂討論:本節重點與難點知識問題
1)按數據模型分類,主要有哪些類型的DBMS?
2)桌面級DBMS與企業級DBMS有哪些區別?
3)集中式DBMS與分布式DBMS有何區別?
4)關系DBMS與對象-關系DBMS有何異同?
5)PostgreSQL與MySQL比較,具有哪些優勢?
6)目前有哪些國產DBMS軟件?如何發展國產DBMS軟件?