一位朋友說他們正在做EAI的項目,對于EAI,沒有接觸太深,以前項目中有這一塊,卻沒怎么參與。于是問了一句,"EAI究竟是服務于什么目的"?提起這個名詞,在我腦海中蹦出的關鍵詞是諸如實時、總線、消息等,然而,這些似乎只是它的技術特征。
類似的名詞包括EII和ETL,ETL是BI項目中必有的部分,也是目前每個項目戲份最重的環節。ETL有一種定義,如"抽取、轉換和裝載,為了分析的目的,將數據從多種數據源抽取,經過轉換、清洗,裝載到另一個數據庫的過程,包括數據集市和數據倉庫,或者是另一個操作型系統",我不知道這是誰的定義,恐怕也恐怕很難有權威的定義。在這個定義中,ETL是廣義的,它是數據流動的過程,沒有說它究竟是批量的或是實時的。因此,按照這個定義,EAI也就像是ETL。
EAI,全名為企業應用集成,這提升到一個比較高的層面,相比之下,"數據"顯得太微觀,太底層了。不錯,現實的情況是企業的IT環境中,大量不同的系統同時并存,缺乏總體規劃。在這種情況下,提出應用集成也是形勢所逼。比如聯通的經營分析和客戶維系挽留系統,缺乏規劃的時候,他們就有功能重疊的地方,各自的廠商為了自己的利益,不可能顧及"應該"如何,只是將自己的蛋糕劃分得大一些才好。因此,諸如"客戶價值模型"這樣得東西就會搶來搶去。可能這種交叉應用的存在,才導致人們對應用集成的愿望,他們希望能夠統一地看這些不同的應用,就像一個完整的大系統在運行一樣。
但顯然,如果達到這樣的程度,理想的程度,并非一種技術就能搞定。所以,EAI的定義顯得比ETL定義更加"虛頭八腦",而在實際項目中看來,EAI的主要功能就是數據的集成,在多個應用之間共享數據,聯通里面一般管這叫做"交互性"。技術實現上,它更像是CDC(變化數據捕獲)+ETL。
至于EII,名稱上意思為"企業信息集成",按照數據、信息到知識這個從低到高的層次,EII聽起來又比ETL高級一些。然而對它,更加沒有深入了解。也不明白它為什么會蹦出這個名詞,是和ETL、EAI并列還是有取代他們的意思。從它的定義來看,EII是建立了一個虛擬的數據庫,用戶向這個虛擬庫提交查詢,而EII將這種查詢物理地分布到各個不同的數據源中,然而返回數據,對于用戶來說,他沒有意識到這批數據是來自不同應用、不同數據庫的。
喔,很酷,不過難度不小,因為這不是技術問題。假設理想的情況下,能夠為數據源建立詳盡的、一致的元數據,能夠有一個引擎實現這種分布式查詢,當然可以EII。然而我們不是生活在理想國,為不同的數據源建立一致的元數據幾乎是不可能,這涉及到各個系統廠商的管理、系統設計以及維護能力,無法僅僅通過技術手段保證的。所以,EII,我只能暫且將它看作是未來理想。