成人网在线播放,正在播放乱人伦,久久国产影视,久霸tv高端在线观看,国产亚洲福利,精品在线播放视频,在线观看国产www

您的位置:健客網(wǎng) > 新聞頻道 > 政策解讀 > 聚焦醫改 > 基于NoSQL的中醫藥數據存儲方法研究

基于NoSQL的中醫藥數據存儲方法研究

2017-07-14 來(lái)源:中國數字醫學(xué)  標簽: 掌上醫生 喝茶減肥 一天瘦一斤 安全減肥 cps聯(lián)盟 美容護膚
摘要:MongoDB是一個(gè)模式靈活、開(kāi)源、高性能、可擴展的文檔型數據庫。主要特性包括:存儲模式自由,面向集合存儲;支持動(dòng)態(tài)查詢(xún)和完全索引,查詢(xún)表達式豐富;自動(dòng)分片機制,支持動(dòng)態(tài)添加機器;支持數據復制和自動(dòng)故障恢復。

  數據類(lèi)型多樣、數據量大、異構是中醫藥數據的典型特征。目前,對中醫藥數據信息的存儲和管理,主要依賴(lài)于關(guān)系數據庫(RDBMS)。然而,面對海量異構的中醫藥數據如何實(shí)現高并發(fā)讀寫(xiě)、高可擴展性以及異源數據間的互操作等一系列問(wèn)題,RDBMS由于其自身的局限遇到了困境,難以滿(mǎn)足中醫藥大數據高效存儲和訪(fǎng)問(wèn)的迫切需求。因此,亟需研究新的數據管理模型來(lái)解決中醫藥數據的管理問(wèn)題,而非關(guān)系型數據庫(NoSQL)的出現有效地彌補了RDBMS的不足。

  不同于RDBMS,NoSQL是一種分布式、非關(guān)系型數據庫系統,不僅能夠實(shí)現各類(lèi)型數據的高并發(fā)讀寫(xiě),而且支持鍵值(Key-Value)、圖、列族、文檔等常見(jiàn)數據類(lèi)型。NoSQL可以高效管理海量數據,并且具有較好的可擴展性和靈活性。MongoDB屬于NoSQL的范疇,在NoSQL領(lǐng)域占有舉足輕重的地位。本文以MongoDB為代表,研究基于NoSQL的中醫藥大數據存儲方法。采用全國各省中醫院在線(xiàn)公開(kāi)的大量藥方數據庫資源,通過(guò)研究存儲系統的體系結構和關(guān)鍵技術(shù),與傳統關(guān)系型數據庫在相同的大數據條件下進(jìn)行實(shí)驗對比,驗證了本文提出的方法在存儲和訪(fǎng)問(wèn)海量中醫藥數據時(shí)具有更高的性能。

  MongoDB介紹

  MongoDB是一個(gè)模式靈活、開(kāi)源、高性能、可擴展的文檔型數據庫。主要特性包括:存儲模式自由,面向集合存儲;支持動(dòng)態(tài)查詢(xún)和完全索引,查詢(xún)表達式豐富;自動(dòng)分片機制,支持動(dòng)態(tài)添加機器;支持數據復制和自動(dòng)故障恢復。MongoDB的以上特性為海量、異構、多元的中醫藥大數據的存儲和訪(fǎng)問(wèn)提供了支持。

  中醫藥數據管理系統設計

  中醫藥數據管理系統的設計需考慮以下因素:負載均衡性、數據冗余性和水平擴展性。因此,主要進(jìn)行以下三方面設計。

  2.1MongoDB分布式集群設計由于單機節點(diǎn)無(wú)法滿(mǎn)足大數據高效存儲和訪(fǎng)問(wèn)的要求,因此需要建立分布式集群環(huán)境來(lái)解決。一個(gè)MongoDB集群通常由三個(gè)部分組成。

  2.1.1分片節點(diǎn)(Shard)分片節點(diǎn)用于存儲實(shí)際的數據塊,一個(gè)分片節點(diǎn)可以由多個(gè)服務(wù)器組成副本集合,每個(gè)服務(wù)器存儲的數據相同,實(shí)現數據冗余和系統擴展。

  2.1.2路由服務(wù)(RouteServer)主要功能是處理終端請求和返回執行結果,即MongoDB把不同的請求分發(fā)給不同的Shard,最后把所有相關(guān)分片結果整合后返回。

  2.1.3配置服務(wù)器(ConfigServer)主要負責存儲集群上元數據信息。

  本文設計的MongoDB分布式集群架構如圖1所示。

  其中,圖1中的Mongos屬于控制服務(wù)器,提供路由服務(wù)。其根據ConfigServers存儲的每個(gè)塊數據記錄確定Client的不同請求要路由到哪個(gè)分片服務(wù)器,把結果融合后返回給Client終端。對于分片節點(diǎn)Shard來(lái)講,兩臺以上的mongod服務(wù)器為一組,即一個(gè)分片,一組里mongod數據相同,每個(gè)分片上存放的是一定范圍的數據,當一個(gè)分片的數據量過(guò)多時(shí),為保持負載平衡,會(huì )遷移到另外的分片,這樣的分片機制提高了系統的訪(fǎng)問(wèn)能力和擴展能力。

  2.2分片設計所謂數據分片是指把數據分散地存儲于多個(gè)分片服務(wù)器上,減小單個(gè)服務(wù)器的負擔,進(jìn)而使系統性能得到提高。本文設計的存儲系統選擇基于ID特征的分片策略。比如對記錄ID進(jìn)行取模運算,結果為n,則該記錄被分配到編號為n的分片服務(wù)器(數據分區)上。數據分片流程如圖2所示。

  根據圖2流程,以數據文件作為分片對象,基本分片原理是把整個(gè)數據文件根據所獲取的分片大小進(jìn)行分片計算。因此,分片流程的第一步就是獲取需要分片的數據源文件,并計算數據源文件的總大小。基于chunksize的值,如果當前數據源文件總大小大于chunksize,則重復執行與chunksize取模的運算,得到相應的分片號。分片的大小等于分片的長(cháng)度,一直到當前總大小減去chunksize大小小于chunksize時(shí),把最后剩余的未分片部分分配給下一個(gè)分片服務(wù)器。

  每個(gè)已分片的數據用來(lái)作為一個(gè)記錄的值和關(guān)鍵字,并且在每個(gè)記錄里面添加分片號、數據文件名、數據文件大小、分片大小等鍵值對。

  2.3負載均衡和冗余設計本文設計的存儲系統采用副本集的方式來(lái)實(shí)現數據冗余。即在一個(gè)分片節點(diǎn)中包含兩個(gè)以上存儲相同數據的mongod服務(wù)器,在寫(xiě)數據文件時(shí),把該數據分片寫(xiě)入到多個(gè)mongod上,保持備份mongod之間的更新。那么即使其中某一臺mongod服務(wù)器出現故障,也可以立即啟用分片中的其他副本提供數據,避免數據丟失,保障存儲系統的正常工作,增強系統的安全性、可靠性、穩定性。

  3實(shí)驗結果與分析

  3.1實(shí)驗環(huán)境搭建由于基于NoSQL的中醫藥大數據存儲系統依賴(lài)于一定的大數據平臺。選擇1臺計算機做為主機,另外8臺計算機作為從機,搭建實(shí)際的集群節點(diǎn)。逐步配置大數據平臺,具體步驟在此不做贅述。

  3.2數據來(lái)源采用數據源來(lái)自全國各省中醫院在線(xiàn)公開(kāi)的大量藥方數據庫資源,數據總大小達280GB。該數據源記錄了自2006年起至今的多所中醫院公開(kāi)的藥方數據。例如:復方藿香洗劑治療手足癬(克白醋500克,黃精、明礬各10克,生大黃2克,藿香25),熏洗法治足癬感染(黃柏、黃芩、白鮮皮、百部、防風(fēng)各15克,萆薢20克,枯礬12克,廣丹3克)等。

  采用的藥方對象具有數據量大、關(guān)系復雜、數據異構等特點(diǎn),RDBMS針對這類(lèi)數據通常很難達到預期效果。因此通過(guò)基于NoSQL的大數據存儲技術(shù)進(jìn)行管理,對大量公開(kāi)的藥方進(jìn)行收集、整理,探究其內在規律,以期把實(shí)驗結果提供給臨床進(jìn)行檢驗。

  3.3MongoDB數據存儲系統與傳統RDBMS性能對比

  3.3.1存儲性能對比分別對基于MongoDB數據存儲系統與RDBMS各進(jìn)行1,20,100,500,1000次文件存儲,其中每個(gè)文件所占空間大小為40KB。MongoDB與RDBMS在數據存儲性能方面的比較如圖3所示。

  由圖3可以看出,處理的文件數量越多,兩種方式所需的處理時(shí)間越長(cháng),另一方面,數據量超過(guò)某一“閾值”時(shí),RDBMS所需時(shí)間急劇增加,而MongoDB的時(shí)間增長(cháng)率一直比較平穩,甚至趨近于線(xiàn)性增加。由此可以看出,數據量越大MongoDB數據存儲系統的性能優(yōu)勢越明顯,更適用于大數據的存儲。

  3.3.2查詢(xún)性能對比分別對基于MongoDB數據存儲系統和RDBMS各進(jìn)行數據量為500,1000,3000,6000,10000查詢(xún)操作,MongoDB與RDBMS數據查詢(xún)性能的對比如圖4所示。

  由圖4不難看出,基于MongoDB數據存儲系統的查詢(xún)過(guò)程耗時(shí)非常少,幾乎可以忽略不計,在數據量大幅增多的情況下,其耗時(shí)增幅沒(méi)有明顯變化。而RDBMS查詢(xún)耗時(shí)較大,隨著(zhù)數據量的增加,其耗時(shí)增幅會(huì )有明顯增加。

  因此,與RDBMS相比,基于NoSQL的數據存儲系統具有更好的數據讀寫(xiě)性能、擴展性和靈活性。

  4結論

  本文首先研究了MongoDB的特性和關(guān)鍵技術(shù),設計了基于MongoDB的中醫藥大數據存儲系統架構,包括集群設計、數據分片設計、負載均衡和冗余設計等關(guān)鍵方面,具有較強的可擴展性、負載均衡性和可靠性。實(shí)驗結果表明,基于NoSQL的中醫藥大數據存儲方法從系統架構層面進(jìn)行的設計與改進(jìn),使得對海量非結構化、半結構化中醫藥數據的讀寫(xiě)效率大幅提高。

  不斷擴大中醫藥數據量和集群規模,從更廣的層面檢驗系統性能并完善系統,以加強數據檢索能力,進(jìn)一步提高中醫藥數據存儲和訪(fǎng)問(wèn)性能是下一步的研究方向。

看本篇文章的人在健客購買(mǎi)了以下產(chǎn)品 更多>
有健康問(wèn)題?醫生在線(xiàn)免費幫您解答!去提問(wèn)>>
健客微信
健客藥房
大港区| 五台县| 郴州市| 永平县| 龙游县| 兰西县| 思茅市| 宾川县| 柳州市| 南阳市| 廉江市| 洪江市| 海淀区| 瓮安县| 兴海县| 和平县| 新疆| 临漳县| 安岳县| 大厂| 叶城县| 四川省| 关岭| 台南县| 黑河市| 平罗县| 会东县| 城市| 东海县| 开阳县| 十堰市| 陆川县| 崇仁县| 大竹县| 三河市| 鄢陵县| 西吉县| 封丘县| 榕江县| 镇原县| 安溪县|