雷小鋒
(中國礦業(yè)大學 計算機科學與技術學院,江蘇 徐州 221116)
數(shù)據庫原理是高等院校計算機相關專業(yè)的核心基礎課程,開設歷史悠久,主要圍繞關系數(shù)據模型講授數(shù)據庫的基本概念、基礎理論以及數(shù)據庫設計、操作和管理的方法,使學生在掌握數(shù)據庫系統(tǒng)理論基礎上具有設計和使用關系數(shù)據庫的能力。然而,隨著互聯(lián)網和大數(shù)據時代的來臨,數(shù)據庫理論和技術發(fā)生了巨大變化,具有更為豐富的內涵和外延,數(shù)據庫原理課程教學內容的革新刻不容緩。
大數(shù)據時代以數(shù)據為中心的理念深入人心,數(shù)據成為最重要的價值資源。數(shù)據的海量乃至全量化促使數(shù)據管理和處理技術發(fā)生一系列革新,突破了以關系模型為基礎的傳統(tǒng)關系數(shù)據庫理論藩籬,發(fā)展出一系列面向半結構化以及非結構化數(shù)據、以高可擴展和高可用性為特征的分布式數(shù)據庫技術和產品(如表1),極大地拓展了數(shù)據組織存儲和管理的理論、方法和技術。數(shù)據庫技術進入按用戶需求自由定制的互聯(lián)網時代,話語權不再被關系模型和少數(shù)軟件廠商所統(tǒng)治,相應的理論和技術需要在新的邏輯框架下重建秩序。
互聯(lián)網和大數(shù)據時代用戶主體意識全面回歸,期待根據自身數(shù)據管理需求自由裁量定制數(shù)據管理系統(tǒng),導致數(shù)據庫技術發(fā)生了巨大變化,大規(guī)模數(shù)據的分布式存儲組織和分析在信息系統(tǒng)設計與開發(fā)中是常見的場景,NoSQL和NewSQL等數(shù)據庫產品在互聯(lián)網、電子商務系統(tǒng)中已有廣泛應用,工業(yè)界和學術界都迫切需要具有大數(shù)據處理思維和能力、全面了解掌握各類數(shù)據庫技術的人才。
在開源社區(qū)項目“程序員技能圖譜”中給出數(shù)據庫工程師應該掌握關系、KV型、文檔、列存儲以及內存等多種類型數(shù)據庫的原理及技術(索引結構、事務機制、封鎖技術、備份與恢復技術、高可用技術、優(yōu)化技術等),此外還要求具備網絡、開發(fā)語言、硬件、運維工具等方面的技能。
表1 數(shù)據庫技術發(fā)展演化階段
然而,當前的數(shù)據庫原理課程教學卻沒有跟上數(shù)據庫技術發(fā)展的步伐,依然堅持著以關系數(shù)據模型和關系數(shù)據庫為主的有限教學范疇[4],已經不能反映數(shù)據庫工業(yè)界的發(fā)展,人才培養(yǎng)與工業(yè)界嚴重脫節(jié)。首先,圍繞著關系數(shù)據模型,局限于嚴格的結構化表單型數(shù)據,忽視了現(xiàn)實實踐中大量的半結構化和非結構化數(shù)據的管理和處理需求。其次,面向嚴格的ACID事務模型,忽視了數(shù)據庫工程實踐中大量可以放松事務要求的應用場景,如大量密集的數(shù)據寫入、OLAP分析等;忽視數(shù)據庫部署運維過程中數(shù)據體量巨大情況下的工程實踐問題,如讀寫性能退化問題、單點故障問題、系統(tǒng)可擴展性和可用性問題;數(shù)據庫新技術介紹泛泛而談,缺乏一個能夠統(tǒng)一容納各類數(shù)據庫理論和技術的整體框架體系。
綜上所述,數(shù)據庫原理課程的教學內容亟待革新,以反映數(shù)據庫技術的發(fā)展和軟件工業(yè)實踐的需求。
(1)以數(shù)據結構課程理論為基礎,從數(shù)據結構、數(shù)據管理操作、數(shù)據管理約束3個維度出發(fā)建立大一統(tǒng)的數(shù)據管理觀念,在統(tǒng)一數(shù)據管理觀的框架下系統(tǒng)性梳理人類不斷發(fā)展的數(shù)據管理需求、典型的數(shù)據管理應用場景和數(shù)據庫技術,使學生能夠在統(tǒng)一的思維框架下分析理解各種數(shù)據庫技術。
(2)根據統(tǒng)一數(shù)據管理觀,從數(shù)據結構、數(shù)據管理操作、數(shù)據管理約束3個維度對數(shù)據庫技術進行分類整理,面向典型的數(shù)據管理應用場景建立數(shù)據庫理論和技術的知識分類體系。
(3)在數(shù)據庫理論和技術的知識分類體系下,自頂向下、由淺入深建立數(shù)據庫原理課程的教學內容的拓撲結構和過程框架。關系數(shù)據庫只是統(tǒng)一分類體系下的一個技術分支。
(4)緊密結合軟件開發(fā)實踐,以具體軟件系統(tǒng)的需求實例為主線引導統(tǒng)一數(shù)據管理觀念、統(tǒng)一數(shù)據結構觀念的建立,引導特定數(shù)據庫技術的講解和應用。
數(shù)據庫原理課程教學的主要問題是把“數(shù)據”局限為嚴格的結構化表單數(shù)據,忽視了現(xiàn)實實踐中數(shù)據類型的多樣性和數(shù)據管理需求的多樣性,因此數(shù)據庫原理課程內容革新的首要任務是回歸到“數(shù)據庫”的數(shù)據結構本質上,系統(tǒng)性地梳理數(shù)據的存儲組織方式和管理需求,建立統(tǒng)一的數(shù)據管理觀。
數(shù)據結構是相互之間存在一種或多種特定關系的數(shù)據元素的集合,是計算機存儲、組織數(shù)據的方式。數(shù)據庫無論如何復雜多變都脫離不了其數(shù)據結構的本質,因此從數(shù)據結構的理論和概念出發(fā),定義和理解數(shù)據庫,可以推斷出任意的數(shù)據庫都應該具備3個層面上的要素。
(1)數(shù)據結構:數(shù)據庫是按某種方式對數(shù)據進行組織和持久存儲的數(shù)據結構。
(2)數(shù)據管理操作:數(shù)據庫提供了對數(shù)據結構及數(shù)據的存取訪問操作,主要是數(shù)據的增刪改查操作。
(3)數(shù)據管理約束:數(shù)據庫的存取訪問操作必須滿足一系列約束,如保證數(shù)據不丟失、不被篡改等。
數(shù)據庫是一種數(shù)據結構,在數(shù)據結構中數(shù)據元素如何組織存儲,取決于人類如何觀察、理解數(shù)據。從物理層面上看,數(shù)據就是比特流;進一步,數(shù)據是記錄事物信息的符號序列。在計算機科學領域,數(shù)據是所有能被輸入計算機且能被計算機處理的符號序列,是計算機操作的對象的總稱[5]。
定義1:數(shù)據的鍵和值。單純的比特流或符號序列丟失了數(shù)據的物理含義,如符號序列“2010-10-01”本身沒有意義,需要給數(shù)據附加一個說明物理含義的注解(“生日”),稱為數(shù)據的鍵(Key)。比特流或符號序列稱為數(shù)據的值(Value)。一個數(shù)據必須同時具有一對鍵和值才有意義。可以看出,鍵值對(Key-Value)是最基礎的數(shù)據組織方式,任意數(shù)據都可以表示為鍵值對的集合。
定義2:鍵值數(shù)據模型。把數(shù)據組織成鍵值對集合的數(shù)據模型,稱為鍵值數(shù)據模型,簡稱K-V數(shù)據模型。
定義3:行列二維表、關系數(shù)據模型、列式存儲數(shù)據模型。以數(shù)據的值為行,數(shù)據的鍵為列,把鍵值對集合組織成行列二維表的形式并按行進行數(shù)據組織存儲的數(shù)據模型稱為關系數(shù)據模型。如果以列為單位進行數(shù)據組織存儲,這種數(shù)據模型稱為列式存儲數(shù)據模型。
定義4:文檔和文檔數(shù)據模型。以嵌套的鍵值對的形式將數(shù)據組織成文檔(Document),每個文檔對應一條數(shù)據記錄。這種通過文檔集合來組織存儲數(shù)據的數(shù)據模型,稱為文檔數(shù)據模型。
定義5:圖和圖數(shù)據模型。將數(shù)據元素表示為頂點,數(shù)據元素之間的關系表示為邊,就構成了數(shù)據結構中的圖,稱為圖數(shù)據模型。
數(shù)據管理是指對數(shù)據的組織、編目、定位、存儲、檢索和維護等工作。計算機數(shù)據管理,是指利用計算機軟硬件技術對數(shù)據進行有效收集、存儲、處理和應用的過程。
具體到數(shù)據庫的上下文,數(shù)據管理是指在滿足一定約束的前提下把數(shù)據寫入數(shù)據庫(增加數(shù)據、刪除數(shù)據、修改數(shù)據)以及從數(shù)據庫中查詢出所需數(shù)據的過程,因此數(shù)據管理蘊含如下含義。
(1)數(shù)據管理操作:包括數(shù)據結構的建立和維護,數(shù)據寫入維護(數(shù)據的增加、刪除、修改,統(tǒng)稱為數(shù)據更新),數(shù)據的讀出(數(shù)據查詢)。
(2)數(shù)據管理約束:數(shù)據管理操作必須滿足約束,如高效、方便且不會導致數(shù)據丟失、不一致、竊取和篡改,數(shù)據訪問服務不會中斷等要求。
定義6:數(shù)據庫管理系統(tǒng)(DBMS),用于在數(shù)據管理約束下對數(shù)據庫執(zhí)行數(shù)據管理操作的軟件系統(tǒng)。根據數(shù)據模型的不同,可以把數(shù)據庫管理系統(tǒng)劃分為鍵值、關系、列式存儲、文檔、圖數(shù)據庫管理系統(tǒng)等。
數(shù)據庫管理系統(tǒng),在執(zhí)行數(shù)據管理操作時必須保證數(shù)據庫滿足一定的約束條件。根據常識不難推斷,首要約束是保證數(shù)據一致性且不會丟失,無論系統(tǒng)處于正常狀態(tài)或是故障狀態(tài);其次,是保證數(shù)據不會被非法訪問且符合語義約束;然后,是保證數(shù)據管理操作的高效性;最后是操作的易用性。
(1)事務的ACID特性。事務是封裝起來的一組數(shù)據管理操作,對應于邏輯獨立的數(shù)據處理功能。事務的ACID特性是事務需要滿足原子性、一致性、隔離性和持久性。
(2)安全性和完整性。安全性是防止非法用戶和非法操作對數(shù)據庫造成惡意的破壞和非法的存取;完整性是防止數(shù)據庫中出現(xiàn)不符合語義約束的數(shù)據。
(3)高性能的數(shù)據管理操作。保證數(shù)據管理操作在可接受的時間和空間代價內完成。
(4)方便易用性。提供方便易用的數(shù)據管理操作工具或接口,如SQL語言接口。
在單機單用戶、數(shù)據規(guī)模較小時以上數(shù)據管理約束比較容易滿足,但是對于數(shù)據體量很大且多用戶共享的情況上述數(shù)據管理約束要完全滿足就比較困難,甚至不可能,因此在工業(yè)界往往會根據實際業(yè)務系統(tǒng)的應用場景,有針對性選擇特定數(shù)據庫技術以滿足特定的數(shù)據管理約束。
根據統(tǒng)一數(shù)據管理觀,數(shù)據庫是根據數(shù)據模型組織存儲數(shù)據的數(shù)據結構,數(shù)據管理是在數(shù)據管理約束下對數(shù)據庫進行存取訪問操作。各類典型的數(shù)據管理應用場景中提及的眾多數(shù)據庫技術,是對數(shù)據庫的數(shù)據結構、數(shù)據管理操作以及數(shù)據管理約束的具體化實現(xiàn)。因此,數(shù)據庫的理論和技術,可以從數(shù)據結構、數(shù)據管理操作、數(shù)據管理約束3個維度建立數(shù)據庫理論和技術的知識體系,如圖1所示。
具體到數(shù)據庫原理課程教學,需要對數(shù)據庫理論和技術知識體系進行重組、取舍和排序,自頂向下、由淺入深地建立數(shù)據庫原理課程教學內容及其拓撲組織結構,如圖2所示。
圖1 數(shù)據庫理論和技術知識體系
圖2 數(shù)據庫原理課程教學內容體系結構
(1)從數(shù)據結構、數(shù)據管理操作和數(shù)據管理約束3個維度出發(fā),抽取出各種類型的數(shù)據庫都需要考慮基本問題和基本概念,論述解決問題的主要技術方法,形成“數(shù)據庫基礎理論”教學模塊。
(2)關系數(shù)據庫模塊:從關系數(shù)據模型和關系數(shù)據庫的視角,論述數(shù)據結構、數(shù)據管理操作和數(shù)據管理約束的具體實現(xiàn)。
(3)NoSQL數(shù)據庫模塊:從NoSQL數(shù)據庫的視角,論述數(shù)據結構、數(shù)據管理操作和數(shù)據管理約束的具體實現(xiàn)。
(4)NewSQL數(shù)據庫模塊:從NewSQL數(shù)據庫的視角,論述數(shù)據結構、數(shù)據管理操作和數(shù)據管理約束的具體實現(xiàn)。
因此,從宏觀上數(shù)據庫原理課程教學內容體系清晰地劃分為4個教學模塊:數(shù)據庫基礎理論、關系數(shù)據庫、NoSQL數(shù)據庫和NewSQL數(shù)據庫,每個教學模塊再繼續(xù)細分。
大數(shù)據時代數(shù)據庫技術空前發(fā)展,數(shù)據管理的需求和理念、數(shù)據庫的技術和平臺具有更為豐富的內涵和外延,數(shù)據庫原理課程教學不能固守關系數(shù)據庫的范疇,需要吸納數(shù)據庫技術發(fā)展的成果,在統(tǒng)一的邏輯框架下重建新的課程內容體系和教學過程框架。在長期的數(shù)據庫技術研究、軟件開發(fā)實踐和數(shù)據庫原理教學過程中,筆者總結建立了一種稱為“統(tǒng)一數(shù)據管理觀”的思維框架,基于該思維框架可以對各類數(shù)據庫技術進行系統(tǒng)性的分類整理,形成數(shù)據庫理論和技術的知識分類體系,進而自頂向下、由淺入深建立數(shù)據庫原理課程的教學內容的拓撲結構和過程框架,是數(shù)據庫原理課程內容革新的基礎。
自2010年互聯(lián)網和大數(shù)據技術蓬勃發(fā)展以來,筆者就在數(shù)據庫原理課程教學中嘗試引入工業(yè)界最新的數(shù)據庫理論和技術,嘗試建立一種能夠容納各類數(shù)據庫理論和技術的統(tǒng)一思維邏輯框架,“統(tǒng)一數(shù)據管理觀”是這一思維邏輯框架的成熟和完善,在多年的數(shù)據庫原理教學實踐中均有不錯的反響。