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