摘要:數(shù)據(jù)庫(kù)作為計(jì)算機(jī)中基礎(chǔ)軟件的三大件之一,在現(xiàn)實(shí)應(yīng)用中占據(jù)了舉足輕重的地位?!稊?shù)據(jù)庫(kù)原理與設(shè)計(jì)》作為計(jì)算機(jī)專業(yè)一門重要的專業(yè)課程,為培養(yǎng)優(yōu)秀的數(shù)據(jù)處理人才提供了有效的途徑。當(dāng)前隨著諸如HBase、Redis和MongoDB的NoSQL普及,數(shù)據(jù)處理方式呈現(xiàn)出多樣化的形式,學(xué)生往往對(duì)數(shù)據(jù)管理T具的具體實(shí)施原理感覺(jué)較為迷惑。具體來(lái)說(shuō),目前數(shù)據(jù)管理工具的使用在學(xué)生視野內(nèi)往往呈現(xiàn)出知其然而不知所以然的現(xiàn)象。本文擬通過(guò)設(shè)計(jì)一套易于被學(xué)生接受的數(shù)據(jù)庫(kù)原理實(shí)踐方案,通過(guò)從數(shù)據(jù)庫(kù)實(shí)施原理的角度促進(jìn)學(xué)生對(duì)數(shù)據(jù)庫(kù)中查詢、事務(wù)及存儲(chǔ)的操作理解,進(jìn)而提升學(xué)生對(duì)《數(shù)據(jù)庫(kù)原理與設(shè)計(jì)》內(nèi)容的理解效率。
關(guān)鍵詞:數(shù)據(jù)庫(kù);原理實(shí)踐;數(shù)據(jù)管理;課程設(shè)計(jì)
中圖分類號(hào):TP392 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)20-0122-02
Database Teaching Based on Principle Implementation
FANG Jun-hua
(School of Computer Science and Technology, Soochow University, Suzhou 215006, China)
Abstract: As one of the three basic software in computer, database plays an important role in real-world application. Since databaseis an important professional course of computer science. Database Principle and Design provides an effective way to train excellentdata processing talents. At present, with the popularity of NoSQL such as HBase. Redis and MongoDB, data processing methodstake on various forms. and students are often confused about the specific implementation principle of data management tools. To bespecific, the current use of data management tools in the students' fieh:l of vision often presents the phenomenon of "know it butdon't know why". This paper intends to design a practical scheme of database principle that is easy to be accepted by students . andpromote students' understanding of the operation of query, transaction and storage in the database from the perspective of databaseimplementation principle, so as to improve students ' understanding efficiency of the content of Datahase Principle and Design.
Key words: datahase;principle practice;data management;curriculum design
1引言
數(shù)據(jù)庫(kù)系統(tǒng)是數(shù)據(jù)管理的主流技術(shù),也是計(jì)算機(jī)學(xué)科的重要分支。《數(shù)據(jù)庫(kù)原理與設(shè)計(jì)》課程作為讓學(xué)生初識(shí)數(shù)據(jù)管理技術(shù)的引路人,通常包括數(shù)據(jù)庫(kù)系統(tǒng)的基本概念、數(shù)據(jù)模型、關(guān)系數(shù)據(jù)庫(kù)及其標(biāo)準(zhǔn)語(yǔ)言SQL、數(shù)據(jù)庫(kù)安全及完整性的概念和方法、關(guān)系規(guī)范化理論、數(shù)據(jù)庫(kù)設(shè)計(jì)方法與步驟,數(shù)據(jù)庫(kù)恢復(fù)與并發(fā)控制等事務(wù)管理的基礎(chǔ)知識(shí)內(nèi)容[3]。在實(shí)驗(yàn)環(huán)節(jié)中,現(xiàn)有教學(xué)方法多是注重SQL的操作練習(xí),而忽略了數(shù)據(jù)庫(kù)原理的實(shí)踐[4]。這在一定程度上使學(xué)生在后續(xù)工作中,諸如在做關(guān)系查詢處理與查詢優(yōu)化等操作時(shí),往往知其然不知所以然的通過(guò)規(guī)律或歷史經(jīng)驗(yàn)來(lái)操作[5,6]。本文認(rèn)為適當(dāng)?shù)睦碚搶?shí)現(xiàn)不僅能夠幫助學(xué)生對(duì)數(shù)據(jù)庫(kù)的理論深入理解,亦可提升學(xué)生對(duì)現(xiàn)有數(shù)據(jù)庫(kù)管理系統(tǒng)的操縱能力。
數(shù)據(jù)庫(kù)課程的目標(biāo)通常是使學(xué)生熟練掌握數(shù)據(jù)庫(kù)設(shè)計(jì)的方法與步驟,具有設(shè)計(jì)數(shù)據(jù)庫(kù)模式以及開發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的基本能力。并且在所設(shè)計(jì)的關(guān)系數(shù)據(jù)庫(kù)的實(shí)施中,能夠使各個(gè)關(guān)系滿足場(chǎng)景所需規(guī)范化理論需求;設(shè)計(jì)過(guò)程中,能夠借助實(shí)體一關(guān)系圖工具提高方案的可行性和高效性;使用過(guò)程中,能夠熟練掌握SQL語(yǔ)言并在某一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)上針對(duì)應(yīng)用需求進(jìn)行數(shù)據(jù)庫(kù)操作。針對(duì)這一目標(biāo),本文將設(shè)計(jì)通過(guò)三部分原理內(nèi)容來(lái)加強(qiáng)學(xué)生本課程的學(xué)習(xí)系統(tǒng)地掌握數(shù)據(jù)庫(kù)系統(tǒng)的基本理論與技術(shù)。
2數(shù)據(jù)庫(kù)原理實(shí)施方案規(guī)劃設(shè)計(jì)
本文方案借助開源項(xiàng)目SimpleDB[1]來(lái)實(shí)施方案設(shè)計(jì)的相關(guān)內(nèi)容。SimpleDB實(shí)現(xiàn)數(shù)據(jù)庫(kù)原理的諸多功能單元,包括管理元組的類,即Tuple,TupleDesc;Field IntField,StringField和Type;Catalog;BufferPool構(gòu)造函數(shù)和getPage()方法;訪問(wèn)方法Heap-Page和HeapFile以及關(guān)聯(lián)的ID類。同時(shí),SimpleDB提供了ScanTest系統(tǒng)測(cè)試,由于篇幅限制,項(xiàng)目具體介紹見(jiàn)文獻(xiàn)[1]。實(shí)踐環(huán)節(jié)的第一步,我們需要搭建好開發(fā)環(huán)境并了解SimpleDB的整體框架。這個(gè)過(guò)程根據(jù)上述資源獲取具體操作步驟。需要說(shuō)明的是在添加代碼的過(guò)程中,在遇到“some code goes here”的注釋時(shí),表明我們需要將該函數(shù)滿足需求的填寫完整。有時(shí)為了達(dá)到目的,我們需要增加一些輔助的變量和函數(shù)來(lái)完成這些函數(shù)。基于這些工作,我們可以對(duì)當(dāng)前完成的類進(jìn)行單元測(cè)試。
3數(shù)據(jù)庫(kù)原理實(shí)施內(nèi)容
3.1元組和文件
該部分內(nèi)容主要使學(xué)生能夠了解數(shù)據(jù)庫(kù)中邏輯上最小粒度的字段以及由字段組成的元組內(nèi)容,進(jìn)而能夠促進(jìn)學(xué)生在數(shù)據(jù)檢索效率及優(yōu)化,多粒度加鎖內(nèi)容及事物的并行控制上能夠進(jìn)一步加深理解[2]。具體內(nèi)容設(shè)計(jì)上,該部分規(guī)劃了對(duì)模式的定義,字段及元組的初始化及相關(guān)操作。在開源項(xiàng)目中已有相關(guān)框架的構(gòu)造內(nèi)容,具體需要設(shè)計(jì)的內(nèi)容包括對(duì)該關(guān)系內(nèi)元組及字段的定義,在元組內(nèi)各個(gè)字段的類型的定義,對(duì)于字段的增刪改操作等。對(duì)于實(shí)踐能力較高的同學(xué),可增加對(duì)于字段在元組內(nèi)組織形式的額外定義,諸如支持用索引獲得字段的類型或名稱,用名稱獲得字段的位置等。在本文基于的開源項(xiàng)目中,提供一個(gè)靜態(tài)方法用于合并兩個(gè)TupleDese獲得一個(gè)新的TupleDesc(供Join operator使用),該部分內(nèi)容亦可供學(xué)生選擇行實(shí)施。
對(duì)于元組的組織,首先要明確元組是邏輯上定義字段的基本框架。在學(xué)生實(shí)施過(guò)程中,不僅需要提供與元組有關(guān)的增刪改查操作,還應(yīng)該提供元組中第i個(gè)字段的獲取及設(shè)置方法,同時(shí)要考慮如何實(shí)施提供了所有字段的迭代方法。需要注意的是,每個(gè)元組具有用于唯一標(biāo)識(shí)的字段ID,進(jìn)而便于標(biāo)記其在磁盤中的位置及相關(guān)的元組組織方法。
3.2數(shù)據(jù)字典
數(shù)據(jù)字典是數(shù)據(jù)庫(kù)的核心,為使學(xué)生理解數(shù)據(jù)字典中組織著對(duì)數(shù)據(jù)描述的數(shù)據(jù),本部分內(nèi)容需要描述的內(nèi)容包括對(duì)單個(gè)表的描述,對(duì)多表間聯(lián)系的描述,索引及文件組織及存儲(chǔ)的描述,另外還需要實(shí)施對(duì)各個(gè)構(gòu)建對(duì)象的相關(guān)操作[2]。對(duì)于單個(gè)表的信息描述,除基本的數(shù)據(jù)本身描述,相關(guān)完整性約束也應(yīng)考慮進(jìn)來(lái)。此外,對(duì)于表的統(tǒng)計(jì)信息也可考慮實(shí)施,即如何構(gòu)建什么樣的輔助信息能夠在對(duì)該關(guān)系操作時(shí)能夠加快操作性能;索引項(xiàng)目的實(shí)施可引導(dǎo)學(xué)生構(gòu)建兩種索引類型,例如哈希和樹形索引。在本文基于的開源項(xiàng)目中已經(jīng)構(gòu)建完成相關(guān)框架,還需學(xué)生補(bǔ)全一些得到這張表相應(yīng)信息的方法,例如getTa-bleld、getPrimaryKey等方法。
3.3緩沖區(qū)及文件組織
緩沖區(qū)是數(shù)據(jù)庫(kù)在內(nèi)存中為系統(tǒng)操作提供便捷操作及提升系統(tǒng)性能的空間[2]。緩沖區(qū)中存儲(chǔ)著系統(tǒng)與磁盤交互信息的暫存文件,任意從外存中瀆取或?qū)懭氲膬?nèi)容均需通過(guò)緩沖區(qū)進(jìn)行組織優(yōu)化。具體來(lái)說(shuō),緩沖區(qū)存儲(chǔ)著一定數(shù)量的頁(yè)面,頁(yè)面的個(gè)數(shù)在此開源項(xiàng)目中可通過(guò)numPages參數(shù)設(shè)定。在緩沖區(qū)的操作中,需要構(gòu)建多頁(yè)面的檢索方法,例如通過(guò)最原始的掃描方式。對(duì)于文件的組織方式,在數(shù)據(jù)庫(kù)原理實(shí)現(xiàn)過(guò)程中只需實(shí)施簡(jiǎn)單易懂的方式讓學(xué)生了解文件的組織過(guò)程及作用即可,例如本文基于的項(xiàng)目中的堆文件方式。
4實(shí)踐與數(shù)據(jù)庫(kù)原理課程銜接內(nèi)容設(shè)計(jì)
上述對(duì)數(shù)據(jù)庫(kù)原理的實(shí)踐與其理論課程起到相輔相成的作用。具體來(lái)說(shuō),理論課的過(guò)程中可以穿插實(shí)踐部分的內(nèi)容,用于引導(dǎo)學(xué)生思考如何實(shí)現(xiàn)相關(guān)機(jī)制來(lái)完成該部分功能;在實(shí)踐課的進(jìn)行過(guò)程中,又可引導(dǎo)學(xué)生思考和探究如何能夠滿足原理課相關(guān)知識(shí)點(diǎn)的具體實(shí)踐操作,進(jìn)而理論和實(shí)踐相結(jié)合達(dá)到促進(jìn)學(xué)生對(duì)數(shù)據(jù)庫(kù)深入理解的目的。
數(shù)據(jù)庫(kù)SQL操作部分所述內(nèi)容主要包括:數(shù)據(jù)庫(kù)定義語(yǔ)言、數(shù)據(jù)庫(kù)操縱語(yǔ)言、授權(quán)、完整性約束等。在講解該部分內(nèi)容時(shí),可以引導(dǎo)學(xué)生在原理實(shí)現(xiàn)的流程中,如何通過(guò)實(shí)現(xiàn)什么樣的控制模塊來(lái)確保操作的正確性和高效性展開討論。例如,在查詢優(yōu)化的過(guò)程中,選擇和連接操作的先后執(zhí)行次序可通過(guò)上述我們實(shí)踐的元組及文件內(nèi)容形象闡釋,進(jìn)而使學(xué)生能夠舉一反三地根據(jù)實(shí)際情況進(jìn)行性能的優(yōu)化。
數(shù)據(jù)庫(kù)設(shè)計(jì)講解的相關(guān)內(nèi)容亦可如此。通常,該部分內(nèi)容的講解主要包括數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程、需求分析、概念模型、ER模型以及數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)設(shè)計(jì)。根據(jù)傳統(tǒng)的教學(xué)經(jīng)驗(yàn),我們?cè)谥v解到需求分析部分時(shí)通常會(huì)強(qiáng)調(diào)其重要性,而我們實(shí)際上可以借助數(shù)據(jù)字典中各個(gè)模式的創(chuàng)建及文件的組織進(jìn)行說(shuō)明。
再者,數(shù)據(jù)庫(kù)的規(guī)范化理論可能表面上與原理實(shí)踐的內(nèi)容沒(méi)有具備聯(lián)系。但其實(shí)不然,我們?cè)谥v解數(shù)據(jù)庫(kù)沒(méi)計(jì)存在的異常、函數(shù)依賴的類別、范式的定義及模式分解內(nèi)容時(shí),可通過(guò)對(duì)于多個(gè)表的操作進(jìn)行闡明。具體來(lái)說(shuō),操作異常會(huì)使數(shù)據(jù)在不同文件中存在的副本過(guò)多,不僅使我們的操作效率變低,同時(shí)導(dǎo)致更新操作出現(xiàn)錯(cuò)誤,借助原理實(shí)踐部分的幫助,這些內(nèi)容的講解均可通過(guò)數(shù)據(jù)庫(kù)原理實(shí)踐中對(duì)元組及文件的實(shí)現(xiàn)來(lái)加以描述。
對(duì)于包括存儲(chǔ)設(shè)備、磁盤的介紹、文件和記錄的存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)索引等內(nèi)容的存儲(chǔ)與文件結(jié)構(gòu)的章節(jié)來(lái)說(shuō),原理實(shí)踐的內(nèi)容恰恰剛好迎合。對(duì)于數(shù)據(jù)庫(kù)事務(wù)及并發(fā)控制章節(jié)內(nèi)容也可通過(guò)上述實(shí)現(xiàn)內(nèi)容加以描述,例如,事務(wù)的概念、原子性與持久性、隔離性與隔離等級(jí)可通過(guò)元組的操作描述;可串行性、隔離性與原子性等內(nèi)容可通過(guò)對(duì)元組及中間字段的更新操作來(lái)舉例闡述。最后,對(duì)于包括并發(fā)導(dǎo)致的三種錯(cuò)誤、封鎖、兩階段封鎖協(xié)議、多粒度封鎖等內(nèi)容的并發(fā)控制技術(shù)及數(shù)據(jù)庫(kù)恢復(fù)技術(shù)均可通過(guò)磁盤與系統(tǒng)中介的緩沖區(qū)、文件、元組及字段多個(gè)粒度的操作進(jìn)行詮釋。
5結(jié)束語(yǔ)
本文描述了如何通過(guò)實(shí)現(xiàn)數(shù)據(jù)庫(kù)原理的角度,通過(guò)實(shí)例引入數(shù)據(jù)模型和內(nèi)部機(jī)制的相關(guān)概念及核心思想,使學(xué)生能夠進(jìn)一步加深對(duì)數(shù)據(jù)庫(kù)課程的理解。在教學(xué)過(guò)程中,我們需要更靈活的教學(xué)方式來(lái)加以詮釋,并通過(guò)分析具體應(yīng)用,引人數(shù)據(jù)庫(kù)是具體要解決什么問(wèn)題以及如何解決這些問(wèn)題從而引導(dǎo)學(xué)生更深一步的思考,并結(jié)合相關(guān)習(xí)題強(qiáng)化對(duì)相應(yīng)部分知識(shí)的理解。課上通過(guò)具體例子的討論引導(dǎo)學(xué)生探索如何實(shí)現(xiàn)及如何更高效的實(shí)現(xiàn)相關(guān)知識(shí)點(diǎn),最終能夠針對(duì)具體問(wèn)題選擇合適的解決方案。在此過(guò)程中,要加強(qiáng)實(shí)訓(xùn)環(huán)節(jié)的螺旋式聯(lián)系達(dá)到實(shí)踐與理解的相互促進(jìn)作用。
參考文獻(xiàn):
[1]SimpleDB.https://www.cs.hmc:.edu/-beth/courses.
[2]CS133 Labl:SimpleDB.https://www.cs.hmc.edu/-heth/courses/cs133/current/assignments/lahl.html.
[3]王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論(第5版)[J].中國(guó)大學(xué)教學(xué),2014(9):98.
[4]廖業(yè)紅.基于翻轉(zhuǎn)課堂和理實(shí)一體化教學(xué)的《數(shù)據(jù)庫(kù)原理與應(yīng)用》課程教學(xué)沒(méi)計(jì)[J].科技風(fēng),2019(34):72.
[5]徐駿.本科教學(xué)基本狀態(tài)數(shù)據(jù)庫(kù)建設(shè)的思考與實(shí)踐[J].電腦知識(shí)與技術(shù),2019,15(20): 176-177.
[6]高艷麗.大數(shù)據(jù)背景下《數(shù)據(jù)庫(kù)原理與應(yīng)用》課程改革研究[J].科技資訊,2019,17(12):121-122.
【通聯(lián)編輯:王力】
收稿日期:2020-02-11
基金項(xiàng)目:本文承國(guó)家自然科學(xué)基金(61802273);中國(guó)博士后面上項(xiàng)目(2017M621813);江蘇省博士后面上項(xiàng)目(2018K029C);江蘇省高等學(xué)校自然科學(xué)研究面上項(xiàng)目(18KJB520044)資助
作者簡(jiǎn)介:房俊華(1985-),男,河南周口人,講師,博士,主要研究方向?yàn)閷?shí)時(shí)大數(shù)據(jù)處理。