国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MongoDB文檔模型的教學(xué)資源數(shù)據(jù)的建模研究

2020-05-21 10:49黃承明
軟件工程 2020年5期

摘? 要:教學(xué)資源數(shù)據(jù)幾乎全部都是半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),傳統(tǒng)應(yīng)用中采用RDBMS和文件系統(tǒng)進(jìn)行存儲存在諸多的弊端。文章分析了教學(xué)資源數(shù)據(jù)組成結(jié)構(gòu)與應(yīng)用特性,以及MongoDB數(shù)據(jù)庫的存儲機(jī)制,提出了基于MongoDB + GridFS的存儲方案,并結(jié)合實際案例總結(jié)出了教學(xué)資源數(shù)據(jù)邏輯建模方法和建模要點。

關(guān)鍵詞:半結(jié)構(gòu)化;非結(jié)構(gòu)化;MongoDB;文檔模型;數(shù)據(jù)建模

中圖分類號:TP31? ? ?文獻(xiàn)標(biāo)識碼:A

Abstract: Almost all of the teaching resource data are semi-structured or unstructured. In traditional applications, there are many disadvantages in using RDBMS and file system for storage. This paper analyzes the data structure and application characteristics of teaching resources and the storage mechanism of MongoDB database, and puts forward a storage scheme based on MongoDB + GridFS. Combined with practical cases, the paper summarizes the logical modeling method and important aspects of teaching resource data.

Keywords: semi-structured; unstructured; MongoDB; document model; data modeling

1? ?引言(Introduction)

教育信息化包含了一系列的目標(biāo)、價值觀念、技術(shù)規(guī)范以及應(yīng)用手段等內(nèi)容,其核心內(nèi)容是教學(xué)信息化,需要各種各樣的信息化教學(xué)應(yīng)用系統(tǒng)作為支撐,數(shù)字化的教學(xué)資源數(shù)據(jù)是所有這些應(yīng)用系統(tǒng)的基礎(chǔ)。

《教育信息化2.0行動計劃》明確指出了數(shù)字資源建設(shè)的重要性,要科學(xué)、合理、高效地進(jìn)行數(shù)字化教學(xué)資源的建設(shè)、完善、分發(fā)和共享[1]。對于結(jié)構(gòu)和類型日益復(fù)雜的數(shù)據(jù)庫,傳統(tǒng)關(guān)系型數(shù)據(jù)庫暴露出很多問題,如磁盤IO瓶頸、模式固定難以橫向擴(kuò)展等,帶來較高的維護(hù)成本和較低的可用性[2]。NoSQL數(shù)據(jù)庫的出現(xiàn)為這一困境提供了新的解決問題的途徑。

2? 教學(xué)資源數(shù)據(jù)解析(Data analysis of teaching resources)

廣義的教學(xué)資源是指支持教學(xué)活動的各種資源,包括人、財、物、信息等??煞譃槿祟愘Y源(教師、學(xué)生、學(xué)習(xí)小組等)和非人類資源(各種媒體資源,輔助工具及設(shè)施,社會教育性機(jī)構(gòu),如:試聽中心、圖書館、博物館、少年宮等)。本文中的教學(xué)資源僅指狹義上的教學(xué)資源,即教學(xué)資料、教學(xué)環(huán)境及教學(xué)支撐系統(tǒng)。

數(shù)字化教學(xué)資源是指經(jīng)過數(shù)字化處理后,以數(shù)字信息的形式存在于計算機(jī)存儲介質(zhì)中、通過計算機(jī)及網(wǎng)絡(luò)進(jìn)行傳播、運行的教學(xué)資源,包括:(1)基本形態(tài)資源,即素材資源,如文本、數(shù)據(jù)、圖形圖像、音頻、視頻、動畫等;(2)復(fù)合型態(tài)資源,即應(yīng)用資源,如題庫、課件、案例庫、知識庫、課程庫等[3];(3)應(yīng)用系統(tǒng),如圖文系統(tǒng)、教學(xué)應(yīng)用系統(tǒng)、仿真系統(tǒng)等。

教學(xué)資源數(shù)據(jù)是指數(shù)字化教學(xué)資源中的素材資源和應(yīng)用資源在計算機(jī)中的存儲形態(tài)。這些教學(xué)資源數(shù)據(jù)按照一定組織結(jié)構(gòu)存儲在指定的位置,所形成的教學(xué)資源集合稱為數(shù)字化教學(xué)資源庫。

要實現(xiàn)數(shù)字化教學(xué)資源在計算機(jī)中的存儲、識別和管理,除了要保存數(shù)字化教學(xué)資源本身數(shù)據(jù)外,還需要大量的輔助性的數(shù)據(jù)來描述其各項屬性,如名稱、類型、格式、關(guān)系、位置、創(chuàng)建時間、版本等,其中資源本身數(shù)據(jù)稱為本體數(shù)據(jù),描述資源本體數(shù)據(jù)的數(shù)據(jù)稱為元數(shù)據(jù)。

根據(jù)數(shù)據(jù)的結(jié)構(gòu)化程度,可以將教學(xué)資源數(shù)據(jù)分為兩大類型:

非結(jié)構(gòu)化數(shù)據(jù),幾乎所有的素材資源本體數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù),如圖片、圖形、動畫、音頻、視頻、仿真模型等,這些數(shù)據(jù)都沒有固定的結(jié)構(gòu),也就沒有數(shù)據(jù)之間的關(guān)系存在,通常以二進(jìn)制格式進(jìn)行整體存儲[4]。

半結(jié)構(gòu)化數(shù)據(jù),部分素材資源本體數(shù)據(jù)(如,詞條)、所有的應(yīng)用資源本體數(shù)據(jù)、教學(xué)資源元數(shù)據(jù),這些數(shù)據(jù)沒有嚴(yán)格的格式,數(shù)據(jù)之間關(guān)系松散,具有下述典型特點[5]:

①自描述性。先有數(shù)據(jù),再有結(jié)構(gòu);

②不精確性。隨時間和場景變化;

③不規(guī)則性;

④非強(qiáng)制性;

⑤模式復(fù)雜性,也稱模式自由或無模式。

目前信息化教學(xué)應(yīng)用中的存儲方案為:(1)半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行規(guī)范化,存儲在關(guān)系型數(shù)據(jù)庫中;(2)非結(jié)構(gòu)化數(shù)據(jù)以文件的形式存儲在計算機(jī)存儲系統(tǒng)中,通過路徑名和文件名進(jìn)行訪問。

教學(xué)資源數(shù)據(jù)在應(yīng)用上具有以下典型特征:(1)寫少讀多,應(yīng)用成分布式;(2)種類復(fù)雜,功能迭代快,擴(kuò)展性要求高;(3)文件數(shù)量極多,小文件比重大。

由于教學(xué)資源數(shù)據(jù)的數(shù)據(jù)特點和應(yīng)用特征,傳統(tǒng)的存儲方案存在較為嚴(yán)重的缺點:(1)擴(kuò)展難度大,如增加資源數(shù)據(jù)屬性,資源數(shù)據(jù)屬性的不一致性、嵌套屬性等導(dǎo)致數(shù)據(jù)結(jié)構(gòu)冗余度高;(2)當(dāng)文件的數(shù)量龐大,分類復(fù)雜及多重分類時,文件系統(tǒng)管理難度增大,性能隨文件數(shù)量增大而降低。

針對傳統(tǒng)存儲方案的不足,建議采用基于NoSQL數(shù)據(jù)庫的存儲方案:MongoDB + GridFS文檔型數(shù)據(jù)庫存儲方案。

3? 文檔模型存儲機(jī)制(Storage mechanism of document model)

MongoDB是一個基于分布式文件存儲的NoSQL文檔模型數(shù)據(jù)庫,因其高效的性能和豐富的使用功能在生產(chǎn)中得到非常廣泛的應(yīng)用。它的體系結(jié)構(gòu)及同關(guān)系型數(shù)據(jù)庫對照概念如表1所示。

Document是MongoDB的核心對象,是數(shù)據(jù)的基本組織單元,類似關(guān)系型數(shù)據(jù)庫表的行,但是比行要復(fù)雜,它是使用BSON這種結(jié)構(gòu)來存儲數(shù)據(jù)和進(jìn)行數(shù)據(jù)交換。BSON是一種類JSON的二進(jìn)制形式的存儲格式,簡稱Binary JSON,它比JSON支持更多的數(shù)據(jù)類型,如二進(jìn)制數(shù)據(jù)[6]。典型的Document對象如圖1所示。

Field是MongoDB數(shù)據(jù)庫的基本數(shù)據(jù)單元,采用key: value鍵值對來表示數(shù)據(jù),其中key用字符串表示,value則為MongoDB所支持的任何數(shù)據(jù)類型,如:Null、Boolean、String、Symbol、Object Id、Date、Regular Expression、Code、Array、Embedded Document等[6]。

BSON格式的Document對象是一種無模式(schema-less)的存儲形式,能夠動態(tài)地添加平行或嵌套的數(shù)據(jù)項,靈活性很高,具有三個典型的特點:輕量性、可遍歷性、高效性。非常適合存儲教學(xué)資源數(shù)據(jù)中的半結(jié)構(gòu)化數(shù)據(jù)。

在MongoDB中BSON格式的單個Document對象(含嵌入的子Document)受到16MB大小的限制。所以,當(dāng)key:value中的value值尺寸過大時,就要保存到GridFS中。

GridFS是一種將大型文件存儲在MongoDB的文件規(guī)范[7]。GridFS將文件分成多個塊存儲,每塊作為一個單獨的文檔,默認(rèn)大小為255kB,最后一個塊為剩余大小。對于存儲海量小文件在性能上仍然能夠優(yōu)于文件系統(tǒng)[8]。

一個文件在GridFS的存儲結(jié)構(gòu)如圖2和圖3所示,使用兩個集合files和chunks存儲,為一對多關(guān)系。

采用GridFS存儲教學(xué)資源數(shù)據(jù)中的圖片、音頻、視頻等非結(jié)構(gòu)化的數(shù)據(jù)具有幾個優(yōu)勢:

(1)可以簡化需求,使用GridFS后就可以不需要另外使用獨立文件存儲架構(gòu),從而實現(xiàn)全部教學(xué)資源數(shù)據(jù)的一體化存取。

(2)GridFS能夠直接利用MongoDB已建立的復(fù)制/分片機(jī)制,非常容易實現(xiàn)分布式的擴(kuò)展、文件分發(fā)和故障恢復(fù)。

(3)無須關(guān)心放置新文件的位置,沒有因為文件數(shù)量增大、目錄加深時嚴(yán)重影響系統(tǒng)讀寫性能的問題。

(4)GridFS不產(chǎn)生磁盤碎片。

4? ?建模方法(Modeling method)

在技術(shù)上,MongoDB是一種無模式(或者自由模型)的文檔型數(shù)據(jù)庫,但是,在實現(xiàn)應(yīng)用系統(tǒng)的功能時,仍然需要采用規(guī)范約定、技術(shù)手段來實現(xiàn)數(shù)據(jù)的業(yè)務(wù)模式,主要是表現(xiàn)數(shù)據(jù)之間的一定的層次和關(guān)系。因此,教學(xué)資源數(shù)據(jù)的建模在數(shù)據(jù)庫邏輯設(shè)計階段顯得尤其重要,目的在于提高系統(tǒng)性能、優(yōu)化業(yè)務(wù)功能、方便團(tuán)隊溝通和提高生產(chǎn)效率。

在RDBMS中,為了使數(shù)據(jù)結(jié)構(gòu)清晰、關(guān)系明確、邏輯嚴(yán)格,需要對將數(shù)據(jù)對象拆分成原子數(shù)據(jù)項,按照相關(guān)范式進(jìn)行規(guī)范化處理,需要很多的主從結(jié)構(gòu)數(shù)據(jù)表來存儲,建立主外鍵來描述關(guān)系,查詢時還需要進(jìn)行連表[9]。

由于MongoDB的文檔模式支持?jǐn)?shù)組和內(nèi)嵌文檔,可以直接用一個Document來描述一個數(shù)據(jù)對象,而不需要分表/集合存儲。在同一個集合中,Document的數(shù)據(jù)項并沒有強(qiáng)制要求完全一樣,完全可以將不同類型的數(shù)據(jù)放在一個集合中,例如,我們可以將衣服、手機(jī)放在product集合中,盡管衣服和手機(jī)兩類產(chǎn)品具有部分不同的屬性。

此外,在MongoDB數(shù)據(jù)庫中,每個Document默認(rèn)包含一個名為“_id”的Objectld類型屬性,用來唯一標(biāo)識一個文檔對象,類似于RDBMS中的主鍵,為文檔之間的對象引用提供了技術(shù)支持。

所以,在基于MongoDB數(shù)據(jù)庫的教學(xué)資源數(shù)據(jù)的業(yè)務(wù)建模中,可以采用反規(guī)范化處理和規(guī)范化處理是兩種方法來進(jìn)行建模。

4.1? ?內(nèi)嵌模式的反規(guī)范化處理

內(nèi)嵌模式是指Document中的一個key:value中的value值也是一個Document對象,如圖4所示。

這種結(jié)構(gòu)在RDBMS中是反規(guī)范化的[10],但是這種反規(guī)范化處理的方法能夠直觀地表示一對一的關(guān)系,如圖4中的home、work子對象,好處是一次查詢即可獲得完整的對象,不需要再額外查詢其他集合的文檔對象。通過內(nèi)嵌對象數(shù)組可以實現(xiàn)一對多的關(guān)系,多級的內(nèi)嵌對象還可以方便地實現(xiàn)樹形/層次結(jié)構(gòu),如圖4中g(shù)roups數(shù)組對象。其缺點是當(dāng)嵌入對象被重用時,要在每個文檔中都存儲它的一個獨立的副本,這會減慢插入的速度,還占用額外的磁盤空間。

4.2? ?引用模式的規(guī)范化處理

通過MongoDB的引用模式可實現(xiàn)類似RDBMS中的外鍵關(guān)系,以解決重用子對象的多副本問題,主要的目的是減少冗余和優(yōu)化依賴關(guān)系。

以素材資源存儲為例,涉及兩個數(shù)據(jù)對象:素材和人員,由于素材資源的本體數(shù)據(jù)(文件)是存儲在GridFS中,不能內(nèi)嵌,必須引用,所以就變成素材屬性、素材文件和人員三者之間的關(guān)系,而人員信息因為需要重用,最好引用,參考圖5。

在Media Document(素材屬性)中的add_man、file_id就是通過對File Document(素材文件)和Person Document(人員)的“_id”進(jìn)行引用,從而形成了典型的一對一或一對多的對應(yīng)關(guān)系。

4.3? ?多對多關(guān)系的實現(xiàn)

用過引用模式實現(xiàn)了一對多的對應(yīng)關(guān)系,則多對多的關(guān)系也容易實現(xiàn),最典型的例子是人員與分組之間的對應(yīng)關(guān)系,參考圖6。

MongoDB中的這種引用模式所形成的一對多、多對多關(guān)系同RDBMS一樣,同樣是節(jié)約了空間但犧牲了性能。然而,對用需要重用的引用對象來說,只有如此才能確保數(shù)據(jù)的一致性。

4.4? ?典型案例

(1)素材資源

素材資源是最基本的教學(xué)資源,也是數(shù)量最多的一種資源,典型的數(shù)據(jù)模型為“資源屬性數(shù)據(jù)(元數(shù)據(jù))資源文件數(shù)據(jù)(本體數(shù)據(jù))”模式,其文檔模型如圖7和圖8所示。

在屬性數(shù)據(jù)中采用了引用模式對文件數(shù)據(jù)進(jìn)行了關(guān)聯(lián)。

(2)題庫資源

題庫資源是典型的應(yīng)用資源,是教學(xué)應(yīng)用中使用頻率最高的資源之一。題庫資源在RDBMS中的邏輯模型比較復(fù)雜。其關(guān)系模型如圖9所示。

但是,在MongoDB中采用聚合的方式,可以存放到一個集合之中,其數(shù)據(jù)模型如圖10所示。

需要注意的是,本文檔模型是一個聚合模型,其中的四個參考答案(fill_in_answer、choice_answer、brie_answer、true_false_answer)可以根據(jù)exerType的不同取值進(jìn)行選用。同時可以根據(jù)exerType進(jìn)行分片部署,以提高檢索效率。

5? ?建模要點(Key points of modeling)

教學(xué)資源數(shù)據(jù)建模是構(gòu)建教學(xué)應(yīng)用系統(tǒng)的關(guān)鍵環(huán)節(jié),直接影響到系統(tǒng)的性能和可用性。所以,在進(jìn)行數(shù)據(jù)建模特別要注意以下幾點。

(1)數(shù)據(jù)建模必須以滿足業(yè)務(wù)需求為首要目標(biāo),切不可因追求技術(shù)的完美而脫離業(yè)務(wù)規(guī)則。

(2)在建模過程中,要靈活使用各種設(shè)計模式,切不可生搬硬套。

(3)在滿足業(yè)務(wù)需求的前提下,一切以性能優(yōu)先,盡量全面考慮,優(yōu)化讀寫性能。

同時,在設(shè)計過程中遵循基本的設(shè)計原則,首先,模型設(shè)計是為應(yīng)用系統(tǒng)服務(wù),而不是為了存儲空間優(yōu)化;其次,要為實現(xiàn)系統(tǒng)最佳性能設(shè)計,可以通過合理的索引、數(shù)據(jù)分片來提高系統(tǒng)的存取性能。

此外,特別需要注意的是引用和內(nèi)嵌的選用問題,需要做到優(yōu)先選用與平衡原則的使用。

(1)在選用內(nèi)嵌模式和引用模式時,優(yōu)先考慮內(nèi)嵌,系統(tǒng)性能優(yōu)先存儲空間。

(2)內(nèi)嵌模式適合一對一、一對多的小對象嵌入,其局限性主要有兩個:16MB體積的限制,大數(shù)組的低性能約束。

(3)引用模式適合一對多、多對多中的對重用對象的關(guān)聯(lián),多次查詢、寫入數(shù)據(jù)時不能實現(xiàn)跨集合的事務(wù)性是該模式的主要缺陷[11]。

6? ?結(jié)論(Conclusion)

綜上所述,采用MongoDB+GridFS存儲方案代替RDBMS+文件系統(tǒng)存儲方案在技術(shù)上是可行的,在表達(dá)半結(jié)構(gòu)化及非結(jié)構(gòu)化數(shù)據(jù)的業(yè)務(wù)邏輯上具有天然的優(yōu)勢,在功能上能夠提供更好的一致性、靈活性和擴(kuò)展性,同時具有較好的系統(tǒng)性能。MomgoDB數(shù)據(jù)庫與GridFS文件規(guī)范相對RDBMS和文件系統(tǒng)來說屬于非常年輕的存儲技術(shù),有很大的優(yōu)化空間,而基于MomgoDB+GridFS存儲方案的信息化教學(xué)應(yīng)用系統(tǒng)的實際性能、魯棒性有待進(jìn)一步的驗證。

參考文獻(xiàn)(References)

[1] 吳旻瑜,武曉菲.教育信息化2.0的時代邏輯——《教育信息化2.0行動計劃》解讀之一[J].遠(yuǎn)程教育雜志,2018(4):4-10.

[2] 宗平,李雷.PostgreSQL與MongoDB處理非結(jié)構(gòu)化數(shù)據(jù)性能比較[J].計算機(jī)工程與應(yīng)用,2017,53(7):104-108.

[3] 黃承明.基于MongoDB的數(shù)字化教學(xué)資源存取方案研究[J].中國教育信息化,2018(3):54-57.

[4] 張孝,周寧南.非結(jié)構(gòu)化數(shù)據(jù)存儲管理研究[J].科研信息化技術(shù)與應(yīng)用,2013,4(1):30-40.

[5] 王靜,孟小峰.半結(jié)構(gòu)化數(shù)據(jù)的模式研究綜述[J].計算機(jī)科學(xué),2001,28(2):6-10.

[6] 霍多羅夫.MongoDB權(quán)威指南(第2版)[M].北京:人民郵電出版社,2014:7-10.

[7] 邱新忠.基于MongoDB GridFS的地圖瓦片數(shù)據(jù)存儲研究[J].地理空間信息,2016,14(2):50-52.

[8] ITKeyword.MongoDB的GridFS與文件系統(tǒng)在小文件存儲的讀取性能對[EB/OL].http://www.itkeyword.com/doc/2118899009621598745/mongodb,2015-05-14.

[9] 丁智斌,石浩磊.關(guān)系數(shù)據(jù)庫設(shè)計與規(guī)范化[J].計算機(jī)與數(shù)字工程,2005(02):114-116.

[10] 黃艾卿.數(shù)據(jù)庫設(shè)計中的反規(guī)范化技術(shù)[J].百色學(xué)院學(xué)報,2007,20(6):88-90.

[11] 宣超.基于MongoDB的事務(wù)機(jī)制研究與實現(xiàn)[D].四川:電子科技大學(xué),2018.