朱承璋,劉梓汐,李文靜,肖亞龍,王晗
(1.中南大學計算機學院;2.中南大學文學與新聞傳播學院;3.移動醫療教育部—中國移動聯合實驗室湖南長沙 410083;4.湖南省人民醫院(湖南師范大學第一附屬醫院)湖南長沙 410005)
近年來,隨著信息技術飛速發展,醫療與醫學研究領域正步入大數據時代,醫療數據的日增長量達到了TB級別。海量的醫療數據蘊含著巨大的價值,構建醫療數據存儲平臺,實現數據的統一存儲與檢索,有利于不同醫療機構之間共享數據。并且,在平臺上增設數據分析服務功能,有利于推動輔助診療和疾病預測技術的發展。
醫療數據屬于大數據,具有數據來源復雜、結構多樣、規模巨大、增長迅速、多模態性等特點。其中,多模態性包括二維數據、圖像、視頻、文本文檔等。然而,在當前醫療服務業務中,獲取數據的實時性、存儲設備的可靠性及數據分析的準確性仍是亟待解決的三大問題。
傳統關系型數據庫無法存儲非結構化數據且受到單機性能限制,無法滿足數據存儲的需求。而分布式技術以其低成本、高可靠、大容量等優點在存儲領域得到廣泛應用,為存儲海量醫療數據提供了新思路。該技術通過連接多臺普通設備,分布式存儲、管理和處理海量數據,并支持存儲非結構化數據。因此,醫療大數據通常存儲在分布式文件系統或非關系型(Not Only SQL,NoSQL)數據庫中,通過分布式并行計算模型提高系統數據分析的能力,以進一步優化存儲系統的查詢性能。
據統計,國內外分布式醫療數據存儲系統的研究成果較多,但相關綜述文章較少。文獻[8]分析了不同NoSQL數據庫的特點與適用的醫療存儲場景,但并未總結基于分布式系統的醫療存儲研究現狀。本文通過分析醫療大數據的特點和存儲需求,回顧醫療數據存儲系統的發展歷程,梳理基于分布式技術的醫療數據存儲方案,并展望未來的研究方向,旨在探索醫療大數據存儲系統的創新發展前景。
目前,國內成熟的醫院系統建設主要包括HIS(醫院信息系統)、EMRS(電子病歷系統)、RIS(放射科信息管理系統)和PACS(影像歸檔和通信系統)。院內醫療存儲系統建設示意圖如圖1所示。傳統醫療數據存儲系統底層多使用關系型數據庫,例如MySQL和SQL Server。該數據庫通過關系模型組織數據,將每條記錄數據以行的形式存儲在二維表中,但關系型數據庫需要滿足預先定義的關系模式,并且每條記錄都具有固定的數據長度。由于院內系統僅針對醫院單一業務或單一數據類型,存儲和管理的數據量相對較小,因此關系型數據庫即可滿足需求。

Fig.1 Schematic diagram of medical institution storagesy stem construction圖1 醫療機構存儲系統建設示意圖
隨著網絡和信息技術不斷發展,醫療數據規模越來越大、復雜性越來越高,導致使用關系型數據庫對于大規模醫療數據的存儲存在以下局限性:
(1)醫療數據中包含較多非結構化數據,然而關系型數據庫結構相對固定,無法適用于非結構化數據的存儲。
(2)關系型數據庫受單機存儲容量限制,無法適用于醫療大數據的存儲場景。雖然關系型數據庫支持分布式擴展,但由于分布式關系型數據庫分片規則復雜,安裝和維護成本較高。
(3)關系型數據庫可擴展性較差,難以實現不同醫療機構的數據共享。
(4)關系型數據庫的讀、寫必須經過SQL解析,在大規模數據上并發進行讀、寫的性能較弱。
(5)數據量太大會導致數據分析軟件難以有效、準確地分析數據。
綜上所述,傳統關系型數據庫已無法滿足大數據時代TB、PB級醫療數據的存儲需求。為此,接下來將討論基于分布式技術存儲醫療數據的解決方案。
數據存儲系統經過長期發展,已由單機存儲系統逐步演變為支持分布式擴展的存儲系統。隨后,關系型數據庫的分布式方案和原生支持分布式存儲的NoSQL數據庫也應運而生。本節分別介紹了Hadoop分布式存儲系統和NoSQL數據庫。
2.1.1 Hadoop分布式存儲系統
Apache Hadoop是一款主流支持海量數據存儲與處理的分布式系統,包括Hadoop File System(HDFS)、Map Reduce、Hadoop Data Base(HBase)等重要組件。其中,HDFS是Hadoop系統數據存儲和管理中心,具有高容錯性、高效寫入等特點。其集群包括Name Node和Data Node兩大組成部分,Name Node負責管理文件系統的元數據和Data Node節點,Data Node是文件系統的實際工作節點,負責存儲和檢索數據,并定期將存儲的塊信息發送給Name Node。HDFS架構圖如圖2所示。

Fig.2 Architect urediagram of HDFS圖2 HDFS架構圖
Map Reduce是一種處理和生成大規模數據集的模型,該模型以一種可靠性高、容錯性強的方式實現海量數據集的并行處理。Map Reduce在處理大數據集時,將任務分解給多個Hadoop運行節點處理,提高了集群處理海量數據的能力。

Fig.3 Structure diagram of HBase圖3 HBase結構圖
對于有隨機讀取需求的應用請求,將數據存儲于HBase中。HBase是一款面向列的非關系型數據庫,其底層數據存儲在HDFS中,可保證數據的可靠性,將其與Map Reduce集成可確保在分析海量數據時系統的高效性。如圖3所示,HBase由HMaster、HRegion Server、HRegion和Zoo keeper組件構成。其中,HMaster是HBase集群的主控服務器,負責為HRegion分配HRegion Server;HRegion Server負責為客戶端提供數據寫入、刪除、查找服務;HRegion是按行鍵劃分的子表,是HBase中存儲和處理的最小單位;Zoo Keeper為HBase集群提供應用協調服務,檢測并淘汰失效的Master,選舉新的活躍狀態的Master。
2.1.2 No SQL數據庫
NoSQL數據庫存儲的數據不受固定結構限制,數據組織簡單,可擴展性好,適合存儲海量數據。該數據庫可分為列式數據庫、文檔數據庫和鍵值數據庫等。其中,以MongoDB為代表的文檔數據庫支持存儲多種結構數據,并且具有強大的查詢功能、索引能力,適用于讀、取操作頻繁的海量數據應用場景。
國內外專家針對醫療數據存儲系統的業務需求和Hadoop系統的局限性,進行了大量的研究和改進。通過對現有文獻的研究,可將基于Hadoop的醫療數據存儲系統的改進方法歸納為以下幾點:
(1)提升系統性能。HDFS使用數據塊作為數據讀寫單位,將元數據保存在Name Node的內存中,但由于醫療數據中包含大量的檢驗數據、影像數據等小文件會占用大量的內存資源,使得系統處理效率降低。此外,Hadoop副本存儲策略使得讀、寫操作頻繁的節點容易達到負載閾值,多次觸發系統的負載均衡操作。因此,通過優化小文件處理策略,改進Hadoop的副本選擇策略,可實現基于Hadoop的醫療數據存儲系統的性能優化。
(2)優化查詢性能。Hadoop分布式系統具有成本低、擴展性強、可靠性高等優點,適用于存儲時效性較差的醫療數據,但無法滿足實時存儲需求。HDFS旨在以高延遲為代價實現高吞吐,不適合低延遲讀取請求,但醫療數據讀、取操作較多,響應時間過長會影響用戶體驗,可通過構建索引優化醫療數據存儲系統的查詢性能。
(3)數據分析。如何結合Map Reduce、Spark等大數據分析技術對數據集進行并行處理,是分析數據價值的關鍵。
目前已有大量基于改進Hadoop存儲系統的醫療數據存儲解決方案,在系統存儲性能優化、高效檢索和數據分析等方面均取得了較好的研究成果。具體概括如表1所示。

Table1 Medical data storages cheme based on improved Hadoop表1 基于改進Hadoop的醫療數據存儲方案

續表
MongoDB文檔數據庫是一種重要的NoSQL數據庫,支持存儲多種數據類型。根據醫療數據存儲格式,可將其分為文檔數據、二進制小文件和二進制大文件三大類。MongoDB支持文檔數據的轉換和存儲,并能夠直接存儲二進制小文件。對于二進制大文件,MongoDB的GridFS機制可對其進行切分和存儲。MongoDB存儲醫療數據的示意圖如圖4所示。

Fig.4 MongoD B-based medical data storage architecture圖4 基于MongoDB的醫療數據存儲架構
如今,已有多名研究者使用MongoDB數據庫存儲醫療數據。例如,李偉等使用MongoDB存儲數據的流程如下:①根據疾病類型建立疾病數據庫;②根據患者ID創建集合,存儲患者的小文件和文檔數據,并將患者的大文件數據存儲在與該集合同名的GridFS分區下;③將文件的描述信息以文檔形式插入集合中。此外,Ricardo等分別使用MySQL和MongoDB數據庫存儲電子健康記錄,實驗發現MongoDB的吞吐量和查詢時間都優于MySQL,證明MongoDB數據庫更適合存儲醫療信息和查詢數據。
Roshan等為了提升MongoDB的查詢性能,提出在數據處理階段創建和維護文檔或文件的元數據信息,以便在檢索數據時快速定位、高效檢索所需數據。Poly等提出了一種數據模型算法,該算法使用集合保存指定的查詢屬性,通過探索數據屬性的相關性、消除重復屬性、保存屬性序列等優化措施,使其滿足醫療數據查詢頻率和查詢多樣化的性能要求。Silva等提出了一種PACS歸檔方案,通過GridFS和多字段索引機制優化醫療影像歸檔的性能。Mr A等設計了一種查詢語言AQL,通過使用MongoDB的持久化子部分存儲和查詢電子健康記錄摘要,以提升系統的查詢性能。
綜上所述,通過建立文件描述信息庫、維護文件元數據信息、索引優化等方式均可提升基于MongoDB的醫療數據存儲系統的響應速度。
分布式技術可實現醫療數據的統一存儲與查詢,但目前研究仍然存在一些問題。例如,醫療數據中包含大量患者隱私信息,而目前的存儲方案均未考慮數據隱私保護。由于醫療數據的高敏感性,各機構通常使用中心化方式管理數據,然而該管理方式不夠透明,容易造成數據篡改、隱私泄露等問題。這些問題直接威脅著醫療領域的數據安全和用戶隱私,使各級機構間的數據難以實現相互共享,無法充分利用醫療數據的價值。
近年來,隨著區塊鏈技術的不斷發展,其已成為保障數據安全共享的有效手段,利用密碼學知識,可確保數據不被篡改、不可偽造和去中心化傳輸訪問的安全。然而,作為一項新興技術,區塊鏈對于分布式系統架構仍缺乏理論支持和高并發讀寫業務的實驗測試。未來可重點研究基于分布式架構的區塊鏈技術,實現基于隱私保護的分布式醫療大數據存儲模型。
為更好利用醫療信息資源作出科學決策,需要深入挖掘醫療數據的價值。當前醫療大數據分析技術都側重于統計分析和決策,尤其是基于MongoDB的醫療數據存儲系統,與數據分析相關的研究較少。知識圖譜在自然語言處理領域興起,已成為呈現數據知識的有效組織形式,使用該技術組織醫療數據有助于抽取醫療知識,實現醫療知識推理、遠程會診、推薦用藥、疾病預測等輔助診療服務。
大數據時代,醫療數據規模急劇擴大,數據呈現多模態特征。傳統關系型數據庫已無法保證海量數據的高效存儲與快速響應,為此分布式存儲技術為存儲海量醫療數據提供了新思路。基于Hadoop的醫療數據存儲系統在充分發揮HDFS、HBase和Map Reduce等組件優勢的基礎上,進一步優化了存儲和查詢性能,實現了集高吞吐、快速定位和高效分析于一體的“智慧醫療”存儲系統。基于MongoDB數據庫的醫療數據存儲系統可滿足多模態醫療數據統一存儲和快速響應需求,為后續的多模態數據分析和醫療數據挖掘提供了平臺支撐。面向隱私數據保護和醫療知識推理的分布式醫療數據存儲方案將可能成為未來的發展方向。