周霞+張偉男+時(shí)壯
摘要:之前絕大多數(shù)調(diào)查決策系統(tǒng)都采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ);現(xiàn)今大數(shù)據(jù)時(shí)代來臨,各類非關(guān)系型的數(shù)據(jù)庫開始嶄露頭角,并在應(yīng)用中所占比重愈來愈大。MongoDB就是其中的后起之秀。因此,嘗試使用非關(guān)系型數(shù)據(jù)庫MongoDB來作為調(diào)查決策系統(tǒng)的數(shù)據(jù)存儲(chǔ)是非常有現(xiàn)實(shí)意義的。該文為大家呈現(xiàn)基于MongoDB這個(gè)面向文檔的非關(guān)系型數(shù)據(jù)庫來設(shè)計(jì)投票及所包含問題的數(shù)據(jù)存儲(chǔ),在詳細(xì)介紹其內(nèi)嵌和引用這兩種解決方式基礎(chǔ)上最終給出后臺(tái)的數(shù)據(jù)存儲(chǔ)方案。
關(guān)鍵詞:非關(guān)系型;數(shù)據(jù)庫; MongoDB;調(diào)查決策;數(shù)據(jù)存儲(chǔ)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)08-0018-02
Abstract: before the vast majority of investigation decision system use the traditional relational database for data storage; today's big data era is coming, all kinds of non - relational database began to emerge, and in the application of accounts for the proportion is more and more. MongoDB is one of the bright younger generation. Therefore, try to use the non relational database MongoDB as the investigation decision system of data storage is of great practical significance. In this paper we present non relational database based on mongodb this document oriented to design voting and contains data storage problem, describes in detail the embedded and refer to the two solution on the basis of finally gives the background data storage scheme.
Key words: non relational database; MongoDB; survey; decision making; data storage
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫技術(shù)自20世紀(jì)80年代開始成熟并至發(fā)展壯大,持續(xù)占據(jù)著絕對(duì)的市場(chǎng)主導(dǎo)地位。近年,電子商務(wù)、大數(shù)據(jù)、云計(jì)算和人工智能等應(yīng)用產(chǎn)生的數(shù)據(jù)已經(jīng)以PB或ZB來計(jì)算,信息化的社會(huì)帶來了數(shù)據(jù)規(guī)模的急劇增長,大數(shù)據(jù)(Big Data)時(shí)代已經(jīng)到來;大量半結(jié)構(gòu)化、非結(jié)構(gòu)化的數(shù)據(jù)亟待新的數(shù)據(jù)計(jì)算和處理模式,非關(guān)系型數(shù)據(jù)庫(NoSQL)在此背景下應(yīng)運(yùn)而生,NoSQL指的是Not only SQL,它泛指一切與傳統(tǒng)關(guān)系數(shù)據(jù)庫不同的數(shù)據(jù)庫技術(shù),與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之間是互補(bǔ)關(guān)系。如今,多種非關(guān)系型數(shù)據(jù)庫已經(jīng)得到了廣泛的應(yīng)用,在處理大量數(shù)據(jù)的寫入、提升性能和增大規(guī)模方面發(fā)揮著越來越大的作用,非常適合于網(wǎng)站數(shù)據(jù)的存儲(chǔ)。
日常我們經(jīng)常會(huì)接收到各種問卷調(diào)查,大學(xué)城中師生開展的各類調(diào)查更是數(shù)不勝數(shù),原始的紙質(zhì)問卷已不能滿足需求,各類調(diào)查系統(tǒng)已經(jīng)被廣泛應(yīng)用;但在過去的很長一段時(shí)間中,各類調(diào)研系統(tǒng)的后臺(tái)數(shù)據(jù)庫都是關(guān)系型數(shù)據(jù)庫;然而,在信息技術(shù)爆炸式發(fā)展的今天,大數(shù)據(jù)已經(jīng)成為了新的技術(shù)革命,關(guān)系型數(shù)據(jù)庫在處理大數(shù)據(jù)量時(shí)力不從心,新的數(shù)據(jù)庫解決方案嶄露頭角——那就是非關(guān)系型數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫擁有眾多優(yōu)秀特性,逐步讓越來越多的企業(yè)和開發(fā)者所喜愛,MongoDB就是其中的佼佼者。它非常適合于網(wǎng)站數(shù)據(jù)的存儲(chǔ),故選擇MongoDB作為調(diào)查決策系統(tǒng)的數(shù)據(jù)存儲(chǔ)是較為合適的。綜上所述,基于MongoDB來設(shè)計(jì)問卷調(diào)查決策系統(tǒng)的后臺(tái)存儲(chǔ)方案是很有現(xiàn)實(shí)意義的。
在關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)被存儲(chǔ)在表中,而MongoDB是將數(shù)據(jù)存放在結(jié)構(gòu)化的文檔中,所以MongoDB被稱為面向文檔的數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫中的表在面向文檔數(shù)據(jù)庫中稱為集合(collection),關(guān)系型數(shù)據(jù)庫中的記錄在面向文檔數(shù)據(jù)庫中被稱為文檔(document)。
在關(guān)系型數(shù)據(jù)庫中,我們可以通過實(shí)現(xiàn)參照完整性(即外鍵)來表達(dá)一對(duì)多關(guān)聯(lián),通過建立中間表來表達(dá)多對(duì)多關(guān)聯(lián)。但在MongoDB中卻沒有這種機(jī)制,我們可以通過對(duì)象的引用關(guān)系來實(shí)現(xiàn)這種關(guān)聯(lián),也可以把關(guān)聯(lián)的文檔內(nèi)嵌到文檔當(dāng)中。 那么在實(shí)際情況當(dāng)中,我們?cè)撊绾螜?quán)衡性能,斟酌其靈活性和復(fù)雜性選擇哪種存儲(chǔ)方式呢?比較得到大家認(rèn)同的規(guī)則是這樣的:
首先頂層的對(duì)象必須有自己的集合;其次子對(duì)象一般應(yīng)該被嵌入父對(duì)象,例如訂單明細(xì)應(yīng)該被嵌入訂單集合;再次對(duì)于多對(duì)多關(guān)系可以使用引用方式 。讀文檔比較頻繁時(shí)多使用內(nèi)嵌方式,寫文檔比較多時(shí)使用引用方式;如果嵌入的對(duì)象太多過大會(huì)導(dǎo)致單個(gè)對(duì)象達(dá)到他的最大值(MongoDB單個(gè)文檔最大16MB) ;最后需要注意,如果遇到性能問題,需選擇使用嵌入方式進(jìn)行存儲(chǔ)
我們的這個(gè)問卷調(diào)查系統(tǒng),前臺(tái)將采用Java Web來實(shí)現(xiàn),后臺(tái)使用MongoDB對(duì)所有投票信息進(jìn)行存儲(chǔ)。為了更直觀的查看結(jié)果,還將使用Jfreechart以圖形的方式顯示各投票的調(diào)查分析結(jié)果。
一次投票包含若干問題,屬于一對(duì)多的關(guān)系,根據(jù)前述的選擇內(nèi)嵌和引用兩種方式的規(guī)則,經(jīng)過分析“投票”和“問題”設(shè)計(jì)采用內(nèi)嵌結(jié)構(gòu);由于問題有單選題、多選題、填空題和問答題等題型;所以針對(duì)該調(diào)查決策系統(tǒng)的數(shù)據(jù)存儲(chǔ)模型如下所示:
高校作為先進(jìn)信息技術(shù)研究、教學(xué)的最前端,應(yīng)適應(yīng)當(dāng)今信息技術(shù)的快速發(fā)展,與時(shí)俱進(jìn)。所以本項(xiàng)目組在選定大學(xué)生實(shí)踐創(chuàng)新項(xiàng)目時(shí)就選擇了與課堂上學(xué)過的關(guān)系型數(shù)據(jù)庫有密切聯(lián)系但在數(shù)據(jù)模型方面又完全不同的非關(guān)系型數(shù)據(jù)庫MongoDB作為調(diào)查決策系統(tǒng)的后臺(tái)數(shù)據(jù)庫。圍繞著MongoDB的數(shù)據(jù)模型的設(shè)計(jì)展開了學(xué)習(xí)和研究,調(diào)查決策系統(tǒng)中最核心的對(duì)象就是投票和問題,一份投票包含若干問題,針對(duì)這個(gè)一對(duì)多的二元聯(lián)系,經(jīng)過分析最終選擇了內(nèi)嵌這種解決方法,并給出了詳細(xì)的數(shù)據(jù)存儲(chǔ)方案。接下來,項(xiàng)目組將在此方案的基礎(chǔ)上采用Java Web技術(shù)來實(shí)現(xiàn)該決策系統(tǒng)。
參考文獻(xiàn):
[1] 郭遠(yuǎn)威. 大數(shù)據(jù)存儲(chǔ) MongoDB實(shí)戰(zhàn)指南[M]. 人民郵電出版社,2011.
[2] (日)佐佐木達(dá)也|譯者:羅勇. NoSQL數(shù)據(jù)庫入門[M]. 人民郵電出版社,2010.
[3] (美)霍多羅夫. MongoDB權(quán)威指南[M]. 鄧強(qiáng),王明輝,譯.人民郵電出版社,2011.