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