雷小鋒
(中國礦業大學 計算機科學與技術學院,江蘇 徐州 221116)
數據庫原理是高等院校計算機相關專業的核心基礎課程,開設歷史悠久,主要圍繞關系數據模型講授數據庫的基本概念、基礎理論以及數據庫設計、操作和管理的方法,使學生在掌握數據庫系統理論基礎上具有設計和使用關系數據庫的能力。然而,隨著互聯網和大數據時代的來臨,數據庫理論和技術發生了巨大變化,具有更為豐富的內涵和外延,數據庫原理課程教學內容的革新刻不容緩。
大數據時代以數據為中心的理念深入人心,數據成為最重要的價值資源。數據的海量乃至全量化促使數據管理和處理技術發生一系列革新,突破了以關系模型為基礎的傳統關系數據庫理論藩籬,發展出一系列面向半結構化以及非結構化數據、以高可擴展和高可用性為特征的分布式數據庫技術和產品(如表1),極大地拓展了數據組織存儲和管理的理論、方法和技術。數據庫技術進入按用戶需求自由定制的互聯網時代,話語權不再被關系模型和少數軟件廠商所統治,相應的理論和技術需要在新的邏輯框架下重建秩序。
互聯網和大數據時代用戶主體意識全面回歸,期待根據自身數據管理需求自由裁量定制數據管理系統,導致數據庫技術發生了巨大變化,大規模數據的分布式存儲組織和分析在信息系統設計與開發中是常見的場景,NoSQL和NewSQL等數據庫產品在互聯網、電子商務系統中已有廣泛應用,工業界和學術界都迫切需要具有大數據處理思維和能力、全面了解掌握各類數據庫技術的人才。
在開源社區項目“程序員技能圖譜”中給出數據庫工程師應該掌握關系、KV型、文檔、列存儲以及內存等多種類型數據庫的原理及技術(索引結構、事務機制、封鎖技術、備份與恢復技術、高可用技術、優化技術等),此外還要求具備網絡、開發語言、硬件、運維工具等方面的技能。

表1 數據庫技術發展演化階段
然而,當前的數據庫原理課程教學卻沒有跟上數據庫技術發展的步伐,依然堅持著以關系數據模型和關系數據庫為主的有限教學范疇[4],已經不能反映數據庫工業界的發展,人才培養與工業界嚴重脫節。首先,圍繞著關系數據模型,局限于嚴格的結構化表單型數據,忽視了現實實踐中大量的半結構化和非結構化數據的管理和處理需求。其次,面向嚴格的ACID事務模型,忽視了數據庫工程實踐中大量可以放松事務要求的應用場景,如大量密集的數據寫入、OLAP分析等;忽視數據庫部署運維過程中數據體量巨大情況下的工程實踐問題,如讀寫性能退化問題、單點故障問題、系統可擴展性和可用性問題;數據庫新技術介紹泛泛而談,缺乏一個能夠統一容納各類數據庫理論和技術的整體框架體系。
綜上所述,數據庫原理課程的教學內容亟待革新,以反映數據庫技術的發展和軟件工業實踐的需求。
(1)以數據結構課程理論為基礎,從數據結構、數據管理操作、數據管理約束3個維度出發建立大一統的數據管理觀念,在統一數據管理觀的框架下系統性梳理人類不斷發展的數據管理需求、典型的數據管理應用場景和數據庫技術,使學生能夠在統一的思維框架下分析理解各種數據庫技術。
(2)根據統一數據管理觀,從數據結構、數據管理操作、數據管理約束3個維度對數據庫技術進行分類整理,面向典型的數據管理應用場景建立數據庫理論和技術的知識分類體系。
(3)在數據庫理論和技術的知識分類體系下,自頂向下、由淺入深建立數據庫原理課程的教學內容的拓撲結構和過程框架。關系數據庫只是統一分類體系下的一個技術分支。
(4)緊密結合軟件開發實踐,以具體軟件系統的需求實例為主線引導統一數據管理觀念、統一數據結構觀念的建立,引導特定數據庫技術的講解和應用。
數據庫原理課程教學的主要問題是把“數據”局限為嚴格的結構化表單數據,忽視了現實實踐中數據類型的多樣性和數據管理需求的多樣性,因此數據庫原理課程內容革新的首要任務是回歸到“數據庫”的數據結構本質上,系統性地梳理數據的存儲組織方式和管理需求,建立統一的數據管理觀。
數據結構是相互之間存在一種或多種特定關系的數據元素的集合,是計算機存儲、組織數據的方式。數據庫無論如何復雜多變都脫離不了其數據結構的本質,因此從數據結構的理論和概念出發,定義和理解數據庫,可以推斷出任意的數據庫都應該具備3個層面上的要素。
(1)數據結構:數據庫是按某種方式對數據進行組織和持久存儲的數據結構。
(2)數據管理操作:數據庫提供了對數據結構及數據的存取訪問操作,主要是數據的增刪改查操作。
(3)數據管理約束:數據庫的存取訪問操作必須滿足一系列約束,如保證數據不丟失、不被篡改等。
數據庫是一種數據結構,在數據結構中數據元素如何組織存儲,取決于人類如何觀察、理解數據。從物理層面上看,數據就是比特流;進一步,數據是記錄事物信息的符號序列。在計算機科學領域,數據是所有能被輸入計算機且能被計算機處理的符號序列,是計算機操作的對象的總稱[5]。
定義1:數據的鍵和值。單純的比特流或符號序列丟失了數據的物理含義,如符號序列“2010-10-01”本身沒有意義,需要給數據附加一個說明物理含義的注解(“生日”),稱為數據的鍵(Key)。比特流或符號序列稱為數據的值(Value)。一個數據必須同時具有一對鍵和值才有意義??梢钥闯?鍵值對(Key-Value)是最基礎的數據組織方式,任意數據都可以表示為鍵值對的集合。
定義2:鍵值數據模型。把數據組織成鍵值對集合的數據模型,稱為鍵值數據模型,簡稱K-V數據模型。
定義3:行列二維表、關系數據模型、列式存儲數據模型。以數據的值為行,數據的鍵為列,把鍵值對集合組織成行列二維表的形式并按行進行數據組織存儲的數據模型稱為關系數據模型。如果以列為單位進行數據組織存儲,這種數據模型稱為列式存儲數據模型。
定義4:文檔和文檔數據模型。以嵌套的鍵值對的形式將數據組織成文檔(Document),每個文檔對應一條數據記錄。這種通過文檔集合來組織存儲數據的數據模型,稱為文檔數據模型。
定義5:圖和圖數據模型。將數據元素表示為頂點,數據元素之間的關系表示為邊,就構成了數據結構中的圖,稱為圖數據模型。
數據管理是指對數據的組織、編目、定位、存儲、檢索和維護等工作。計算機數據管理,是指利用計算機軟硬件技術對數據進行有效收集、存儲、處理和應用的過程。
具體到數據庫的上下文,數據管理是指在滿足一定約束的前提下把數據寫入數據庫(增加數據、刪除數據、修改數據)以及從數據庫中查詢出所需數據的過程,因此數據管理蘊含如下含義。
(1)數據管理操作:包括數據結構的建立和維護,數據寫入維護(數據的增加、刪除、修改,統稱為數據更新),數據的讀出(數據查詢)。
(2)數據管理約束:數據管理操作必須滿足約束,如高效、方便且不會導致數據丟失、不一致、竊取和篡改,數據訪問服務不會中斷等要求。
定義6:數據庫管理系統(DBMS),用于在數據管理約束下對數據庫執行數據管理操作的軟件系統。根據數據模型的不同,可以把數據庫管理系統劃分為鍵值、關系、列式存儲、文檔、圖數據庫管理系統等。
數據庫管理系統,在執行數據管理操作時必須保證數據庫滿足一定的約束條件。根據常識不難推斷,首要約束是保證數據一致性且不會丟失,無論系統處于正常狀態或是故障狀態;其次,是保證數據不會被非法訪問且符合語義約束;然后,是保證數據管理操作的高效性;最后是操作的易用性。
(1)事務的ACID特性。事務是封裝起來的一組數據管理操作,對應于邏輯獨立的數據處理功能。事務的ACID特性是事務需要滿足原子性、一致性、隔離性和持久性。
(2)安全性和完整性。安全性是防止非法用戶和非法操作對數據庫造成惡意的破壞和非法的存取;完整性是防止數據庫中出現不符合語義約束的數據。
(3)高性能的數據管理操作。保證數據管理操作在可接受的時間和空間代價內完成。
(4)方便易用性。提供方便易用的數據管理操作工具或接口,如SQL語言接口。
在單機單用戶、數據規模較小時以上數據管理約束比較容易滿足,但是對于數據體量很大且多用戶共享的情況上述數據管理約束要完全滿足就比較困難,甚至不可能,因此在工業界往往會根據實際業務系統的應用場景,有針對性選擇特定數據庫技術以滿足特定的數據管理約束。
根據統一數據管理觀,數據庫是根據數據模型組織存儲數據的數據結構,數據管理是在數據管理約束下對數據庫進行存取訪問操作。各類典型的數據管理應用場景中提及的眾多數據庫技術,是對數據庫的數據結構、數據管理操作以及數據管理約束的具體化實現。因此,數據庫的理論和技術,可以從數據結構、數據管理操作、數據管理約束3個維度建立數據庫理論和技術的知識體系,如圖1所示。
具體到數據庫原理課程教學,需要對數據庫理論和技術知識體系進行重組、取舍和排序,自頂向下、由淺入深地建立數據庫原理課程教學內容及其拓撲組織結構,如圖2所示。

圖1 數據庫理論和技術知識體系

圖2 數據庫原理課程教學內容體系結構
(1)從數據結構、數據管理操作和數據管理約束3個維度出發,抽取出各種類型的數據庫都需要考慮基本問題和基本概念,論述解決問題的主要技術方法,形成“數據庫基礎理論”教學模塊。
(2)關系數據庫模塊:從關系數據模型和關系數據庫的視角,論述數據結構、數據管理操作和數據管理約束的具體實現。
(3)NoSQL數據庫模塊:從NoSQL數據庫的視角,論述數據結構、數據管理操作和數據管理約束的具體實現。
(4)NewSQL數據庫模塊:從NewSQL數據庫的視角,論述數據結構、數據管理操作和數據管理約束的具體實現。
因此,從宏觀上數據庫原理課程教學內容體系清晰地劃分為4個教學模塊:數據庫基礎理論、關系數據庫、NoSQL數據庫和NewSQL數據庫,每個教學模塊再繼續細分。
大數據時代數據庫技術空前發展,數據管理的需求和理念、數據庫的技術和平臺具有更為豐富的內涵和外延,數據庫原理課程教學不能固守關系數據庫的范疇,需要吸納數據庫技術發展的成果,在統一的邏輯框架下重建新的課程內容體系和教學過程框架。在長期的數據庫技術研究、軟件開發實踐和數據庫原理教學過程中,筆者總結建立了一種稱為“統一數據管理觀”的思維框架,基于該思維框架可以對各類數據庫技術進行系統性的分類整理,形成數據庫理論和技術的知識分類體系,進而自頂向下、由淺入深建立數據庫原理課程的教學內容的拓撲結構和過程框架,是數據庫原理課程內容革新的基礎。
自2010年互聯網和大數據技術蓬勃發展以來,筆者就在數據庫原理課程教學中嘗試引入工業界最新的數據庫理論和技術,嘗試建立一種能夠容納各類數據庫理論和技術的統一思維邏輯框架,“統一數據管理觀”是這一思維邏輯框架的成熟和完善,在多年的數據庫原理教學實踐中均有不錯的反響。