呂震宇 叢賀 張迪
摘? 要:培養(yǎng)方案管理系統(tǒng)提升了人才培養(yǎng)方案修訂工作的質(zhì)量和效率,然而,該系統(tǒng)在使用過(guò)程中也暴露出了專業(yè)間課程獨(dú)立修改與數(shù)據(jù)規(guī)范化設(shè)計(jì)難以兩全、高并發(fā)環(huán)境下數(shù)據(jù)容易出現(xiàn)不一致、共享課程導(dǎo)致某一專業(yè)培養(yǎng)方案定稿困難等一系列問(wèn)題。文章引入了“寫入時(shí)復(fù)制”(Copy-on-Write)技術(shù),增加了專業(yè)鎖、學(xué)期鎖、課程鎖等邏輯鎖,利用兩階段鎖協(xié)議等技術(shù)對(duì)培養(yǎng)方案管理系統(tǒng)進(jìn)行重構(gòu),保證了系統(tǒng)的穩(wěn)定高效運(yùn)行,為此類數(shù)據(jù)庫(kù)系統(tǒng)并發(fā)一致性問(wèn)題提供了解決方案。
關(guān)鍵詞:培養(yǎng)方案管理系統(tǒng);寫時(shí)復(fù)制;數(shù)據(jù)庫(kù)設(shè)計(jì)
中圖分類號(hào):TP311? ? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)07-0020-05
Abstract: The Training protocol management system improves the quality and efficiency of talent training protocol revision work, however, the system in the process of use also exposes a series of problems such as professional course independent modification and data standardization design is difficult to both, high concurrency environment data prone to inconsistent, sharing courses lead to a professional training protocol finalized difficulties and so on. This paper introduces the technology of “Copy-on-Write”, adds logic locks such as professional lock, semester lock and course lock, and uses the two-stage lock protocol and other technologies to reconstruct the training protocol management system. It ensures the stable and efficient operation of the system, and provides a solution for the concurrent consistency problem of such database system.
Keywords: training protocol management system; copy-on-write; database design
0? 引? 言
專業(yè)人才培養(yǎng)方案是圍繞一定人才培養(yǎng)目標(biāo)對(duì)學(xué)生在校期間的教育、教學(xué)、學(xué)習(xí)、訓(xùn)練等活動(dòng)進(jìn)行設(shè)計(jì)和實(shí)施的規(guī)劃。人才培養(yǎng)方案制定是一個(gè)復(fù)雜的過(guò)程,人才培養(yǎng)目標(biāo)、畢業(yè)要求、課程體系、課程大綱之間相互支撐,培養(yǎng)方案制定過(guò)程的復(fù)雜性、課程編碼的規(guī)范和唯一性要求等,迫切需要通過(guò)信息化手段實(shí)現(xiàn)培養(yǎng)方案的修訂。
高校不同專業(yè)培養(yǎng)方案修訂往往是同時(shí)進(jìn)行的,不同專業(yè)間存在大量共享課程,培養(yǎng)方案管理系統(tǒng)在設(shè)計(jì)之初就必須考慮共享課程在不同專業(yè)間的隔離,即一個(gè)專業(yè)對(duì)某門課程的修改不能影響另外一個(gè)專業(yè);此外一個(gè)專業(yè)的培養(yǎng)方案一旦定稿,這些共享課程也必須定稿,其他專業(yè)不得以任何理由進(jìn)行修改;很多高校培養(yǎng)方案修訂和實(shí)施往往是并行執(zhí)行的,因此培養(yǎng)方案管理系統(tǒng)還應(yīng)該考慮按照學(xué)期鎖定培養(yǎng)方案,所有這些大大增加的培養(yǎng)方案管理系統(tǒng)設(shè)計(jì)難度,需要精心架構(gòu)邏輯鎖定方案,以確保系統(tǒng)的穩(wěn)定運(yùn)行。
1? 培養(yǎng)方案管理系統(tǒng)現(xiàn)狀及問(wèn)題
現(xiàn)有培養(yǎng)方案管理系統(tǒng)多以驅(qū)動(dòng)教務(wù)系統(tǒng)運(yùn)轉(zhuǎn)為目的,片面突出了培養(yǎng)方案系統(tǒng)在教務(wù)管理中的作用,缺少對(duì)培養(yǎng)方案科學(xué)制定過(guò)程的有效支撐。H高校2016年開發(fā)了培養(yǎng)方案管理系統(tǒng)1.0版,規(guī)范了培養(yǎng)方案修訂過(guò)程,實(shí)現(xiàn)了培養(yǎng)方案文檔的自動(dòng)化生成。然而該系統(tǒng)由于缺乏對(duì)共享課程的有效隔離,且沒(méi)邏輯鎖定機(jī)制,導(dǎo)致無(wú)法處理諸如專業(yè)培養(yǎng)方案定稿、鎖定某些學(xué)期的培養(yǎng)方案等問(wèn)題,一個(gè)專業(yè)對(duì)課程的修改有可能會(huì)影響到另外一個(gè)專業(yè),高并發(fā)環(huán)境下難以保證數(shù)據(jù)的一致性。具體體現(xiàn)在:
1.1? “數(shù)據(jù)冗余”與“并發(fā)控制”兩難的問(wèn)題
培養(yǎng)方案管理的核心是計(jì)劃進(jìn)程表管理,計(jì)劃進(jìn)程表用于記錄不同專業(yè)在不同學(xué)期的課程開設(shè)情況。按照數(shù)據(jù)規(guī)范化理論,滿足3NF的培養(yǎng)方案核心數(shù)據(jù)表設(shè)計(jì)應(yīng)圍繞專業(yè)與課程的多對(duì)多關(guān)系展開,如圖1所示。
該設(shè)計(jì)方案的優(yōu)點(diǎn)是符合數(shù)據(jù)規(guī)范化要求,消除了數(shù)據(jù)冗余,為數(shù)據(jù)“并發(fā)控制”奠定了基礎(chǔ),但缺點(diǎn)是兩個(gè)不同的專業(yè)可能引用同一門課程(例如“工商管理”專業(yè)和“信息管理與信息系統(tǒng)”專業(yè)均開設(shè)“高等數(shù)學(xué)”課程),一個(gè)專業(yè)對(duì)課程的修改將導(dǎo)致另外一個(gè)專業(yè)課程也發(fā)生改變。
解決該問(wèn)題的一種辦法是將課程表與培養(yǎng)方案課程表合并,如圖2所示。
該方案雖然能夠確保一個(gè)專業(yè)對(duì)共享課程的修改不會(huì)影響另外一個(gè)專業(yè),但引入了大量的數(shù)據(jù)冗余將導(dǎo)致潛在的插入異常、刪除異常和更新異常的發(fā)生。
1.2? 專業(yè)培養(yǎng)方案定稿困難
當(dāng)多個(gè)專業(yè)同時(shí)修訂培養(yǎng)方案時(shí),部分專業(yè)修訂完成后需要執(zhí)行“定稿”操作。一旦培養(yǎng)方案定稿,就不能再對(duì)其做任何的修改。然而由于不同專業(yè)間課程的高度共享性,一門課程可能在多個(gè)專業(yè)同時(shí)開設(shè),如何保障未定稿專業(yè)對(duì)該課程的修改不影響到已定稿專業(yè),是一個(gè)需要解決的問(wèn)題。
1.3? 學(xué)期鎖定問(wèn)題
本科培養(yǎng)方案是對(duì)本科生4-5年在校學(xué)習(xí)課程的計(jì)劃,實(shí)際操作過(guò)程中可能存在邊制定培養(yǎng)方案邊予以實(shí)施的情況。例如,先將專業(yè)培養(yǎng)方案前兩個(gè)學(xué)期的課程定稿,導(dǎo)入教務(wù)系統(tǒng)予以實(shí)施,然后允許專業(yè)負(fù)責(zé)人對(duì)3學(xué)期及以后的培養(yǎng)方案繼續(xù)進(jìn)行修訂。這種做法會(huì)極大地增加系統(tǒng)管理的復(fù)雜度。例如A專業(yè)在第2學(xué)期開設(shè)了《高等數(shù)學(xué)》,而同一門《高等數(shù)學(xué)》B專業(yè)在第3學(xué)期開設(shè)。鎖定前兩個(gè)學(xué)期意味著B專業(yè)不能再對(duì)《高等數(shù)學(xué)》課程做任何修改(因?yàn)橐呀?jīng)被A專業(yè)導(dǎo)入教務(wù)系統(tǒng)并實(shí)施),但可以調(diào)整開課學(xué)期(只能調(diào)整到3學(xué)期及以后學(xué)期)。
1.4? 課程鎖定問(wèn)題
培養(yǎng)方案管理系統(tǒng)中的課程一旦導(dǎo)入教務(wù)系統(tǒng),就意味著該課程不能再做任何修改,如何通過(guò)建立課程鎖定機(jī)制限制意外修改也是系統(tǒng)在設(shè)計(jì)過(guò)程中需要加以考慮的問(wèn)題。
在實(shí)際應(yīng)用過(guò)程中,專業(yè)鎖定(培養(yǎng)方案定稿)、學(xué)期鎖定、課程鎖定往往是交疊進(jìn)行的,可能同時(shí)存在專業(yè)鎖定、學(xué)期鎖定、課程鎖定的情況,此時(shí)業(yè)務(wù)處理還需要考慮不同類型鎖定的優(yōu)先級(jí)問(wèn)題,所有這些都大大增加了系統(tǒng)設(shè)計(jì)的復(fù)雜度。
2? 培養(yǎng)方案管理系統(tǒng)核心業(yè)務(wù)表格設(shè)計(jì)
為了確保在消除數(shù)據(jù)冗余的同時(shí)解決兩個(gè)專業(yè)修改共享課程造成的并發(fā)控制問(wèn)題,引入COPY ON WRITE算法,在表中增加引用計(jì)數(shù)器字段,實(shí)現(xiàn)了數(shù)據(jù)規(guī)范化和并發(fā)控制的平衡;通過(guò)將學(xué)期從字段提升為實(shí)體,并在數(shù)據(jù)庫(kù)相應(yīng)表格中增加專業(yè)鎖、學(xué)期鎖、課程鎖字段,配合鎖定算法,實(shí)現(xiàn)根據(jù)業(yè)務(wù)邏輯對(duì)數(shù)據(jù)進(jìn)行鎖定,避免意外修改。
2.1? 核心業(yè)務(wù)數(shù)據(jù)庫(kù)設(shè)計(jì)
在核心業(yè)務(wù)表數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中重點(diǎn)考慮了如下因素:
1)專業(yè)、課程、學(xué)期表均設(shè)有“是否鎖定”字段,允許實(shí)現(xiàn)業(yè)務(wù)邏輯上的鎖定操作。如某一專業(yè)培養(yǎng)方案已經(jīng)定稿,而其他專業(yè)尚在修改中,可以鎖定該專業(yè),避免意外的修改;如果某一學(xué)期的課程計(jì)劃已經(jīng)開始實(shí)施,可以鎖定該學(xué)期,確保該學(xué)期下的所有課程不會(huì)再發(fā)生更改;如果某一課程已經(jīng)錄入教務(wù)系統(tǒng),可以鎖定該課程,禁止對(duì)該課程任何形式的修改。
2)課程表中增加了“引用計(jì)數(shù)”字段。該字段用于同步記錄有多少個(gè)專業(yè)開設(shè)該課程,同時(shí)該字段也用于指導(dǎo)COPY ON WRITE的修改動(dòng)作。例如引用計(jì)數(shù)為1的時(shí)候,說(shuō)明只有1個(gè)專業(yè)引用該課程,那么可以在該課程記錄上直接進(jìn)行修改操作;如果引用計(jì)數(shù)大于1,說(shuō)明有多個(gè)專業(yè)引用該課程,那么在修改時(shí)先要拷貝一份出來(lái)進(jìn)行修改,同時(shí)對(duì)引用計(jì)數(shù)減1。
3)課程表中設(shè)置了自動(dòng)增長(zhǎng)型字段“課程內(nèi)部編號(hào)”作為主鍵,而“課程編號(hào)”為非主鍵。這主要考慮課程編號(hào)后期可能會(huì)統(tǒng)一編排,系主任在調(diào)整培養(yǎng)方案時(shí)可以不受課程編號(hào)是否唯一的限制,也為“COPY ON WRITE”提供克隆課程的基礎(chǔ)。用戶可以通過(guò)系統(tǒng)提供的錯(cuò)誤檢查功能發(fā)現(xiàn)潛在的課程編號(hào)重復(fù)問(wèn)題并加以修正。
計(jì)劃進(jìn)程核心業(yè)務(wù)表邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)如圖3所示。
2.2? COPY ON WRITE算法設(shè)計(jì)
通過(guò)COPY ON WRITE算法和引用計(jì)數(shù)器,解決“數(shù)據(jù)冗余”與“并發(fā)控制”兩難的問(wèn)題。如果多個(gè)專業(yè)開設(shè)了相同的課程,它們將通過(guò)培養(yǎng)方案課程表引用到同一條課程記錄。同時(shí)為了后續(xù)操作方便,在課程表中增加了“引用計(jì)數(shù)”字段記錄有多少個(gè)專業(yè)開設(shè)該課程。表1、表2、表3分別展示了專業(yè)、課程、培養(yǎng)方案課程之間的關(guān)系??梢钥闯?,工商管理、信息管理與信息系統(tǒng)專業(yè)均開設(shè)了高等數(shù)學(xué)與英語(yǔ)課程,只是開課學(xué)期不完全相同。此時(shí)高等數(shù)學(xué)、英語(yǔ)兩門課程的引用計(jì)數(shù)均為2,說(shuō)明各有兩個(gè)專業(yè)開設(shè)了該課程。
若信息管理與信息系統(tǒng)專業(yè)決定將高等數(shù)學(xué)的學(xué)時(shí)從80學(xué)時(shí)提高到96學(xué)時(shí),由于目前高等數(shù)學(xué)引用計(jì)數(shù)大于1,因此首先將高等數(shù)學(xué)課程拷貝一份并進(jìn)行修改,然后修改原有高等數(shù)學(xué)課程的引用計(jì)數(shù),最后修改培養(yǎng)方案課程表中信息管理與信息系統(tǒng)專業(yè)高等數(shù)學(xué)的課程內(nèi)部編號(hào)。具體結(jié)果如表4和表5所示。其中,括號(hào)的內(nèi)容表示新修改的值。
如果此時(shí)工商管理專業(yè)決定將高等數(shù)學(xué)學(xué)時(shí)提高到88,由于其所引用的課程內(nèi)部編號(hào)為1的課程引用計(jì)數(shù)為1,因此可以直接在原地進(jìn)行修改。再次修改后的課程表如表6所示,培養(yǎng)方案課程表不變。其中,括號(hào)的內(nèi)容表示新修改的值。
若工商管理最終決定將高等數(shù)學(xué)課程修改為96學(xué)時(shí),修改后的課程與信息管理與信息系統(tǒng)專業(yè)保持一致,此時(shí)將觸發(fā)相同課程的“合并”操作,同時(shí)引用計(jì)數(shù)也將進(jìn)行合并。最終修改結(jié)果如表7和表8所示。其中,括號(hào)的內(nèi)容表示新修改的值。
2.3? 業(yè)務(wù)邏輯鎖定設(shè)計(jì)
在數(shù)據(jù)庫(kù)設(shè)計(jì)中,分別在專業(yè)、學(xué)期、課程表中增加了是否鎖定字段,用于構(gòu)建專業(yè)鎖、學(xué)期鎖、課程鎖三種虛擬業(yè)務(wù)邏輯鎖,這些鎖相互交疊,確?!岸ǜ濉焙蟮呐囵B(yǎng)方案不會(huì)因?yàn)椴l(fā)問(wèn)題而被意外修改。專業(yè)鎖、學(xué)期鎖、課程鎖的具體加鎖、解鎖流程如圖4和圖5所示。
2.3.1? 專業(yè)鎖
專業(yè)鎖用于鎖定某一專業(yè)的計(jì)劃進(jìn)程表。一旦某專業(yè)被鎖定,該專業(yè)將無(wú)法繼續(xù)編輯(包括插入、刪除、修改)計(jì)劃進(jìn)程表中的課程,同時(shí)該專業(yè)計(jì)劃進(jìn)程表引用的課程將一并鎖定,不允許任何人對(duì)這些課程繼續(xù)進(jìn)行修改。鎖解鎖時(shí),所引用課程通??梢砸徊⒔怄i,除非以下情況:課程被其他已鎖定專業(yè)鎖定;在鎖定的學(xué)期中有該課程。
2.3.2? 學(xué)期鎖
學(xué)期鎖用于鎖定某一學(xué)期。一旦某學(xué)期被鎖定,該學(xué)期所開設(shè)過(guò)的課程將無(wú)法繼續(xù)編輯(包括刪除、修改);計(jì)劃進(jìn)程表中課程的開課學(xué)期如果處于非鎖定學(xué)期,則只能更改至其他非鎖定學(xué)期;計(jì)劃進(jìn)程表中課程的開課學(xué)期如果處于鎖定學(xué)期,則無(wú)法繼續(xù)編輯課程開課學(xué)期等任何信息。學(xué)期鎖解鎖時(shí),所引用課程通常可以一并解鎖,除非以下情況:課程被已鎖定專業(yè)鎖定;在其他鎖定學(xué)期中引用了該課程。如圖6和圖7所示。
2.3.3? 課程鎖
課程鎖用于鎖定某一課程。一旦某課程被鎖定將無(wú)法再進(jìn)行刪除,但可以通過(guò)COPY ON WRITE的方式進(jìn)行編輯。在以下情況鎖定的課程不能被解鎖:課程被已鎖定專業(yè)鎖定;在鎖定學(xué)期中引用了該課程。通常情況下不直接鎖定課程或解鎖課程,多為鎖定學(xué)期或鎖定專業(yè)等操作伴隨的課程鎖定。當(dāng)課程被同步到教務(wù)系統(tǒng)時(shí),系統(tǒng)會(huì)對(duì)已同步課程強(qiáng)制觸發(fā)課程加鎖動(dòng)作。
3? 系統(tǒng)實(shí)現(xiàn)
上述設(shè)計(jì)方案已經(jīng)成功應(yīng)用在了H高校培養(yǎng)方案管理系統(tǒng)中。系統(tǒng)使用SQL Server作為后臺(tái)數(shù)據(jù)庫(kù),將專業(yè)、學(xué)期的鎖定與解鎖動(dòng)作封裝為存儲(chǔ)過(guò)程并用事務(wù)包裹,確保了操作的原子性。在對(duì)80多個(gè)專業(yè)同時(shí)修訂培養(yǎng)方案、多個(gè)專業(yè)同時(shí)引用并修改相同課程的場(chǎng)景考驗(yàn)下,COPY ON WRITE算法運(yùn)行穩(wěn)定。數(shù)據(jù)庫(kù)設(shè)計(jì)方案在確保了數(shù)據(jù)規(guī)范化的同時(shí),配合并發(fā)一致性設(shè)計(jì)方案,使所有培養(yǎng)方案數(shù)據(jù)的內(nèi)在邏輯關(guān)系都得到了有效保障。
4? 結(jié)? 論
通過(guò)將COPY ON WRITE算法引入培養(yǎng)方案管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì),解決了“數(shù)據(jù)冗余”與“并發(fā)控制”的兩難問(wèn)題;通過(guò)引入專業(yè)鎖、學(xué)期鎖、課程鎖三種虛擬業(yè)務(wù)邏輯鎖,解決了培養(yǎng)方案定稿、培養(yǎng)方案部分定稿等業(yè)務(wù)中,共享課程間相互交疊課程鎖定問(wèn)題;通過(guò)在數(shù)據(jù)庫(kù)設(shè)計(jì)中添加引用計(jì)數(shù)字段,幫助COPY ON WRITE判斷修改時(shí)是否需要復(fù)制或合并。實(shí)踐結(jié)果表明,該培養(yǎng)方案管理系統(tǒng)邏輯鎖定方案達(dá)到了預(yù)期設(shè)計(jì)目標(biāo),能夠在大規(guī)模數(shù)據(jù)訪問(wèn)中保持?jǐn)?shù)據(jù)的一致性。
參考文獻(xiàn):
[1] 曹宇新.“強(qiáng)基計(jì)劃”人才培養(yǎng)模式的高校政策再制定研究——基于36所試點(diǎn)高?!皬?qiáng)基計(jì)劃”培養(yǎng)方案的文本分析 [J].教育理論與實(shí)踐,2022,42(3):3-7.
[2] 劉云.“數(shù)據(jù)庫(kù)原理與應(yīng)用”課程思政教學(xué)設(shè)計(jì)與實(shí)踐探索 [J].現(xiàn)代商貿(mào)工業(yè),2022,43(12):140-141.
[3] 孫群,溫伯威,陳欣.多源地理空間數(shù)據(jù)一致性處理研究進(jìn)展 [J].測(cè)繪學(xué)報(bào),2022,51(7):1561-1574.
[4] 姜文,劉立康.Oracle數(shù)據(jù)庫(kù)死鎖問(wèn)題研究 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(3):97-101.
[5] 蘇學(xué)斌.基于聚類的數(shù)據(jù)庫(kù)事務(wù)并發(fā)控制算法研究 [D].哈爾濱:哈爾濱工業(yè)大學(xué),2020.
作者簡(jiǎn)介:呂震宇(1976—),男,漢族,山東安丘人,教授,碩士,研究方向:信息管理與信息系統(tǒng)、數(shù)據(jù)分析與挖掘;叢賀(1992—),男,漢族,內(nèi)蒙古赤峰人,碩士在讀,研究方向:數(shù)據(jù)庫(kù)并發(fā)一致性控制;張迪(1999—),女,漢族,河北滄州人,本科,研究方向:計(jì)算機(jī)軟件、信息管理。