李學斯,王 虹,吳 飛,林濟南
(解放軍第309醫(yī)院信息中心,北京 100091)
醫(yī)院HIS主服務器是醫(yī)院信息系統的核心,全天24小時接受來自全院數十甚至上百個系統的訪問,不僅服務器及網絡運行壓力巨大,安全性也面臨極大的考驗[1]。如何能夠在滿足醫(yī)院各項業(yè)務需求的基礎上,緩解HIS主服壓力,提高其安全性是值得思考的一個問題[2-3]。經分析發(fā)現,有很大一部分程序,如科研、統計、核算甚至擺藥對于數據庫的訪問都局限在幾十個表的范圍內,且對于時效性的要求并不是很嚴格[4]。如果能夠將這些表在一定時間內備份到另外一臺服務器上,讓這些程序訪問備份服務器的數據,便可起到緩解主服壓力并提高其安全性的作用。
根據實際情況,備份方案主要有以下需求:
(1)保障數據的一致性和安全性。數據的一致性是指同步后的備服數據與主服保持完全一致;安全性指方案需保障主服和備服數據安全,這是方案能夠實施的前提。
(2)備份方案對主服性能影響最小。方案實施主要目的之一是減輕主服壓力,釋放主服性能使其更多地服務優(yōu)先級較高、實時性需求較強的系統,因此需保證備份過程中對主服務器影響較小。
(3)滿足一定的實時性。在準備連接至備份數據庫的系統中,部分系統對實時性要求較高,如藥房擺藥系統,要求在3分鐘內同步,并且可能在未來需求變化中進一步縮短時間,因此需要備份方案具有較強的時效性,并可靈活配置。在綜合各系統需求后,初期建設規(guī)定各表分別在1~10分鐘內完成數據同步。
(4)使用增量和可選擇的備份方式。數據庫備份主要有全量和增量2種,全量備份系統開銷大且難以滿足同步時間上的要求[5-6];可選擇備份是指對數據庫中的表可以進行選擇性備份,不以全庫或用戶作為限制。
(5)敏感數據過濾。部隊醫(yī)院的醫(yī)療數據中保存了大量的涉密信息和患者隱私,在供一些系統使用時需屏蔽這些敏感信息,備份過程中可選擇性對敏感數據進行過濾,例如將數據中涉及軍人信息的字段刪除或替換,便可直接供給統計和分析系統使用,甚至進一步交換到外網供遠程醫(yī)療系統使用。過濾后的信息既擴大了數據的可訪問范圍,又進一步提高了數據的安全性。
常規(guī)Oracle數據庫的備份方式主要有:Exp和Imp命令導出導入、冷備份和熱備份等[7-9]。適合使用Exp和Imp命令進行備份的場景主要是數據庫的遷移、歷史數據歸檔、重新組織表、轉移數據給其它數據庫等,多是粗粒度操作,執(zhí)行時間較長;冷備份需要停止源數據庫;熱備份雖然可以在數據庫運行時進行,但對硬件要求較高,且操作復雜,容易出錯,一旦出錯后果嚴重。因此,以上幾種常用方法均不滿足本系統需求,需要一種針對數據庫部分表的實時增量備份,要求細粒度、可配置,可在短時間內連續(xù)執(zhí)行,且對主服性能影響較小。
在常規(guī)的備份方式無法實現的情況下,將目標轉向Oracle的觸發(fā)器和物化視圖。由于大量的觸發(fā)器會嚴重影響主服性能,因此將其排除。物化視圖是遠程數據的本地副本,本身是用于預先計算并保存表連接或聚集等耗時較多的操作結果,在執(zhí)行查詢時,就可以避免進行這些耗時的操作,從而快速得到結果。當基表發(fā)生變化時,物化視圖也應當刷新[10]。
基于物化視圖的這種特性,針對需要備份的表在主服上建立其物化視圖日志,然后在備服上建立該表的物化視圖,建立任務定時以增量方式刷新物化視圖以使得備服數據與主服同步。
基于這種方式建立的同步備份方案能滿足本系統的所有需求,但需配置大量腳本和任務,實施和維護工作較為繁瑣,因此還需設計和開發(fā)相應的圖像操作界面。
服務器及數據庫配置等方面本文不再贅述,主要是建立物化視圖存儲表空間,備服配置保持與主服一致等。主服和備服互聯成功后,主要工作是建立物化視圖和配置刷新任務。建立物化視圖主要有Build Immediate和Build Deferred兩種模式。Build Immediate是指在物化視圖創(chuàng)建時同時生成數據,為默認值;Build Deferred是根據需要再生成數據。刷新指當基表發(fā)生了增刪改操作后,物化視圖何時采用哪種方式與基表進行同步。刷新的模式有2種:On Commit和On Demand。On Commit指物化視圖在對基表的增刪改操作提交的同時進行刷新;On Demand指物化視圖在用戶需要時進行刷新,可以使用dbms_mview.refresh等方法來進行,也可以將其布置到job中進行定時刷新,默認值為On Demand。刷新的方法有4種:Fast、Complete、Force 和 Never。Fast模式采用增量刷新,只刷新上次刷新以后進行的修改;Complete模式對整個物化視圖進行完全的刷新;Force模式為默認值,在刷新時會優(yōu)先考慮Fast模式,否則采用Complete的方式。Never指物化視圖不進行任何刷新[11-12]。
Build Immediate模式的物化視圖和On Commit的刷新方式對主服性能影響較大,根據本系統建設需要,使用Build Deferred模式來建立物化視圖,刷新方式為Fast On Demand,使用定時任務進行刷新工作。具體步驟如下:
(1)建立物化視圖日志。以醫(yī)囑表ORDERS為例,在主服務器上建立物化視圖日志,命令如下:
CREATE MATERIALIZED VIEW LOG ON ORDADM.ORDERSTABLESPACE TSP_TRANSFERDATA WITH ROWID;
這里表空間TSP_TRANSFERDATA是在配置數據庫時預先建立的,用于存儲所有的物化視圖日志。由于一旦物化視圖刷新任務停止,在恢復刷新前,主服務器的日志會不斷累積,因此預留了10G的空間用于存儲日志。刷新可使用行標識(Rowid)或主鍵(PrimaryKey),實際使用過程中發(fā)現部分表由于數據錯誤導致主鍵沖突而影響到刷新任務,這里選擇Rowid 進行刷新[11]。
(2)建立物化視圖和定時刷新任務。以Deferred模式在備用服務器上建立物化視圖,以醫(yī)囑表ORDERS為例,命令如下:
這里建立了On Demand模式的物化視圖,使用Fast模式進行刷新,設定為3分鐘刷新一次。
需要注意的是,在第一次部署時,需要選擇主服空閑時間將基表全部復制一份到備份數據庫,因此需全量刷新一次,執(zhí)行語句為:
(3)敏感數據過濾。敏感數據的過濾可在備用服務器上使用觸發(fā)器進行,也可以在刷新任務的腳本中設置,由于大量使用觸發(fā)器會影響性能,本文選擇在腳本中進行。例如,針對WAIT_BED_PATS表中的患者信息,如果身份不是地方或其他則可判斷為與軍人相關,那么將其身份信息替換為星號隱藏,由于腳本篇幅較長,只列出關鍵語句如下:
本系統建設主要是通過大量數據庫操作腳本來完成,給后期維護帶來一定困難,基于這個問題,筆者開發(fā)基于JSP和Tomcat的數據移植管理系統,主要功能有源數據庫狀態(tài)監(jiān)測和同步任務管理等,可以監(jiān)測待同步數據、已同步數據、腳本運行狀態(tài)、腳本信息等關鍵系統信息,大大簡化了系統的使用與維護。任務管理界面如圖1所示。
圖1 數據移植狀態(tài)管理系統
本系統在長期的使用過程中表現出了較好的穩(wěn)定性,只有在出現網絡故障等原因導致的備服與主服失去連接情況下,刷新任務才會停止,此時主服上的物化視圖日志會不斷增加,日志的數量可在上述數據移植狀態(tài)管理系統中看到,當連接重新建立后,只需及時在界面中將所有任務重啟即可保證刷新繼續(xù)進行。
由于本院HIS主服務器購置時間較長,性能富余量較少,本系統投入使用前,忙時易出現CPU和內存緊張等狀況,本系統投入使用后,所有統計、分析、科研相關應用系統均轉為從備份數據庫提取數據,在將部分表的同步時間縮短至1分鐘甚至30秒后,藥房擺藥等應用系統也改為連接備份數據庫,目前主服忙時連接數已經減少了15% ~20%,有效緩解了其原有的性能和網絡上的壓力。另外,經過敏感信息過濾的數據開放范圍進一步擴大,可完全避免科研項目提取數據出現泄密或侵犯患者隱私的狀況出現,得到了各臨床科室的認可。
本文基于實際需求,設計并實現一種基于物化視圖的Oracle增量備份方法,系統達到預期目的,效果明顯。該方案配置靈活,時效性強,不僅可以在醫(yī)院數據庫應用和管理中得到推廣,在其他類似數據庫應用領域也具有一定的參考價值。再此基礎上還可以針對物化視圖進行算法優(yōu)化,進一步提高特定應用的性能[13-14]。
[1]吉亞力,胡呈煒,張輝.HIS服務器及數據庫升級的實現[J].醫(yī)療衛(wèi)生裝備,2011,32(5):50-51.
[2]陳兆明.淺談數字化醫(yī)院信息系統的安全問題及對策[J].醫(yī)學信息,2011,24(6):2491.
[3]楊佳.醫(yī)院HIS系統中的數據備份與恢復技術研究[D].貴陽:貴州大學,2007.
[4]周忠彬.基于Oracle數據倉庫技術構建醫(yī)院統計資源庫[D].上海:第四軍醫(yī)大學,2004.
[5]黃衛(wèi)平.“軍字一號”工程中對Oracle數據庫的備份與恢復[J].醫(yī)療衛(wèi)生裝備,2004,25(1):58.
[6]楊永軍,徐江,舒逸,等.實時數據庫數據冗余備份方案的研究[J].計算機與現代化,2012(5):80-82.
[7]潘慶浩,樊志平.基于Oracle數據庫的數據備份方法的研究與探討[J].科技資訊,2007(31):117.
[8]王海亮.精通Oracle 10g備份與恢復[M].北京:中國水利水電出版社,2005.
[9]Li Q,Xu H.Research on the backup mechanism of Oracle database[C]//International Conference on Environmental Science and Information Application Technology.2009:423-426.
[10]Katsifodimos A,Manolescu I,Vassalos V.Materialized view selection for XQuery workloads[C]//Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data.2012:565-576.
[11]趙建平,周錦標,何劍偉,等.一種面向物化視圖的遠程增量維護系統[J].兵工自動化,2013,32(5):91-94.
[12]王楠,劉彩紅,陳秋菊.基于物化視圖的查詢重寫系統設計與實現[J].現代電子技術,2012,35(16):24-26.
[13]Theodoratos D,Xu W,Simitsis A.Materialized view selection for data warehouse design[C]//Encyclopedia of Data Warehousing and Mining.2009:1182-1187.
[14]王宜貴.基于遺傳算法的物化視圖優(yōu)化方法[J].計算機與現代化,2011(8):23-25.