基于ODI的數(shù)據(jù)中心建設(shè)探索
醫(yī)院的信息化是一個無底洞,建設(shè)永無止盡,隨著醫(yī)院的發(fā)展,會在過程中采購很多不同廠家的系統(tǒng),比如基礎(chǔ)HIS,LIS,PACS,EMR,HRP等等系統(tǒng),這些系統(tǒng)也不可能完全由一個公司能夠提供完全,這就不可能避免的出現(xiàn)了一些信息孤島,信息不能有效的共享,數(shù)據(jù)標準不統(tǒng)一,一份完整的電子病歷需要從不同的系統(tǒng)中去抽取不同的數(shù)據(jù),這些難免給醫(yī)院信息管理帶來災(zāi)難,為此數(shù)據(jù)中心勢在必行。
1 數(shù)據(jù)中心的目的
1.1 規(guī)范數(shù)據(jù)
保證不同業(yè)務(wù)系統(tǒng)數(shù)據(jù)相對獨立的基礎(chǔ)上,建立數(shù)據(jù)交換和共享機制,通過對數(shù)據(jù)的加工、清洗、傳遞和交換,實現(xiàn)數(shù)據(jù)的標準化、一致化。建立過程中可以參考衛(wèi)生部相關(guān)數(shù)據(jù)集標準,同時標準規(guī)范化的數(shù)據(jù)也是進行區(qū)域交換所必須的。
1.2 信息共享
建立信息生命周期中各種分散資源的管理與協(xié)調(diào)中心,使分布在不同地域、科室的醫(yī)生、護士、醫(yī)技等人員都可以從這個中心出發(fā)開展工作。比如患者的全生命周期數(shù)據(jù),在所需要的各環(huán)節(jié)都是可以隨時從中心下載使用的。
1.3 輔助決策
通過統(tǒng)一的數(shù)據(jù)中心系統(tǒng)為企業(yè)領(lǐng)導(dǎo)實現(xiàn)規(guī)范、準確、及時的醫(yī)院運營管理提供基礎(chǔ)。避免直接從業(yè)務(wù)生產(chǎn)系統(tǒng)提取各種數(shù)據(jù)。
2 數(shù)據(jù)中心工具選擇
在業(yè)界有很多工具都是可以實現(xiàn)建立數(shù)據(jù)中心的目的的。包括各種ETL工具,以及Oracle的E-LT工具。2者的主要區(qū)別就在于是否需要ETL服務(wù)器,E-LT是不需要硬件服務(wù)器的,加載速度更快,這個工具就是當(dāng)前oracle主推的Oracle Data Integrator(ODI)。如下示意圖:
3 ODI的體系結(jié)構(gòu)
3.1 概述
下面先看一下ODI的體系結(jié)構(gòu),ODI通過建立資料庫管理各種配置信息。分為主資料存儲庫和工作區(qū)資料存儲庫,在首次登陸的時候需要創(chuàng)建在對應(yīng)的管理DB上,并通過ODI管理工具連接到工作區(qū)資料庫中進行各種配置操作,在對應(yīng)的資料存儲庫中分別存儲了如下的對象:
接口是建立在模型之上的,而模型建立在邏輯架構(gòu)的基礎(chǔ)上。通過選擇上下文,邏輯架構(gòu)和物理架構(gòu)關(guān)聯(lián)了起來。接口中還可以知名目標區(qū)域和臨時區(qū)域分離。
3.2 ODI存儲庫概念
主存儲庫:master repository ,保存top信息,具體位置可以在任何可以支持的數(shù)據(jù)庫里面。通過 Topology Management 可以訪問。
工作存儲庫:work repository保存工程信息,具體位置可以在任何支持的數(shù)據(jù)庫中。通過Designer 可以訪問
3.3 ODI Top概念
TOP信息保存在主存儲庫(master repository)中主要有如下信息:
技術(shù):各種數(shù)據(jù)庫類型對應(yīng)的技術(shù)體系。當(dāng)前ODI幾乎支持所有的數(shù)據(jù)庫,所以對于我們的整合是毫無問題的。
數(shù)據(jù)服務(wù)器:用來存儲數(shù)據(jù)的容器,比如Oracle 10g的實例 等,一般一個數(shù)據(jù)服務(wù)器對應(yīng)一項技術(shù)。簡單點說就是一個數(shù)據(jù)庫連接對象。
物理架構(gòu):physical schedule,數(shù)據(jù)服務(wù)器的一個子容器,或者說是一個子集。比如oracle的用戶。ODI對于不表數(shù)據(jù)庫的物理架構(gòu)一般會要求有兩個,一個是目標物理架構(gòu),即:架構(gòu),一個是工作區(qū)物理架構(gòu),即:工作架構(gòu)。并可以定義工作區(qū)中臨時表的前綴等信息。
邏輯架構(gòu): 和對應(yīng)的物理架構(gòu)有類似的數(shù)據(jù)結(jié)構(gòu)(但不進行任何數(shù)據(jù)定義)。
上下文:邏輯體架構(gòu)通過上下文和物理架構(gòu)關(guān)聯(lián),運行時通過選擇不同的上下文,可選擇不同的邏輯-物理對應(yīng)關(guān)系。
換句話說,由于我們的接口等組件的定義都是在邏輯架構(gòu)上的。因此,具有類似物理結(jié)構(gòu)的物理架構(gòu)可以通過上下文的關(guān)聯(lián),對應(yīng)上同一個邏輯架構(gòu),我們可以將數(shù)據(jù)結(jié)構(gòu)類似的物理結(jié)構(gòu)通過同一個接口實現(xiàn)數(shù)據(jù)抽取。
工作存儲區(qū):建立起到工作存儲區(qū)的連接。在登錄設(shè)計器時,通過選擇在這里定義好的工作存儲區(qū)可編輯項目、接口等信息。
3.4 ODI數(shù)據(jù)模型
數(shù)據(jù)模型:目標數(shù)據(jù)庫的表、視圖等結(jié)構(gòu)。包括字段,數(shù)據(jù)類型,約束等內(nèi)容。
反向:將物理數(shù)據(jù)庫中的數(shù)據(jù)模型“拷貝”出來。設(shè)計者可以使用物理數(shù)據(jù)庫結(jié)構(gòu)或者在此基礎(chǔ)上做任何修改。這是一個比較有用的功能,相當(dāng)于從數(shù)據(jù)庫中把定義反向到存儲模型上,我們可以先用腳步在數(shù)據(jù)庫中建立好,再反向到模型中,而不是在模型中一個一個的存儲來定義,反向的效率高得多。
3.5 工程
工程是ODI工作的基礎(chǔ)單位。所有的接口、過程、變量都保存在工程中。
文件夾:組織包、接口、過程的單位;
包:組織接口、過程、變量和其他組件,按照既定的流程運行的容器。
接口:ETL的主要步驟在這里完成,從數(shù)據(jù)源的抽取數(shù)據(jù),中間做轉(zhuǎn)換,創(chuàng)建臨時表和約束,加載數(shù)據(jù)等。所有的過程由選擇的KM來控制。
過程:可以輔助接口,針對特定技術(shù)做一些命令來操作數(shù)據(jù)庫,比如寫ETL日志,比如在目標數(shù)據(jù)庫中做數(shù)據(jù)轉(zhuǎn)換。類似于數(shù)據(jù)庫里面的過程。而且可以通過設(shè)置選項來控制命令執(zhí)行的流程。
變量:類似于程序語言中的變量??梢远x可選擇的類型并動態(tài)賦值。
函數(shù):沒有使用過。
知識模塊:oracle提供的加載轉(zhuǎn)換模塊,內(nèi)容很多,后面詳細介紹。
方案:包或接口的一個固定版本。方案不隨包或接口的修改而改變。
3.6 代理
代理:代理是一個輕量級的運行時組件,可以定時反復(fù)地執(zhí)行制定的任務(wù)。通過代理我們可以自動地做日結(jié)或月結(jié)作業(yè);或定時跑任何一個作業(yè)。
物理代理:每個物理代理對應(yīng)一個Agent。也對應(yīng)一個物理數(shù)據(jù)庫。
邏輯代理和上下文:邏輯代理可通過上下文關(guān)聯(lián)到一個物理代理。
3.7 知識模型
知識模塊:Knowledge Module,是連串命令的模板。其中的命令通用性越好,KM的使用范圍越廣。KM有多種,分別使用在接口的不同階段,其中有:loading(加載),integration(集成),checking(檢查), reverse-engineering(反向), and journalizing(日志)
工作方式:通過生成在運行時執(zhí)行的代碼工作。
4 ODI應(yīng)用
通過幾個簡單的步驟即可完成一個簡單的ODI數(shù)據(jù)抽取實例。
① 建立物理方案,物理服務(wù)器
② 建立邏輯方案
③ 建立上下文
④ 通過上下文連接物理方案與邏輯方案
⑤ 建立模型
⑥ 模型下建立目標存儲庫
⑦ 建立接口,實現(xiàn)數(shù)據(jù)抽取。
這里面雖然實現(xiàn)了數(shù)據(jù)抽取,但是距離我們實際的應(yīng)用還是比較遠的。這里在說下ODI在實際應(yīng)用中比較重要的幾個特性。
4.1 CDC
CDC(Change Data Capture),即變化數(shù)據(jù)捕獲,通過不同的知識模塊可以有不同的方式來捕獲變化數(shù)據(jù),比如觸發(fā)器也是一種常見的捕獲方式。通過對源系統(tǒng)建立CDC日志,當(dāng)村長改變時,可以通過訂閱CDC日志來實現(xiàn)獲取變化日志。
4.2 Web service
在集成應(yīng)用中,我們通過SOA來整合業(yè)務(wù)流程,比如醫(yī)生站下達醫(yī)囑后,需要把醫(yī)生站下達醫(yī)囑這個事件的消息傳遞給LIS,PACS系統(tǒng)。雖然有很多種方式實現(xiàn),但是都是希望對原系統(tǒng)的改動盡量的少。所以這里就可以通過把這個改變發(fā)布為一個web service,這樣可以很好的供SOA使用。
5 總結(jié)
建立數(shù)據(jù)中心無疑是一項非常復(fù)雜的項目,還需要我們做大量的試驗及驗證,但是當(dāng)有一個好的工具時,效果會很多,即我們常說的“站在巨人的肩膀上”。本次重點對ODI進行了一些說明,后續(xù)我們需要應(yīng)用在實際案例中去,希望有識之士共同探討。