齊帥彬 胡晨駿 胡孔法
摘 要:文章通過對關(guān)系型數(shù)據(jù)庫目前出現(xiàn)的問題和NoSQL數(shù)據(jù)庫的特點的分析,研究了MongoDB數(shù)據(jù)庫的特性,試圖建立一個基于MongoDB數(shù)據(jù)庫的非關(guān)系型存儲中醫(yī)養(yǎng)生知識庫,以便使用者通過網(wǎng)頁或移動媒體更加高效、動態(tài)地查找和獲取中醫(yī)養(yǎng)生知識。
關(guān)鍵詞:MongoDB;NoSQL;中醫(yī)養(yǎng)生;知識庫
在當(dāng)今時代,人們對健康養(yǎng)生日益重視,中國傳統(tǒng)中醫(yī)藥養(yǎng)生更是成為了人們養(yǎng)生保健的首選方式。屠呦呦因青蒿素獲得諾貝爾獎將中國傳統(tǒng)中醫(yī)藥的神奇展示于國際舞臺,她在頒獎典禮的演講上提到“中國醫(yī)藥學(xué)是一個偉大寶庫,應(yīng)當(dāng)努力發(fā)掘,加以提高?!眰鹘y(tǒng)中醫(yī)藥越來越以她獨特的魅力和療效得到海內(nèi)外各界人士的普遍關(guān)注和認(rèn)可。而構(gòu)建體系結(jié)構(gòu)完善合理的中醫(yī)養(yǎng)生知識庫對中醫(yī)事業(yè)的發(fā)展起著至關(guān)重要的推動作用。
本文試圖探討構(gòu)建的中醫(yī)養(yǎng)生知識庫是以中醫(yī)養(yǎng)生保健為目的,對中醫(yī)養(yǎng)生理論基礎(chǔ)、方法和應(yīng)用以一定的組織結(jié)構(gòu)進(jìn)行存儲的數(shù)據(jù)集合。使用者可通過網(wǎng)頁或移動媒體在此知識庫上查找和獲取中醫(yī)養(yǎng)生知識。目前,各大機(jī)構(gòu)和院校都致力于構(gòu)建合理、全面的中醫(yī)養(yǎng)生知識庫,已建成大量基于關(guān)系型存儲的不同領(lǐng)域的知識庫。隨著Web2.0的興起,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫因自身局限面臨挑戰(zhàn),而NoSQL以它的結(jié)構(gòu)簡單愈來愈顯現(xiàn)出優(yōu)勢,本文將以MongoDB數(shù)據(jù)庫為例對構(gòu)建非關(guān)系型存儲中醫(yī)養(yǎng)生數(shù)據(jù)庫作出研究和探討。
1 關(guān)系型數(shù)據(jù)庫的局限以及NoSQL的崛起
1.1 關(guān)系型數(shù)據(jù)庫的局限
隨著Web2.0的興起,很多大型網(wǎng)站用到的關(guān)系型數(shù)據(jù)庫逐漸暴露出很多自身難以克服的缺點,主要有如下幾項:(1)擴(kuò)展性和可用性不高。隨著數(shù)據(jù)量越來越大,關(guān)系型數(shù)據(jù)庫無法通過添加更多的硬件和服務(wù)節(jié)點來擴(kuò)展性能和負(fù)載能力,它只能把數(shù)據(jù)縱向擴(kuò)展,造成數(shù)據(jù)庫的高負(fù)載,最后可能導(dǎo)致數(shù)據(jù)庫的崩潰。(2)數(shù)據(jù)結(jié)構(gòu)變更困難。由于表之間存在關(guān)聯(lián)性,為數(shù)據(jù)做新建索引和數(shù)據(jù)結(jié)構(gòu)的變更存在困難。(3)并發(fā)負(fù)載高。由于海量的用戶動態(tài)數(shù)據(jù),數(shù)據(jù)庫的并發(fā)負(fù)載非常高,往往每秒達(dá)到上萬次讀/寫請求。因此關(guān)系型數(shù)據(jù)庫面臨海量數(shù)據(jù)的高效率存儲、訪問和高并發(fā)讀/寫問題。(4)多表關(guān)聯(lián)和讀/寫實時性功能的忽略。多表關(guān)聯(lián)查詢和讀/寫實時性是關(guān)系型數(shù)據(jù)庫最突出的特征,然而對于目前的很多網(wǎng)站而言,這2個功能發(fā)揮不出它的作用。
1.2 NoSQL的崛起
NoSQL目前普遍的定義是Not Only SQL,即不僅僅是SQL,是對非關(guān)系型數(shù)據(jù)存儲的廣義定義。相比較于關(guān)系型數(shù)據(jù)庫而言,NoSQL的優(yōu)勢有以下幾點:(1)數(shù)據(jù)庫表之間沒有關(guān)系性,這樣數(shù)據(jù)的存儲就非常易于擴(kuò)展。具有良好的讀/寫和查詢性能。(2)NoSQL不需要提前為要存儲的數(shù)據(jù)建立字段。(3)NoSQL可以在不太影響性能的情況下,非常方便地實現(xiàn)高可用性的架構(gòu)。
2 MongoDB數(shù)據(jù)庫的特點
MongoDB作為目前使用最廣泛的NoSQL數(shù)據(jù)庫,它在具備NoSQL數(shù)據(jù)庫的基本特性的同時也具備了它本身的特有個性。主要有如下幾點:(1)文檔性。MongoDB是一個面向集合的、模式自由的文檔型數(shù)據(jù)庫,它支持的數(shù)據(jù)結(jié)構(gòu)非常自由,類似于JSON的BSON格式,可以存儲結(jié)構(gòu)非常復(fù)雜的數(shù)據(jù)。它采用高效的二進(jìn)制數(shù)據(jù)存儲,可以將視頻、圖片等大型對象轉(zhuǎn)換成二進(jìn)制的數(shù)據(jù)存儲到數(shù)據(jù)庫中。(2)查詢效率高。MongoDB具有完整的索引支持和查詢功能。它是NoSQL數(shù)據(jù)庫中最像關(guān)系型數(shù)據(jù)庫的,它保留了SQL中的“索引”這一友好特性,不僅可以對內(nèi)嵌文檔創(chuàng)建索引,還可以對內(nèi)嵌文檔中的數(shù)組創(chuàng)建索引。MongoDB的查詢指令使用JSON形式,使查詢表達(dá)式變得非常豐富。由于MongoDB數(shù)據(jù)庫結(jié)構(gòu)非常簡單,免去了表與表之間的關(guān)聯(lián)查詢,因而MongoDB的數(shù)據(jù)查詢效率和并發(fā)讀/寫性能相比于關(guān)系型數(shù)據(jù)有較大優(yōu)勢。(3)擴(kuò)展性。MongoDB是一種分布式數(shù)據(jù)庫,當(dāng)實時數(shù)據(jù)量非常大的時候,MongoDB采用Sharing技術(shù)(自動分片技術(shù))將數(shù)據(jù)水平擴(kuò)展至不同節(jié)點,可動態(tài)的添加額外的硬件和服務(wù)節(jié)點,很好地解決了關(guān)系型數(shù)據(jù)庫無法橫向擴(kuò)展的問題。(4)復(fù)制及自動故障轉(zhuǎn)移。MongoDB數(shù)據(jù)庫支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主-從模式及服務(wù)器之間的相互復(fù)制。
3 基于MongoDB的非關(guān)系型中醫(yī)養(yǎng)生知識庫結(jié)構(gòu)設(shè)計
在MongoDB數(shù)據(jù)庫中,數(shù)據(jù)的邏輯結(jié)構(gòu)被分為3個層次:文檔(Document)、集合(Collection)和數(shù)據(jù)庫(Database),文檔相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一行記錄,多個文檔組成一個集合相當(dāng)于數(shù)據(jù)庫中的表,多個集合邏輯上組織在一起就是數(shù)據(jù)庫。
本文研究的中醫(yī)養(yǎng)生知識庫在集合與數(shù)據(jù)庫這2個層次上的結(jié)構(gòu)關(guān)系如圖1所示。
至于在集合和文檔這2個層次的存儲結(jié)構(gòu),本文以中醫(yī)養(yǎng)生方法(Collection1)中的飲食起居養(yǎng)生為例列出該集合在數(shù)據(jù)庫中的存儲結(jié)構(gòu)如圖2所示。
“飲食養(yǎng)生”這一集合的具體的BSON格式數(shù)據(jù)如圖3所示。通過上文的分析,本文可以看到已采用MongoDB實現(xiàn)的非關(guān)系型存儲的中醫(yī)養(yǎng)生知識庫有如下幾個優(yōu)勢:(1)數(shù)據(jù)存儲易于水平擴(kuò)展。由于MongoDB數(shù)據(jù)庫的本身特性,即文檔可以內(nèi)嵌文檔,使得數(shù)據(jù)的水平擴(kuò)展非常容易實現(xiàn),并且這樣的分節(jié)點掛載方式使得服務(wù)器的負(fù)載大大減小。
(2)查詢效率高。中醫(yī)養(yǎng)生知識庫的需要解決的主要問題是針對高并發(fā)的數(shù)據(jù)查詢功能,MongoDB數(shù)據(jù)庫在這方面具有獨特的優(yōu)勢。(3)數(shù)據(jù)文檔型存儲。中醫(yī)養(yǎng)生知識基本都以文本形式保存,MongoDB數(shù)據(jù)庫對數(shù)據(jù)的文檔型存儲與這一特點恰好吻合。(4)并發(fā)讀/寫性能良好。NoSQL數(shù)據(jù)庫在應(yīng)對高并發(fā)讀/寫上性能優(yōu)于關(guān)系型數(shù)據(jù)庫。(5)數(shù)據(jù)庫復(fù)制及自動故障轉(zhuǎn)移。MongoDB數(shù)據(jù)庫本身的這一特性為中醫(yī)養(yǎng)生知識庫的安全性提供了保障。
4 存在的挑戰(zhàn)
(1)NoSQL技術(shù)目前發(fā)展的不夠成熟。(2)MongoDB對CPU的占有率太大,且MongoDB數(shù)據(jù)庫對內(nèi)存的要求比較高。(3)目前MongoDB對每個數(shù)據(jù)文件的最大數(shù)據(jù)容量為2G,當(dāng)訪問量達(dá)到一定限制后數(shù)據(jù)庫的并發(fā)處理性能就會下降。
5 未來的展望
隨著該中醫(yī)養(yǎng)生知識庫的不斷充實和發(fā)展,不僅可以把古今醫(yī)學(xué)名家所著的各類中醫(yī)養(yǎng)生經(jīng)典名著整理存入數(shù)據(jù)庫,還可以將各類醫(yī)案信息和通過可穿戴設(shè)備實時獲取的如睡眠、血壓、脈搏等健康數(shù)據(jù)存入數(shù)據(jù)庫,通過對大量數(shù)據(jù)的分析和挖掘可得出對于某些疾病的防治措施,之后將中醫(yī)養(yǎng)生健康建議及時反饋給用戶,從而提高人們的身體健康水平。
6 結(jié)語
隨著現(xiàn)在大數(shù)據(jù)的發(fā)展,數(shù)據(jù)指數(shù)型增長的趨勢已勢不可擋,通過上文對NoSQL以及MongoDB數(shù)據(jù)庫的分析可以看出MongoDB在構(gòu)建中醫(yī)養(yǎng)生知識庫具有一定優(yōu)勢和前瞻性。
MongoDB數(shù)據(jù)庫構(gòu)建的NoSQL型中醫(yī)養(yǎng)生知識庫在并發(fā)讀寫,對海量數(shù)據(jù)的高效率存儲和訪問,對數(shù)據(jù)庫的高可擴(kuò)展性和高可用性存在無可比擬的優(yōu)勢,而且對于Web2.0網(wǎng)站來說,關(guān)系型數(shù)據(jù)庫的很多主要特性都發(fā)揮不出作用。因此,構(gòu)建非關(guān)系型存儲的中醫(yī)養(yǎng)生知識庫在提高存儲和查找性能上相比于關(guān)系型數(shù)據(jù)庫有一定優(yōu)勢,對于中醫(yī)藥事業(yè)的發(fā)展有積極意義。
[參考文獻(xiàn)]
[1]鄒貴金.深入理解云計算(MongoDB管理與開發(fā)實戰(zhàn)詳解)[M].北京:中國鐵道出版社,2013.
[2]于琦,于彤,高宏杰.中醫(yī)養(yǎng)生知識庫構(gòu)建方法研究[J].世界科學(xué)技術(shù)·中醫(yī)藥現(xiàn)代化,2015(8):1612-1616.
[3]于琦,李敬華,高宏杰.中醫(yī)養(yǎng)生數(shù)據(jù)庫建設(shè)[J].中國數(shù)字醫(yī)學(xué),2015(8):73-75.
[4]黃賢立.NoSQL非關(guān)系型數(shù)據(jù)庫的發(fā)展及應(yīng)用[J].福建電腦,2010(7):30.
[5]吾木提·那合曼.NoSQL數(shù)據(jù)庫綜述[J].電子世界,2015(17):146-147.
[6]南敬宇.淺談NoSQL數(shù)據(jù)庫[J].電子技術(shù)與軟件工程,2013(19):229.
[7]權(quán)治,宋晶晶.基于NoSQL的數(shù)據(jù)庫技術(shù)分析[J].無線電工程,2013(9):4-6.
[8]王振輝,王振鐸.MongoDB中數(shù)據(jù)分頁優(yōu)化技術(shù)[J].計算機(jī)系統(tǒng)應(yīng)用,2015(6):243-246.
[9]王光磊.MongoDB數(shù)據(jù)庫的應(yīng)用研究和方案優(yōu)化[J].中國科技信息,2011(20):93-94.
[10]張文盛.基于MongoDB構(gòu)建高性能網(wǎng)站技術(shù)研究[J].吉林師范大學(xué)學(xué)報:自然科學(xué)版,2013(1):123-127.
[11]陳滌平.中醫(yī)養(yǎng)生大成[M].北京:中國中醫(yī)藥出版社,2014.
Study on Building a Non-Relational Storage for Health Preservation of Traditional Chinese Medicine Knowledge Based on Mongodb Database
Qi Shuaibin, Hu Chenjun*, Hu Kongfa
(College of Information Technology, Nanjing University of Chinese Medicine, Nanjing 210029, China)
Abstract: This research was to study the characteristics of the MongoDB Database by the current problems on Relational Database and the analysis on the features of NoSQL Database. We try to build a non-relational storage for health preservation of Traditional Chinese Medicine knowledge based on MongoDB Database. The research makes it convenience for users to obtain the knowledge of keeping good health by Traditional Chinese Medicine more dynamically.
Key words: MongoDB; NoSQL; regimen of traditional chinese medicine repository; knowledge database