智能化集成系統(tǒng)將不同功能的建筑智能化系統(tǒng),通過(guò)統(tǒng)一的信息平臺(tái)實(shí)現(xiàn)集成,從而形成了具有信息匯集、資源共享及優(yōu)化管理等綜合功能的系統(tǒng)。經(jīng)過(guò)十余年的發(fā)展,智能化集成系統(tǒng)已經(jīng)具有了豐富的功能,并在各種類型的智能建筑中都得到了廣泛應(yīng)用。
智能化集成系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)及其最基本的功能是對(duì)各智能化子系統(tǒng)進(jìn)行數(shù)據(jù)通信、信息采集和綜合處理。智能化集成系統(tǒng)在對(duì)門(mén)禁系統(tǒng)、消費(fèi)系統(tǒng)、考勤系統(tǒng)、停車場(chǎng)管理系統(tǒng)等常見(jiàn)子系統(tǒng)進(jìn)行集成時(shí),子系統(tǒng)的人員進(jìn)出記錄、刷卡記錄、收費(fèi)記錄等都是必須進(jìn)行采集的信息。這些信息一般都按照子系統(tǒng)自定義的數(shù)據(jù)格式、保存在子系統(tǒng)的數(shù)據(jù)庫(kù)中,而集成系統(tǒng)對(duì)這些信息的采集方式也正是從子系統(tǒng)數(shù)據(jù)庫(kù)中讀取關(guān)心的數(shù)據(jù)、進(jìn)行格式轉(zhuǎn)換、然后存入集成系統(tǒng)的數(shù)據(jù)庫(kù)中。因此,數(shù)據(jù)庫(kù)讀取、轉(zhuǎn)換和保存技術(shù)已經(jīng)成為智能化集成系統(tǒng)中必不可少的一項(xiàng)關(guān)鍵技術(shù)。
1. 智能化集成系統(tǒng)中常見(jiàn)的數(shù)據(jù)轉(zhuǎn)換技術(shù)的比較分析
智能化集成系統(tǒng)對(duì)子系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)讀取和轉(zhuǎn)換時(shí),主要有3種實(shí)現(xiàn)方案,分別是:
(1) 自行開(kāi)發(fā)數(shù)據(jù)庫(kù)讀取和轉(zhuǎn)換軟件,數(shù)據(jù)讀取和轉(zhuǎn)換規(guī)則寫(xiě)死在程序代碼里;
(2) 使用第三方開(kāi)發(fā)包或自行開(kāi)發(fā)可配置的數(shù)據(jù)轉(zhuǎn)換軟件,數(shù)據(jù)讀取和轉(zhuǎn)換規(guī)則寫(xiě)在配置文件當(dāng)中; (3) 自行開(kāi)發(fā)或使用第三方的可視化數(shù)據(jù)轉(zhuǎn)換軟件,數(shù)據(jù)讀取和轉(zhuǎn)換規(guī)則通過(guò)圖形界面來(lái)配置。
顯而易見(jiàn),第三種是最優(yōu)的方案,也是集成系統(tǒng)工程實(shí)施效率最高、對(duì)調(diào)試人員技術(shù)水平要求最低的方案。
實(shí)際上,第三種方案中提到的可視化數(shù)據(jù)轉(zhuǎn)換軟件就是我們常說(shuō)的ETL(Extract-Transform-Load,即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載)工具軟件。ETL工具軟件是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要一環(huán),用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉(cāng)庫(kù)模型,將數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中去。
除了自行開(kāi)發(fā)ETL軟件之外,市面上還有很多現(xiàn)成的ETL工具軟件可供選擇,既有商業(yè)軟件,也有開(kāi)源軟件,我們經(jīng)過(guò)多方對(duì)比分析后,最終選擇了使用開(kāi)源軟件Kettle作為同方ezIBS智能化集成系統(tǒng)的ETL工具。[nextpage]
2. ezIBS智能化集成系統(tǒng)選擇Kettle作為ETL工具的理由
(1) Kettle是一款由Pentaho公司開(kāi)發(fā)的功能強(qiáng)大的開(kāi)源 ETL工具軟件。Kettle具有可視化的流程設(shè)計(jì)工具,良好的插件擴(kuò)展功能,支持集群操作??梢哉f(shuō),Kettle是目前開(kāi)源世界里功能最全的一款ETL工具。Kettle軟件的名稱很有意思,直譯是水壺。按項(xiàng)目負(fù)責(zé)人Matt的說(shuō)法:把各種數(shù)據(jù)放到一個(gè)壺里,然后呢,以一種你希望的格式流出。
(2) Kettle是一款開(kāi)源產(chǎn)品,本身是免費(fèi)的,成本主要是培訓(xùn)和咨詢,所以成本會(huì)一直維持在一個(gè)較低水平;且由于價(jià)格上的優(yōu)勢(shì),開(kāi)源產(chǎn)品可以在很大程度上降低項(xiàng)目的風(fēng)險(xiǎn)。2008年是開(kāi)源軟件界風(fēng)起云涌的一年,開(kāi)源軟件進(jìn)入了越來(lái)越多軟件開(kāi)發(fā)廠商的視野。對(duì)于具有一定軟件開(kāi)發(fā)實(shí)力的廠商來(lái)說(shuō),選擇開(kāi)源軟件作為自己產(chǎn)品的補(bǔ)充這種方式也越來(lái)越流行,因?yàn)樗麄儾粌H僅是軟件的簡(jiǎn)單使用者,更重要的是有信心能夠解決使用開(kāi)源軟件中遇到的各種問(wèn)題、并對(duì)開(kāi)源軟件進(jìn)行優(yōu)化和擴(kuò)展。
(3) Kettle與ezIBS智能化集成系統(tǒng)一樣,都是使用JAVA平臺(tái)開(kāi)發(fā),所以在平臺(tái)移植性方面支持的非常好,無(wú)論是Windows還是LINUX/UNIX都可以方便的使用。
3. 在ezIBS智能化集成系統(tǒng)中整合Kettle軟件
Kettle實(shí)際上是一個(gè)ETL軟件包,它含有以下幾個(gè)主要模塊:
Spoon(鏟子):用來(lái)設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)換(transformation)和工作(job)的圖形化設(shè)計(jì)工具;
Pan(平底鍋):用來(lái)執(zhí)行Spoon設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換任務(wù)的命令行工具;
Chef(廚師):舊版本的數(shù)據(jù)轉(zhuǎn)換設(shè)計(jì)工具,已被Spoon取代,新版的Kettle發(fā)行包已經(jīng)不含有此模塊;
Kitchen(廚房):用來(lái)執(zhí)行Chef設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換任務(wù)的命令行工具,出于兼容性的考慮仍被保留;
Carte(菜單):可以遠(yuǎn)程執(zhí)行數(shù)據(jù)轉(zhuǎn)換任務(wù)的Web服務(wù)器。
從上面的模塊列表可以看到,Kettle缺少一項(xiàng)非常重要的功能-時(shí)間調(diào)度,也就是可以用來(lái)定時(shí)執(zhí)行Kettle的數(shù)據(jù)轉(zhuǎn)換任務(wù)的軟件模塊。使用Pan工具只能在其命令行程序被執(zhí)行的時(shí)候運(yùn)行一次數(shù)據(jù)轉(zhuǎn)換任務(wù),而無(wú)法周期性的運(yùn)行。這對(duì)于生產(chǎn)環(huán)境下的軟件系統(tǒng)來(lái)說(shuō)是無(wú)法滿足要求的,因?yàn)槲覀儽仨毝ㄆ诘娜z查子系統(tǒng)數(shù)據(jù)庫(kù)是否產(chǎn)生了變化。
將Kettle軟件集成到ezIBS智能化集成系統(tǒng)中、將它們作為一個(gè)整體來(lái)使用,對(duì)于ezIBS集成系統(tǒng)來(lái)說(shuō)輕而易舉。因?yàn)閑zIBS集成系統(tǒng)本身就含有一個(gè)完善的任務(wù)時(shí)間排程功能引擎(見(jiàn)圖2),可以用來(lái)定時(shí)執(zhí)行由Spoon設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換任務(wù),并能監(jiān)控任務(wù)的執(zhí)行狀態(tài)和結(jié)果。
[nextpage]
4. 使用ezIBS及Kettle軟件進(jìn)行數(shù)據(jù)庫(kù)子系統(tǒng)集成的實(shí)際案例
4.1 任務(wù)目標(biāo)
將某門(mén)禁系統(tǒng)數(shù)據(jù)庫(kù)中的持卡人信息抽取到ezIBS集成系統(tǒng)數(shù)據(jù)庫(kù)中,并對(duì)兩個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行定時(shí)同步。
4.2 使用Spoon工具設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)換任務(wù)
(1)設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)換流程
使用Spoon軟件中的表輸入、字段選擇、數(shù)據(jù)過(guò)濾、更新、表輸出等控件設(shè)計(jì)將門(mén)禁數(shù)據(jù)庫(kù)中的數(shù)據(jù)抽取到ezIBS數(shù)據(jù)庫(kù)的任務(wù)執(zhí)行流程。Spoon軟件的設(shè)計(jì)界面示意圖見(jiàn)圖3。
(2)數(shù)據(jù)抽取(Extract)
在任務(wù)流程上的“表輸入”控件中填寫(xiě)從門(mén)禁系統(tǒng)數(shù)據(jù)庫(kù)查詢數(shù)據(jù)的SQL語(yǔ)句。數(shù)據(jù)抽取主要是針對(duì)各個(gè)子系統(tǒng)及不同節(jié)點(diǎn)的分散數(shù)據(jù),充分理解數(shù)據(jù)定義后,規(guī)劃需要的數(shù)據(jù)源及數(shù)據(jù)定義,制定可操作的數(shù)據(jù)源,制定增量抽取的定義。
(3)數(shù)據(jù)傳輸
此步驟在流程圖中表現(xiàn)為箭頭,用來(lái)連接各步驟的控件,起到承上起下的作用。
(4)數(shù)據(jù)轉(zhuǎn)換(Transform)
在“字段選擇”控件中修改門(mén)禁數(shù)據(jù)庫(kù)和ezIBS數(shù)據(jù)庫(kù)中的字段對(duì)應(yīng)關(guān)系,例如圖3中的下面一行代表的意思是:持卡人的卡號(hào)在門(mén)禁數(shù)據(jù)庫(kù)中的字段名稱為KEY_NUMBER,而在ezIBS數(shù)據(jù)庫(kù)中的字段名稱為card_id,在數(shù)據(jù)轉(zhuǎn)換時(shí)要將門(mén)禁系統(tǒng)的KEY_NUMBER數(shù)據(jù)轉(zhuǎn)換為ezIBS系統(tǒng)的card_id數(shù)據(jù)。
(5)數(shù)據(jù)加載入庫(kù)(Load)
使用“表輸出”或“更新”控件將轉(zhuǎn)換好的數(shù)據(jù)存入ezIBS數(shù)據(jù)庫(kù)。數(shù)據(jù)加載主要是將經(jīng)過(guò)轉(zhuǎn)換和清洗的數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)里面,即入庫(kù),操作者可以通過(guò)數(shù)據(jù)文件直接裝載或直連數(shù)據(jù)庫(kù)的方式來(lái)進(jìn)行數(shù)據(jù)裝載,充分地體現(xiàn)其高效性。[nextpage]
4.3 在ezIBS系統(tǒng)中設(shè)置數(shù)據(jù)轉(zhuǎn)換任務(wù)的時(shí)間排程
(1)新建數(shù)據(jù)庫(kù)任務(wù)策略
Kettle不支持調(diào)度,一般只能使用操作系統(tǒng)自帶的調(diào)度功能。ezIBS提供了功能強(qiáng)大的日程管理調(diào)度,比起Windows自帶的任務(wù)計(jì)劃更多了優(yōu)先級(jí)、星期等的選擇,實(shí)現(xiàn)了與Kettle的無(wú)縫銜接。
ezIBS的時(shí)間排程功能十分簡(jiǎn)單易用,首先在任務(wù)管理界面上將Spoon輸出的ktr和ktj文件上傳(見(jiàn)圖4),然后在日程管理界面上設(shè)置數(shù)據(jù)轉(zhuǎn)換任務(wù)的執(zhí)行時(shí)間、循環(huán)次數(shù)(例如:每隔一分鐘執(zhí)行一次數(shù)據(jù)轉(zhuǎn)換任務(wù)進(jìn)行數(shù)據(jù)同步)等參數(shù)即可(見(jiàn)圖2)。
(2)監(jiān)控?cái)?shù)據(jù)庫(kù)任務(wù)的執(zhí)行狀態(tài)和結(jié)果
ezIBS系統(tǒng)對(duì)所有任務(wù)策略的執(zhí)行情況進(jìn)行監(jiān)控,以保證任務(wù)策略能夠正確、穩(wěn)定運(yùn)行,并在發(fā)現(xiàn)錯(cuò)誤或出現(xiàn)問(wèn)題時(shí)通過(guò)電子郵件等方式通知管理員。
圖5 在ezIBS系統(tǒng)中監(jiān)控?cái)?shù)據(jù)轉(zhuǎn)換任務(wù)的運(yùn)行狀態(tài)
5. 結(jié)語(yǔ)
Kettle軟件在智能化集成系統(tǒng)中的應(yīng)用,使得各個(gè)集成模塊可以實(shí)時(shí)、準(zhǔn)確、高效的從子系統(tǒng)的數(shù)據(jù)庫(kù)中取得需要的數(shù)據(jù),并避免了自己開(kāi)發(fā)數(shù)據(jù)轉(zhuǎn)換接口的效率低下和開(kāi)發(fā)周期長(zhǎng)等缺點(diǎn)。由于Kettle是一個(gè)開(kāi)源工具,其免費(fèi)、廣泛的技術(shù)支持也使開(kāi)發(fā)成本降到最低。
通過(guò)將開(kāi)源軟件在ezIBS智能化集成系統(tǒng)中進(jìn)行更廣泛的應(yīng)用,同時(shí)結(jié)合其本身開(kāi)放性、安全性、易用性等特點(diǎn),在品牌和規(guī)模優(yōu)勢(shì)的情況下,隨著時(shí)間的推移和技術(shù)的持續(xù)發(fā)展,開(kāi)源軟件對(duì)ezIBS智能化集成系統(tǒng)的影響將繼續(xù)擴(kuò)展,并幫助其實(shí)現(xiàn)更多的功能。