李海燕,王樹慶,胡廣勇
北京市醫(yī)療器械檢驗(yàn)所 (北京 101111)
我所在實(shí)驗(yàn)室信息管理系統(tǒng)(laboratory information management system,LIMS)的使用中遇到了業(yè)務(wù)數(shù)據(jù)計(jì)算瓶頸,本研究就該現(xiàn)象展開了細(xì)致的問題闡述和分析,通過具體案例從業(yè)務(wù)層面和數(shù)據(jù)庫技術(shù)層面提出了一系列業(yè)務(wù)數(shù)據(jù)的優(yōu)化方法,涉及實(shí)驗(yàn)室相關(guān)管理經(jīng)驗(yàn)和數(shù)據(jù)庫技術(shù)領(lǐng)域的前沿性研究,并指出了業(yè)務(wù)數(shù)據(jù)優(yōu)化工作的難點(diǎn)與重點(diǎn)。
我所是經(jīng)中國合格評定國家認(rèn)可委員會(CNAS)、中國國家認(rèn)證認(rèn)可監(jiān)督管理委員會(CNCA)、原國家食品藥品監(jiān)督管理總局(CFDA)等部門認(rèn)可授權(quán)的一所綜合性醫(yī)療器械產(chǎn)品檢測機(jī)構(gòu),同時(shí)也是原CFDA授權(quán)設(shè)置的10個(gè)國家級醫(yī)療器械質(zhì)量監(jiān)督檢驗(yàn)中心之一。目前,我所經(jīng)國家相關(guān)部門授權(quán)的檢驗(yàn)項(xiàng)目達(dá)1 294項(xiàng),檢驗(yàn)范圍涵蓋醫(yī)用電子、醫(yī)用射線、核醫(yī)學(xué)、電聲學(xué)、體外診斷系統(tǒng)、一次性醫(yī)療產(chǎn)品、醫(yī)用防護(hù)用品、醫(yī)用橡膠制品、口腔材料、生物安全柜、電磁兼容、生物相容性和體外循環(huán)及化妝品生物學(xué)評價(jià)等專業(yè)領(lǐng)域,承擔(dān)著全國和北京地區(qū)醫(yī)療器械產(chǎn)品監(jiān)督抽驗(yàn)檢驗(yàn)、注冊檢驗(yàn)、認(rèn)證檢驗(yàn)、進(jìn)出口商品檢驗(yàn)、委托檢驗(yàn)、仲裁檢驗(yàn)等檢測任務(wù)。我所先后獲得德國TüV、美國UL、加拿大CSA等國際權(quán)威認(rèn)證機(jī)構(gòu)的認(rèn)可,為國內(nèi)醫(yī)療器械產(chǎn)品走向國際市場提供了便捷的檢測技術(shù)服務(wù);先后建成國內(nèi)第一家10 m法醫(yī)療器械電磁兼容實(shí)驗(yàn)室、第一家具備生物安全柜檢驗(yàn)?zāi)芰Φ膶?shí)驗(yàn)室、第一家醫(yī)用防護(hù)產(chǎn)品檢驗(yàn)實(shí)驗(yàn)室、第一家經(jīng)CNAS認(rèn)可的血細(xì)胞參考測量實(shí)驗(yàn)室等一批具有國際先進(jìn)水平的實(shí)驗(yàn)室;先后獲得并加入“北京市重點(diǎn)實(shí)驗(yàn)室”“博士后科研工作站”“中關(guān)村開放實(shí)驗(yàn)室”及原“食藥總局高研院現(xiàn)場教學(xué)基地”“首都科技條件平臺”。
LIMS 是利用計(jì)算機(jī)網(wǎng)絡(luò)將實(shí)驗(yàn)室的實(shí)驗(yàn)儀器連接起來,根據(jù)實(shí)驗(yàn)室管理體系、計(jì)算機(jī)技術(shù)和質(zhì)量控制體系來建立的信息管理體系,其實(shí)現(xiàn)了檢驗(yàn)數(shù)據(jù)共享、量化考核等功能,從而提高了工作效率,降低了運(yùn)行成本,促進(jìn)了實(shí)驗(yàn)室的規(guī)范化管理,為提高實(shí)驗(yàn)室整體管理水平提供了先進(jìn)的技術(shù)支持。
我們根據(jù)多年的LIMS 使用和維護(hù)經(jīng)驗(yàn)總結(jié)了單位實(shí)驗(yàn)室信息化管理體系,從LIMS 用戶提出的眾多需求中提煉出新的業(yè)務(wù)需求,并進(jìn)行了全面系統(tǒng)的分析,依托BPM 中間平臺開發(fā)了北京市醫(yī)療器械檢驗(yàn)所LIMS(BPM_LIMS)。目前,BPM_LIMS 已經(jīng)平穩(wěn)運(yùn)行了6年,為單位的實(shí)驗(yàn)室管理提供了信息化支持,提高了工作人員的工作效率,在實(shí)驗(yàn)室日常管理中起著重要作用。
近期BPM_LIMS 部分功能經(jīng)常出現(xiàn)服務(wù)超時(shí)、無法響應(yīng)、直接報(bào)運(yùn)行錯(cuò)誤等異常情況,如終止費(fèi)用核算功能運(yùn)行超時(shí),無法正常使用,監(jiān)控Oracle 數(shù)據(jù)庫以及硬件服務(wù)器發(fā)現(xiàn),調(diào)用該功能模塊后,進(jìn)入頁面加載的期間,數(shù)據(jù)庫服務(wù)器的單個(gè)CPU 進(jìn)程資源占用率為100%,分析其原因?yàn)椋摴δ芙缑婕虞d中需要數(shù)據(jù)庫運(yùn)算復(fù)雜的SQL 語句,該SQL 語句執(zhí)行的計(jì)算量太大,導(dǎo)致單線程計(jì)算量超出了硬件CPU 的處理能力,因此導(dǎo)致報(bào)送服務(wù)超時(shí)的錯(cuò)誤,從而導(dǎo)致頁面加載失敗。
我們分析相關(guān)功能模塊,發(fā)現(xiàn)該模塊的功能設(shè)計(jì)和檢驗(yàn)過程管理、異常流程管理、費(fèi)用設(shè)置管理、費(fèi)用樹目錄等模塊耦合度非常高。該功能運(yùn)行時(shí),需要同時(shí)調(diào)用、判斷以上4個(gè)模塊的各種任務(wù)狀態(tài)、費(fèi)用狀態(tài)以及費(fèi)用目錄設(shè)置界面,在做最后確認(rèn)動作時(shí),還需要進(jìn)行批量操作、合作檢驗(yàn)狀態(tài)、主檢科室終止、輔檢科室任務(wù)狀態(tài)、輔檢科室是否終止、調(diào)用費(fèi)用設(shè)置、費(fèi)用設(shè)置邏輯判斷、發(fā)送通知等眾多條件判斷才能完成整個(gè)數(shù)據(jù)狀態(tài)更新錄入的操作。
我們通過功能梳理和邏輯條件分解,將頁面從原來的集成頁面拆分出來,縮短頁面加載時(shí)間,簡化判斷條件,優(yōu)化SQL 語句,解決頁面崩潰問題;通過和業(yè)務(wù)部門溝通,做頁面拆分、邏輯簡化處理,緩解了當(dāng)前的問題,但是并未徹底解決數(shù)據(jù)庫訪問壓力大的問題。
BPM_LIMS 數(shù)據(jù)庫的設(shè)計(jì)采用了傳統(tǒng)的關(guān)系型數(shù)據(jù)庫Oracle RAC 集群模式,可以實(shí)現(xiàn)負(fù)載均衡和熱備功能。RAC 集群最大的優(yōu)勢在于高可用性,通過使用RAC 可以在一定程度上避免因故障引起的數(shù)據(jù)丟失和非計(jì)劃停機(jī),并縮短或排除計(jì)劃停機(jī)時(shí)間,但RAC 并不是高性能的解決方案。Oracle 數(shù)據(jù)庫集群對ERP 類的管理系統(tǒng)存在負(fù)載受限的設(shè)計(jì)缺陷,即集群默認(rèn)主節(jié)點(diǎn)響應(yīng)數(shù)據(jù)服務(wù)請求,不會將服務(wù)請求按照實(shí)際業(yè)務(wù)量進(jìn)行負(fù)載均衡分散到各節(jié)點(diǎn)。BPM_LIMS 系統(tǒng)屬于ERP 系統(tǒng)類型,且我們的單個(gè)SQL 請求數(shù)據(jù)運(yùn)算量巨大。Oracle 數(shù)據(jù)庫對業(yè)務(wù)請求的最小顆粒劃分是以單個(gè)SQL 作為最小線程,無法再進(jìn)行任務(wù)拆分。綜合以上兩個(gè)方面的原因,我們目前的數(shù)據(jù)運(yùn)算量大的業(yè)務(wù)模塊存在數(shù)據(jù)計(jì)算量超出服務(wù)器CPU 單核處理能力的問題。
我們業(yè)務(wù)數(shù)據(jù)的特性是數(shù)據(jù)量每年呈增量上漲,每個(gè)頁面的查詢、操作都建立在大量數(shù)據(jù)檢索和條件判斷之上,其中,數(shù)據(jù)查詢、統(tǒng)計(jì)報(bào)表更需要在所有原始數(shù)據(jù)中進(jìn)行大量復(fù)雜計(jì)算。目前,我們的原始數(shù)據(jù)還沒有可以拆分的標(biāo)準(zhǔn)。由于不同維度對數(shù)據(jù)的篩選條件千差萬別,沒有一個(gè)可以統(tǒng)一分類或分解的指標(biāo),導(dǎo)致數(shù)據(jù)量越大,執(zhí)行速度越慢,這一直是LIMS 的數(shù)據(jù)設(shè)計(jì)痛點(diǎn),也是系統(tǒng)很多頁面反應(yīng)速度慢、執(zhí)行效率低的問題根源。我們需要做的是梳理業(yè)務(wù),分析業(yè)務(wù)數(shù)據(jù)類型,整理數(shù)據(jù)結(jié)構(gòu)模型,然后提出新的業(yè)務(wù)流程和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)模型,重構(gòu)業(yè)務(wù)模型和數(shù)據(jù)模型,才能從根本上解決問題。
首先,我們需要認(rèn)真分析業(yè)務(wù)邏輯復(fù)雜、數(shù)據(jù)交叉的功能模塊,從業(yè)務(wù)本身的流程規(guī)范和可操作性上進(jìn)行業(yè)務(wù)梳理,然后分析能否簡化業(yè)務(wù)流程,分離交叉數(shù)據(jù),從而避免復(fù)雜的邏輯判斷和數(shù)據(jù)計(jì)算。如合作任務(wù)的異常處理流程,其產(chǎn)生的業(yè)務(wù)背景是我們業(yè)務(wù)中經(jīng)常出現(xiàn)檢驗(yàn)樣品需要不同的檢驗(yàn)科室進(jìn)行檢驗(yàn),并出具相應(yīng)的檢測結(jié)果,形成一份合成的檢驗(yàn)報(bào)告。
在這種合作檢驗(yàn)的業(yè)務(wù)場景下,檢驗(yàn)任務(wù)受理、合同評審、任務(wù)分配、檢驗(yàn)、結(jié)果錄入、報(bào)告審核、報(bào)告簽發(fā)等業(yè)務(wù)流程主線的各個(gè)節(jié)點(diǎn)都需要與多科室進(jìn)行合作協(xié)調(diào);此外,樣品入庫、領(lǐng)取、回庫、退庫管理,多科室檢驗(yàn)費(fèi)用核算,異常流程處理的暫停、終止等細(xì)小的分支管理亦涉及合作協(xié)調(diào);然后就是以上各種業(yè)務(wù)場景的所有情況的排列組合;如此映射到BPM_LIMS 的業(yè)務(wù)流程中,就會是復(fù)雜的業(yè)務(wù)邏輯和數(shù)據(jù)交叉計(jì)算。如果我們的實(shí)際業(yè)務(wù)不能進(jìn)行管理層面的業(yè)務(wù)拆分,系統(tǒng)的業(yè)務(wù)流程就不可能出現(xiàn)邏輯簡化。
總之,要想簡化BPM_LIMS 的業(yè)務(wù)邏輯,就要從管理層面解決問題的源頭——業(yè)務(wù)管理模式,管理者和被管理者可能會對此種管理思維模式的轉(zhuǎn)變產(chǎn)生抵觸,此時(shí)需要高層管理者強(qiáng)有力的工作支持。
其次,業(yè)務(wù)管理模式改革確立后,根據(jù)新的業(yè)務(wù)流程,梳理業(yè)務(wù)需求,分析數(shù)據(jù)結(jié)構(gòu),構(gòu)建新的數(shù)據(jù)模型。數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲、組織數(shù)據(jù)的方式,是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或存儲效率[1]。
我們的業(yè)務(wù)場景最合適的數(shù)據(jù)庫類型是關(guān)系型數(shù)據(jù)庫。在設(shè)計(jì)開發(fā)過程中,開發(fā)人員通常要同時(shí)面對一個(gè)或多個(gè)數(shù)據(jù)實(shí)體進(jìn)行操作,一般單個(gè)數(shù)據(jù)實(shí)體首先要分割成多個(gè)部分,然后按照結(jié)構(gòu)化的方法再對分割的部分進(jìn)行規(guī)范化;規(guī)范化以后,每個(gè)數(shù)據(jù)表都必須定義好各個(gè)字段,再分別存入到多張數(shù)據(jù)表中。此過程較復(fù)雜,其優(yōu)點(diǎn)是整個(gè)數(shù)據(jù)表的可靠性和穩(wěn)定性都比較高,但一旦存入數(shù)據(jù)后,如果需要修改表結(jié)構(gòu)將會十分困難。
關(guān)系型數(shù)據(jù)庫有4個(gè)特性(ACID 規(guī)則):原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability),其中十分強(qiáng)調(diào)強(qiáng)一致性原則。數(shù)據(jù)按照最小關(guān)系表進(jìn)行存儲,數(shù)據(jù)管理一目了然,這是針對一張數(shù)據(jù)表的情況;如果是多張數(shù)據(jù)表,由于數(shù)據(jù)涉及多張數(shù)據(jù)表,數(shù)據(jù)表之間存在著復(fù)雜的關(guān)系,隨著數(shù)據(jù)表數(shù)量的增加,數(shù)據(jù)管理會越來越復(fù)雜。
數(shù)據(jù)操作的瓶頸出現(xiàn)在多張數(shù)據(jù)表的操作中,而且數(shù)據(jù)表越多此問題越嚴(yán)重。一旦面對海量數(shù)據(jù)的處理,效率將會變得很差,特別是遇到高并發(fā)的情況,性能將會下降的非常明顯[2]。想要緩解該問題,只能選擇CPU 處理速度更快、性能更好的計(jì)算機(jī),如此雖然可以拓展一些空間,但非常有限,即關(guān)系型數(shù)據(jù)庫只具備縱向擴(kuò)展能力。
最后,選擇合適的關(guān)系型數(shù)據(jù)庫以及數(shù)據(jù)庫集群的搭建模式,這也是我們今后引進(jìn)新平臺、重新開發(fā)BPM_LIMS 需要慎重考慮的難點(diǎn)。關(guān)系型數(shù)據(jù)庫常見的有Oracle、SQLServer、DB2、Mysql,除了Mysql,其余的關(guān)系型數(shù)據(jù)庫都需要支付費(fèi)用,個(gè)別數(shù)據(jù)庫價(jià)格高昂,我們無法承受。即使Mysql 是免費(fèi)的,但由于其開源的特性,其性能也受到了諸多的限制,并且缺乏強(qiáng)有力的技術(shù)支撐。目前,國產(chǎn)數(shù)據(jù)庫的性能以及穩(wěn)定性還有待提高。因此,關(guān)系型數(shù)據(jù)中我們可選擇的范圍很窄。
綜上所述,要想解決BPM_LIMS 的數(shù)據(jù)問題,我們的主要精力還需要集中在改善數(shù)據(jù)庫的SQL 性能、優(yōu)化系統(tǒng)的業(yè)務(wù)流程兩個(gè)方面。往往數(shù)據(jù)的優(yōu)化同高效的檢索算法和索引技術(shù)有關(guān),因此,高效的SQL 和算法同樣能給用戶帶來良好的數(shù)據(jù)庫體驗(yàn)。LIMS 的數(shù)據(jù)分析與優(yōu)化需要我們慢慢探索,通過更多的實(shí)際業(yè)務(wù)應(yīng)用場景來檢驗(yàn)每次優(yōu)化的成果是否最切合實(shí)際及最實(shí)用。