劉芳,管新,袁飛,楊繼奎
南通市通州區(qū)人民醫(yī)院 信息科,江蘇 南通 226300
隨著公眾對(duì)自己健康越來(lái)越關(guān)注,人們希望醫(yī)療機(jī)構(gòu)能夠提供更加優(yōu)質(zhì)的服務(wù),健康信息服務(wù)是醫(yī)療服務(wù)的重要組成部分,大眾希望得到高效、快捷、安全的健康信息服務(wù),同時(shí)能方便地獲取全面的個(gè)性化健康信息,例如個(gè)人健康檔案信息、個(gè)人電子病歷信息。這對(duì)當(dāng)前的醫(yī)療信息系統(tǒng)提出了更高的要求,甚至可以說(shuō)是挑戰(zhàn)。
醫(yī)療信息系統(tǒng)本身也積累了海量數(shù)據(jù)。如何利用好現(xiàn)有的數(shù)據(jù)為大眾提供更好的信息服務(wù),也是一項(xiàng)艱巨的任務(wù)。
近年來(lái)IT業(yè)興起的云計(jì)算模式為應(yīng)對(duì)這樣的挑戰(zhàn)提供了一個(gè)很好的解決方案。
對(duì)于用戶來(lái)說(shuō),遠(yuǎn)端的數(shù)據(jù)存儲(chǔ)和軟件服務(wù)可以看作是云端,用戶不用關(guān)心數(shù)據(jù)和服務(wù)從哪里來(lái),就像享受隨用隨到的電力和水力服務(wù)一樣享受著來(lái)自云端的軟件服務(wù)和各種各樣的數(shù)據(jù)。云計(jì)算的關(guān)鍵是建立好數(shù)據(jù)中心和計(jì)算中心[1]。
海量數(shù)據(jù)存儲(chǔ)可以理解為數(shù)據(jù)中心,高性能計(jì)算可以理解為計(jì)算中心,數(shù)據(jù)中心和計(jì)算中心并不是割裂的,而是合二為一的。實(shí)現(xiàn)方法主要是將多臺(tái)計(jì)算機(jī)通過(guò)高速網(wǎng)絡(luò)連接起來(lái),提供近乎無(wú)限的數(shù)據(jù)存儲(chǔ)、計(jì)算能力和完美的可靠性。
數(shù)據(jù)中心最關(guān)鍵的是管理軟件,通過(guò)管理軟件來(lái)管理好加入數(shù)據(jù)中心的每一臺(tái)計(jì)算機(jī),管理好計(jì)算任務(wù)和數(shù)據(jù)存儲(chǔ)的負(fù)載均衡。
據(jù)微軟網(wǎng)站的介紹,微軟云計(jì)算中心每月都要加入上千臺(tái)服務(wù)器來(lái)提高服務(wù)能力以滿足不斷增長(zhǎng)的用戶需要。微軟云計(jì)算中心為全世界的數(shù)十億用戶永不間斷地提供著HotMail、SkyDrive、Office365 等在線應(yīng)用服務(wù)。
醫(yī)療機(jī)構(gòu)的健康信息中心同樣面對(duì)著海量數(shù)據(jù)存儲(chǔ)和高性能計(jì)算能力的擴(kuò)展需求。健康信息中心也應(yīng)該橫向擴(kuò)展,即通過(guò)增加計(jì)算節(jié)點(diǎn)來(lái)擴(kuò)展計(jì)算能力。當(dāng)中心感到在業(yè)務(wù)高峰計(jì)算能力不足,要通過(guò)加入低成本計(jì)算機(jī)或者啟動(dòng)虛擬機(jī)加入服務(wù)器集群來(lái)提高計(jì)算能力[2]。
大型醫(yī)院集團(tuán)化管理對(duì)醫(yī)療軟件的部署也提出了新要求,小型醫(yī)療機(jī)構(gòu)加盟集團(tuán)后,最好不需要重新部署信息系統(tǒng),而是通過(guò)互聯(lián)網(wǎng)免安裝下載和使用信息系統(tǒng)的各模塊。信息中心只要在后端服務(wù)器進(jìn)行配置后,就能使新加盟的醫(yī)療機(jī)構(gòu)融入到集團(tuán)整個(gè)信息系統(tǒng)中,不再像過(guò)去通過(guò)購(gòu)買盒裝軟件,省去軟件購(gòu)買、安裝、升級(jí)等繁雜手續(xù)。
普通大眾也希望通過(guò)互聯(lián)網(wǎng)享受到信息中心的各種服務(wù),要求軟件終端本身就基于Web。用戶的終端也不僅限于PC,越來(lái)越多的智能手機(jī)和平板電腦也擁有了類似PC的計(jì)算能力,并且在不遠(yuǎn)的未來(lái),智能手機(jī)和平板電腦的數(shù)量將遠(yuǎn)遠(yuǎn)多于現(xiàn)有的PC數(shù)量。未來(lái)公眾很可能通過(guò)智能手機(jī)終端軟件去查詢自己的電子病歷和健康檔案信息,或者通過(guò)智能手機(jī)做一些互動(dòng)的健康咨詢類似需求,醫(yī)療機(jī)構(gòu)提供海量健康信息數(shù)據(jù)存儲(chǔ)和計(jì)算中心,并通過(guò)電信網(wǎng)絡(luò)和互聯(lián)網(wǎng)為廣大公眾提供健康信息服務(wù)。
這些需求總結(jié)起來(lái)就是軟件即服務(wù),要求醫(yī)療信息系統(tǒng)要提供適應(yīng)更多終端的客戶端。
健康信息屬于個(gè)人信息,對(duì)于安全性要求很高,因此不能把健康信息存儲(chǔ)到公共的云端,醫(yī)療機(jī)構(gòu)必須建設(shè)自己的云計(jì)算中心,即私有云[3]。
私有云的另一個(gè)特點(diǎn)是云計(jì)算的特征,提供海量數(shù)據(jù)存儲(chǔ)能力和強(qiáng)大的計(jì)算能力,并且提供方便快捷的軟件服務(wù)。這個(gè)特點(diǎn)也可以使醫(yī)院管理集團(tuán)共享IT資源[4]。
建設(shè)私有云計(jì)算的核心在于建設(shè)和管理服務(wù)器集群[5-6]。
(1)要做到服務(wù)器集群的橫向擴(kuò)展。即通過(guò)增加計(jì)算機(jī)或虛擬機(jī)來(lái)近乎線性地提高計(jì)算能力和數(shù)據(jù)存儲(chǔ)能力。
(2)新增加計(jì)算機(jī)或虛擬機(jī)時(shí),不需要修改軟件,只需要做服務(wù)器集群的配置操作。
(3)多個(gè)服務(wù)集群之間可以互相作為備份,提高整個(gè)系統(tǒng)的可靠性和安全性。
(4)服務(wù)器集群中應(yīng)該有負(fù)載均衡管理功能,將業(yè)務(wù)高峰時(shí)的工作負(fù)擔(dān)均分到各個(gè)服務(wù)器中,提高整個(gè)系統(tǒng)的性能。
(5)監(jiān)控軟件來(lái)監(jiān)控服務(wù)器集群中各個(gè)節(jié)點(diǎn)的運(yùn)行狀態(tài)。
私有云不但能為本醫(yī)療機(jī)構(gòu)信息系統(tǒng)和客戶服務(wù),還能作為一個(gè)重要的基礎(chǔ)設(shè)施為其他醫(yī)療機(jī)構(gòu)服務(wù)。例如,一個(gè)醫(yī)院管理集團(tuán)圍繞著一個(gè)或若干個(gè)大型骨干醫(yī)院以及其他加盟醫(yī)院具有緊密合作關(guān)系,在醫(yī)院管理集團(tuán)內(nèi)不但可以共享優(yōu)質(zhì)的醫(yī)療資源,也可以共享IT基礎(chǔ)設(shè)施。一個(gè)醫(yī)院管理集團(tuán)可以集中優(yōu)勢(shì)資源建立一個(gè)高質(zhì)量的私有云,集團(tuán)內(nèi)部的小醫(yī)院不必再重復(fù)建設(shè)信息系統(tǒng),可以直接使用集團(tuán)私有云提供的各種信息服務(wù)和數(shù)據(jù)服務(wù)。小醫(yī)院不僅大大降低自己的運(yùn)營(yíng)成本,而且獲得和大型醫(yī)院一樣高質(zhì)量高水平的信息服務(wù)。整個(gè)集團(tuán)也可以做到信息的集中管理,大大降低運(yùn)營(yíng)成本。
私有云的安全性也是一個(gè)焦點(diǎn)問題。
(1)確?;A(chǔ)平臺(tái)的安全性,基礎(chǔ)平臺(tái)包括操作系統(tǒng)、數(shù)據(jù)庫(kù)、Web服務(wù)器、網(wǎng)絡(luò)中間件等[7]。① 服務(wù)器OS應(yīng)采用Linux或者 Windows Server 2008 R2等安全性好的系統(tǒng),并及時(shí)更新安全補(bǔ)丁。② 在操作系統(tǒng)上實(shí)施嚴(yán)格的安全策略。③ 數(shù)據(jù)庫(kù)應(yīng)采用 Oracle、DB2或者SQLServer2008等安全性好的DB,并規(guī)劃好用戶、角色和數(shù)據(jù)的存取設(shè)置。數(shù)據(jù)庫(kù)服務(wù)器必須有熱備。④ 數(shù)據(jù)庫(kù)數(shù)據(jù)和文檔化的非結(jié)構(gòu)化半結(jié)構(gòu)化數(shù)據(jù)必須冗余存儲(chǔ)[8]。⑤ 安裝和打開網(wǎng)絡(luò)防火墻,關(guān)閉不用的DNS域名、IP和端口。⑥ 安裝網(wǎng)絡(luò)殺毒軟件并及時(shí)更新。
(2)應(yīng)用軟件本身應(yīng)該具備嚴(yán)密、完備的安全性。① 充分利用操作系統(tǒng)和數(shù)據(jù)庫(kù)所提供的安全性功能,劃分不同賬戶、不同角色,各自能夠訪問的數(shù)據(jù)。② 應(yīng)用軟件本身應(yīng)該提供賬戶、角色和功能的使用權(quán)限設(shè)置。③ 應(yīng)用軟件應(yīng)提供完備的Log記錄功能,對(duì)于敏感操作和敏感數(shù)據(jù)的存取要做到留痕。④ 系統(tǒng)賬戶信息、用戶賬戶信息等核心數(shù)據(jù)應(yīng)該加密存儲(chǔ)。
(3)規(guī)劃好內(nèi)網(wǎng)和外網(wǎng)(可以訪問互聯(lián)網(wǎng))的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),保證內(nèi)網(wǎng)的安全。① 確保內(nèi)網(wǎng)和外網(wǎng)物理隔離,確保內(nèi)網(wǎng)數(shù)據(jù)不能被外網(wǎng)訪問。② 外網(wǎng)需要訪問內(nèi)網(wǎng)數(shù)據(jù)的時(shí)候,必須通過(guò)代理服務(wù)器訪問,不能直接把內(nèi)網(wǎng)服務(wù)器暴露出來(lái)。③ 外網(wǎng)的訪問請(qǐng)求和數(shù)據(jù)傳輸必須加密。應(yīng)該為每位外網(wǎng)用戶提供軟數(shù)字證書或硬數(shù)字證書,以便對(duì)傳輸數(shù)據(jù)進(jìn)行加密,對(duì)其身份進(jìn)行認(rèn)證。
下面結(jié)合醫(yī)院的實(shí)際情況討論一個(gè)私有云建設(shè)具體實(shí)施方案。現(xiàn)有的HIS數(shù)據(jù)庫(kù)一般采用單臺(tái)服務(wù)器模式,如果需要擴(kuò)展計(jì)算能力必須要縱向擴(kuò)展,所謂縱向擴(kuò)展就是增加單臺(tái)服務(wù)器的硬件配置,例如增加內(nèi)存、增加CPU核心的數(shù)量等,縱向擴(kuò)展的優(yōu)點(diǎn)是軟件不需要修改,但是擴(kuò)展成本很高,而且擴(kuò)展能力十分有限,單臺(tái)機(jī)器上的硬盤IO和網(wǎng)絡(luò)IO是一個(gè)繞不開的瓶頸。
所以想要無(wú)限地并且接近線性擴(kuò)展系統(tǒng)的數(shù)據(jù)處理能力,服務(wù)器必須做到橫向擴(kuò)展,即通過(guò)增加廉價(jià)的計(jì)算機(jī)節(jié)點(diǎn)來(lái)擴(kuò)展系統(tǒng)的數(shù)據(jù)處理能力,數(shù)據(jù)處理任務(wù)分發(fā)給不同的服務(wù)器,這就要求軟件要做大的改造[9-10]。
現(xiàn)階段的HIS仍然建立在數(shù)據(jù)庫(kù)基礎(chǔ)上。數(shù)據(jù)的存儲(chǔ)一般都放在數(shù)據(jù)庫(kù)里。醫(yī)院的業(yè)務(wù)高峰時(shí)也是數(shù)據(jù)庫(kù)服務(wù)器訪問量的高峰,單個(gè)數(shù)據(jù)庫(kù)的IO吞吐量往往成為整個(gè)系統(tǒng)的處理瓶頸,要突破這個(gè)瓶頸,應(yīng)該建立數(shù)據(jù)庫(kù)服務(wù)器集群,計(jì)算任務(wù)分發(fā)給群內(nèi)的計(jì)算機(jī),并且對(duì)集群進(jìn)行完善的管理。
數(shù)據(jù)應(yīng)該通過(guò)網(wǎng)絡(luò)廣播和復(fù)制功能分發(fā)到不同的數(shù)據(jù)庫(kù)服務(wù)器上,數(shù)據(jù)必須冗余保存到多個(gè)數(shù)據(jù)庫(kù)服務(wù)器[11]。服務(wù)器通過(guò)管理模塊有機(jī)組成一個(gè)完整的數(shù)據(jù)存儲(chǔ)和提供數(shù)據(jù)訪問的服務(wù)單元,我們稱之為數(shù)據(jù)庫(kù)服務(wù)器集群[12]。
數(shù)據(jù)庫(kù)服務(wù)器集群的關(guān)鍵是對(duì)內(nèi)可以做到橫向擴(kuò)展,即通過(guò)增加機(jī)器來(lái)提供數(shù)據(jù)存儲(chǔ)能力和提高數(shù)據(jù)吞吐量,對(duì)外作為一個(gè)整體提供數(shù)據(jù)訪問服務(wù)。
在集群內(nèi)應(yīng)使用數(shù)據(jù)復(fù)制功能,將數(shù)據(jù)通過(guò)一定的策略廣播到不同的數(shù)據(jù)庫(kù)實(shí)例中。目前HIS采用SQLServer作為數(shù)據(jù)庫(kù)平臺(tái)有很多,可以利用SQLServer數(shù)據(jù)庫(kù)本身提供的事務(wù)數(shù)據(jù)復(fù)制功能,在服務(wù)器之間復(fù)制數(shù)據(jù)[13]。
集群管理模塊要有一個(gè)數(shù)據(jù)存取的路由算法對(duì)SQL語(yǔ)句進(jìn)行分析并轉(zhuǎn)發(fā)到不同的服務(wù)器上存取數(shù)據(jù)[14]。
以下方案參考了某超大型電子商務(wù)網(wǎng)站的數(shù)據(jù)庫(kù)配置方案,該方案完全能高效處理每天增加1G數(shù)據(jù)的數(shù)據(jù)量,足以應(yīng)對(duì)目前國(guó)內(nèi)任何一家大型醫(yī)院的要求。
2.3.1 方案綜述
該方案的軟件部分主要有以下幾個(gè)組成部分:見圖1
圖1 數(shù)據(jù)庫(kù)服務(wù)器集群建設(shè)方案的軟件組成
(1 )各種客戶終端:PC、平板電腦、智能手機(jī)。
(2)WebServices 應(yīng)用服務(wù)器,例如基于IIS的WebServices服務(wù)器。
(3)數(shù)據(jù)庫(kù)集群管理模塊,該管理模塊內(nèi)置了負(fù)載均衡模塊。
(4)數(shù)據(jù)庫(kù)服務(wù)器集群,集群內(nèi)根據(jù)服務(wù)器的功能角色還可以分為:① 原始數(shù)據(jù)存儲(chǔ)服務(wù)器;② 熱點(diǎn)數(shù)據(jù)處理服務(wù)器;③ 歷史數(shù)據(jù)處理服務(wù)器。
客戶端的服務(wù)請(qǐng)求通過(guò)HTTP WebServices提交給Application Server 后,由Application Server 轉(zhuǎn)發(fā)給數(shù)據(jù)庫(kù)集群管理模塊(Database Cluster Management Module,DCMM),DCMM會(huì)對(duì)客戶請(qǐng)求的數(shù)據(jù)進(jìn)行分析,并將其分為三類:
(1)原始數(shù)據(jù)的存儲(chǔ)。 原始數(shù)據(jù)單獨(dú)存儲(chǔ),是要保證最好的原始數(shù)據(jù)處理性能。
(2)熱點(diǎn)數(shù)據(jù)處理和查詢。所謂熱點(diǎn)數(shù)據(jù)就是近期常用的數(shù)據(jù),它不是原始數(shù)據(jù),而是原始數(shù)據(jù)的計(jì)算結(jié)果。
(3)歷史數(shù)據(jù)查詢和分析。所謂歷史數(shù)據(jù)是屬于以前并且不常用的數(shù)據(jù)。
如果配置了負(fù)載均衡功能的話,DCMM還需要調(diào)用負(fù)載均衡模塊來(lái)確定最終客戶請(qǐng)求要發(fā)送給哪臺(tái)服務(wù)器。
2.3.2 數(shù)據(jù)庫(kù)服務(wù)器功能角色分類介紹
數(shù)據(jù)庫(kù)集群內(nèi)包含了三類不同功能的服務(wù)器節(jié)點(diǎn):
(1)原始數(shù)據(jù)存儲(chǔ)服務(wù)器對(duì)HIS來(lái)說(shuō),原始數(shù)據(jù)是:掛號(hào)、處方、醫(yī)囑、電子病歷、明細(xì)賬目等信息。
該服務(wù)器接收來(lái)自DCMM的insert update 等SQL語(yǔ)句以及存儲(chǔ)過(guò)程,接收原始數(shù)據(jù)并保存,為了提升性能,它不做任何計(jì)算。
原始數(shù)據(jù)保存后再通過(guò)高速網(wǎng)絡(luò)通道復(fù)制分發(fā)給熱點(diǎn)數(shù)據(jù)處理服務(wù)器。
當(dāng)單臺(tái)服務(wù)器IO處理成為瓶頸時(shí),可以用相同功能的服務(wù)器組成集群,DCMM 相應(yīng)地要增加負(fù)載均衡計(jì)算和路由功能。由負(fù)載均衡模塊來(lái)選擇相對(duì)輕負(fù)載的服務(wù)器,提高整個(gè)系統(tǒng)的性能。
若存在多臺(tái)原始數(shù)據(jù)存儲(chǔ)服務(wù)器時(shí),單臺(tái)服務(wù)器所保存的數(shù)據(jù)也應(yīng)該廣播給其他原始數(shù)據(jù)存儲(chǔ)服務(wù)器。
(2)熱點(diǎn)數(shù)據(jù)處理服務(wù)器它主要是訂閱和接收原始數(shù)據(jù),并進(jìn)行計(jì)算和緩存快照處理。例如,當(dāng)接收到住院病人的醫(yī)囑數(shù)據(jù)后,計(jì)算住院病人的賬戶。
它接收來(lái)自DCMM的數(shù)據(jù)查詢請(qǐng)求并返回相應(yīng)的數(shù)據(jù)。
當(dāng)單臺(tái)服務(wù)器成為瓶頸時(shí),要增加服務(wù)器并組成集群,同樣的,DCMM要相應(yīng)增加負(fù)載均衡計(jì)算和路由功能。
若存在多臺(tái)熱點(diǎn)數(shù)據(jù)處理服務(wù)器時(shí),單臺(tái)服務(wù)器所處理的數(shù)據(jù)也應(yīng)該廣播給其他熱點(diǎn)數(shù)據(jù)處理服務(wù)器。
隨著時(shí)間的流逝,當(dāng)熱點(diǎn)數(shù)據(jù)漸漸變成乏人問津的數(shù)據(jù)后,它通過(guò)復(fù)制功能將數(shù)據(jù)復(fù)制給歷史數(shù)據(jù)處理服務(wù)器。
(3)歷史數(shù)據(jù)查詢和分析服務(wù)器專門用來(lái)作為對(duì)于相應(yīng)速度要求不高的歷史數(shù)據(jù)查詢和分析服務(wù)器。
例如,出院3個(gè)月以上的病人數(shù)據(jù)可以轉(zhuǎn)儲(chǔ)到歷史數(shù)據(jù)服務(wù)器里。一年前的部門報(bào)表也可以轉(zhuǎn)儲(chǔ)到歷史數(shù)據(jù)服務(wù)器里等。
還可以采用SQLServer的Analysis Services 數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器來(lái)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)和查詢功能。
當(dāng)集群內(nèi)出現(xiàn)了多臺(tái)相同功能的服務(wù)器時(shí),就需要做負(fù)載均衡的計(jì)算將任務(wù)較為均衡地分發(fā)給單臺(tái)服務(wù)器。
下面討論一個(gè)簡(jiǎn)單的負(fù)載均衡邏輯。
(1)負(fù)載均衡模塊應(yīng)隨時(shí)記錄所有可用的服務(wù)器并記住它們的網(wǎng)絡(luò)位置,服務(wù)器可以通過(guò)向負(fù)載均衡模塊發(fā)送心跳消息來(lái)報(bào)告自己的位置。當(dāng)負(fù)載均衡模塊在一定時(shí)間段內(nèi)未能收到某臺(tái)服務(wù)器的心跳消息時(shí),應(yīng)將其從服務(wù)器列表中刪除。
(2)負(fù)載均衡模塊應(yīng)隨時(shí)記錄每臺(tái)服務(wù)器的業(yè)務(wù)負(fù)載值。當(dāng)負(fù)載均衡模塊分發(fā)任務(wù)給某臺(tái)服務(wù)器時(shí),應(yīng)該相應(yīng)增加該服務(wù)器的業(yè)務(wù)負(fù)載值。當(dāng)負(fù)載均衡模塊收到服務(wù)器處理完任務(wù)的通知后,應(yīng)該相應(yīng)減少該服務(wù)器的業(yè)務(wù)負(fù)載值[15]。任務(wù)本身可以帶權(quán)重值,這樣使得業(yè)務(wù)負(fù)載計(jì)算得更加準(zhǔn)確。
(3)負(fù)載均衡模塊收到任務(wù)請(qǐng)求后,應(yīng)該遍歷每一臺(tái)服務(wù)器并檢查其負(fù)載值,從中選擇一個(gè)業(yè)務(wù)負(fù)載最小的服務(wù)器執(zhí)行任務(wù)。
(4)負(fù)載均衡模塊本身應(yīng)具備較強(qiáng)的健壯性,例如可以增加崩潰后自動(dòng)重啟功能等,保證該模塊7×24 h不間斷運(yùn)行。
通過(guò)負(fù)載均衡模塊就可以做到服務(wù)器節(jié)點(diǎn)的橫向擴(kuò)展。
私有云總是以數(shù)據(jù)處理為中心,現(xiàn)階段主要以提高數(shù)據(jù)處理能力和存儲(chǔ)能力為主,建設(shè)具有橫向擴(kuò)展能力的數(shù)據(jù)庫(kù)服務(wù)器集群,并且不斷提高自動(dòng)化管理能力,降低管理成本,同時(shí)注意加強(qiáng)數(shù)據(jù)的安全性和系統(tǒng)的可靠性。
近年來(lái),隨著云計(jì)算規(guī)模不斷擴(kuò)大,為了解決對(duì)海量數(shù)據(jù)進(jìn)行高效處理的迫切需求,Hadoop以及一批開源的NoSQL數(shù)據(jù)庫(kù)系統(tǒng)異軍突起。
Hadoop 是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。它是以一種可靠、高效、可伸縮的方式進(jìn)行處理的。Hadoop 有許多元素構(gòu)成。其最底部是 Hadoop Distributed File System(HDFS),它存儲(chǔ) Hadoop 集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS(對(duì)于本文)的上一層是 MapReduce 引擎。MapReduce 主要是對(duì)具有鍵值對(duì)數(shù)據(jù)特征的數(shù)據(jù)建立鍵值對(duì)映射關(guān)系并簡(jiǎn)化映射關(guān)系,MapReduce能夠并行計(jì)算,充分利用集群內(nèi)的CPU節(jié)點(diǎn)計(jì)算能力。MapReduce 對(duì)于網(wǎng)頁(yè)關(guān)鍵字索引、日志分析、結(jié)構(gòu)化數(shù)據(jù)分析都非常有用[16]。
NoSQL即非關(guān)系型數(shù)據(jù)庫(kù),云計(jì)算要求數(shù)據(jù)處理系統(tǒng)在海量數(shù)據(jù)存儲(chǔ)條件下還需要高性能的讀寫,關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿足這樣的需求了。例如,在擁有上億條記錄甚至數(shù)十億條記錄的數(shù)據(jù)表里進(jìn)行SQL查詢,其性能之差是無(wú)法忍受的,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)是用分表分區(qū)的方法來(lái)解決大數(shù)據(jù)表的查詢讀寫問題,但是還是會(huì)出現(xiàn)針對(duì)整個(gè)數(shù)據(jù)表并且跨分區(qū)的統(tǒng)計(jì)查詢。
NoSQL就是為了解決這些問題而孕育產(chǎn)生的。
NoSQL的設(shè)計(jì)目標(biāo)就是最大限度利用系統(tǒng)IO和系統(tǒng)內(nèi)存,高性能處理海量數(shù)據(jù)。
NoSQL一般不支持事務(wù)處理,這極大提高了數(shù)據(jù)寫入的性能。
NoSQL不支持多表連接查詢,查詢只針對(duì)單表,極大提高了讀取速度。
NoSQL一般都原生支持?jǐn)?shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的橫向擴(kuò)展。例如MongoDB的Auto Sharding功能會(huì)將數(shù)據(jù)分割、分片存儲(chǔ)到不同的機(jī)器上,并且這一過(guò)程在服務(wù)器內(nèi)部自動(dòng)完成,客戶端感覺不到這個(gè)過(guò)程[17]。
NoSQL充分利用內(nèi)存做緩存,從而實(shí)現(xiàn)了超高性能的數(shù)據(jù)讀寫。例如Redis,它會(huì)把所有的數(shù)據(jù)全部加載到內(nèi)存里。
目前,國(guó)內(nèi)應(yīng)用比較廣泛的NoSQL產(chǎn)品有:MongoDB、Redis,還有谷歌的HBase。
NoSQL的數(shù)據(jù)存儲(chǔ)主要分為兩種,第一種是Key-Value鍵值對(duì),例如 Redis、Memcached等系統(tǒng);第二種是面向文檔的數(shù)據(jù)庫(kù),如MongoDB。
以MongoDB為例,保存的數(shù)據(jù)為json格式[18],數(shù)據(jù)的增刪改很方便,但是無(wú)法做數(shù)據(jù)集合之間的關(guān)聯(lián)查詢,所以在MongoDB中建表的話,要建立很多冗余字段,這對(duì)于HIS系統(tǒng)有些不方便,因?yàn)镠IS系統(tǒng)中的數(shù)據(jù)有大量的關(guān)聯(lián)特性。
目前在醫(yī)療行業(yè),用NoSQL的還比較少,主要是因?yàn)橹髁鞒墒煜到y(tǒng)都是建立在關(guān)系數(shù)據(jù)庫(kù)之上,其次,醫(yī)療信息系統(tǒng)比較復(fù)雜,數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)性比較高,目前NoSQL提供的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)過(guò)于簡(jiǎn)單。NoSQL本身也需要進(jìn)一步成熟和完善。
我們有理由相信,隨著NoSQL的不斷發(fā)展成熟,NoSQL憑借自身優(yōu)良特性一定會(huì)應(yīng)用到醫(yī)療信息系統(tǒng)私有云中。
本文對(duì)云計(jì)算興起的背景進(jìn)行了簡(jiǎn)單介紹,提出了大型醫(yī)院或醫(yī)院管理集團(tuán)應(yīng)建設(shè)自己的私有云計(jì)算中心。
結(jié)合現(xiàn)有HIS的實(shí)際情況,醫(yī)院私有云建設(shè)的核心應(yīng)該是改造現(xiàn)有的信息系統(tǒng),尤其是后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng),使數(shù)據(jù)庫(kù)服務(wù)器能做到橫向擴(kuò)展,即增加較廉價(jià)的服務(wù)器節(jié)點(diǎn)以不斷提高整個(gè)系統(tǒng)的數(shù)據(jù)處理能力和數(shù)據(jù)存儲(chǔ)能力。
本方案首先對(duì)數(shù)據(jù)庫(kù)功能角色進(jìn)行分類,不同角色的數(shù)據(jù)庫(kù)服務(wù)器通過(guò)數(shù)據(jù)復(fù)制功能廣播和分發(fā)數(shù)據(jù),原始數(shù)據(jù)服務(wù)器將原始數(shù)據(jù)復(fù)制給熱點(diǎn)數(shù)據(jù)服務(wù)器,熱點(diǎn)數(shù)據(jù)服務(wù)器復(fù)制給歷史數(shù)據(jù)服務(wù)器。
方案中需要開發(fā)一個(gè)數(shù)據(jù)庫(kù)集群管理模塊DCMM來(lái)對(duì)數(shù)據(jù)庫(kù)服務(wù)器集群進(jìn)行管理,DCMM對(duì)客戶端數(shù)據(jù)請(qǐng)求分類后,分發(fā)給不同角色的數(shù)據(jù)庫(kù)服務(wù)器,如果相同角色的服務(wù)器有多臺(tái),還需要做負(fù)載均衡來(lái)分擔(dān)工作負(fù)載。
最后,本文對(duì)私有云的發(fā)展做了展望,NoSQL今后很可能會(huì)在醫(yī)院私有云中得到廣泛地應(yīng)用。
本文方案所介紹的私有云實(shí)現(xiàn)方法,足以應(yīng)對(duì)國(guó)內(nèi)目前任何大型醫(yī)院的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理需求。
[1] 吳朱華.云計(jì)算核心技術(shù)剖析[M].北京:人民郵電出版社,2011.
[2] 尚可.私有云:不需新購(gòu)硬件[J].軟件和信息服務(wù),2011,(12):76-77.
[3] 網(wǎng)界.公有云VS私有云到底誰(shuí)更安全?[J].中國(guó)數(shù)字電視,2011,(12):70-71.
[4] 雷萬(wàn)云.云計(jì)算:企業(yè)信息化建設(shè)策略與實(shí)踐[M].北京:清華大學(xué)出版社,2010.
[5] 姚青嶺.區(qū)域醫(yī)療云計(jì)算服務(wù)中心模型[J].中國(guó)醫(yī)療設(shè)備,2011,(12):49-51.
[6] 劉娟.簡(jiǎn)述三種私有數(shù)據(jù)庫(kù)云模型[J].信息安全與技術(shù),2011,(12):50-51..
[7] Tim Mather, Subra Kumaraswamy, Shahed Latif. Cloud security and privacy: an enterprise perspective on risks and compliance中文版[M].劉戈舟,楊澤明,劉寶旭,譯.北京:機(jī)械工業(yè)出版社,2011.
[8] 李知杰,趙健飛.云計(jì)算數(shù)據(jù)中心網(wǎng)絡(luò)安全的實(shí)現(xiàn)原理[J].軟件導(dǎo)刊,2011,(12):35-36.
[9] 尹雪蓉,尹今揚(yáng).云計(jì)算模式的醫(yī)療信息管理平臺(tái)構(gòu)想[J].中國(guó)醫(yī)療設(shè)備,2012(6):74-76,129.
[10] 曾劭清.私有云是企業(yè)架構(gòu)的改變[J].中國(guó)信息化,2011,(21):66-67.
[11] 周游,劉鵬,楊盛祥,等.基于私有云的數(shù)據(jù)冗余技術(shù)研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2011,(1):16-19.
[12] 劉字.企業(yè)私有云平臺(tái)構(gòu)建技術(shù)研究[J].計(jì)算機(jī)時(shí)代,2011,(6):37-41.
[13] Brian Knight.Professional Microsoft SQL Server 2008 Administration中文版[M].騰靈靈,付勇,譯.北京:清華大學(xué)出版社,2010.
[14] 楊志豪,趙太銀,姚興苗,等.一種適應(yīng)數(shù)據(jù)與計(jì)算密集型任務(wù)的私有云系統(tǒng)實(shí)現(xiàn)研究[J].計(jì)算機(jī)應(yīng)用研究,2011,28(2):621-624.
[15] 李琦,朱慶華,華彥玲,等.私有云環(huán)境下的資源競(jìng)價(jià)機(jī)制研究[J].情報(bào)雜志,2011,(4):10-12.
[16] 孫福權(quán),張達(dá)偉,程勖,等.基于Hadoop企業(yè)私有云存儲(chǔ)平臺(tái)的構(gòu)建[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào):自然科學(xué)版,2011,30(6):13-16.
[17] Kristina Chodorow, Michael Dirolf. MongoDB: the definitive guide中文版[M].程顯峰,譯.北京:人民郵電出版社,2011.
[18] 楊磊.基于NoSQL數(shù)據(jù)庫(kù)的結(jié)構(gòu)化存儲(chǔ)設(shè)計(jì)與應(yīng)用[J].科技風(fēng),2011,(18):99-100.