李鵬, 湯志杰
(宜興市人民醫(yī)院 信息科, 江蘇 宜興 214200)
隨著醫(yī)療信息化的不斷發(fā)展,醫(yī)療數(shù)據(jù)的擴(kuò)展速度加快,覆蓋范圍不斷擴(kuò)大。大數(shù)據(jù)時(shí)代的到來為健康和醫(yī)療領(lǐng)域創(chuàng)造了新的機(jī)遇。大數(shù)據(jù)概念本身在醫(yī)療保健領(lǐng)域并不新鮮,醫(yī)療保健提供者在處理大量的醫(yī)療記錄,尤其是慢性病時(shí),不僅在質(zhì)量和細(xì)節(jié)上有所提高,而且由于技術(shù)進(jìn)步,其規(guī)模也在不斷增加[1]。通常醫(yī)療大數(shù)據(jù)主要來源包含醫(yī)學(xué)記錄、MRI、CT、健康監(jiān)測(cè)數(shù)據(jù)、基因組數(shù)據(jù)等。然而,醫(yī)學(xué)數(shù)據(jù)可能是不完整的,有偏見的,甚至充滿了噪聲[2-3]。模糊信息、重復(fù)、噪聲和超高維對(duì)醫(yī)學(xué)數(shù)據(jù)的進(jìn)一步利用將產(chǎn)生嚴(yán)重影響。
為了對(duì)數(shù)據(jù)進(jìn)行分析,需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理、數(shù)據(jù)建模、數(shù)據(jù)可視化和安全性等數(shù)據(jù)管理工作[4]。醫(yī)學(xué)大數(shù)據(jù)預(yù)處理、集成涉及數(shù)據(jù)ETL[5-6](Extract、Transform、Load,提取、轉(zhuǎn)換、加載)、多數(shù)據(jù)源集成、統(tǒng)一數(shù)據(jù)模型?;诂F(xiàn)有大數(shù)據(jù)平臺(tái)的典型算法和工具主要是為了使數(shù)據(jù)分析更加方便有效。同時(shí),面對(duì)復(fù)雜的醫(yī)學(xué)數(shù)據(jù)和日益增長(zhǎng)的醫(yī)療需求,對(duì)于這樣的大型存儲(chǔ)庫,如何以高效性能進(jìn)行數(shù)據(jù)分析、搜索和檢索已經(jīng)成為一個(gè)挑戰(zhàn)[7]。
數(shù)據(jù)索引一直是提高查詢執(zhí)行和數(shù)據(jù)搜索性能的有效機(jī)制。為此,國(guó)內(nèi)外學(xué)者進(jìn)行了許多深入研究,取得了眾多成果。楊輝等[8]基于自然語言處理技術(shù),實(shí)現(xiàn)醫(yī)療大數(shù)據(jù)平臺(tái)上病歷庫中的相似病歷檢索。王紅遷等[9]基于Hadoop的關(guān)鍵技術(shù)和海量的醫(yī)療數(shù)據(jù),開發(fā)實(shí)現(xiàn)跨數(shù)據(jù)域多條件關(guān)聯(lián)檢索的系統(tǒng),幫助醫(yī)生快速獲取有效信息。
然而,對(duì)于傳統(tǒng)數(shù)據(jù)集的索引技術(shù)在應(yīng)用于醫(yī)療大數(shù)據(jù)時(shí)表現(xiàn)不佳。因此,本文將著重研究醫(yī)療數(shù)據(jù)ETL管理、最小化索引開銷、提高查詢執(zhí)行和搜索性能以及在聚合計(jì)算資源利用率的同時(shí)滿足處理需求的醫(yī)療健康檔案管理系統(tǒng)。同時(shí)考慮索引創(chuàng)建時(shí)間和索引大小,以便在工作中最小化索引開銷。此外,為了評(píng)估查詢執(zhí)行和搜索性能,以仿真案例分析索引遍歷時(shí)間和數(shù)據(jù)檢索時(shí)間。
健康檔案管理系統(tǒng)是用于患者健康檔案管理及大數(shù)據(jù)索引的通用框架,可在任何分布式系統(tǒng)上實(shí)現(xiàn)。該系統(tǒng)作為用戶和分布式數(shù)據(jù)管理系統(tǒng)之間的中間層,可提供數(shù)據(jù)上傳、查詢執(zhí)行機(jī)制及提供索引以方便對(duì)數(shù)據(jù)的搜索操作。
系統(tǒng)體系架構(gòu)如圖1所示。
圖1 健康檔案管理系統(tǒng)體系架構(gòu)
共包括3層:(1) 用戶界面(UI)層;(2) 應(yīng)用層;(3) 數(shù)據(jù)層。用戶通過界面層發(fā)起數(shù)據(jù)上傳和索引創(chuàng)建操作,同時(shí)查詢和索引搜索的結(jié)果由應(yīng)用層返回至界面層供用戶瀏覽。應(yīng)用層接受來自界面層的數(shù)據(jù)上傳和索引指令,并調(diào)用數(shù)據(jù)塊創(chuàng)建在數(shù)據(jù)層存儲(chǔ)數(shù)據(jù),調(diào)用索引創(chuàng)建在數(shù)據(jù)倉庫中創(chuàng)建索引。應(yīng)用層還將查詢作為界面層的輸入,對(duì)存儲(chǔ)在文件系統(tǒng)中的數(shù)據(jù)調(diào)用索引搜索,并通過界面將所需的數(shù)據(jù)返回給用戶。數(shù)據(jù)層負(fù)責(zé)在可用存儲(chǔ)上容納數(shù)據(jù)塊和指定的副本確保數(shù)據(jù)安全。
根據(jù)系統(tǒng)架構(gòu)圖可知,健康檔案管理系統(tǒng)可分解為四個(gè)模塊:ETL、數(shù)據(jù)塊創(chuàng)建、索引創(chuàng)建和查詢。ETL模塊將從多個(gè)來源(如慢性病和健康監(jiān)測(cè)數(shù)據(jù)源)提取數(shù)據(jù),并對(duì)其進(jìn)行清理、定制和插入到數(shù)據(jù)倉庫中;第二個(gè)模塊用于創(chuàng)建數(shù)據(jù)塊,從而提高存儲(chǔ)及檢索的效率;索引創(chuàng)建模塊利用B行樹結(jié)構(gòu)存儲(chǔ)從數(shù)據(jù)塊中提取的
ETL(Extract、Transform、Load)是醫(yī)療數(shù)據(jù)倉庫中常用的數(shù)據(jù)庫操作過程。ETL過程是數(shù)據(jù)倉庫的關(guān)鍵組成部分,因?yàn)椴徽_或誤導(dǎo)性的數(shù)據(jù)將可能產(chǎn)生錯(cuò)誤的醫(yī)療決策。執(zhí)行任務(wù)所依據(jù)的數(shù)據(jù)通常來自不同的來源,例如組織內(nèi)各部門的多個(gè)可操作慢性病和健康監(jiān)測(cè)數(shù)據(jù)庫,以及外部供應(yīng)商。不同的源包含不同質(zhì)量的數(shù)據(jù),并且使用不一致的表示、代碼和格式。
現(xiàn)代大數(shù)據(jù)處理系統(tǒng)為大數(shù)據(jù)提供了分布式存儲(chǔ),數(shù)據(jù)可靠性通過數(shù)據(jù)復(fù)制得到加強(qiáng)。此外,每個(gè)大數(shù)據(jù)存儲(chǔ)系統(tǒng)都有自己的數(shù)據(jù)分割機(jī)制,其中數(shù)據(jù)塊大小和在數(shù)據(jù)倉庫中的位置是確定的。當(dāng)將數(shù)據(jù)拆分為固定大小的數(shù)據(jù)塊時(shí),最后一條記錄將面臨中斷威脅從而造成數(shù)據(jù)損壞。因此,訪問多個(gè)站點(diǎn)以檢索損壞記錄會(huì)增加總體數(shù)據(jù)加載時(shí)間。因此,為了減少訪問結(jié)果記錄所需的時(shí)間,每個(gè)記錄都應(yīng)該作為一個(gè)整體從單個(gè)站點(diǎn)訪問。也就是說,引入數(shù)據(jù)塊的模式使得每個(gè)塊中的最后一個(gè)記錄永遠(yuǎn)不會(huì)被分割。
在數(shù)據(jù)塊創(chuàng)建階段,記錄被讀取并存儲(chǔ)在塊中,直到塊達(dá)到其存儲(chǔ)限制。本文提供的塊大小可根據(jù)數(shù)據(jù)中的正常記錄大小或ETL系統(tǒng)的默認(rèn)塊大小進(jìn)行調(diào)整。假設(shè)數(shù)據(jù)集表示為D,包含x條記錄,則有式(1)。
(1)
其中,recordc表示第c條記錄。進(jìn)一步,算法1給出了數(shù)據(jù)塊的創(chuàng)建過程。在分布式數(shù)據(jù)系統(tǒng)中,數(shù)據(jù)塊的創(chuàng)建發(fā)生在數(shù)據(jù)上傳之前,并將數(shù)據(jù)分成更小的塊。然后將每個(gè)塊以可調(diào)的復(fù)制因子加載到數(shù)據(jù)倉庫中。
算法1 創(chuàng)建數(shù)據(jù)塊輸入:block_l=D_s,即數(shù)據(jù)塊容量限額為D_s;flag_c=true,即數(shù)據(jù)塊容量是否滿額標(biāo)識(shí)符;block_n=0,表示初始化數(shù)據(jù)塊個(gè)數(shù);while讀取數(shù)據(jù) do If flag_c=true and block_l 索引創(chuàng)建過程在數(shù)據(jù)加載到數(shù)據(jù)倉庫后進(jìn)行,創(chuàng)建索引可以縮短數(shù)據(jù)檢索時(shí)間。此外,還需要減少索引創(chuàng)建所帶來的開銷,這樣不僅可以最小化數(shù)據(jù)上傳到開始執(zhí)行查詢之間的延遲,而且還可以減少索引所消耗的額外空間。索引創(chuàng)建過程通過使用B-Tree結(jié)構(gòu)進(jìn)行索引來減少空間和時(shí)間開銷。在索引創(chuàng)建階段,將每個(gè)索引屬性記錄的內(nèi)容作為鍵,將該記錄的位置作為值。索引的創(chuàng)建過程如算法2所示。 如前所述,索引在大數(shù)據(jù)處理中起著重要作用,它會(huì)導(dǎo)致系統(tǒng)開銷增大。因此,從索引中獲得的搜索性能必須大于索引創(chuàng)建過程所造成的開銷。本節(jié)將展示系統(tǒng)查詢執(zhí)行模塊。查詢執(zhí)行模塊執(zhí)行索引搜索并成功檢索索引和非索引屬性。數(shù)據(jù)塊的容錯(cuò)性和可用性取決于底層數(shù)據(jù)層。因此,只要存儲(chǔ)的數(shù)據(jù)塊和索引可以從底層數(shù)據(jù)倉庫中訪問,系統(tǒng)的查詢執(zhí)行模塊就會(huì)成功執(zhí)行。此外,使用該模塊完成查詢執(zhí)行和數(shù)據(jù)檢索過程,取決于查詢中謂詞的選擇。查詢執(zhí)行模塊不為將非索引屬性作為選擇謂詞的查詢提供服務(wù)。 使用索引執(zhí)行查詢的過程如算法3所示。 算法3 執(zhí)行查詢輸入:錯(cuò)誤信息err_msg;查詢query;索引index;目標(biāo)名稱name;目標(biāo)屬性attr;數(shù)據(jù)塊位置block_loc;B-Tree 首先,分析傳入查詢以驗(yàn)證其語法并驗(yàn)證查詢中指定的參數(shù)。在顯示相應(yīng)的錯(cuò)誤消息后,系統(tǒng)將丟棄具有鍵入錯(cuò)誤、語法錯(cuò)誤或與文件系統(tǒng)中的任何文件不匹配的查詢。通過對(duì)查詢字符串的成功分析,我們可以確保查詢索引的可用性(只有當(dāng)索引對(duì)查詢的選擇謂詞不可用時(shí),才建議執(zhí)行完全掃描操作)。我們加載并遍歷相應(yīng)的索引以查找記錄的位置。最后,通過直接訪問期望記錄的位置從文件中提取數(shù)據(jù)。下一節(jié)將給出顯示搜索操作性能的結(jié)果。 為驗(yàn)證本文所提架構(gòu)性能,接下來以一個(gè)案例進(jìn)行仿真分析。本文提出的所有模塊和相關(guān)算法開發(fā)環(huán)境為Ubuntu系統(tǒng)下使用Python開發(fā),評(píng)估監(jiān)控管理系統(tǒng)時(shí)系統(tǒng)數(shù)據(jù)集如表1所示。 表1 系統(tǒng)數(shù)據(jù)集 系統(tǒng)驗(yàn)證時(shí)的數(shù)據(jù)集包括醫(yī)學(xué)記錄數(shù)據(jù)、MRI數(shù)據(jù)、CT數(shù)據(jù)、健康監(jiān)測(cè)數(shù)據(jù)及基因組數(shù)據(jù)。這些數(shù)據(jù)集大小不等、格式各異并包含不同數(shù)量的信息。數(shù)據(jù)集的這些特性會(huì)影響數(shù)據(jù)加載開銷、索引開銷和最終的搜索性能。 進(jìn)一步,將本文所提檢索算法與啟發(fā)式搜索檢索結(jié)果進(jìn)行比較。不同算法實(shí)現(xiàn)數(shù)據(jù)分類、檢索算法的效率對(duì)比結(jié)果,如圖2所示。 圖2 不同算法數(shù)據(jù)分類、檢索效率對(duì)比結(jié)果 由圖2可知,當(dāng)數(shù)據(jù)量較少時(shí),兩種算法性能相差無幾。但隨著數(shù)據(jù)量不斷增多,本文方法檢索效率不斷提高,并且遠(yuǎn)高于啟發(fā)式算法。特別是當(dāng)索引文件數(shù)量較多時(shí),啟發(fā)式算法的檢索率越來越低,不堪重負(fù)。故本文方法更適合于海量數(shù)據(jù)的檢索工作。 本文對(duì)醫(yī)學(xué)數(shù)據(jù)預(yù)處理、數(shù)據(jù)建模、安全性、數(shù)據(jù)檢索等進(jìn)行了研究,提出了具有數(shù)據(jù)管理及高效檢索的健康檔案管理系統(tǒng)。該系統(tǒng)提供了在數(shù)據(jù)集上創(chuàng)建多個(gè)索引的功能,索引開銷最小,創(chuàng)建和遍歷方面足夠快,占用的空間更少,從而提高了數(shù)據(jù)管理及搜索性能。 本文在系統(tǒng)建立及模型驗(yàn)證時(shí)運(yùn)行在較理想環(huán)境,假定模型不會(huì)遭受如惡意攻擊、信息篡改等情況。未來研究的方向可包括用戶隱私保護(hù)、數(shù)據(jù)安全分析及解決時(shí)延、干擾等通信問題。2.3 索引創(chuàng)建
2.4 執(zhí)行查詢
3 仿真分析
4 總結(jié)