周霞+張偉男+時壯
摘要:之前絕大多數調查決策系統都采用傳統的關系型數據庫進行數據存儲;現今大數據時代來臨,各類非關系型的數據庫開始嶄露頭角,并在應用中所占比重愈來愈大。MongoDB就是其中的后起之秀。因此,嘗試使用非關系型數據庫MongoDB來作為調查決策系統的數據存儲是非常有現實意義的。該文為大家呈現基于MongoDB這個面向文檔的非關系型數據庫來設計投票及所包含問題的數據存儲,在詳細介紹其內嵌和引用這兩種解決方式基礎上最終給出后臺的數據存儲方案。
關鍵詞:非關系型;數據庫; MongoDB;調查決策;數據存儲
中圖分類號:TP391 文獻標識碼:A 文章編號: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
傳統的關系型數據庫技術自20世紀80年代開始成熟并至發展壯大,持續占據著絕對的市場主導地位。近年,電子商務、大數據、云計算和人工智能等應用產生的數據已經以PB或ZB來計算,信息化的社會帶來了數據規模的急劇增長,大數據(Big Data)時代已經到來;大量半結構化、非結構化的數據亟待新的數據計算和處理模式,非關系型數據庫(NoSQL)在此背景下應運而生,NoSQL指的是Not only SQL,它泛指一切與傳統關系數據庫不同的數據庫技術,與傳統的關系型數據庫之間是互補關系。如今,多種非關系型數據庫已經得到了廣泛的應用,在處理大量數據的寫入、提升性能和增大規模方面發揮著越來越大的作用,非常適合于網站數據的存儲。
日常我們經常會接收到各種問卷調查,大學城中師生開展的各類調查更是數不勝數,原始的紙質問卷已不能滿足需求,各類調查系統已經被廣泛應用;但在過去的很長一段時間中,各類調研系統的后臺數據庫都是關系型數據庫;然而,在信息技術爆炸式發展的今天,大數據已經成為了新的技術革命,關系型數據庫在處理大數據量時力不從心,新的數據庫解決方案嶄露頭角——那就是非關系型數據庫。非關系型數據庫擁有眾多優秀特性,逐步讓越來越多的企業和開發者所喜愛,MongoDB就是其中的佼佼者。它非常適合于網站數據的存儲,故選擇MongoDB作為調查決策系統的數據存儲是較為合適的。綜上所述,基于MongoDB來設計問卷調查決策系統的后臺存儲方案是很有現實意義的。
在關系型數據庫中數據被存儲在表中,而MongoDB是將數據存放在結構化的文檔中,所以MongoDB被稱為面向文檔的數據庫。關系型數據庫中的表在面向文檔數據庫中稱為集合(collection),關系型數據庫中的記錄在面向文檔數據庫中被稱為文檔(document)。
在關系型數據庫中,我們可以通過實現參照完整性(即外鍵)來表達一對多關聯,通過建立中間表來表達多對多關聯。但在MongoDB中卻沒有這種機制,我們可以通過對象的引用關系來實現這種關聯,也可以把關聯的文檔內嵌到文檔當中。 那么在實際情況當中,我們該如何權衡性能,斟酌其靈活性和復雜性選擇哪種存儲方式呢?比較得到大家認同的規則是這樣的:
首先頂層的對象必須有自己的集合;其次子對象一般應該被嵌入父對象,例如訂單明細應該被嵌入訂單集合;再次對于多對多關系可以使用引用方式 。讀文檔比較頻繁時多使用內嵌方式,寫文檔比較多時使用引用方式;如果嵌入的對象太多過大會導致單個對象達到他的最大值(MongoDB單個文檔最大16MB) ;最后需要注意,如果遇到性能問題,需選擇使用嵌入方式進行存儲
我們的這個問卷調查系統,前臺將采用Java Web來實現,后臺使用MongoDB對所有投票信息進行存儲。為了更直觀的查看結果,還將使用Jfreechart以圖形的方式顯示各投票的調查分析結果。
一次投票包含若干問題,屬于一對多的關系,根據前述的選擇內嵌和引用兩種方式的規則,經過分析“投票”和“問題”設計采用內嵌結構;由于問題有單選題、多選題、填空題和問答題等題型;所以針對該調查決策系統的數據存儲模型如下所示:
高校作為先進信息技術研究、教學的最前端,應適應當今信息技術的快速發展,與時俱進。所以本項目組在選定大學生實踐創新項目時就選擇了與課堂上學過的關系型數據庫有密切聯系但在數據模型方面又完全不同的非關系型數據庫MongoDB作為調查決策系統的后臺數據庫。圍繞著MongoDB的數據模型的設計展開了學習和研究,調查決策系統中最核心的對象就是投票和問題,一份投票包含若干問題,針對這個一對多的二元聯系,經過分析最終選擇了內嵌這種解決方法,并給出了詳細的數據存儲方案。接下來,項目組將在此方案的基礎上采用Java Web技術來實現該決策系統。
參考文獻:
[1] 郭遠威. 大數據存儲 MongoDB實戰指南[M]. 人民郵電出版社,2011.
[2] (日)佐佐木達也|譯者:羅勇. NoSQL數據庫入門[M]. 人民郵電出版社,2010.
[3] (美)霍多羅夫. MongoDB權威指南[M]. 鄧強,王明輝,譯.人民郵電出版社,2011.